Author: ningjiang
Date: Fri Mar 13 03:36:40 2009
New Revision: 753101

URL: http://svn.apache.org/viewvc?rev=753101&view=rev
Log:
CAMEL-1456 supporting to create a default camel context in OSGi platefrom

Added:
    
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
   (with props)

Added: 
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=753101&view=auto
==============================================================================
--- 
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
 (added)
+++ 
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
 Fri Mar 13 03:36:40 2009
@@ -0,0 +1,78 @@
+/**
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.bind.annotation.XmlTransient;
+
+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.osgi.framework.BundleContext;
+import org.springframework.osgi.context.BundleContextAware;
+
+/**
+ * This factory just create a DefaultContext in OSGi without 
+ * any spring application context involved.
+ */
+public class CamelContextFactory implements BundleContextAware {
+    
+    private BundleContext bundleContext;
+
+    public BundleContext getBundleContext() {
+        return bundleContext;
+    }
+
+    public void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
+    
+    public DefaultCamelContext createContext() {
+        DefaultCamelContext context = new DefaultCamelContext();
+        if (bundleContext != null) {
+            context.setPackageScanClassResolver(new 
OsgiPackageScanClassResolver(bundleContext));
+            context.setComponentResolver(new OsgiComponentResolver());
+            context.setLanguageResolver(new OsgiLanguageResolver());
+            addOsgiAnnotationTypeConverterLoader(context, bundleContext);
+            context.setFactoryFinderClass(OsgiFactoryFinder.class);
+        }
+        
+        return context;
+    }
+    
+    protected void addOsgiAnnotationTypeConverterLoader(DefaultCamelContext 
context, BundleContext bundleContext) {
+        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()));
+    }    
+}

Propchange: 
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date


Reply via email to