You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/01/31 11:30:15 UTC
svn commit: r1440898 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/language/simple/
camel-core/src/main/java/org/apache/camel/support/
camel-core/src/test/java/org/apache/camel/language/simple/
camel-core/src/test/resources/ components/c...
Author: davsclaus
Date: Thu Jan 31 10:30:14 2013
New Revision: 1440898
URL: http://svn.apache.org/viewvc?rev=1440898&view=rev
Log:
CAMEL-4629: Languages can now load script from external resource, such as file or classpath.
Added:
camel/trunk/camel-core/src/main/java/org/apache/camel/support/LanguageSupport.java (with props)
camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleResourceTest.java (with props)
camel/trunk/camel-core/src/test/resources/mysimple.txt (with props)
camel/trunk/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyResourceTest.java (with props)
camel/trunk/components/camel-groovy/src/test/resources/mygroovy.groovy
camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlResourceTest.java (with props)
camel/trunk/components/camel-josql/src/test/resources/myjosql.txt (with props)
camel/trunk/components/camel-juel/src/test/java/org/apache/camel/language/juel/JuelResourceTest.java (with props)
camel/trunk/components/camel-juel/src/test/resources/juel.txt (with props)
camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathResourceTest.java (with props)
camel/trunk/components/camel-jxpath/src/test/resources/myjxpath.txt (with props)
camel/trunk/components/camel-mvel/src/test/java/org/apache/camel/language/mvel/MvelResourceTest.java (with props)
camel/trunk/components/camel-mvel/src/test/resources/mymvel.txt (with props)
camel/trunk/components/camel-ognl/src/test/java/org/apache/camel/language/ognl/OgnlResourceTest.java (with props)
camel/trunk/components/camel-ognl/src/test/resources/myognl.txt (with props)
camel/trunk/components/camel-script/src/test/java/org/apache/camel/language/script/ScriptLanguageResourceTest.java (with props)
camel/trunk/components/camel-script/src/test/resources/myjavascript.js (with props)
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelResourceTest.java (with props)
camel/trunk/components/camel-spring/src/test/resources/myspel.txt (with props)
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
camel/trunk/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java
camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/Person.java
camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelExpression.java
camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelLanguage.java
camel/trunk/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java
camel/trunk/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelLanguage.java
camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlExpression.java
camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlLanguage.java
camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptLanguage.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java Thu Jan 31 10:30:14 2013
@@ -21,6 +21,7 @@ import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
import org.apache.camel.util.ObjectHelper;
/**
@@ -88,7 +89,7 @@ import org.apache.camel.util.ObjectHelpe
* The <b>only</b> file is the filename only with all paths clipped.
*
*/
-public class SimpleLanguage implements Language, IsSingleton {
+public class SimpleLanguage extends LanguageSupport {
// singleton for expressions without a result type
private static final SimpleLanguage SIMPLE = new SimpleLanguage();
@@ -127,6 +128,8 @@ public class SimpleLanguage implements L
public Predicate createPredicate(String expression) {
ObjectHelper.notNull(expression, "expression");
+ expression = loadResource(expression);
+
// support old simple language syntax
@SuppressWarnings("deprecation")
Predicate answer = SimpleBackwardsCompatibleParser.parsePredicate(expression, allowEscape);
@@ -141,6 +144,8 @@ public class SimpleLanguage implements L
public Expression createExpression(String expression) {
ObjectHelper.notNull(expression, "expression");
+ expression = loadResource(expression);
+
// support old simple language syntax
@SuppressWarnings("deprecation")
Expression answer = SimpleBackwardsCompatibleParser.parseExpression(expression, allowEscape);
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/support/LanguageSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/support/LanguageSupport.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/support/LanguageSupport.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/support/LanguageSupport.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.support;
+
+import java.io.InputStream;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.ExpressionIllegalSyntaxException;
+import org.apache.camel.IsSingleton;
+import org.apache.camel.spi.Language;
+import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ResourceHelper;
+
+/**
+ * Base language for {@link Language} implementations.
+ */
+public abstract class LanguageSupport implements Language, IsSingleton, CamelContextAware {
+
+ private CamelContext camelContext;
+
+ public CamelContext getCamelContext() {
+ return camelContext;
+ }
+
+ public void setCamelContext(CamelContext camelContext) {
+ this.camelContext = camelContext;
+ }
+
+ @Override
+ public boolean isSingleton() {
+ return true;
+ }
+
+ /**
+ * Loads the resource if the given expression is referring to an external resource by using
+ * the syntax <tt>resource:scheme:uri<tt>.
+ * If the expression is not referring to a resource, then its returned as is.
+ * <p/>
+ * For example <tt>resource:classpath:mygroovy.groovy</tt> to refer to a groovy script on the classpath.
+ *
+ * @param expression the expression
+ * @return the expression
+ * @throws ExpressionIllegalSyntaxException is thrown if error loading the resource
+ */
+ protected String loadResource(String expression) throws ExpressionIllegalSyntaxException {
+ if (camelContext != null && expression.startsWith("resource:")) {
+ String uri = expression.substring(9);
+ InputStream is = null;
+ try {
+ is = ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext.getClassResolver(), uri);
+ expression = camelContext.getTypeConverter().mandatoryConvertTo(String.class, is);
+ } catch (Exception e) {
+ throw new ExpressionIllegalSyntaxException(expression, e);
+ } finally {
+ IOHelper.close(is);
+ }
+ }
+ return expression;
+ }
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/support/LanguageSupport.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/support/LanguageSupport.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleResourceTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.simple;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SimpleResourceTest extends ContextTestSupport {
+
+ @Test
+ public void testSimpleResource() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("The name is Camel");
+
+ template.sendBody("direct:start", "Camel");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().simple("resource:classpath:mysimple.txt")
+ .to("mock:result");
+ }
+ };
+ }
+}
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/camel-core/src/test/resources/mysimple.txt
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/mysimple.txt?rev=1440898&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/resources/mysimple.txt (added)
+++ camel/trunk/camel-core/src/test/resources/mysimple.txt Thu Jan 31 10:30:14 2013
@@ -0,0 +1 @@
+The name is ${body}
\ No newline at end of file
Propchange: camel/trunk/camel-core/src/test/resources/mysimple.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/resources/mysimple.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: camel/trunk/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java (original)
+++ camel/trunk/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java Thu Jan 31 10:30:14 2013
@@ -16,13 +16,12 @@
*/
package org.apache.camel.language.groovy;
-import org.apache.camel.IsSingleton;
-import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
/**
* @version
*/
-public class GroovyLanguage implements Language, IsSingleton {
+public class GroovyLanguage extends LanguageSupport {
public static GroovyExpression groovy(String expression) {
return new GroovyLanguage().createExpression(expression);
@@ -33,10 +32,8 @@ public class GroovyLanguage implements L
}
public GroovyExpression createExpression(String expression) {
+ expression = loadResource(expression);
return new GroovyExpression(expression);
}
- public boolean isSingleton() {
- return true;
- }
}
Added: camel/trunk/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyResourceTest.java (added)
+++ camel/trunk/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.groovy;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class GroovyResourceTest extends CamelTestSupport {
+
+ @Test
+ public void testGroovyResource() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("The result is 6");
+
+ template.sendBody("direct:start", 3);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().groovy("resource:classpath:mygroovy.groovy")
+ .to("mock:result");
+ }
+ };
+ }
+}
Propchange: camel/trunk/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-groovy/src/test/java/org/apache/camel/language/groovy/GroovyResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-groovy/src/test/resources/mygroovy.groovy
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-groovy/src/test/resources/mygroovy.groovy?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-groovy/src/test/resources/mygroovy.groovy (added)
+++ camel/trunk/components/camel-groovy/src/test/resources/mygroovy.groovy Thu Jan 31 10:30:14 2013
@@ -0,0 +1,2 @@
+// this is code comments
+return "The result is " + body * 2
\ No newline at end of file
Modified: camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java (original)
+++ camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java Thu Jan 31 10:30:14 2013
@@ -17,42 +17,38 @@
package org.apache.camel.language.sql;
import org.apache.camel.Expression;
-import org.apache.camel.IsSingleton;
+import org.apache.camel.ExpressionIllegalSyntaxException;
import org.apache.camel.Predicate;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.sql.SqlBuilder;
-import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
import org.josql.QueryParseException;
/**
- * XPath language.
+ * JoSQL language.
*
* @version
*/
-public class SqlLanguage implements Language, IsSingleton {
+public class SqlLanguage extends LanguageSupport {
public Predicate createPredicate(String expression) {
+ expression = loadResource(expression);
try {
SqlBuilder builder = SqlBuilder.sql(expression);
return builder;
} catch (QueryParseException e) {
- RuntimeException exception = new RuntimeCamelException("Canont create the SqlBuilder.", e);
- throw exception;
+ throw new ExpressionIllegalSyntaxException(expression, e);
}
}
public Expression createExpression(String expression) {
+ expression = loadResource(expression);
try {
SqlBuilder builder = SqlBuilder.sql(expression);
return builder;
} catch (QueryParseException e) {
- RuntimeException exception = new RuntimeCamelException("Canont create the SqlBuilder.", e);
- throw exception;
+ throw new ExpressionIllegalSyntaxException(expression, e);
}
}
- public boolean isSingleton() {
- return true;
- }
}
Modified: camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/Person.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/Person.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/Person.java (original)
+++ camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/Person.java Thu Jan 31 10:30:14 2013
@@ -23,7 +23,6 @@ public class Person {
private String name;
private String city;
-
public Person() {
}
Added: camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlResourceTest.java (added)
+++ camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.lanaguage.sql;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.sql.Person;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SqlResourceTest extends CamelTestSupport {
+
+ @Test
+ public void testSqlResource() throws Exception {
+ getMockEndpoint("mock:result").expectedMessageCount(1);
+ getMockEndpoint("mock:result").expectedHeaderReceived("foo", 123);
+ getMockEndpoint("mock:name").expectedBodiesReceived("Hiram");
+
+ template.sendBody("direct:start", createBody());
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @SuppressWarnings("unchecked")
+ private List createBody() {
+ List list = new ArrayList();
+ list.add(new Person("James", "London"));
+ list.add(new Person("Guillaume", "Normandy"));
+ list.add(new Person("Hiram", "Tampa"));
+ list.add(new Person("Rob", "London"));
+ return list;
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .setHeader("foo", constant(123))
+ .transform().sql("resource:classpath:myjosql.txt")
+ .to("mock:result")
+ // the result from josql is a spreadsheet eg list<list> so we grab the 1st data
+ .transform().simple("${body[0][0]}")
+ .to("mock:name");
+ }
+ };
+ }
+}
Propchange: camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-josql/src/test/resources/myjosql.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/test/resources/myjosql.txt?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-josql/src/test/resources/myjosql.txt (added)
+++ camel/trunk/components/camel-josql/src/test/resources/myjosql.txt Thu Jan 31 10:30:14 2013
@@ -0,0 +1 @@
+SELECT name FROM org.apache.camel.builder.sql.Person where city = 'Tampa'
\ No newline at end of file
Propchange: camel/trunk/components/camel-josql/src/test/resources/myjosql.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-josql/src/test/resources/myjosql.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelExpression.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelExpression.java (original)
+++ camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelExpression.java Thu Jan 31 10:30:14 2013
@@ -62,18 +62,16 @@ public class JuelExpression extends Expr
}
public <T> T evaluate(Exchange exchange, Class<T> tClass) {
- // TODO we could use caching here but then we'd have possible concurrency issues
- // so lets assume that the provider caches
-
// Create (if needed) the ExpressionFactory first from the CamelContext using FactoryFinder
ExpressionFactory factory = getExpressionFactory(exchange.getContext());
ELContext context = populateContext(createContext(), exchange);
ValueExpression valueExpression = factory.createValueExpression(context, expression, type);
Object value = valueExpression.getValue(context);
+ LOG.trace("Value returned {}", value);
return exchange.getContext().getTypeConverter().convertTo(tClass, value);
}
- public ExpressionFactory getExpressionFactory(CamelContext context) {
+ public synchronized ExpressionFactory getExpressionFactory(CamelContext context) {
if (expressionFactory == null && context != null) {
try {
FactoryFinder finder = context.getFactoryFinder("META-INF/services/org/apache/camel/language/");
@@ -94,7 +92,7 @@ public class JuelExpression extends Expr
return getExpressionFactory();
}
- public ExpressionFactory getExpressionFactory() {
+ public synchronized ExpressionFactory getExpressionFactory() {
if (expressionFactory == null) {
expressionFactory = new ExpressionFactoryImpl();
}
@@ -126,7 +124,6 @@ public class JuelExpression extends Expr
protected ELContext createContext() {
ELResolver resolver = new CompositeELResolver() {
{
- //add(methodResolver);
add(new ArrayELResolver(false));
add(new ListELResolver(false));
add(new MapELResolver(false));
Modified: camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelLanguage.java (original)
+++ camel/trunk/components/camel-juel/src/main/java/org/apache/camel/language/juel/JuelLanguage.java Thu Jan 31 10:30:14 2013
@@ -18,20 +18,22 @@ package org.apache.camel.language.juel;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
-import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
/**
* The <a href="http://camel.apache.org/el.html">EL Language from JSP and JSF</a>
- * using the <a href="http://camel.apache.org/juel.html">JUEL library</a>
*
* @version
*/
-public class JuelLanguage implements Language {
+public class JuelLanguage extends LanguageSupport {
+
public Predicate createPredicate(String expression) {
+ expression = loadResource(expression);
return new JuelExpression(expression, Boolean.class);
}
public Expression createExpression(String expression) {
+ expression = loadResource(expression);
return new JuelExpression(expression, Object.class);
}
}
Added: camel/trunk/components/camel-juel/src/test/java/org/apache/camel/language/juel/JuelResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-juel/src/test/java/org/apache/camel/language/juel/JuelResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-juel/src/test/java/org/apache/camel/language/juel/JuelResourceTest.java (added)
+++ camel/trunk/components/camel-juel/src/test/java/org/apache/camel/language/juel/JuelResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.juel;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class JuelResourceTest extends CamelTestSupport {
+
+ @Test
+ public void testJuelResource() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("The name is Camel");
+
+ template.sendBody("direct:start", "Camel");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().el("resource:classpath:juel.txt")
+ .to("mock:result");
+ }
+ };
+ }
+}
Propchange: camel/trunk/components/camel-juel/src/test/java/org/apache/camel/language/juel/JuelResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-juel/src/test/java/org/apache/camel/language/juel/JuelResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-juel/src/test/resources/juel.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-juel/src/test/resources/juel.txt?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-juel/src/test/resources/juel.txt (added)
+++ camel/trunk/components/camel-juel/src/test/resources/juel.txt Thu Jan 31 10:30:14 2013
@@ -0,0 +1 @@
+The name is ${in.body}
\ No newline at end of file
Propchange: camel/trunk/components/camel-juel/src/test/resources/juel.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-juel/src/test/resources/juel.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: camel/trunk/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java (original)
+++ camel/trunk/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java Thu Jan 31 10:30:14 2013
@@ -17,25 +17,24 @@
package org.apache.camel.language.jxpath;
import org.apache.camel.Expression;
-import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
/**
* <a href="http://commons.apache.org/jxpath/">JXPath</a> {@link Language}
* provider
*/
-public class JXPathLanguage implements Language, IsSingleton {
+public class JXPathLanguage extends LanguageSupport {
public Expression createExpression(String expression) {
+ expression = loadResource(expression);
return new JXPathExpression(expression, Object.class);
}
public Predicate createPredicate(String predicate) {
+ predicate = loadResource(predicate);
return new JXPathExpression(predicate, Boolean.class);
}
- public boolean isSingleton() {
- return true;
- }
}
Added: camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathResourceTest.java (added)
+++ camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.jxpath;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class JXPathResourceTest extends CamelTestSupport {
+
+ @Test
+ public void testJXPathResource() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("James");
+
+ template.sendBody("direct:start", new PersonBean("James", "London"));
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().jxpath("resource:classpath:myjxpath.txt")
+ .to("mock:result");
+ }
+ };
+ }
+}
Propchange: camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-jxpath/src/test/resources/myjxpath.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jxpath/src/test/resources/myjxpath.txt?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-jxpath/src/test/resources/myjxpath.txt (added)
+++ camel/trunk/components/camel-jxpath/src/test/resources/myjxpath.txt Thu Jan 31 10:30:14 2013
@@ -0,0 +1 @@
+in/body/name
\ No newline at end of file
Propchange: camel/trunk/components/camel-jxpath/src/test/resources/myjxpath.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-jxpath/src/test/resources/myjxpath.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: camel/trunk/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelLanguage.java (original)
+++ camel/trunk/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelLanguage.java Thu Jan 31 10:30:14 2013
@@ -17,26 +17,25 @@
package org.apache.camel.language.mvel;
import org.apache.camel.Expression;
-import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
/**
* An <a href="http://mvel.codehaus.org/">MVEL</a> {@link Language} plugin
*
* @version
*/
-public class MvelLanguage implements Language, IsSingleton {
+public class MvelLanguage extends LanguageSupport {
public Predicate createPredicate(String expression) {
+ expression = loadResource(expression);
return new MvelExpression(this, expression, Boolean.class);
}
public Expression createExpression(String expression) {
+ expression = loadResource(expression);
return new MvelExpression(this, expression, Object.class);
}
- public boolean isSingleton() {
- return true;
- }
}
Added: camel/trunk/components/camel-mvel/src/test/java/org/apache/camel/language/mvel/MvelResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mvel/src/test/java/org/apache/camel/language/mvel/MvelResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-mvel/src/test/java/org/apache/camel/language/mvel/MvelResourceTest.java (added)
+++ camel/trunk/components/camel-mvel/src/test/java/org/apache/camel/language/mvel/MvelResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.mvel;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class MvelResourceTest extends CamelTestSupport {
+
+ @Test
+ public void testMvelResource() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("The result is 6");
+
+ template.sendBody("direct:start", 3);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().mvel("resource:classpath:mymvel.txt")
+ .to("mock:result");
+ }
+ };
+ }
+}
Propchange: camel/trunk/components/camel-mvel/src/test/java/org/apache/camel/language/mvel/MvelResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-mvel/src/test/java/org/apache/camel/language/mvel/MvelResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-mvel/src/test/resources/mymvel.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mvel/src/test/resources/mymvel.txt?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-mvel/src/test/resources/mymvel.txt (added)
+++ camel/trunk/components/camel-mvel/src/test/resources/mymvel.txt Thu Jan 31 10:30:14 2013
@@ -0,0 +1,19 @@
+// ------------------------------------------------------------------------
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ------------------------------------------------------------------------
+
+// this is a code comment
+return "The result is " + request.body * 2;
\ No newline at end of file
Propchange: camel/trunk/components/camel-mvel/src/test/resources/mymvel.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-mvel/src/test/resources/mymvel.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlExpression.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlExpression.java (original)
+++ camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlExpression.java Thu Jan 31 10:30:14 2013
@@ -25,17 +25,19 @@ import org.apache.camel.ExpressionIllega
import org.apache.camel.support.ExpressionSupport;
/**
- * An <a href="http://www.ognl.org/">OGNL</a> {@link Expression}
+ * An <a href="http://www.ognl.org/">OGNL</a> {@link org.apache.camel.Expression}
*
* @version
*/
public class OgnlExpression extends ExpressionSupport {
+ private final OgnlLanguage language;
private final String expressionString;
private final Class<?> type;
private Object expression;
public OgnlExpression(OgnlLanguage language, String expressionString, Class<?> type) {
+ this.language = language;
this.expressionString = expressionString;
this.type = type;
try {
@@ -50,8 +52,6 @@ public class OgnlExpression extends Expr
}
public <T> T evaluate(Exchange exchange, Class<T> tClass) {
- // TODO we could use caching here but then we'd have possible
- // concurrency issues so lets assume that the provider caches
OgnlContext oglContext = new OgnlContext();
try {
Object value = Ognl.getValue(expression, oglContext, new RootObject(exchange));
Modified: camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlLanguage.java (original)
+++ camel/trunk/components/camel-ognl/src/main/java/org/apache/camel/language/ognl/OgnlLanguage.java Thu Jan 31 10:30:14 2013
@@ -17,26 +17,24 @@
package org.apache.camel.language.ognl;
import org.apache.camel.Expression;
-import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
/**
* An <a href="http://www.ognl.org/">OGNL</a> {@link Language} plugin
*
* @version
*/
-public class OgnlLanguage implements Language, IsSingleton {
+public class OgnlLanguage extends LanguageSupport {
public Predicate createPredicate(String expression) {
+ expression = loadResource(expression);
return new OgnlExpression(this, expression, Boolean.class);
}
public Expression createExpression(String expression) {
+ expression = loadResource(expression);
return new OgnlExpression(this, expression, Object.class);
}
-
- public boolean isSingleton() {
- return true;
- }
}
Added: camel/trunk/components/camel-ognl/src/test/java/org/apache/camel/language/ognl/OgnlResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ognl/src/test/java/org/apache/camel/language/ognl/OgnlResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-ognl/src/test/java/org/apache/camel/language/ognl/OgnlResourceTest.java (added)
+++ camel/trunk/components/camel-ognl/src/test/java/org/apache/camel/language/ognl/OgnlResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.ognl;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class OgnlResourceTest extends CamelTestSupport {
+
+ @Test
+ public void testOgnllResource() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived(7);
+
+ template.sendBody("direct:start", 3);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().ognl("resource:classpath:myognl.txt")
+ .to("mock:result");
+ }
+ };
+ }
+}
\ No newline at end of file
Propchange: camel/trunk/components/camel-ognl/src/test/java/org/apache/camel/language/ognl/OgnlResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-ognl/src/test/java/org/apache/camel/language/ognl/OgnlResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-ognl/src/test/resources/myognl.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ognl/src/test/resources/myognl.txt?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-ognl/src/test/resources/myognl.txt (added)
+++ camel/trunk/components/camel-ognl/src/test/resources/myognl.txt Thu Jan 31 10:30:14 2013
@@ -0,0 +1 @@
+request.body * 2 + 1
\ No newline at end of file
Propchange: camel/trunk/components/camel-ognl/src/test/resources/myognl.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-ognl/src/test/resources/myognl.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptLanguage.java (original)
+++ camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptLanguage.java Thu Jan 31 10:30:14 2013
@@ -17,14 +17,13 @@
package org.apache.camel.builder.script;
import org.apache.camel.Expression;
-import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
-import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
/**
* @version
*/
-public class ScriptLanguage implements Language, IsSingleton {
+public class ScriptLanguage extends LanguageSupport {
private final String language;
public ScriptLanguage(String language) {
@@ -32,14 +31,13 @@ public class ScriptLanguage implements L
}
public Predicate createPredicate(String expression) {
+ expression = loadResource(expression);
return new ScriptBuilder(language, expression);
}
public Expression createExpression(String expression) {
+ expression = loadResource(expression);
return new ScriptBuilder(language, expression);
}
- public boolean isSingleton() {
- return true;
- }
}
Added: camel/trunk/components/camel-script/src/test/java/org/apache/camel/language/script/ScriptLanguageResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-script/src/test/java/org/apache/camel/language/script/ScriptLanguageResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-script/src/test/java/org/apache/camel/language/script/ScriptLanguageResourceTest.java (added)
+++ camel/trunk/components/camel-script/src/test/java/org/apache/camel/language/script/ScriptLanguageResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,54 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.script;
+
+import org.apache.camel.ScriptTestHelper;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ScriptLanguageResourceTest extends CamelTestSupport {
+
+ @Test
+ public void testScriptResource() throws Exception {
+ if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+ return;
+ }
+
+ getMockEndpoint("mock:result").expectedBodiesReceived(7);
+
+ template.sendBody("direct:start", 3);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().javaScript("resource:classpath:myjavascript.js")
+ .to("mock:result");
+ }
+ };
+ }
+
+}
Propchange: camel/trunk/components/camel-script/src/test/java/org/apache/camel/language/script/ScriptLanguageResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-script/src/test/java/org/apache/camel/language/script/ScriptLanguageResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-script/src/test/resources/myjavascript.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-script/src/test/resources/myjavascript.js?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-script/src/test/resources/myjavascript.js (added)
+++ camel/trunk/components/camel-script/src/test/resources/myjavascript.js Thu Jan 31 10:30:14 2013
@@ -0,0 +1 @@
+body * 2 + 1
\ No newline at end of file
Propchange: camel/trunk/components/camel-script/src/test/resources/myjavascript.js
------------------------------------------------------------------------------
svn:eol-style = native
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/RootObject.java Thu Jan 31 10:30:14 2013
@@ -45,6 +45,10 @@ public final class RootObject {
return exchange.getExchangeId();
}
+ public Object getBody() {
+ return exchange.getIn().getBody();
+ }
+
public Message getRequest() {
return exchange.getIn();
}
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java?rev=1440898&r1=1440897&r2=1440898&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelLanguage.java Thu Jan 31 10:30:14 2013
@@ -17,24 +17,23 @@
package org.apache.camel.language.spel;
import org.apache.camel.Expression;
-import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.spi.Language;
+import org.apache.camel.support.LanguageSupport;
/**
* A Spring Expression {@link Language} plugin
*/
-public class SpelLanguage implements Language, IsSingleton {
+public class SpelLanguage extends LanguageSupport {
public Predicate createPredicate(String expression) {
+ expression = loadResource(expression);
return new SpelExpression(expression, Boolean.class);
}
public Expression createExpression(String expression) {
+ expression = loadResource(expression);
return new SpelExpression(expression, Object.class);
}
- public boolean isSingleton() {
- return true;
- }
}
Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelResourceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelResourceTest.java?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelResourceTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelResourceTest.java Thu Jan 31 10:30:14 2013
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.language.spel;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SpelResourceTest extends ContextTestSupport {
+
+ @Test
+ public void testSpelResource() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived(7);
+
+ template.sendBody("direct:start", 3);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .transform().spel("resource:classpath:myspel.txt")
+ .to("mock:result");
+ }
+ };
+ }
+}
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelResourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/language/spel/SpelResourceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-spring/src/test/resources/myspel.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/myspel.txt?rev=1440898&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/myspel.txt (added)
+++ camel/trunk/components/camel-spring/src/test/resources/myspel.txt Thu Jan 31 10:30:14 2013
@@ -0,0 +1 @@
+#{body * 2 + 1}
\ No newline at end of file
Propchange: camel/trunk/components/camel-spring/src/test/resources/myspel.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/resources/myspel.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain