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 2009/03/12 16:23:14 UTC
svn commit: r752893 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/component/file/
camel-core/src/main/java/org/apache/camel/component/mock/ cam...
Author: davsclaus
Date: Thu Mar 12 15:23:06 2009
New Revision: 752893
URL: http://svn.apache.org/viewvc?rev=752893&view=rev
Log:
CAMEL-1452,CAMEL-1387: Added IsSingleton to allow Injector to return shared instances. Added methods for tooling on CamelContext.
Added:
camel/trunk/camel-core/src/main/java/org/apache/camel/IsSingleton.java (with props)
camel/trunk/camel-core/src/main/java/org/apache/camel/util/PredicateAssertHelper.java (contents, props changed)
- copied, changed from r752829, camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateSupport.java
camel/trunk/camel-core/src/test/java/org/apache/camel/MyBarSingleton.java (with props)
camel/trunk/camel-core/src/test/java/org/apache/camel/MyFoo.java (with props)
Removed:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateSupport.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/property/PropertyLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ReflectionInjector.java
camel/trunk/camel-core/src/test/java/org/apache/camel/InjectorDefaultsToReflectionTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
camel/trunk/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java
camel/trunk/components/camel-guice/src/main/java/org/apache/camel/guice/impl/GuiceInjector.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/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/spring/spi/SpringInjector.java
camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Thu Mar 12 15:23:06 2009
@@ -79,6 +79,13 @@
<T extends Component> T getComponent(String name, Class<T> componentType);
/**
+ * Gets a readonly list of names of the components currently registered
+ *
+ * @return a readonly list with the names of the the componens.
+ */
+ List<String> getComponentNames();
+
+ /**
* Removes a previously added component.
*
* @param componentName the component name to remove
@@ -280,6 +287,13 @@
Language resolveLanguage(String language);
/**
+ * Gets a readonly list with the names of the languages currently registered.
+ *
+ * @return a readonly list with the names of the the languages.
+ */
+ List<String> getLanguageNames();
+
+ /**
* Creates a new ProducerTemplate.
* <p/>
* See this FAQ before use: <a href="http://camel.apache.org/why-does-camel-use-too-many-threads-with-producertemplate.html">
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java Thu Mar 12 15:23:06 2009
@@ -29,15 +29,7 @@
* @see Message
* @version $Revision$
*/
-public interface Endpoint {
-
- /**
- * Returns if the endpoint should be a CamelContext singleton. If the
- * endpoint is a Singleton, then a single Endpoint instance will be shared
- * by all routes with the same URI. Because the endpoint is shared, it
- * should be treated as an immutable.
- */
- boolean isSingleton();
+public interface Endpoint extends IsSingleton {
/**
* Returns the string representation of the endpoint URI
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/IsSingleton.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/IsSingleton.java?rev=752893&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/IsSingleton.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/IsSingleton.java Thu Mar 12 15:23:06 2009
@@ -0,0 +1,35 @@
+/**
+ * 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;
+
+/**
+ * Used for defining if a given class is singleton or not.
+ * If the class is a Singleton, then a single instance will be shared. Because the class is shared, it
+ * should be treated as an immutable and be thread safe.
+ *
+ * @version $Revision$
+ */
+public interface IsSingleton {
+
+ /**
+ * Wheter this class supports being singleton or not.
+ *
+ * @return <tt>true</tt> to be a single shared instance, <tt>false</tt> to create new instances.
+ */
+ boolean isSingleton();
+
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/IsSingleton.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/IsSingleton.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java Thu Mar 12 15:23:06 2009
@@ -45,7 +45,7 @@
* Converts the given expression into an {@link Predicate}
*/
public static Predicate toPredicate(final Expression expression) {
- return new PredicateSupport() {
+ return new Predicate() {
public boolean matches(Exchange exchange) {
Object value = expression.evaluate(exchange);
return ObjectHelper.evaluateValuePredicate(value);
@@ -63,7 +63,7 @@
*/
public static Predicate not(final Predicate predicate) {
notNull(predicate, "predicate");
- return new PredicateSupport() {
+ return new Predicate() {
public boolean matches(Exchange exchange) {
return !predicate.matches(exchange);
}
@@ -81,7 +81,7 @@
public static Predicate and(final Predicate left, final Predicate right) {
notNull(left, "left");
notNull(right, "right");
- return new PredicateSupport() {
+ return new Predicate() {
public boolean matches(Exchange exchange) {
return left.matches(exchange) && right.matches(exchange);
}
@@ -99,7 +99,7 @@
public static Predicate or(final Predicate left, final Predicate right) {
notNull(left, "left");
notNull(right, "right");
- return new PredicateSupport() {
+ return new Predicate() {
public boolean matches(Exchange exchange) {
return left.matches(exchange) || right.matches(exchange);
}
@@ -117,7 +117,7 @@
public static Predicate in(final Predicate... predicates) {
notNull(predicates, "predicates");
- return new PredicateSupport() {
+ return new Predicate() {
public boolean matches(Exchange exchange) {
for (Predicate in : predicates) {
if (in.matches(exchange)) {
@@ -237,7 +237,7 @@
notNull(expression, "expression");
notNull(type, "type");
- return new PredicateSupport() {
+ return new Predicate() {
public boolean matches(Exchange exchange) {
Object value = expression.evaluate(exchange);
return type.isInstance(value);
@@ -274,7 +274,7 @@
notNull(expression, "expression");
notNull(pattern, "pattern");
- return new PredicateSupport() {
+ return new Predicate() {
public boolean matches(Exchange exchange) {
Object value = expression.evaluate(exchange);
if (value != null) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java Thu Mar 12 15:23:06 2009
@@ -211,7 +211,6 @@
}
processStrategy.commit(operations, endpoint, exchange, file);
} catch (Exception e) {
- log.warn("Error committing remote file strategy: " + processStrategy, e);
handleException(e);
}
}
@@ -232,7 +231,6 @@
try {
processStrategy.rollback(operations, endpoint, exchange, file);
} catch (Exception e) {
- log.warn("Error rolling back remote file strategy: " + processStrategy, e);
handleException(e);
}
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java Thu Mar 12 15:23:06 2009
@@ -24,8 +24,8 @@
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionClause;
-import org.apache.camel.builder.PredicateSupport;
import org.apache.camel.builder.ValueBuilder;
+import org.apache.camel.util.PredicateAssertHelper;
import static org.apache.camel.builder.ExpressionBuilder.bodyExpression;
import static org.apache.camel.builder.ExpressionBuilder.headerExpression;
import static org.apache.camel.builder.ExpressionBuilder.propertyExpression;
@@ -112,7 +112,7 @@
*/
protected void applyAssertionOn(MockEndpoint endpoint, int index, Exchange exchange) {
for (Predicate predicate : predicates) {
- PredicateSupport.assertMatches(predicate, endpoint.getEndpointUri() + " ", exchange);
+ PredicateAssertHelper.assertMatches(predicate, endpoint.getEndpointUri() + " ", exchange);
}
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Thu Mar 12 15:23:06 2009
@@ -30,6 +30,7 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Component;
import org.apache.camel.Endpoint;
+import org.apache.camel.IsSingleton;
import org.apache.camel.NoFactoryAvailableException;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
@@ -93,6 +94,7 @@
private ComponentResolver componentResolver;
private boolean autoCreateComponents = true;
private LanguageResolver languageResolver = new DefaultLanguageResolver();
+ private final Map<String, Language> languages = new HashMap<String, Language>();
private Registry registry;
private LifecycleStrategy lifecycleStrategy;
private final List<RouteDefinition> routeDefinitions = new ArrayList<RouteDefinition>();
@@ -514,7 +516,27 @@
// -----------------------------------------------------------------------
public Language resolveLanguage(String language) {
- return getLanguageResolver().resolveLanguage(language, this);
+ Language answer;
+ synchronized (languages) {
+ answer = languages.get(language);
+
+ // check if the language is singleton, if so return the shared instance
+ if (answer != null && answer instanceof IsSingleton) {
+ boolean singleton = ((IsSingleton)answer).isSingleton();
+ if (singleton) {
+ return answer;
+ }
+ }
+
+ // language not known or not singleton, then use resolver
+ answer = getLanguageResolver().resolveLanguage(language, this);
+ if (answer != null) {
+ languages.put(language, answer);
+ }
+ }
+
+ // no language resolved
+ return answer;
}
// Properties
@@ -953,6 +975,26 @@
this.packageScanClassResolver = packageScanClassResolver;
}
+ public List<String> getComponentNames() {
+ synchronized (components) {
+ List<String> answer = new ArrayList<String>();
+ for (String name : components.keySet()) {
+ answer.add(name);
+ }
+ return answer;
+ }
+ }
+
+ public List<String> getLanguageNames() {
+ synchronized (languages) {
+ List<String> answer = new ArrayList<String>();
+ for (String name : languages.keySet()) {
+ answer.add(name);
+ }
+ return answer;
+ }
+ }
+
protected synchronized String getEndpointKey(String uri, Endpoint endpoint) {
if (endpoint.isSingleton()) {
return uri;
@@ -966,5 +1008,5 @@
}
}
}
-
+
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java Thu Mar 12 15:23:06 2009
@@ -41,6 +41,7 @@
protected Log getLog() {
return LOG;
}
+
@SuppressWarnings("unchecked")
public Language resolveLanguage(String name, CamelContext context) {
Object bean = null;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java Thu Mar 12 15:23:06 2009
@@ -17,6 +17,7 @@
package org.apache.camel.language.bean;
import org.apache.camel.Expression;
+import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.PredicateBuilder;
import org.apache.camel.spi.Language;
@@ -37,7 +38,7 @@
*
* @version $Revision$
*/
-public class BeanLanguage implements Language {
+public class BeanLanguage implements Language, IsSingleton {
/**
* Creates the expression based on the string syntax.
@@ -104,4 +105,7 @@
return new BeanExpression(bean, method);
}
+ public boolean isSingleton() {
+ return true;
+ }
}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java Thu Mar 12 15:23:06 2009
@@ -17,6 +17,7 @@
package org.apache.camel.language.constant;
import org.apache.camel.Expression;
+import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.PredicateBuilder;
@@ -25,7 +26,7 @@
/**
* A language for constant expressions.
*/
-public class ConstantLanguage implements Language {
+public class ConstantLanguage implements Language, IsSingleton {
public static Expression constant(Object value) {
return ExpressionBuilder.constantExpression(value);
@@ -38,4 +39,8 @@
public Expression createExpression(String expression) {
return ConstantLanguage.constant(expression);
}
+
+ public boolean isSingleton() {
+ return true;
+ }
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java Thu Mar 12 15:23:06 2009
@@ -17,6 +17,7 @@
package org.apache.camel.language.header;
import org.apache.camel.Expression;
+import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.PredicateBuilder;
@@ -25,7 +26,7 @@
/**
* A language for header expressions.
*/
-public class HeaderLanguage implements Language {
+public class HeaderLanguage implements Language, IsSingleton {
public static Expression header(String headerName) {
return ExpressionBuilder.headerExpression(headerName);
@@ -38,4 +39,8 @@
public Expression createExpression(String expression) {
return HeaderLanguage.header(expression);
}
+
+ public boolean isSingleton() {
+ return true;
+ }
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/property/PropertyLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/property/PropertyLanguage.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/property/PropertyLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/property/PropertyLanguage.java Thu Mar 12 15:23:06 2009
@@ -17,6 +17,7 @@
package org.apache.camel.language.property;
import org.apache.camel.Expression;
+import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.PredicateBuilder;
@@ -25,7 +26,7 @@
/**
* A language for property expressions.
*/
-public class PropertyLanguage implements Language {
+public class PropertyLanguage implements Language, IsSingleton {
public static Expression property(String propertyName) {
return ExpressionBuilder.propertyExpression(propertyName);
@@ -38,4 +39,8 @@
public Expression createExpression(String expression) {
return PropertyLanguage.property(expression);
}
+
+ public boolean isSingleton() {
+ return true;
+ }
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java Thu Mar 12 15:23:06 2009
@@ -105,4 +105,7 @@
return FileExpressionBuilder.simpleExpression(expression);
}
+ public boolean isSingleton() {
+ return true;
+ }
}
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=752893&r1=752892&r2=752893&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 Mar 12 15:23:06 2009
@@ -120,4 +120,7 @@
throw new ExpressionIllegalSyntaxException(expression);
}
+ public boolean isSingleton() {
+ return true;
+ }
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java Thu Mar 12 15:23:06 2009
@@ -24,6 +24,7 @@
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
+import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.PredicateBuilder;
@@ -37,7 +38,7 @@
/**
* Abstract base class for Simple languages.
*/
-public abstract class SimpleLanguageSupport implements Language {
+public abstract class SimpleLanguageSupport implements Language, IsSingleton {
protected static final Pattern PATTERN = Pattern.compile(
"^\\$\\{(.+)\\}\\s+(==|>|>=|<|<=|!=|contains|not contains|regex|not regex|in|not in)\\s+(.+)$");
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java Thu Mar 12 15:23:06 2009
@@ -17,6 +17,7 @@
package org.apache.camel.language.tokenizer;
import org.apache.camel.Expression;
+import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.PredicateBuilder;
@@ -26,7 +27,7 @@
/**
* A language for tokenizer expressions.
*/
-public class TokenizeLanguage implements Language {
+public class TokenizeLanguage implements Language, IsSingleton {
private String token;
private String headerName;
@@ -102,4 +103,8 @@
public void setRegex(boolean regex) {
this.regex = regex;
}
+
+ public boolean isSingleton() {
+ return false;
+ }
}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java Thu Mar 12 15:23:06 2009
@@ -19,6 +19,7 @@
import javax.xml.namespace.QName;
import org.apache.camel.Expression;
+import org.apache.camel.IsSingleton;
import org.apache.camel.Predicate;
import org.apache.camel.builder.xml.XPathBuilder;
import org.apache.camel.spi.Language;
@@ -28,7 +29,7 @@
*
* @version $Revision$
*/
-public class XPathLanguage implements Language {
+public class XPathLanguage implements Language, IsSingleton {
private QName resultType;
public Predicate createPredicate(String expression) {
@@ -56,4 +57,8 @@
builder.setResultQName(resultType);
}
}
+
+ public boolean isSingleton() {
+ return false;
+ }
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java Thu Mar 12 15:23:06 2009
@@ -33,4 +33,14 @@
* @return a newly created instance
*/
<T> T newInstance(Class<T> type);
+
+ /**
+ * Instantiates a new instance of the given object type possibly injecting values
+ * into the object in the process
+ *
+ * @param instance an instance of the type to create
+ * @return a newly created instance
+ */
+ <T> T newInstance(Class<T> type, Object instance);
+
}
Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/util/PredicateAssertHelper.java (from r752829, camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateSupport.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/PredicateAssertHelper.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/util/PredicateAssertHelper.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateSupport.java&r1=752829&r2=752893&rev=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/PredicateAssertHelper.java Thu Mar 12 15:23:06 2009
@@ -14,17 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.builder;
+package org.apache.camel.util;
import org.apache.camel.Exchange;
import org.apache.camel.Predicate;
/**
- * A useful base class for {@link Predicate} implementations
+ * A helper for doing {@link Predicate} assertions.
*
* @version $Revision$
*/
-public abstract class PredicateSupport implements Predicate {
+public final class PredicateAssertHelper {
+
+ private PredicateAssertHelper() {
+ // Utility class
+ }
public static void assertMatches(Predicate predicate, String text, Exchange exchange) {
if (!predicate.matches(exchange)) {
@@ -36,4 +40,5 @@
}
}
-}
+
+}
\ No newline at end of file
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/util/PredicateAssertHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/util/PredicateAssertHelper.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/ReflectionInjector.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ReflectionInjector.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/ReflectionInjector.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/ReflectionInjector.java Thu Mar 12 15:23:06 2009
@@ -16,6 +16,7 @@
*/
package org.apache.camel.util;
+import org.apache.camel.IsSingleton;
import org.apache.camel.spi.Injector;
/**
@@ -30,4 +31,14 @@
public <T> T newInstance(Class<T> type) {
return ObjectHelper.newInstance(type);
}
+
+ public <T> T newInstance(Class<T> type, Object instance) {
+ if (instance instanceof IsSingleton) {
+ boolean singleton = ((IsSingleton) instance).isSingleton();
+ if (singleton) {
+ return type.cast(instance);
+ }
+ }
+ return newInstance(type);
+ }
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/InjectorDefaultsToReflectionTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/InjectorDefaultsToReflectionTest.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/InjectorDefaultsToReflectionTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/InjectorDefaultsToReflectionTest.java Thu Mar 12 15:23:06 2009
@@ -16,23 +16,44 @@
*/
package org.apache.camel;
-import junit.framework.TestCase;
-import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.spi.Injector;
import org.apache.camel.util.ReflectionInjector;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
/**
* @version $Revision$
*/
-public class InjectorDefaultsToReflectionTest extends TestCase {
- private static final transient Log LOG = LogFactory.getLog(InjectorDefaultsToReflectionTest.class);
-
+public class InjectorDefaultsToReflectionTest extends ContextTestSupport {
+
public void testInjectorIsReflectionByDefault() throws Exception {
- Injector injector = new DefaultCamelContext().getInjector();
- assertTrue("Injector should be reflection based but was: " + injector,
- injector instanceof ReflectionInjector);
- LOG.debug("Found injector: " + injector);
+ Injector injector = context.getInjector();
+ assertIsInstanceOf(ReflectionInjector.class, injector);
}
+
+ public void testNewInstance() throws Exception {
+ Injector injector = context.getInjector();
+
+ MyFoo foo = injector.newInstance(MyFoo.class);
+ foo.setName("Claus");
+
+ MyFoo foo2 = injector.newInstance(MyFoo.class);
+ assertNotSame(foo, foo2);
+
+ assertEquals("Claus", foo.getName());
+ assertNull(foo2.getName());
+ }
+
+ public void testSharedInstance() throws Exception {
+ Injector injector = context.getInjector();
+
+ MyBarSingleton bar = injector.newInstance(MyBarSingleton.class, new MyBarSingleton());
+ bar.setName("Claus");
+
+ MyBarSingleton bar2 = injector.newInstance(MyBarSingleton.class, bar);
+ assertSame(bar, bar2);
+
+ assertEquals("Claus", bar.getName());
+ assertEquals("Claus", bar2.getName());
+ }
+
+
}
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/MyBarSingleton.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/MyBarSingleton.java?rev=752893&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/MyBarSingleton.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/MyBarSingleton.java Thu Mar 12 15:23:06 2009
@@ -0,0 +1,45 @@
+/**
+ * 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;
+
+/**
+ * @version $Revision$
+ */
+public class MyBarSingleton implements IsSingleton {
+
+ private String name;
+
+ public MyBarSingleton() {
+ }
+
+ public MyBarSingleton(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public boolean isSingleton() {
+ return true;
+ }
+
+}
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/MyBarSingleton.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/MyBarSingleton.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/MyFoo.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/MyFoo.java?rev=752893&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/MyFoo.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/MyFoo.java Thu Mar 12 15:23:06 2009
@@ -0,0 +1,40 @@
+/**
+ * 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;
+
+/**
+ * @version $Revision$
+ */
+public class MyFoo {
+
+ private String name;
+
+ public MyFoo() {
+ }
+
+ public MyFoo(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/MyFoo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/MyFoo.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java Thu Mar 12 15:23:06 2009
@@ -22,7 +22,6 @@
import junit.framework.TestCase;
import org.apache.camel.builder.Builder;
-import org.apache.camel.builder.PredicateSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.ValueBuilder;
import org.apache.camel.impl.DefaultCamelContext;
@@ -30,6 +29,7 @@
import org.apache.camel.processor.DelegateAsyncProcessor;
import org.apache.camel.processor.DelegateProcessor;
import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.util.PredicateAssertHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -228,7 +228,7 @@
*/
protected void assertPredicateDoesNotMatch(Predicate predicate, Exchange exchange) {
try {
- PredicateSupport.assertMatches(predicate, "Predicate should match: ", exchange);
+ PredicateAssertHelper.assertMatches(predicate, "Predicate should match: ", exchange);
} catch (AssertionError e) {
log.debug("Caught expected assertion error: " + e);
}
@@ -240,7 +240,7 @@
*/
protected boolean assertPredicate(final Predicate predicate, Exchange exchange, boolean expected) {
if (expected) {
- PredicateSupport.assertMatches(predicate, "Predicate failed: ", exchange);
+ PredicateAssertHelper.assertMatches(predicate, "Predicate failed: ", exchange);
}
boolean value = predicate.matches(exchange);
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java Thu Mar 12 15:23:06 2009
@@ -24,10 +24,10 @@
import org.apache.camel.Predicate;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.PredicateBuilder;
-import org.apache.camel.builder.PredicateSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.xml.XPathBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.util.PredicateAssertHelper;
/**
* @version $Revision$
@@ -41,7 +41,7 @@
// lets compare the XPath result
Predicate predicate = PredicateBuilder.isEqualTo(expression, ExpressionBuilder.constantExpression(index));
log.debug("evaluating predicate: " + predicate);
- PredicateSupport.assertMatches(predicate, "Actual: " + actual, actual);
+ PredicateAssertHelper.assertMatches(predicate, "Actual: " + actual, actual);
}
protected Object createMessageBody(long messageIndex) {
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java Thu Mar 12 15:23:06 2009
@@ -16,6 +16,8 @@
*/
package org.apache.camel.impl;
+import java.util.List;
+
import junit.framework.TestCase;
import org.apache.camel.Component;
import org.apache.camel.component.bean.BeanComponent;
@@ -39,4 +41,14 @@
assertNull(component);
}
+ public void testGetComponents() throws Exception {
+ DefaultCamelContext ctx = new DefaultCamelContext();
+ Component component = ctx.getComponent("bean");
+ assertNotNull(component);
+
+ List<String> list = ctx.getComponentNames();
+ assertEquals(1, list.size());
+ assertEquals("bean", list.get(0));
+ }
+
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java Thu Mar 12 15:23:06 2009
@@ -16,8 +16,9 @@
*/
package org.apache.camel.language;
-import org.apache.camel.LanguageTestSupport;
import org.apache.camel.ExpressionIllegalSyntaxException;
+import org.apache.camel.LanguageTestSupport;
+import org.apache.camel.language.simple.SimpleLanguage;
/**
* @version $Revision$
@@ -41,6 +42,14 @@
assertExpression("header.foo", "abc");
}
+ public void testLanguagesInContext() throws Exception {
+ // evaluate so we know there is 1 language in the context
+ assertExpression("id", exchange.getIn().getMessageId());
+
+ assertEquals(1, context.getLanguageNames().size());
+ assertEquals("simple", context.getLanguageNames().get(0));
+ }
+
public void testComplexExpressions() throws Exception {
assertExpression("hey ${in.header.foo}", "hey abc");
assertExpression("hey ${in.header.foo}!", "hey abc!");
@@ -51,7 +60,6 @@
assertExpression("${in.header.foo}!", "abc!");
}
-
public void testInvalidComplexExpression() throws Exception {
try {
assertExpression("hey ${foo", "bad expression!");
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=752893&r1=752892&r2=752893&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 Mar 12 15:23:06 2009
@@ -18,12 +18,13 @@
import groovy.lang.GroovyClassLoader;
import groovy.lang.Script;
+import org.apache.camel.IsSingleton;
import org.apache.camel.spi.Language;
/**
* @version $Revision$
*/
-public class GroovyLanguage implements Language {
+public class GroovyLanguage implements Language, IsSingleton {
public static GroovyExpression groovy(String expression) {
return new GroovyLanguage().createExpression(expression);
@@ -38,7 +39,12 @@
return new GroovyExpression(scriptType, expression);
}
+ @SuppressWarnings("unchecked")
protected Class<Script> parseExpression(String expression) {
return new GroovyClassLoader().parseClass(expression);
}
+
+ public boolean isSingleton() {
+ return true;
+ }
}
Modified: camel/trunk/components/camel-guice/src/main/java/org/apache/camel/guice/impl/GuiceInjector.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-guice/src/main/java/org/apache/camel/guice/impl/GuiceInjector.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/components/camel-guice/src/main/java/org/apache/camel/guice/impl/GuiceInjector.java (original)
+++ camel/trunk/components/camel-guice/src/main/java/org/apache/camel/guice/impl/GuiceInjector.java Thu Mar 12 15:23:06 2009
@@ -16,6 +16,7 @@
*/
package org.apache.camel.guice.impl;
+import org.apache.camel.IsSingleton;
import org.apache.camel.spi.Injector;
/**
@@ -36,4 +37,14 @@
return injector.getInstance(type);
}
+ public <T> T newInstance(Class<T> type, Object instance) {
+ if (instance instanceof IsSingleton) {
+ boolean singleton = ((IsSingleton) instance).isSingleton();
+ if (singleton) {
+ return type.cast(instance);
+ }
+ }
+ return newInstance(type);
+ }
+
}
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=752893&r1=752892&r2=752893&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 Mar 12 15:23:06 2009
@@ -17,6 +17,7 @@
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;
@@ -24,7 +25,7 @@
* <a href="http://commons.apache.org/jxpath/">JXPath</a> {@link Language}
* provider
*/
-public class JXPathLanguage implements Language {
+public class JXPathLanguage implements Language, IsSingleton {
public Expression createExpression(String expression) {
return new JXPathExpression(expression, Object.class);
@@ -34,4 +35,7 @@
return new JXPathExpression(predicate, Boolean.class);
}
+ public boolean isSingleton() {
+ return true;
+ }
}
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=752893&r1=752892&r2=752893&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 Mar 12 15:23:06 2009
@@ -18,6 +18,7 @@
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.IsSingleton;
import org.apache.camel.spi.Language;
/**
@@ -25,7 +26,7 @@
*
* @version $Revision$
*/
-public class MvelLanguage implements Language {
+public class MvelLanguage implements Language, IsSingleton {
public Predicate createPredicate(String expression) {
return new MvelExpression(this, expression, Boolean.class);
@@ -34,4 +35,8 @@
public Expression createExpression(String expression) {
return new MvelExpression(this, expression, Object.class);
}
+
+ public boolean isSingleton() {
+ return true;
+ }
}
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=752893&r1=752892&r2=752893&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 Mar 12 15:23:06 2009
@@ -17,6 +17,7 @@
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;
@@ -25,7 +26,7 @@
*
* @version $Revision$
*/
-public class OgnlLanguage implements Language {
+public class OgnlLanguage implements Language, IsSingleton {
public Predicate createPredicate(String expression) {
return new OgnlExpression(this, expression, Boolean.class);
@@ -34,4 +35,8 @@
public Expression createExpression(String expression) {
return new OgnlExpression(this, expression, Object.class);
}
+
+ public boolean isSingleton() {
+ return true;
+ }
}
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=752893&r1=752892&r2=752893&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 Mar 12 15:23:06 2009
@@ -18,12 +18,13 @@
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.IsSingleton;
import org.apache.camel.spi.Language;
/**
* @version $Revision$
*/
-public class ScriptLanguage implements Language {
+public class ScriptLanguage implements Language, IsSingleton {
private final String language;
public ScriptLanguage(String language) {
@@ -37,4 +38,8 @@
public Expression createExpression(String expression) {
return new ScriptBuilder(language, expression);
}
+
+ public boolean isSingleton() {
+ return false;
+ }
}
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java Thu Mar 12 15:23:06 2009
@@ -16,6 +16,7 @@
*/
package org.apache.camel.spring.spi;
+import org.apache.camel.IsSingleton;
import org.apache.camel.spi.Injector;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ConfigurableApplicationContext;
@@ -40,6 +41,16 @@
return type.cast(value);
}
+ public <T> T newInstance(Class<T> type, Object instance) {
+ if (instance instanceof IsSingleton) {
+ boolean singleton = ((IsSingleton) instance).isSingleton();
+ if (singleton) {
+ return type.cast(instance);
+ }
+ }
+ return newInstance(type);
+ }
+
public int getAutowireMode() {
return autowireMode;
}
Modified: camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java?rev=752893&r1=752892&r2=752893&view=diff
==============================================================================
--- camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java (original)
+++ camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java Thu Mar 12 15:23:06 2009
@@ -30,7 +30,6 @@
import org.apache.camel.Processor;
import org.apache.camel.Route;
import org.apache.camel.builder.Builder;
-import org.apache.camel.builder.PredicateSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.ValueBuilder;
import org.apache.camel.impl.DefaultCamelContext;
@@ -38,6 +37,7 @@
import org.apache.camel.processor.DelegateAsyncProcessor;
import org.apache.camel.processor.DelegateProcessor;
import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.util.PredicateAssertHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -229,7 +229,7 @@
*/
protected void assertPredicateDoesNotMatch(Predicate predicate, Exchange exchange) {
try {
- PredicateSupport.assertMatches(predicate, "Predicate should match", exchange);
+ PredicateAssertHelper.assertMatches(predicate, "Predicate should match", exchange);
} catch (AssertionError e) {
log.debug("Caught expected assertion error: " + e);
}
@@ -241,7 +241,7 @@
*/
protected boolean assertPredicate(Predicate predicate, Exchange exchange, boolean expected) {
if (expected) {
- PredicateSupport.assertMatches(predicate, "Predicate failed", exchange);
+ PredicateAssertHelper.assertMatches(predicate, "Predicate failed", exchange);
}
boolean value = predicate.matches(exchange);