Author: danielf Date: Sun Jan 16 14:06:22 2005 New Revision: 125368 URL: http://svn.apache.org/viewcvs?view=rev&rev=125368 Log: Added method in the ExpressionFactory class so that the expression language is chosen by a prefix e.g. "jxpath:1+2". Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/ExpressionFactory.java cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.xtest
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/ExpressionFactory.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/ExpressionFactory.java?view=diff&rev=125368&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/ExpressionFactory.java&r1=125367&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/ExpressionFactory.java&r2=125368 ============================================================================== --- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/ExpressionFactory.java (original) +++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/ExpressionFactory.java Sun Jan 16 14:06:22 2005 @@ -28,6 +28,7 @@ extends AbstractLogEnabled implements Disposable, Serviceable, ThreadSafe { public static String ROLE = ExpressionFactory.class.getName(); + public static String DEFAULT ="default"; /** The component manager */ protected ServiceManager manager; @@ -64,5 +65,15 @@ this.compilerSelector.release(compiler); } return expressionImpl; + } + + public Expression getExpression(String expression) throws ExpressionException { + String language = DEFAULT; + int end = expression.indexOf(':'); + if (end != -1) { + language = expression.substring(0, end); + expression = expression.substring(end+1); + } + return getExpression(language, expression); } } Modified: cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java?view=diff&rev=125368&p1=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java&r1=125367&p2=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java&r2=125368 ============================================================================== --- cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java (original) +++ cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java Sun Jan 16 14:06:22 2005 @@ -73,5 +73,24 @@ assertEquals(new Double(3), expression.evaluate(new ExpressionContext())); this.release(factory); } + + public void testFactoryPluggable() throws ExpressionException, ServiceException { + ExpressionFactory factory = (ExpressionFactory)this.lookup(ExpressionFactory.ROLE); + assertNotNull("Test lookup of expression factory", factory); + + Expression expression = factory.getExpression("1+2"); + assertNotNull("Test expression compilation", expression); + assertEquals(new Double(3), expression.evaluate(new ExpressionContext())); + + expression = factory.getExpression("jexl:1+2"); + assertNotNull("Test expression compilation", expression); + assertEquals(new Long(3), expression.evaluate(new ExpressionContext())); + + expression = factory.getExpression("jxpath:1+2"); + assertNotNull("Test expression compilation", expression); + assertEquals(new Double(3), expression.evaluate(new ExpressionContext())); + + this.release(factory); + } } Modified: cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.xtest Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.xtest?view=diff&rev=125368&p1=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.xtest&r1=125367&p2=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.xtest&r2=125368 ============================================================================== --- cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.xtest (original) +++ cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.xtest Sun Jan 16 14:06:22 2005 @@ -27,6 +27,7 @@ <components> <expression-compilers> + <component-instance class="org.apache.cocoon.components.expression.jxpath.JXPathCompiler" name="default"/> <component-instance class="org.apache.cocoon.components.expression.jexl.JexlCompiler" name="jexl"/> <component-instance class="org.apache.cocoon.components.expression.jxpath.JXPathCompiler" name="jxpath"/> </expression-compilers>