You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2017/08/24 22:50:01 UTC
svn commit: r1806105 - in
/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces:
component/validate/ util/ view/facelets/el/ view/facelets/tag/
view/facelets/tag/jstl/core/ view/facelets/tag/ui/ webapp/
Author: tandraschko
Date: Thu Aug 24 22:50:01 2017
New Revision: 1806105
URL: http://svn.apache.org/viewvc?rev=1806105&view=rev
Log:
MYFACES-4145 Remove < EL 2.2 compatibility hacks
Modified:
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/validate/WholeBeanValidator.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/el/ELText.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/TagAttributeImpl.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/UserTagHandler.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/ForEachHandler.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/SetHandler.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/ParamHandler.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/validate/WholeBeanValidator.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/validate/WholeBeanValidator.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/validate/WholeBeanValidator.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/validate/WholeBeanValidator.java Thu Aug 24 22:50:01 2017
@@ -339,37 +339,26 @@ public class WholeBeanValidator implemen
final ValueExpression valueExpression, final FacesContext context)
{
ELContext elCtx = context.getELContext();
- if (ExternalSpecifications.isUnifiedELAvailable())
+ _ValueReferenceWrapper wrapper = _BeanValidatorUELUtils.getUELValueReferenceWrapper(valueExpression, elCtx);
+ if (wrapper != null && wrapper.getProperty() == null)
{
- // unified el 2.2 is available --> we can use ValueExpression.getValueReference()
- // we can't access ValueExpression.getValueReference() directly here, because
- // Class loading would fail in applications with el-api versions prior to 2.2
- _ValueReferenceWrapper wrapper = _BeanValidatorUELUtils.getUELValueReferenceWrapper(valueExpression, elCtx);
- if (wrapper != null)
+ // Fix for issue in Glassfish EL-impl-2.2.3
+ if (firstValueReferenceWarning && log.isLoggable(Level.WARNING))
{
- if (wrapper.getProperty() == null)
- {
- // Fix for issue in Glassfish EL-impl-2.2.3
- if (firstValueReferenceWarning && log.isLoggable(Level.WARNING))
- {
- firstValueReferenceWarning = false;
- log.warning("ValueReference.getProperty() is null. " +
- "Falling back to classic ValueReference resolving. " +
- "This fallback may hurt performance. " +
- "This may be caused by a bug your EL implementation. " +
- "Glassfish EL-impl-2.2.3 is known for this issue. " +
- "Try switching to a different EL implementation.");
- }
- }
- else
- {
- return wrapper;
- }
+ firstValueReferenceWarning = false;
+ log.warning("ValueReference.getProperty() is null. " +
+ "Falling back to classic ValueReference resolving. " +
+ "This fallback may hurt performance. " +
+ "This may be caused by a bug your EL implementation. " +
+ "Glassfish EL-impl-2.2.3 is known for this issue. " +
+ "Try switching to a different EL implementation.");
}
+
+ // get base object and property name the "old-fashioned" way
+ return _ValueReferenceResolver.resolve(valueExpression, elCtx);
}
- // get base object and property name the "old-fashioned" way
- return _ValueReferenceResolver.resolve(valueExpression, elCtx);
+ return wrapper;
}
/**
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java Thu Aug 24 22:50:01 2017
@@ -21,7 +21,6 @@ package org.apache.myfaces.util;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.el.ELContext;
import javax.faces.context.ExternalContext;
import org.apache.myfaces.webapp.AbstractFacesInitializer;
@@ -38,12 +37,9 @@ import org.apache.myfaces.webapp.Abstrac
*/
public final class ExternalSpecifications
{
-
- //private static final Log log = LogFactory.getLog(BeanValidator.class);
private static final Logger log = Logger.getLogger(ExternalSpecifications.class.getName());
private static volatile Boolean beanValidationAvailable;
- private static volatile Boolean unifiedELAvailable;
private static volatile Boolean cdiAvailable;
private static volatile Boolean el3Available;
@@ -95,39 +91,6 @@ public final class ExternalSpecification
}
return beanValidationAvailable;
}
-
- /**
- * This method determines if Unified EL is present.
- *
- * Eager initialization is used for performance. This means Unified EL binaries
- * should not be added at runtime after this variable has been set.
- * @return true if UEL is available, false otherwise.
- */
- public static boolean isUnifiedELAvailable()
- {
- if (unifiedELAvailable == null)
- {
- try
- {
- // Check if the UEL classes are available.
- // If the JSP EL classes are loaded first, UEL will not work
- // properly, hence it will be disabled.
- unifiedELAvailable = (
- Class.forName("javax.el.ValueReference") != null
- && Class.forName("javax.el.ValueExpression")
- .getMethod("getValueReference", ELContext.class) != null
- );
- }
- catch (Throwable t)
- {
- //log.log(Level.FINE, "Error loading class (could be normal)", t);
- unifiedELAvailable = false;
- }
-
- log.info("MyFaces Unified EL support " + (unifiedELAvailable ? "enabled" : "disabled"));
- }
- return unifiedELAvailable;
- }
public static boolean isCDIAvailable(ExternalContext externalContext)
{
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/el/ELText.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/el/ELText.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/el/ELText.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/el/ELText.java Thu Aug 24 22:50:01 2017
@@ -31,7 +31,6 @@ import javax.faces.component.UIComponent
import javax.faces.context.ResponseWriter;
import javax.faces.view.Location;
-import org.apache.myfaces.util.ExternalSpecifications;
import org.apache.myfaces.view.facelets.AbstractFaceletContext;
/**
@@ -298,16 +297,8 @@ public class ELText
Location location = (Location) cc.getAttributes().get(CompositeComponentELUtils.LOCATION_KEY);
if (location != null)
{
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- valueExpression = new LocationValueExpressionUEL(location, valueExpression,
- actx.getFaceletCompositionContext().getCompositeComponentLevel());
- }
- else
- {
- valueExpression = new LocationValueExpression(location, valueExpression,
- actx.getFaceletCompositionContext().getCompositeComponentLevel());
- }
+ valueExpression = new LocationValueExpressionUEL(location, valueExpression,
+ actx.getFaceletCompositionContext().getCompositeComponentLevel());
}
}
}
@@ -319,14 +310,7 @@ public class ELText
Location location = (Location) cc.getAttributes().get(CompositeComponentELUtils.LOCATION_KEY);
if (location != null)
{
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- valueExpression = new ResourceLocationValueExpressionUEL(location, valueExpression);
- }
- else
- {
- valueExpression = new ResourceLocationValueExpression(location, valueExpression);
- }
+ valueExpression = new ResourceLocationValueExpressionUEL(location, valueExpression);
}
}
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/TagAttributeImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/TagAttributeImpl.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/TagAttributeImpl.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/TagAttributeImpl.java Thu Aug 24 22:50:01 2017
@@ -30,21 +30,17 @@ import javax.faces.view.facelets.Facelet
import javax.faces.view.facelets.TagAttribute;
import javax.faces.view.facelets.TagAttributeException;
-import org.apache.myfaces.util.ExternalSpecifications;
import org.apache.myfaces.view.facelets.AbstractFaceletContext;
import org.apache.myfaces.view.facelets.el.CompositeComponentELUtils;
import org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression;
-import org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression;
import org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpressionUEL;
import org.apache.myfaces.view.facelets.el.ELText;
import org.apache.myfaces.view.facelets.el.LocationMethodExpression;
import org.apache.myfaces.view.facelets.el.LocationValueExpression;
import org.apache.myfaces.view.facelets.el.LocationValueExpressionUEL;
import org.apache.myfaces.view.facelets.el.ResourceELUtils;
-import org.apache.myfaces.view.facelets.el.ResourceLocationValueExpression;
import org.apache.myfaces.view.facelets.el.ResourceLocationValueExpressionUEL;
import org.apache.myfaces.view.facelets.el.TagMethodExpression;
-import org.apache.myfaces.view.facelets.el.TagValueExpression;
import org.apache.myfaces.view.facelets.el.TagValueExpressionUEL;
import org.apache.myfaces.view.facelets.el.ValueExpressionMethodExpression;
@@ -257,7 +253,7 @@ public final class TagAttributeImpl exte
// (see VDL.retargetMethodExpressions for details)
// check for params in the the MethodExpression
- if (ExternalSpecifications.isUnifiedELAvailable() && this.value.contains("("))
+ if (this.value.contains("("))
{
// if we don't throw this exception here, another ELException will be
// thrown later, because #{cc.attrs.method(param)} will not work as a
@@ -529,28 +525,14 @@ public final class TagAttributeImpl exte
{
ExpressionFactory f = ctx.getExpressionFactory();
ValueExpression valueExpression = f.createValueExpression(ctx, this.value, type);
-
- if (ExternalSpecifications.isUnifiedELAvailable())
+
+ if (actx.getFaceletCompositionContext().isWrapTagExceptionsAsContextAware())
{
- if (actx.getFaceletCompositionContext().isWrapTagExceptionsAsContextAware())
- {
- valueExpression = new ContextAwareTagValueExpressionUEL(this, valueExpression);
- }
- else
- {
- valueExpression = new TagValueExpressionUEL(this, valueExpression);
- }
+ valueExpression = new ContextAwareTagValueExpressionUEL(this, valueExpression);
}
else
{
- if (actx.getFaceletCompositionContext().isWrapTagExceptionsAsContextAware())
- {
- valueExpression = new ContextAwareTagValueExpression(this, valueExpression);
- }
- else
- {
- valueExpression = new TagValueExpression(this, valueExpression);
- }
+ valueExpression = new TagValueExpressionUEL(this, valueExpression);
}
// if the ValueExpression contains a reference to the current composite
@@ -576,27 +558,13 @@ public final class TagAttributeImpl exte
//cacheable = false;
currentLocation = ccLocation;
}
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- valueExpression = new LocationValueExpressionUEL(currentLocation, valueExpression,
- actx.getFaceletCompositionContext().getCompositeComponentLevel());
- }
- else
- {
- valueExpression = new LocationValueExpression(currentLocation, valueExpression,
- actx.getFaceletCompositionContext().getCompositeComponentLevel());
- }
+
+ valueExpression = new LocationValueExpressionUEL(currentLocation, valueExpression,
+ actx.getFaceletCompositionContext().getCompositeComponentLevel());
}
else if ((this.capabilities & EL_RESOURCE) != 0)
{
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- valueExpression = new ResourceLocationValueExpressionUEL(getLocation(), valueExpression);
- }
- else
- {
- valueExpression = new ResourceLocationValueExpression(getLocation(), valueExpression);
- }
+ valueExpression = new ResourceLocationValueExpressionUEL(getLocation(), valueExpression);
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/UserTagHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/UserTagHandler.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/UserTagHandler.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/UserTagHandler.java Thu Aug 24 22:50:01 2017
@@ -35,14 +35,12 @@ import javax.faces.view.facelets.TagAttr
import javax.faces.view.facelets.TagConfig;
import javax.faces.view.facelets.TagException;
import javax.faces.view.facelets.TagHandler;
-import org.apache.myfaces.util.ExternalSpecifications;
import org.apache.myfaces.view.facelets.AbstractFaceletContext;
import org.apache.myfaces.view.facelets.ELExpressionCacheMode;
import org.apache.myfaces.view.facelets.FaceletCompositionContext;
import org.apache.myfaces.view.facelets.TemplateClient;
import org.apache.myfaces.view.facelets.TemplateContext;
-import org.apache.myfaces.view.facelets.el.FaceletStateValueExpression;
import org.apache.myfaces.view.facelets.el.FaceletStateValueExpressionUEL;
import org.apache.myfaces.view.facelets.impl.TemplateContextImpl;
import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
@@ -132,15 +130,7 @@ final class UserTagHandler extends TagHa
{
//((AbstractFaceletContext) ctx).getTemplateContext().setParameter(names[i], values[i]);
faceletState.putBinding(uniqueId, names[i], values[i]);
- ValueExpression ve;
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- ve = new FaceletStateValueExpressionUEL(uniqueId, names[i]);
- }
- else
- {
- ve = new FaceletStateValueExpression(uniqueId, names[i]);
- }
+ ValueExpression ve = new FaceletStateValueExpressionUEL(uniqueId, names[i]);
actx.getTemplateContext().setParameter(names[i], ve);
}
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/ForEachHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/ForEachHandler.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/ForEachHandler.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/ForEachHandler.java Thu Aug 24 22:50:01 2017
@@ -41,11 +41,9 @@ import javax.faces.view.facelets.TagHand
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletAttribute;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
-import org.apache.myfaces.util.ExternalSpecifications;
import org.apache.myfaces.view.facelets.AbstractFaceletContext;
import org.apache.myfaces.view.facelets.FaceletCompositionContext;
import org.apache.myfaces.view.facelets.PageContext;
-import org.apache.myfaces.view.facelets.el.FaceletStateValueExpression;
import org.apache.myfaces.view.facelets.el.FaceletStateValueExpressionUEL;
import org.apache.myfaces.view.facelets.tag.ComponentContainerHandler;
import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
@@ -281,15 +279,7 @@ public final class ForEachHandler extend
faceletState.putBinding(uniqueId, base, ve);
//Put the indirect EL into context
- ValueExpression fve;
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- fve = new FaceletStateValueExpressionUEL(uniqueId, base);
- }
- else
- {
- fve = new FaceletStateValueExpression(uniqueId, base);
- }
+ ValueExpression fve = new FaceletStateValueExpressionUEL(uniqueId, base);
pctx.getAttributes().put(v, fve);
}
else
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/SetHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/SetHandler.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/SetHandler.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jstl/core/SetHandler.java Thu Aug 24 22:50:01 2017
@@ -34,11 +34,9 @@ import javax.faces.view.facelets.TagHand
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletAttribute;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
-import org.apache.myfaces.util.ExternalSpecifications;
import org.apache.myfaces.view.facelets.AbstractFaceletContext;
import org.apache.myfaces.view.facelets.ELExpressionCacheMode;
import org.apache.myfaces.view.facelets.el.CacheableValueExpressionUELWrapper;
-import org.apache.myfaces.view.facelets.el.CacheableValueExpressionWrapper;
/**
* Simplified implementation of c:set
@@ -141,16 +139,8 @@ public class SetHandler extends TagHandl
AbstractFaceletContext actx = ((AbstractFaceletContext) ctx);
if (ELExpressionCacheMode.alwaysRecompile.equals(actx.getELExpressionCacheMode()))
{
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- actx.getPageContext().getAttributes().put(varStr,
- new CacheableValueExpressionUELWrapper(veObj));
- }
- else
- {
- actx.getPageContext().getAttributes().put(varStr,
- new CacheableValueExpressionWrapper(veObj));
- }
+ actx.getPageContext().getAttributes().put(varStr,
+ new CacheableValueExpressionUELWrapper(veObj));
}
else
{
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/ParamHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/ParamHandler.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/ParamHandler.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/ParamHandler.java Thu Aug 24 22:50:01 2017
@@ -32,10 +32,8 @@ import javax.faces.view.facelets.TagHand
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletAttribute;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
-import org.apache.myfaces.util.ExternalSpecifications;
import org.apache.myfaces.view.facelets.AbstractFaceletContext;
import org.apache.myfaces.view.facelets.ELExpressionCacheMode;
-import org.apache.myfaces.view.facelets.el.FaceletStateValueExpression;
import org.apache.myfaces.view.facelets.el.FaceletStateValueExpressionUEL;
import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
import org.apache.myfaces.view.facelets.tag.jsf.FaceletState;
@@ -116,15 +114,7 @@ public class ParamHandler extends TagHan
{
FaceletState faceletState = ComponentSupport.getFaceletState(ctx, parent, true);
faceletState.putBinding(uniqueId, nameStr, valueVE);
- ValueExpression ve;
- if (ExternalSpecifications.isUnifiedELAvailable())
- {
- ve = new FaceletStateValueExpressionUEL(uniqueId, nameStr);
- }
- else
- {
- ve = new FaceletStateValueExpression(uniqueId, nameStr);
- }
+ ValueExpression ve = new FaceletStateValueExpressionUEL(uniqueId, nameStr);
actx.getTemplateContext().setParameter(nameStr, ve);
}
else
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java?rev=1806105&r1=1806104&r2=1806105&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java Thu Aug 24 22:50:01 2017
@@ -224,7 +224,6 @@ public abstract class AbstractFacesIniti
WebConfigParamsLogger.logWebContextParams(facesContext);
//Force output EL message
- ExternalSpecifications.isUnifiedELAvailable();
ExternalSpecifications.isBeanValidationAvailable();
//Start ViewPoolProcessor if necessary