Package de.odysseus.el
Class ExpressionFactoryImpl
- java.lang.Object
-
- javax.el.ExpressionFactory
-
- de.odysseus.el.ExpressionFactoryImpl
-
public class ExpressionFactoryImpl extends javax.el.ExpressionFactoryExpression factory implementation. This class is also used as an EL "service provider". The juel-spi jar file specifies this class as el expression factory implementation inMETA-INF/services/javax.el.ExpressionFactory. CallingExpressionFactory.newInstance()will then return an instance of this class, configured as described below. If no properties are specified at construction time, properties are read from-
If the file
JAVA_HOME/lib/el.propertiesexists and if it contains propertyjavax.el.ExpressionFactorywhose value is the name of this class, these properties are taken as default properties. - Otherwise, if system property
javax.el.ExpressionFactoryis set to the name of this class, the system propertiesSystem.getProperties()are taken as default properties. -
el.propertieson your classpath. These properties override the properties fromJAVA_HOME/lib/el.propertiesorSystem.getProperties().
Properties. Having this, the following properties are read:-
javax.el.cacheSize- cache size (int, default is 1000) -
javax.el.methodInvocations- allow method invocations as in${foo.bar(baz)}(boolean, default isfalse). -
javax.el.nullProperties- resolvenullproperties as in${foo[null]}(boolean, default isfalse). -
javax.el.varArgs- support function/method calls using varargs (boolean, default isfalse).
-
If the file
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classExpressionFactoryImpl.ProfileA profile provides a default set of language features that will define the builder's behavior.
-
Field Summary
Fields Modifier and Type Field Description private TypeConverterconverterstatic java.lang.StringPROP_CACHE_SIZEjavax.el.cacheSizestatic java.lang.StringPROP_IGNORE_RETURN_TYPEjavax.el.ignoreReturnTypestatic java.lang.StringPROP_METHOD_INVOCATIONSjavax.el.methodInvocationsstatic java.lang.StringPROP_NULL_PROPERTIESjavax.el.nullPropertiesstatic java.lang.StringPROP_VAR_ARGSjavax.el.varArgsprivate TreeStorestore
-
Constructor Summary
Constructors Constructor Description ExpressionFactoryImpl()Create a new expression factory using the default builder and cache implementations.ExpressionFactoryImpl(ExpressionFactoryImpl.Profile profile)Create a new expression factory using the default builder and cache implementations.ExpressionFactoryImpl(ExpressionFactoryImpl.Profile profile, java.util.Properties properties)Create a new expression factory using the default builder and cache implementations.ExpressionFactoryImpl(ExpressionFactoryImpl.Profile profile, java.util.Properties properties, TypeConverter converter)Create a new expression factory using the default builder and cache implementations.ExpressionFactoryImpl(TreeStore store)Create a new expression factory.ExpressionFactoryImpl(TreeStore store, TypeConverter converter)Create a new expression factory.ExpressionFactoryImpl(java.util.Properties properties)Create a new expression factory using the default builder and cache implementations.ExpressionFactoryImpl(java.util.Properties properties, TypeConverter converter)Create a new expression factory using the default builder and cache implementations.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.ObjectcoerceToType(java.lang.Object obj, java.lang.Class<?> targetType)TreeMethodExpressioncreateMethodExpression(javax.el.ELContext context, java.lang.String expression, java.lang.Class<?> expectedReturnType, java.lang.Class<?>[] expectedParamTypes)protected TreeBuildercreateTreeBuilder(java.util.Properties properties, Builder.Feature... features)Create the factory's builder.protected TreeStorecreateTreeStore(int defaultCacheSize, ExpressionFactoryImpl.Profile profile, java.util.Properties properties)Create the factory's tree store.protected TypeConvertercreateTypeConverter(java.util.Properties properties)Create the factory's type converter.ObjectValueExpressioncreateValueExpression(java.lang.Object instance, java.lang.Class<?> expectedType)TreeValueExpressioncreateValueExpression(javax.el.ELContext context, java.lang.String expression, java.lang.Class<?> expectedType)private booleangetFeatureProperty(ExpressionFactoryImpl.Profile profile, java.util.Properties properties, Builder.Feature feature, java.lang.String property)private java.lang.Class<?>load(java.lang.Class<?> clazz, java.util.Properties properties)private java.util.PropertiesloadDefaultProperties()private java.util.PropertiesloadProperties(java.lang.String path)
-
-
-
Field Detail
-
PROP_METHOD_INVOCATIONS
public static final java.lang.String PROP_METHOD_INVOCATIONS
javax.el.methodInvocations- See Also:
- Constant Field Values
-
PROP_VAR_ARGS
public static final java.lang.String PROP_VAR_ARGS
javax.el.varArgs- See Also:
- Constant Field Values
-
PROP_NULL_PROPERTIES
public static final java.lang.String PROP_NULL_PROPERTIES
javax.el.nullProperties- See Also:
- Constant Field Values
-
PROP_IGNORE_RETURN_TYPE
public static final java.lang.String PROP_IGNORE_RETURN_TYPE
javax.el.ignoreReturnType- See Also:
- Constant Field Values
-
PROP_CACHE_SIZE
public static final java.lang.String PROP_CACHE_SIZE
javax.el.cacheSize- See Also:
- Constant Field Values
-
store
private final TreeStore store
-
converter
private final TypeConverter converter
-
-
Constructor Detail
-
ExpressionFactoryImpl
public ExpressionFactoryImpl()
Create a new expression factory using the default builder and cache implementations. The builder and cache are configured fromel.properties(see above). The maximum cache size will be 1000 unless overridden inel.properties. The builder profile isExpressionFactoryImpl.Profile.JEE6(features may be overridden inel.properties).
-
ExpressionFactoryImpl
public ExpressionFactoryImpl(ExpressionFactoryImpl.Profile profile)
Create a new expression factory using the default builder and cache implementations. The builder and cache are configured from the specified profile andel.properties(see above). The maximum cache size will be 1000 unless overridden inel.properties.- Parameters:
profile- builder profile (features may be overridden inel.properties)- Since:
- 2.2
-
ExpressionFactoryImpl
public ExpressionFactoryImpl(java.util.Properties properties)
Create a new expression factory using the default builder and cache implementations. The builder and cache are configured using the specified properties. The maximum cache size will be 1000 unless overridden by propertyjavax.el.cacheSize. The builder profile isExpressionFactoryImpl.Profile.JEE6(features may be overridden inproperties).- Parameters:
properties- used to initialize this factory (may benull)
-
ExpressionFactoryImpl
public ExpressionFactoryImpl(ExpressionFactoryImpl.Profile profile, java.util.Properties properties)
Create a new expression factory using the default builder and cache implementations. The builder and cache are configured using the specified profile and properties. The maximum cache size will be 1000 unless overridden by propertyjavax.el.cacheSize.- Parameters:
profile- builder profile (individual features may be overridden in properties)properties- used to initialize this factory (may benull)- Since:
- 2.2
-
ExpressionFactoryImpl
public ExpressionFactoryImpl(java.util.Properties properties, TypeConverter converter)Create a new expression factory using the default builder and cache implementations. The builder and cache are configured using the specified properties. The maximum cache size will be 1000 unless overridden by propertyjavax.el.cacheSize. The builder profile isExpressionFactoryImpl.Profile.JEE6(individual features may be overridden inproperties).- Parameters:
properties- used to initialize this factory (may benull)converter- custom type converter
-
ExpressionFactoryImpl
public ExpressionFactoryImpl(ExpressionFactoryImpl.Profile profile, java.util.Properties properties, TypeConverter converter)
Create a new expression factory using the default builder and cache implementations. The builder and cache are configured using the specified profile and properties. The maximum cache size will be 1000 unless overridden by propertyjavax.el.cacheSize.- Parameters:
profile- builder profile (individual features may be overridden in properties)properties- used to initialize this factory (may benull)converter- custom type converter- Since:
- 2.2
-
ExpressionFactoryImpl
public ExpressionFactoryImpl(TreeStore store)
Create a new expression factory.- Parameters:
store- the tree store used to parse and cache parse trees.
-
ExpressionFactoryImpl
public ExpressionFactoryImpl(TreeStore store, TypeConverter converter)
Create a new expression factory.- Parameters:
store- the tree store used to parse and cache parse trees.converter- custom type converter
-
-
Method Detail
-
loadDefaultProperties
private java.util.Properties loadDefaultProperties()
-
loadProperties
private java.util.Properties loadProperties(java.lang.String path)
-
getFeatureProperty
private boolean getFeatureProperty(ExpressionFactoryImpl.Profile profile, java.util.Properties properties, Builder.Feature feature, java.lang.String property)
-
createTreeStore
protected TreeStore createTreeStore(int defaultCacheSize, ExpressionFactoryImpl.Profile profile, java.util.Properties properties)
Create the factory's tree store. This implementation creates a new tree store using the default builder and cache implementations. The builder and cache are configured using the specified properties. The maximum cache size will be as specified unless overridden by propertyjavax.el.cacheSize.
-
createTypeConverter
protected TypeConverter createTypeConverter(java.util.Properties properties)
Create the factory's type converter. This implementation takes thede.odysseus.el.misc.TypeConverterproperty as the name of a class implementing thede.odysseus.el.misc.TypeConverterinterface. If the property is not set, the default converter (TypeConverter.DEFAULT) is used.
-
createTreeBuilder
protected TreeBuilder createTreeBuilder(java.util.Properties properties, Builder.Feature... features)
Create the factory's builder. This implementation takes thede.odysseus.el.tree.TreeBuilderproperty as a name of a class implementing thede.odysseus.el.tree.TreeBuilderinterface. If the property is not set, a plainde.odysseus.el.tree.impl.Builderis used. If the configured class is a subclass ofde.odysseus.el.tree.impl.Builderand which provides a constructor taking an array ofBuilder.Feature, this constructor will be invoked. Otherwise, the default constructor will be used.
-
load
private java.lang.Class<?> load(java.lang.Class<?> clazz, java.util.Properties properties)
-
coerceToType
public final java.lang.Object coerceToType(java.lang.Object obj, java.lang.Class<?> targetType)- Specified by:
coerceToTypein classjavax.el.ExpressionFactory
-
createValueExpression
public final ObjectValueExpression createValueExpression(java.lang.Object instance, java.lang.Class<?> expectedType)
- Specified by:
createValueExpressionin classjavax.el.ExpressionFactory
-
createValueExpression
public final TreeValueExpression createValueExpression(javax.el.ELContext context, java.lang.String expression, java.lang.Class<?> expectedType)
- Specified by:
createValueExpressionin classjavax.el.ExpressionFactory
-
createMethodExpression
public final TreeMethodExpression createMethodExpression(javax.el.ELContext context, java.lang.String expression, java.lang.Class<?> expectedReturnType, java.lang.Class<?>[] expectedParamTypes)
- Specified by:
createMethodExpressionin classjavax.el.ExpressionFactory
-
-