Author: ningjiang
Date: Tue Jan 26 12:20:40 2010
New Revision: 903194
URL: http://svn.apache.org/viewvc?rev=903194&view=rev
Log:
CAMEL-2400 Updated camel-osgi module with the DefaultTypeConverterRegistry load
when camel context is started
Added:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java
(with props)
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java
(with props)
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java
(with props)
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactoryBean.java
camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/ServiceRegistryTest.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
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=903194&r1=903193&r2=903194&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
Tue Jan 26 12:20:40 2010
@@ -27,6 +27,7 @@
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+
import javax.naming.Context;
import org.apache.camel.CamelContext;
@@ -1218,7 +1219,7 @@
*/
protected TypeConverter createTypeConverter() {
DefaultTypeConverter answer = new
DefaultTypeConverter(packageScanClassResolver, getInjector(),
getDefaultFactoryFinder());
- typeConverterRegistry = answer;
+ setTypeConverterRegistry(answer);
return answer;
}
Modified:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java?rev=903194&r1=903193&r2=903194&view=diff
==============================================================================
---
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
(original)
+++
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
Tue Jan 26 12:20:40 2010
@@ -48,66 +48,12 @@
}
protected DefaultCamelContext newCamelContext() {
- return new DefaultCamelContext();
+ return new OsgiDefaultCamelContext(bundleContext);
}
public DefaultCamelContext createContext() {
LOG.debug("Creating DefaultCamelContext");
-
- DefaultCamelContext context = newCamelContext();
- if (bundleContext != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Using OSGI resolvers");
- }
- updateRegistry(context);
- LOG.debug("Using the OsgiClassResolver");
- context.setClassResolver(new OsgiClassResolver(bundleContext));
- LOG.debug("Using OsgiFactoryFinderResolver");
- context.setFactoryFinderResolver(new OsgiFactoryFinderResolver());
- LOG.debug("Using OsgiPackageScanClassResolver");
- context.setPackageScanClassResolver(new
OsgiPackageScanClassResolver(bundleContext));
- LOG.debug("Using OsgiComponentResolver");
- context.setComponentResolver(new OsgiComponentResolver());
- LOG.debug("Using OsgiLanguageResolver");
- context.setLanguageResolver(new OsgiLanguageResolver());
- addOsgiAnnotationTypeConverterLoader(context, bundleContext);
- } else {
- // TODO: should we not thrown an exception to not allow it to
startup
- LOG.warn("BundleContext not set, cannot run in OSGI container");
- }
-
- return context;
+ return newCamelContext();
}
- protected void updateRegistry(DefaultCamelContext context) {
- ObjectHelper.notNull(bundleContext, "BundleContext");
- LOG.debug("Setting the OSGi ServiceRegistry");
- OsgiServiceRegistry osgiServiceRegistry = new
OsgiServiceRegistry(bundleContext);
- // Need to clean up the OSGi service when camel context is closed.
- context.addLifecycleStrategy(osgiServiceRegistry);
- CompositeRegistry compositeRegistry = new CompositeRegistry();
- compositeRegistry.addRegistry(osgiServiceRegistry);
- compositeRegistry.addRegistry(context.getRegistry());
- context.setRegistry(compositeRegistry);
- }
-
- protected void addOsgiAnnotationTypeConverterLoader(DefaultCamelContext
context, BundleContext bundleContext) {
- LOG.debug("Using OsgiAnnotationTypeConverterLoader");
- DefaultTypeConverter typeConverter = (DefaultTypeConverter)
context.getTypeConverter();
- List<TypeConverterLoader> typeConverterLoaders =
typeConverter.getTypeConverterLoaders();
-
- // Remove the AnnotationTypeConverterLoader
- TypeConverterLoader atLoader = null;
- for (TypeConverterLoader loader : typeConverterLoaders) {
- if (loader instanceof AnnotationTypeConverterLoader) {
- atLoader = loader;
- break;
- }
- }
- if (atLoader != null) {
- typeConverterLoaders.remove(atLoader);
- }
- typeConverterLoaders.add(new
OsgiAnnotationTypeConverterLoader(context.getPackageScanClassResolver()));
- }
-
}
Modified:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactoryBean.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactoryBean.java?rev=903194&r1=903193&r2=903194&view=diff
==============================================================================
---
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactoryBean.java
(original)
+++
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactoryBean.java
Tue Jan 26 12:20:40 2010
@@ -53,64 +53,8 @@
this.bundleContext = bundleContext;
}
- protected SpringCamelContext createContext() {
- SpringCamelContext context = super.createContext();
- if (bundleContext != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Using OSGi resolvers");
- }
- updateRegistry(context);
- LOG.debug("Using the OsgiClassResolver");
- context.setClassResolver(new OsgiClassResolver(bundleContext));
- LOG.debug("Using OsgiFactoryFinderResolver");
- context.setFactoryFinderResolver(new OsgiFactoryFinderResolver());
- LOG.debug("Using OsgiPackageScanClassResolver");
- context.setPackageScanClassResolver(new
OsgiPackageScanClassResolver(bundleContext));
- LOG.debug("Using OsgiComponentResolver");
- context.setComponentResolver(new OsgiComponentResolver());
- LOG.debug("Using OsgiLanguageResolver");
- context.setLanguageResolver(new OsgiLanguageResolver());
- addOsgiAnnotationTypeConverterLoader(context);
- } else {
- // TODO: should we not thrown an exception to not allow it to
startup
- LOG.warn("BundleContext not set, cannot run in OSGI container");
- }
-
- return context;
- }
-
- protected void updateRegistry(DefaultCamelContext context) {
- ObjectHelper.notNull(bundleContext, "BundleContext");
- LOG.debug("Setting the OSGi ServiceRegistry");
- OsgiServiceRegistry osgiServiceRegistry = new
OsgiServiceRegistry(bundleContext);
- // Need to clean up the OSGi service when camel context is closed.
- context.addLifecycleStrategy(osgiServiceRegistry);
- CompositeRegistry compositeRegistry = new CompositeRegistry();
- compositeRegistry.addRegistry(osgiServiceRegistry);
- compositeRegistry.addRegistry(context.getRegistry());
- context.setRegistry(compositeRegistry);
- }
-
- protected void addOsgiAnnotationTypeConverterLoader(SpringCamelContext
context) {
- LOG.debug("Using OsgiAnnotationTypeConverterLoader");
-
- DefaultTypeConverter typeConverter = (DefaultTypeConverter)
context.getTypeConverter();
- List<TypeConverterLoader> typeConverterLoaders =
typeConverter.getTypeConverterLoaders();
-
- // Remove the AnnotationTypeConverterLoader
- TypeConverterLoader atLoader = null;
- for (TypeConverterLoader loader : typeConverterLoaders) {
- if (loader instanceof AnnotationTypeConverterLoader) {
- atLoader = loader;
- break;
- }
- }
- if (atLoader != null) {
- typeConverterLoaders.remove(atLoader);
- }
-
- // add our osgi annotation loader
- typeConverterLoaders.add(new
OsgiAnnotationTypeConverterLoader(context.getPackageScanClassResolver()));
+ protected SpringCamelContext newCamelContext() {
+ return new OsgiSpringCamelContext(getApplicationContext(),
getBundleContext());
}
-
+
}
Added:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java?rev=903194&view=auto
==============================================================================
---
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java
(added)
+++
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java
Tue Jan 26 12:20:40 2010
@@ -0,0 +1,94 @@
+/**
+ * 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.osgi;
+
+import java.util.List;
+
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.converter.AnnotationTypeConverterLoader;
+import org.apache.camel.impl.converter.DefaultTypeConverter;
+import org.apache.camel.impl.converter.TypeConverterLoader;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.osgi.framework.BundleContext;
+
+public final class OsgiCamelContextHelper {
+ private static final transient Log LOG =
LogFactory.getLog(OsgiCamelContextHelper.class);
+
+ private OsgiCamelContextHelper() {
+ // helper class
+ }
+
+ public static DefaultTypeConverter createTypeConverter(DefaultCamelContext
context) {
+
+ DefaultTypeConverter answer = new
DefaultTypeConverter(context.getPackageScanClassResolver(),
context.getInjector(), context.getDefaultFactoryFinder());
+ List<TypeConverterLoader> typeConverterLoaders =
answer.getTypeConverterLoaders();
+
+ // Remove the AnnotationTypeConverterLoader
+ TypeConverterLoader atLoader = null;
+ for (TypeConverterLoader loader : typeConverterLoaders) {
+ if (loader instanceof AnnotationTypeConverterLoader) {
+ atLoader = loader;
+ break;
+ }
+ }
+ if (atLoader != null) {
+ typeConverterLoaders.remove(atLoader);
+ }
+
+ // add our osgi annotation loader
+ typeConverterLoaders.add(new
OsgiAnnotationTypeConverterLoader(context.getPackageScanClassResolver()));
+ context.setTypeConverterRegistry(answer);
+ return answer;
+ }
+
+ public static void osgiUpdate(DefaultCamelContext camelContext,
BundleContext bundleContext) {
+ if (bundleContext != null) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Using OSGi resolvers");
+ }
+ updateRegistry(camelContext, bundleContext);
+ LOG.debug("Using the OsgiClassResolver");
+ camelContext.setClassResolver(new
OsgiClassResolver(bundleContext));
+ LOG.debug("Using OsgiFactoryFinderResolver");
+ camelContext.setFactoryFinderResolver(new
OsgiFactoryFinderResolver());
+ LOG.debug("Using OsgiPackageScanClassResolver");
+ camelContext.setPackageScanClassResolver(new
OsgiPackageScanClassResolver(bundleContext));
+ LOG.debug("Using OsgiComponentResolver");
+ camelContext.setComponentResolver(new OsgiComponentResolver());
+ LOG.debug("Using OsgiLanguageResolver");
+ camelContext.setLanguageResolver(new OsgiLanguageResolver());
+ } else {
+ // TODO: should we not thrown an exception to not allow it to
startup
+ LOG.warn("BundleContext not set, cannot run in OSGI container");
+ }
+ }
+
+ public static void updateRegistry(DefaultCamelContext camelContext,
BundleContext bundleContext) {
+ ObjectHelper.notNull(bundleContext, "BundleContext");
+ LOG.debug("Setting the OSGi ServiceRegistry");
+ OsgiServiceRegistry osgiServiceRegistry = new
OsgiServiceRegistry(bundleContext);
+ // Need to clean up the OSGi service when camel context is closed.
+ camelContext.addLifecycleStrategy(osgiServiceRegistry);
+ CompositeRegistry compositeRegistry = new CompositeRegistry();
+ compositeRegistry.addRegistry(osgiServiceRegistry);
+ compositeRegistry.addRegistry(camelContext.getRegistry());
+ camelContext.setRegistry(compositeRegistry);
+ }
+
+}
Propchange:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java?rev=903194&view=auto
==============================================================================
---
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java
(added)
+++
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java
Tue Jan 26 12:20:40 2010
@@ -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.osgi;
+
+import org.apache.camel.TypeConverter;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.osgi.framework.BundleContext;
+
+public class OsgiDefaultCamelContext extends DefaultCamelContext {
+
+ public OsgiDefaultCamelContext(BundleContext bundleContext) {
+ super();
+ OsgiCamelContextHelper.osgiUpdate(this, bundleContext);
+ }
+
+ @Override
+ protected TypeConverter createTypeConverter() {
+ return OsgiCamelContextHelper.createTypeConverter(this);
+ }
+
+}
Propchange:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java?rev=903194&view=auto
==============================================================================
---
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java
(added)
+++
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java
Tue Jan 26 12:20:40 2010
@@ -0,0 +1,41 @@
+/**
+ * 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.osgi;
+
+import java.util.List;
+
+import org.apache.camel.TypeConverter;
+import org.apache.camel.impl.converter.AnnotationTypeConverterLoader;
+import org.apache.camel.impl.converter.DefaultTypeConverter;
+import org.apache.camel.impl.converter.TypeConverterLoader;
+import org.apache.camel.spring.SpringCamelContext;
+import org.osgi.framework.BundleContext;
+import org.springframework.context.ApplicationContext;
+
+public class OsgiSpringCamelContext extends SpringCamelContext {
+
+ public OsgiSpringCamelContext(ApplicationContext applicationContext,
BundleContext bundleContext) {
+ super(applicationContext);
+ OsgiCamelContextHelper.osgiUpdate(this, bundleContext);
+ }
+
+ @Override
+ protected TypeConverter createTypeConverter() {
+ return OsgiCamelContextHelper.createTypeConverter(this);
+ }
+
+}
Propchange:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/ServiceRegistryTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/ServiceRegistryTest.java?rev=903194&r1=903193&r2=903194&view=diff
==============================================================================
---
camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/ServiceRegistryTest.java
(original)
+++
camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/ServiceRegistryTest.java
Tue Jan 26 12:20:40 2010
@@ -47,7 +47,7 @@
factoryBean.setBundleContext(getBundleContext());
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("org/apache/camel/osgi/camelContext.xml");
factoryBean.setApplicationContext(applicationContext);
- DefaultCamelContext context = factoryBean.createContext();
+ DefaultCamelContext context = factoryBean.getContext();
context.start();
MyService myService =
context.getRegistry().lookup(MyService.class.getName(), MyService.class);
assertNotNull("MyService should not be null", myService);
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=903194&r1=903193&r2=903194&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
(original)
+++
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
Tue Jan 26 12:20:40 2010
@@ -831,7 +831,7 @@
* Create the context
*/
protected SpringCamelContext createContext() {
- SpringCamelContext ctx = new
SpringCamelContext(getApplicationContext());
+ SpringCamelContext ctx = newCamelContext();
ctx.setName(getId());
if (streamCache != null) {
ctx.setStreamCaching(getStreamCache());
@@ -859,6 +859,10 @@
}
return ctx;
}
+
+ protected SpringCamelContext newCamelContext() {
+ return new SpringCamelContext(getApplicationContext());
+ }
/**
* Strategy to install all available routes into the context