You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2010/11/05 03:26:50 UTC

svn commit: r1031406 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/ components/camel-h...

Author: ningjiang
Date: Fri Nov  5 02:26:49 2010
New Revision: 1031406

URL: http://svn.apache.org/viewvc?rev=1031406&view=rev
Log:
CAMEL-3308 Updated the cxf version rang

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
    camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java
    camel/trunk/components/camel-jms/pom.xml
    camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
    camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java
    camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java
    camel/trunk/components/camel-spring-javaconfig/pom.xml
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
    camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java
    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
    camel/trunk/parent/pom.xml
    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java
    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java Fri Nov  5 02:26:49 2010
@@ -44,8 +44,9 @@ import org.apache.commons.logging.LogFac
 
 /**
  * A helper class for Camel based injector or post processing hooks which can be reused by
- * both the <a href="http://camel.apache.org/spring.html">Spring</a>
- * and <a href="http://camel.apache.org/guice.html">Guice</a> support.
+ * both the <a href="http://camel.apache.org/spring.html">Spring</a>,
+ * <a href="http://camel.apache.org/guice.html">Guice</a> and
+ * <a href="http://camel.apache.org/blueprint.html">Blueprint</a>support.
  *
  * @version $Revision$
  */

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java Fri Nov  5 02:26:49 2010
@@ -98,7 +98,7 @@ public class CamelContextFactoryBean ext
     @XmlElement(name = "jmxAgent", type = CamelJMXAgentDefinition.class, required = false)
     private CamelJMXAgentDefinition camelJMXAgent;
     @XmlElements({
-//        @XmlElement(name = "beanPostProcessor", type = CamelBeanPostProcessor.class, required = false),
+        @XmlElement(name = "beanPostProcessor", type = CamelBeanPostProcessor.class, required = false),
         @XmlElement(name = "template", type = CamelProducerTemplateFactoryBean.class, required = false),
         @XmlElement(name = "consumerTemplate", type = CamelConsumerTemplateFactoryBean.class, required = false),
         @XmlElement(name = "proxy", type = CamelProxyFactoryDefinition.class, required = false),
@@ -178,6 +178,7 @@ public class CamelContextFactoryBean ext
     }
 
     @Override
+    // TODO this method is need for looking up the customer configure component
     protected <S> S getBeanForType(Class<S> clazz) {
         return null;
     }

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java Fri Nov  5 02:26:49 2010
@@ -40,6 +40,7 @@ import org.apache.aries.blueprint.mutabl
 import org.apache.aries.blueprint.mutable.MutablePassThroughMetadata;
 import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
 import org.apache.camel.blueprint.BlueprintCamelContext;
+import org.apache.camel.blueprint.CamelBeanPostProcessor;
 import org.apache.camel.blueprint.CamelContextFactoryBean;
 import org.apache.camel.core.xml.AbstractCamelContextFactoryBean;
 import org.apache.camel.impl.DefaultCamelContextNameStrategy;
@@ -141,6 +142,8 @@ public class CamelNamespaceHandler imple
                 ptm = (PassThroughMetadata) context.getComponentDefinitionRegistry().getComponentDefinition("blueprintBundleContext");
                 ccfb.setBundleContext((BundleContext) ptm.getObject());
                 ccfb.setImplicitId(implicitId);
+                // setup the BeanPostProcessor
+                createBeansReference(context, contextId, ccfb.getBeans());
                 ccfb.afterPropertiesSet();
             } catch (Exception e) {
                 throw new ComponentDefinitionException("Unable to initialize camel context factory", e);
@@ -264,6 +267,16 @@ public class CamelNamespaceHandler imple
         return null;
     }
 
+    private void createBeansReference(ParserContext context, String contextId, List beans) {
+        // need to check the beanPostProcessor first
+        MutableBeanMetadata metadata = context.createMetadata(MutableBeanMetadata.class);
+        metadata.setProcessor(true);
+        metadata.setId(contextId + ".beanPostProcessor");
+        metadata.setRuntimeClass(CamelBeanPostProcessor.class);
+        LOG.info("**** create the beanPostProcessor");
+        context.getComponentDefinitionRegistry().registerComponentDefinition(metadata);
+    }
+
     private void findInputComponents(List<FromDefinition> defs, Set<String> components, Set<String> languages, Set<String> dataformats) {
         if (defs != null) {
             for (FromDefinition def : defs) {

Modified: camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java (original)
+++ camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java Fri Nov  5 02:26:49 2010
@@ -17,7 +17,6 @@
 package org.apache.camel.component.hawtdb;
 
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
@@ -27,8 +26,7 @@ import org.apache.camel.test.junit4.Came
 import org.junit.Test;
 
 public class HawtDBAggregateDiscardOnTimeoutTest extends CamelTestSupport {
-
-    private static AtomicInteger counter = new AtomicInteger(0);
+   
     private HawtDBAggregationRepository repo;
 
     @Override

Modified: camel/trunk/components/camel-jms/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/pom.xml?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/pom.xml (original)
+++ camel/trunk/components/camel-jms/pom.xml Fri Nov  5 02:26:49 2010
@@ -42,6 +42,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core-xml</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-spring</artifactId>
     </dependency>
     <dependency>

Modified: camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java (original)
+++ camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java Fri Nov  5 02:26:49 2010
@@ -62,7 +62,6 @@ public abstract class AbstractJpaMethodT
         stopServices(consumer, template, camelContext);
     }
     
-    @SuppressWarnings("unchecked")
     @Test
     public void produceNewEntity() throws Exception {
         setUp("jpa://" + Customer.class.getName() + "?usePersist=" + (usePersist() ? "true" : "false"));
@@ -89,7 +88,6 @@ public abstract class AbstractJpaMethodT
         assertEquals(receivedCustomer.getAddress().getId(), persistedCustomer.getAddress().getId());
     }
 
-    @SuppressWarnings("unchecked")
     @Test
     public void produceNewEntitiesFromList() throws Exception {
         setUp("jpa://" + List.class.getName() + "?usePersist=" + (usePersist() ? "true" : "false"));
@@ -160,7 +158,6 @@ public abstract class AbstractJpaMethodT
         assertEntitiesInDatabase(0, Address.class.getName());
     }
     
-    @SuppressWarnings("unchecked")
     protected void setUp(String endpointUri) throws Exception {
         template = camelContext.createProducerTemplate();
         startServices(template, camelContext);
@@ -181,7 +178,6 @@ public abstract class AbstractJpaMethodT
         assertEntitiesInDatabase(0, Address.class.getName());
     }
     
-    @SuppressWarnings("unchecked")
     protected void save(final Customer customer) {
         transactionStrategy.execute(new JpaCallback() {
             public Object doInJpa(EntityManager entityManager) throws PersistenceException {
@@ -195,7 +191,6 @@ public abstract class AbstractJpaMethodT
         assertEntitiesInDatabase(1, Address.class.getName());
     }
     
-    @SuppressWarnings("unchecked")
     protected void assertEntitiesInDatabase(int count, String entity) {
         List results = jpaTemplate.find("select o from " + entity + " o");
         assertEquals(count, results.size());

Modified: camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java (original)
+++ camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java Fri Nov  5 02:26:49 2010
@@ -37,7 +37,6 @@ public class JpaUseMergeTest extends Abs
         return false;
     }
 
-    @SuppressWarnings("unchecked")
     @Test
     public void produceExistingEntity() throws Exception {
         setUp("jpa://" + Customer.class.getName() + "?usePersist=false");

Modified: camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java (original)
+++ camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java Fri Nov  5 02:26:49 2010
@@ -49,6 +49,7 @@ public class LdapRouteTest extends Abstr
     private ProducerTemplate template;
     private int port;
 
+    @SuppressWarnings("unchecked")
     @ApplyLdifFiles("org/apache/camel/component/ldap/LdapRouteTest.ldif")
     @Test
     public void testLdapRoute() throws Exception {

Modified: camel/trunk/components/camel-spring-javaconfig/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-javaconfig/pom.xml?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-javaconfig/pom.xml (original)
+++ camel/trunk/components/camel-spring-javaconfig/pom.xml Fri Nov  5 02:26:49 2010
@@ -58,6 +58,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core-xml</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-spring</artifactId>
       <exclusions>
         <exclusion>

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java Fri Nov  5 02:26:49 2010
@@ -32,6 +32,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Produce;
 import org.apache.camel.Service;
+import org.apache.camel.core.xml.AbstractCamelBeanPostProcessor;
 import org.apache.camel.core.xml.CamelJMXAgentDefinition;
 import org.apache.camel.impl.CamelPostProcessorHelper;
 import org.apache.camel.impl.DefaultEndpoint;
@@ -65,19 +66,13 @@ import org.springframework.context.Appli
  */
 @XmlRootElement(name = "beanPostProcessor")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class CamelBeanPostProcessor implements BeanPostProcessor, ApplicationContextAware {
+public class CamelBeanPostProcessor extends AbstractCamelBeanPostProcessor implements BeanPostProcessor, ApplicationContextAware {
     private static final transient Log LOG = LogFactory.getLog(CamelBeanPostProcessor.class);
     @XmlTransient
     Set<String> prototypeBeans = new LinkedHashSet<String>();
     @XmlTransient
-    private CamelContext camelContext;
-    @XmlTransient
     private ApplicationContext applicationContext;
-    @XmlTransient
-    private CamelPostProcessorHelper postProcessor;
-    @XmlTransient
-    private String camelId;
-
+    
     public CamelBeanPostProcessor() {
     }
 
@@ -91,8 +86,8 @@ public class CamelBeanPostProcessor impl
             return bean;
         }
 
-        if (camelContext == null && applicationContext.containsBean(camelId)) {
-            setCamelContext((CamelContext) applicationContext.getBean(camelId));
+        if (getCamelContext() == null && applicationContext.containsBean(getCamelId())) {
+            setCamelContext((CamelContext) applicationContext.getBean(getCamelId()));
         }
 
         injectFields(bean, beanName);
@@ -100,10 +95,10 @@ public class CamelBeanPostProcessor impl
 
         if (bean instanceof CamelContextAware && canSetCamelContext(bean, beanName)) {
             CamelContextAware contextAware = (CamelContextAware)bean;
-            if (camelContext == null) {
+            if (getCamelContext() == null) {
                 LOG.warn("No CamelContext defined yet so cannot inject into: " + bean);
             } else {
-                contextAware.setCamelContext(camelContext);
+                contextAware.setCamelContext(getCamelContext());
             }
         }
 
@@ -134,92 +129,11 @@ public class CamelBeanPostProcessor impl
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         this.applicationContext = applicationContext;
     }
-
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-        postProcessor = new CamelPostProcessorHelper(camelContext) {
-            @Override
-            protected RuntimeException createProxyInstantiationRuntimeException(Class<?> type, Endpoint endpoint, Exception e) {
-                return new BeanInstantiationException(type, "Could not instantiate proxy of type " + type.getName() + " on endpoint " + endpoint, e);
-            }
-
-            protected boolean isSingleton(Object bean, String beanName) {
-                // no application context has been injected which means the bean
-                // has not been enlisted in Spring application context
-                if (applicationContext == null || beanName == null) {
-                    return super.isSingleton(bean, beanName);
-                } else {
-                    return applicationContext.isSingleton(beanName);
-                }
-            }
-
-            protected void startService(Service service, Object bean, String beanName) throws Exception {
-                if (isSingleton(bean, beanName)) {
-                    getCamelContext().addService(service);
-                } else {
-                    // only start service and do not add it to CamelContext
-                    ServiceHelper.startService(service);
-                    if (prototypeBeans.add(beanName)) {
-                        // do not spam the log with WARN so do this only once per bean name
-                        LOG.warn("The bean with id [" + beanName + "] is prototype scoped and cannot stop the injected service when bean is destroyed: "
-                                + service + ". You may want to stop the service manually from the bean.");
-                    }
-                }
-            }
-        };
-    }
-
-    public String getCamelId() {
-        return camelId;
-    }
-
-    public void setCamelId(String camelId) {
-        this.camelId = camelId;
-    }
-
+   
     // Implementation methods
     // -------------------------------------------------------------------------
 
-    /**
-     * Can we post process the given bean?
-     *
-     * @param bean the bean
-     * @param beanName the bean name
-     * @return true to process it
-     */
-    protected boolean canPostProcessBean(Object bean, String beanName) {
-        // the JMXAgent is a bit strange and causes Spring issues if we let it being
-        // post processed by this one. It does not need it anyway so we are good to go.
-        if (bean instanceof CamelJMXAgentDefinition) {
-            return false;
-        }
-
-        // all other beans can of course be processed
-        return true;
-    }
-    
-    
-    protected boolean canSetCamelContext(Object bean, String beanName) {
-        boolean answer = true;
-        if (bean instanceof CamelContextAware) {
-            CamelContextAware camelContextAware = (CamelContextAware) bean;
-            CamelContext context = camelContextAware.getCamelContext();
-            if (context != null) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("The camel context of " + beanName + " is set, so we skip inject the camel context of it.");
-                }
-                answer = false;
-            }
-        } else {
-            answer = false;
-        }
-        return answer;
-    }
-
+   
     /**
      * A strategy method to allow implementations to perform some custom JBI
      * based injection of the POJO
@@ -230,12 +144,12 @@ public class CamelBeanPostProcessor impl
         ReflectionUtils.doWithFields(bean.getClass(), new ReflectionUtils.FieldCallback() {
             public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
                 EndpointInject endpointInject = field.getAnnotation(EndpointInject.class);
-                if (endpointInject != null && postProcessor.matchContext(endpointInject.context())) {
+                if (endpointInject != null && getPostProcessor().matchContext(endpointInject.context())) {
                     injectField(field, endpointInject.uri(), endpointInject.ref(), bean, beanName);
                 }
 
                 Produce produce = field.getAnnotation(Produce.class);
-                if (produce != null && postProcessor.matchContext(produce.context())) {
+                if (produce != null && getPostProcessor().matchContext(produce.context())) {
                     injectField(field, produce.uri(), produce.ref(), bean, beanName);
                 }
             }
@@ -257,12 +171,12 @@ public class CamelBeanPostProcessor impl
 
     protected void setterInjection(Method method, Object bean, String beanName) {
         EndpointInject endpointInject = method.getAnnotation(EndpointInject.class);
-        if (endpointInject != null && postProcessor.matchContext(endpointInject.context())) {
+        if (endpointInject != null && getPostProcessor().matchContext(endpointInject.context())) {
             setterInjection(method, bean, beanName, endpointInject.uri(), endpointInject.ref());
         }
 
         Produce produce = method.getAnnotation(Produce.class);
-        if (produce != null && postProcessor.matchContext(produce.context())) {
+        if (produce != null && getPostProcessor().matchContext(produce.context())) {
             setterInjection(method, bean, beanName, produce.uri(), produce.ref());
         }
     }
@@ -280,9 +194,40 @@ public class CamelBeanPostProcessor impl
         }
     }
 
-    public CamelPostProcessorHelper getPostProcessor() {
-        ObjectHelper.notNull(postProcessor, "postProcessor");
-        return postProcessor;
+    @Override
+    public CamelPostProcessorHelper createCamelPostProcessorHelper(CamelContext camelContext) {        
+        return new CamelPostProcessorHelper(camelContext) {
+            @Override
+            protected RuntimeException createProxyInstantiationRuntimeException(Class<?> type, Endpoint endpoint, Exception e) {
+                return new BeanInstantiationException(type, "Could not instantiate proxy of type " + type.getName() + " on endpoint " + endpoint, e);
+            }
+
+            protected boolean isSingleton(Object bean, String beanName) {
+                // no application context has been injected which means the bean
+                // has not been enlisted in Spring application context
+                if (applicationContext == null || beanName == null) {
+                    return super.isSingleton(bean, beanName);
+                } else {
+                    return applicationContext.isSingleton(beanName);
+                }
+            }
+
+            protected void startService(Service service, Object bean, String beanName) throws Exception {
+                if (isSingleton(bean, beanName)) {
+                    getCamelContext().addService(service);
+                } else {
+                    // only start service and do not add it to CamelContext
+                    ServiceHelper.startService(service);
+                    if (prototypeBeans.add(beanName)) {
+                        // do not spam the log with WARN so do this only once per bean name
+                        LOG.warn("The bean with id [" + beanName + "] is prototype scoped and cannot stop the injected service when bean is destroyed: "
+                                + service + ". You may want to stop the service manually from the bean.");
+                    }
+                }
+            }
+        };
     }
+    
+    
 
 }

Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java Fri Nov  5 02:26:49 2010
@@ -24,8 +24,8 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
+import com.sun.jersey.api.core.InjectParam;
 import com.sun.jersey.api.view.ImplicitProduces;
-import com.sun.jersey.spi.inject.Inject;
 import com.sun.jersey.spi.resource.Singleton;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
@@ -46,7 +46,7 @@ public class CamelContextResource {
     private CamelContext camelContext;
     private ProducerTemplate template;
 
-    public CamelContextResource(@Inject CamelContext camelContext) throws Exception {
+    public CamelContextResource(@InjectParam CamelContext camelContext) throws Exception {
         this.camelContext = camelContext;
         this.template = camelContext.createProducerTemplate();
         template.start();

Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java Fri Nov  5 02:26:49 2010
@@ -103,7 +103,9 @@ public class XmppConsumer extends Defaul
             muc.leave();
             muc = null;
         }
-        //the endpoint will clean up the connection
+        if (connection != null && connection.isConnected()) {
+            connection.disconnect();
+        }
     }
 
     public void chatCreated(Chat chat, boolean createdLocally) {

Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java Fri Nov  5 02:26:49 2010
@@ -99,6 +99,9 @@ public class XmppGroupChatProducer exten
             chat.leave();
             chat = null;
         }
+        if (connection != null && connection.isConnected()) {
+            connection.disconnect();
+        }
         super.doStop();
     }
 

Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java Fri Nov  5 02:26:49 2010
@@ -51,10 +51,6 @@ public class XmppPrivateChatProducer ext
 
     public void process(Exchange exchange) {
         try {
-            if (connection == null) {
-                connection = endpoint.createConnection();
-            }
-
             // make sure we are connected
             if (!connection.isConnected()) {
                 if (LOG.isDebugEnabled()) {
@@ -108,6 +104,22 @@ public class XmppPrivateChatProducer ext
                     + " to: " + XmppEndpoint.getConnectionMessage(connection), exchange, e);
         }
     }
+    
+    @Override
+    protected void doStart() throws Exception {
+        if (connection == null) {
+            connection = endpoint.createConnection();
+        }
+        super.doStart();
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        if (connection != null && connection.isConnected()) {
+            connection.disconnect();
+        }
+        super.doStop();
+    }
 
     // Properties
     // -------------------------------------------------------------------------

Modified: camel/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/parent/pom.xml (original)
+++ camel/trunk/parent/pom.xml Fri Nov  5 02:26:49 2010
@@ -150,7 +150,7 @@
     <camel.osgi.import.defaults>
       org.springframework.*;version="[2.5,4)",
       org.apache.commons.logging.*;version="[1.1,2)",
-      org.apache.cxf.*;version="[2.3.0,2.4)",
+      org.apache.cxf.*;version="[2.2.11,2.4)",
       org.apache.qpid.*;version="[0.5,0.6)",
       org.apache.abdera.*;version="[0.4,0.5)",
       org.apache.commons.httpclient.*;version="[3.1,4.0)",

Modified: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java (original)
+++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java Fri Nov  5 02:26:49 2010
@@ -125,7 +125,7 @@ public class OSGiBlueprintTestSupport ex
             // install the spring dm profile
             profile("spring.dm").version("1.2.0"),
             // this is how you set the default log level when using pax logging (logProfile)
-            org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("TRACE"),
+            org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
 
             // install blueprint requirements
             mavenBundle("org.apache.felix", "org.apache.felix.configadmin"),

Modified: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java (original)
+++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java Fri Nov  5 02:26:49 2010
@@ -36,7 +36,6 @@ import static org.ops4j.pax.exam.contain
 import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.workingDirectory;
 
 @RunWith(JUnit4TestRunner.class)
-@Ignore
 public class CxfProxyExampleTest extends OSGiIntegrationSpringTestSupport {
 
     protected static ReportIncidentEndpoint createCXFClient() {
@@ -73,9 +72,6 @@ public class CxfProxyExampleTest extends
         return new OsgiBundleXmlApplicationContext(new String[]{"org/apache/camel/itest/osgi/cxf/camel-config.xml"});
     }
 
-    // TODO: CxfConsumer should use OSGi http service (no embedded Jetty)
-    // TODO: Make this test work with OSGi
-
     @Configuration
     public static Option[] configure() {
         Option[] options = options(

Modified: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java (original)
+++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java Fri Nov  5 02:26:49 2010
@@ -19,13 +19,13 @@ package org.apache.camel.itest.osgi.spri
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
 import org.ops4j.pax.exam.junit.JUnit4TestRunner;
 
 @RunWith(JUnit4TestRunner.class)
-@Ignore("TODO: fix me")
 public class XsltRouteTest extends OSGiIntegrationTestSupport {
 
     @Test
@@ -51,5 +51,26 @@ public class XsltRouteTest extends OSGiI
             }
         };
     }
+    
+    @Configuration
+    public static Option[] configure() throws Exception {
+        Option[] options = options(
+            // install the spring dm profile            
+            profile("spring.dm").version("1.2.0"),    
+            // this is how you set the default log level when using pax logging (logProfile)
+            org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
+            
+            
+            // using the features to install the camel components             
+            scanFeatures(getCamelKarafFeatureUrl(),                         
+                          "camel-core", "camel-spring", "camel-test"),
+            
+            workingDirectory("target/paxrunner/"),
+
+            equinox(),
+            felix());
+        
+        return options;
+    }
 
 }



Re: svn commit: r1031406 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/ components/camel-h...

Posted by Hadrian Zbarcea <hz...@gmail.com>.
No problem. Shit happens :)
Hadrian


On Nov 4, 2010, at 11:37 PM, Willem Jiang wrote:

> Hi Hadrian,
> 
> Thanks for pointing that out.
> I was not supported to committed the change which I'm working on. I just revert the change and will commit the fix of camel-blueprint shortly.
> 
> 
> On 11/5/10 11:24 AM, Hadrian Zbarcea wrote:
>> Willem, did you forget to add AbstractCamelBeanPostProcessor.java?
>> Hadrian
>> 
>> On Nov 4, 2010, at 10:26 PM, ningjiang@apache.org wrote:
>> 
>>> Author: ningjiang
>>> Date: Fri Nov  5 02:26:49 2010
>>> New Revision: 1031406
>>> 
>>> URL: http://svn.apache.org/viewvc?rev=1031406&view=rev
>>> Log:
>>> CAMEL-3308 Updated the cxf version rang
>>> 
>>> Modified:
>>>    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
>>>    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
>>>    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
>>>    camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java
>>>    camel/trunk/components/camel-jms/pom.xml
>>>    camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
>>>    camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java
>>>    camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java
>>>    camel/trunk/components/camel-spring-javaconfig/pom.xml
>>>    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
>>>    camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java
>>>    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
>>>    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
>>>    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
>>>    camel/trunk/parent/pom.xml
>>>    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java
>>>    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
>>>    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java
>>> 
> 
> 
> 
> -- 
> Willem
> ----------------------------------
> FuseSource
> Web: http://www.fusesource.com
> Blog:    http://willemjiang.blogspot.com (English)
>         http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang


Re: svn commit: r1031406 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/ components/camel-h...

Posted by Willem Jiang <wi...@gmail.com>.
Hi Hadrian,

Thanks for pointing that out.
I was not supported to committed the change which I'm working on. I just 
revert the change and will commit the fix of camel-blueprint shortly.


On 11/5/10 11:24 AM, Hadrian Zbarcea wrote:
> Willem, did you forget to add AbstractCamelBeanPostProcessor.java?
> Hadrian
>
> On Nov 4, 2010, at 10:26 PM, ningjiang@apache.org wrote:
>
>> Author: ningjiang
>> Date: Fri Nov  5 02:26:49 2010
>> New Revision: 1031406
>>
>> URL: http://svn.apache.org/viewvc?rev=1031406&view=rev
>> Log:
>> CAMEL-3308 Updated the cxf version rang
>>
>> Modified:
>>     camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
>>     camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
>>     camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
>>     camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java
>>     camel/trunk/components/camel-jms/pom.xml
>>     camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
>>     camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java
>>     camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java
>>     camel/trunk/components/camel-spring-javaconfig/pom.xml
>>     camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
>>     camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java
>>     camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
>>     camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
>>     camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
>>     camel/trunk/parent/pom.xml
>>     camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java
>>     camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
>>     camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java
>>



-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang

Re: svn commit: r1031406 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/ components/camel-h...

Posted by Hadrian Zbarcea <hz...@gmail.com>.
Willem, did you forget to add AbstractCamelBeanPostProcessor.java?
Hadrian

On Nov 4, 2010, at 10:26 PM, ningjiang@apache.org wrote:

> Author: ningjiang
> Date: Fri Nov  5 02:26:49 2010
> New Revision: 1031406
> 
> URL: http://svn.apache.org/viewvc?rev=1031406&view=rev
> Log:
> CAMEL-3308 Updated the cxf version rang
> 
> Modified:
>    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
>    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
>    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
>    camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java
>    camel/trunk/components/camel-jms/pom.xml
>    camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
>    camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java
>    camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java
>    camel/trunk/components/camel-spring-javaconfig/pom.xml
>    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
>    camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java
>    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
>    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
>    camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
>    camel/trunk/parent/pom.xml
>    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java
>    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
>    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java
> 
> Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java (original)
> +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java Fri Nov  5 02:26:49 2010
> @@ -44,8 +44,9 @@ import org.apache.commons.logging.LogFac
> 
> /**
>  * A helper class for Camel based injector or post processing hooks which can be reused by
> - * both the <a href="http://camel.apache.org/spring.html">Spring</a>
> - * and <a href="http://camel.apache.org/guice.html">Guice</a> support.
> + * both the <a href="http://camel.apache.org/spring.html">Spring</a>,
> + * <a href="http://camel.apache.org/guice.html">Guice</a> and
> + * <a href="http://camel.apache.org/blueprint.html">Blueprint</a>support.
>  *
>  * @version $Revision$
>  */
> 
> Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java (original)
> +++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java Fri Nov  5 02:26:49 2010
> @@ -98,7 +98,7 @@ public class CamelContextFactoryBean ext
>     @XmlElement(name = "jmxAgent", type = CamelJMXAgentDefinition.class, required = false)
>     private CamelJMXAgentDefinition camelJMXAgent;
>     @XmlElements({
> -//        @XmlElement(name = "beanPostProcessor", type = CamelBeanPostProcessor.class, required = false),
> +        @XmlElement(name = "beanPostProcessor", type = CamelBeanPostProcessor.class, required = false),
>         @XmlElement(name = "template", type = CamelProducerTemplateFactoryBean.class, required = false),
>         @XmlElement(name = "consumerTemplate", type = CamelConsumerTemplateFactoryBean.class, required = false),
>         @XmlElement(name = "proxy", type = CamelProxyFactoryDefinition.class, required = false),
> @@ -178,6 +178,7 @@ public class CamelContextFactoryBean ext
>     }
> 
>     @Override
> +    // TODO this method is need for looking up the customer configure component
>     protected <S> S getBeanForType(Class<S> clazz) {
>         return null;
>     }
> 
> Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java (original)
> +++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java Fri Nov  5 02:26:49 2010
> @@ -40,6 +40,7 @@ import org.apache.aries.blueprint.mutabl
> import org.apache.aries.blueprint.mutable.MutablePassThroughMetadata;
> import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
> import org.apache.camel.blueprint.BlueprintCamelContext;
> +import org.apache.camel.blueprint.CamelBeanPostProcessor;
> import org.apache.camel.blueprint.CamelContextFactoryBean;
> import org.apache.camel.core.xml.AbstractCamelContextFactoryBean;
> import org.apache.camel.impl.DefaultCamelContextNameStrategy;
> @@ -141,6 +142,8 @@ public class CamelNamespaceHandler imple
>                 ptm = (PassThroughMetadata) context.getComponentDefinitionRegistry().getComponentDefinition("blueprintBundleContext");
>                 ccfb.setBundleContext((BundleContext) ptm.getObject());
>                 ccfb.setImplicitId(implicitId);
> +                // setup the BeanPostProcessor
> +                createBeansReference(context, contextId, ccfb.getBeans());
>                 ccfb.afterPropertiesSet();
>             } catch (Exception e) {
>                 throw new ComponentDefinitionException("Unable to initialize camel context factory", e);
> @@ -264,6 +267,16 @@ public class CamelNamespaceHandler imple
>         return null;
>     }
> 
> +    private void createBeansReference(ParserContext context, String contextId, List beans) {
> +        // need to check the beanPostProcessor first
> +        MutableBeanMetadata metadata = context.createMetadata(MutableBeanMetadata.class);
> +        metadata.setProcessor(true);
> +        metadata.setId(contextId + ".beanPostProcessor");
> +        metadata.setRuntimeClass(CamelBeanPostProcessor.class);
> +        LOG.info("**** create the beanPostProcessor");
> +        context.getComponentDefinitionRegistry().registerComponentDefinition(metadata);
> +    }
> +
>     private void findInputComponents(List<FromDefinition> defs, Set<String> components, Set<String> languages, Set<String> dataformats) {
>         if (defs != null) {
>             for (FromDefinition def : defs) {
> 
> Modified: camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java (original)
> +++ camel/trunk/components/camel-hawtdb/src/test/java/org/apache/camel/component/hawtdb/HawtDBAggregateDiscardOnTimeoutTest.java Fri Nov  5 02:26:49 2010
> @@ -17,7 +17,6 @@
> package org.apache.camel.component.hawtdb;
> 
> import java.util.concurrent.TimeUnit;
> -import java.util.concurrent.atomic.AtomicInteger;
> 
> import org.apache.camel.Exchange;
> import org.apache.camel.builder.RouteBuilder;
> @@ -27,8 +26,7 @@ import org.apache.camel.test.junit4.Came
> import org.junit.Test;
> 
> public class HawtDBAggregateDiscardOnTimeoutTest extends CamelTestSupport {
> -
> -    private static AtomicInteger counter = new AtomicInteger(0);
> +   
>     private HawtDBAggregationRepository repo;
> 
>     @Override
> 
> Modified: camel/trunk/components/camel-jms/pom.xml
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/pom.xml?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-jms/pom.xml (original)
> +++ camel/trunk/components/camel-jms/pom.xml Fri Nov  5 02:26:49 2010
> @@ -42,6 +42,11 @@
>     </dependency>
>     <dependency>
>       <groupId>org.apache.camel</groupId>
> +      <artifactId>camel-core-xml</artifactId>
> +      <scope>provided</scope>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.apache.camel</groupId>
>       <artifactId>camel-spring</artifactId>
>     </dependency>
>     <dependency>
> 
> Modified: camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java (original)
> +++ camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java Fri Nov  5 02:26:49 2010
> @@ -62,7 +62,6 @@ public abstract class AbstractJpaMethodT
>         stopServices(consumer, template, camelContext);
>     }
> 
> -    @SuppressWarnings("unchecked")
>     @Test
>     public void produceNewEntity() throws Exception {
>         setUp("jpa://" + Customer.class.getName() + "?usePersist=" + (usePersist() ? "true" : "false"));
> @@ -89,7 +88,6 @@ public abstract class AbstractJpaMethodT
>         assertEquals(receivedCustomer.getAddress().getId(), persistedCustomer.getAddress().getId());
>     }
> 
> -    @SuppressWarnings("unchecked")
>     @Test
>     public void produceNewEntitiesFromList() throws Exception {
>         setUp("jpa://" + List.class.getName() + "?usePersist=" + (usePersist() ? "true" : "false"));
> @@ -160,7 +158,6 @@ public abstract class AbstractJpaMethodT
>         assertEntitiesInDatabase(0, Address.class.getName());
>     }
> 
> -    @SuppressWarnings("unchecked")
>     protected void setUp(String endpointUri) throws Exception {
>         template = camelContext.createProducerTemplate();
>         startServices(template, camelContext);
> @@ -181,7 +178,6 @@ public abstract class AbstractJpaMethodT
>         assertEntitiesInDatabase(0, Address.class.getName());
>     }
> 
> -    @SuppressWarnings("unchecked")
>     protected void save(final Customer customer) {
>         transactionStrategy.execute(new JpaCallback() {
>             public Object doInJpa(EntityManager entityManager) throws PersistenceException {
> @@ -195,7 +191,6 @@ public abstract class AbstractJpaMethodT
>         assertEntitiesInDatabase(1, Address.class.getName());
>     }
> 
> -    @SuppressWarnings("unchecked")
>     protected void assertEntitiesInDatabase(int count, String entity) {
>         List results = jpaTemplate.find("select o from " + entity + " o");
>         assertEquals(count, results.size());
> 
> Modified: camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java (original)
> +++ camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java Fri Nov  5 02:26:49 2010
> @@ -37,7 +37,6 @@ public class JpaUseMergeTest extends Abs
>         return false;
>     }
> 
> -    @SuppressWarnings("unchecked")
>     @Test
>     public void produceExistingEntity() throws Exception {
>         setUp("jpa://" + Customer.class.getName() + "?usePersist=false");
> 
> Modified: camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java (original)
> +++ camel/trunk/components/camel-ldap/src/test/java/org/apache/camel/component/ldap/LdapRouteTest.java Fri Nov  5 02:26:49 2010
> @@ -49,6 +49,7 @@ public class LdapRouteTest extends Abstr
>     private ProducerTemplate template;
>     private int port;
> 
> +    @SuppressWarnings("unchecked")
>     @ApplyLdifFiles("org/apache/camel/component/ldap/LdapRouteTest.ldif")
>     @Test
>     public void testLdapRoute() throws Exception {
> 
> Modified: camel/trunk/components/camel-spring-javaconfig/pom.xml
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-javaconfig/pom.xml?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-spring-javaconfig/pom.xml (original)
> +++ camel/trunk/components/camel-spring-javaconfig/pom.xml Fri Nov  5 02:26:49 2010
> @@ -58,6 +58,11 @@
>     </dependency>
>     <dependency>
>       <groupId>org.apache.camel</groupId>
> +      <artifactId>camel-core-xml</artifactId>
> +      <scope>provided</scope>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.apache.camel</groupId>
>       <artifactId>camel-spring</artifactId>
>       <exclusions>
>         <exclusion>
> 
> Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java (original)
> +++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java Fri Nov  5 02:26:49 2010
> @@ -32,6 +32,7 @@ import org.apache.camel.Endpoint;
> import org.apache.camel.EndpointInject;
> import org.apache.camel.Produce;
> import org.apache.camel.Service;
> +import org.apache.camel.core.xml.AbstractCamelBeanPostProcessor;
> import org.apache.camel.core.xml.CamelJMXAgentDefinition;
> import org.apache.camel.impl.CamelPostProcessorHelper;
> import org.apache.camel.impl.DefaultEndpoint;
> @@ -65,19 +66,13 @@ import org.springframework.context.Appli
>  */
> @XmlRootElement(name = "beanPostProcessor")
> @XmlAccessorType(XmlAccessType.FIELD)
> -public class CamelBeanPostProcessor implements BeanPostProcessor, ApplicationContextAware {
> +public class CamelBeanPostProcessor extends AbstractCamelBeanPostProcessor implements BeanPostProcessor, ApplicationContextAware {
>     private static final transient Log LOG = LogFactory.getLog(CamelBeanPostProcessor.class);
>     @XmlTransient
>     Set<String> prototypeBeans = new LinkedHashSet<String>();
>     @XmlTransient
> -    private CamelContext camelContext;
> -    @XmlTransient
>     private ApplicationContext applicationContext;
> -    @XmlTransient
> -    private CamelPostProcessorHelper postProcessor;
> -    @XmlTransient
> -    private String camelId;
> -
> +    
>     public CamelBeanPostProcessor() {
>     }
> 
> @@ -91,8 +86,8 @@ public class CamelBeanPostProcessor impl
>             return bean;
>         }
> 
> -        if (camelContext == null && applicationContext.containsBean(camelId)) {
> -            setCamelContext((CamelContext) applicationContext.getBean(camelId));
> +        if (getCamelContext() == null && applicationContext.containsBean(getCamelId())) {
> +            setCamelContext((CamelContext) applicationContext.getBean(getCamelId()));
>         }
> 
>         injectFields(bean, beanName);
> @@ -100,10 +95,10 @@ public class CamelBeanPostProcessor impl
> 
>         if (bean instanceof CamelContextAware && canSetCamelContext(bean, beanName)) {
>             CamelContextAware contextAware = (CamelContextAware)bean;
> -            if (camelContext == null) {
> +            if (getCamelContext() == null) {
>                 LOG.warn("No CamelContext defined yet so cannot inject into: " + bean);
>             } else {
> -                contextAware.setCamelContext(camelContext);
> +                contextAware.setCamelContext(getCamelContext());
>             }
>         }
> 
> @@ -134,92 +129,11 @@ public class CamelBeanPostProcessor impl
>     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
>         this.applicationContext = applicationContext;
>     }
> -
> -    public CamelContext getCamelContext() {
> -        return camelContext;
> -    }
> -
> -    public void setCamelContext(CamelContext camelContext) {
> -        this.camelContext = camelContext;
> -        postProcessor = new CamelPostProcessorHelper(camelContext) {
> -            @Override
> -            protected RuntimeException createProxyInstantiationRuntimeException(Class<?> type, Endpoint endpoint, Exception e) {
> -                return new BeanInstantiationException(type, "Could not instantiate proxy of type " + type.getName() + " on endpoint " + endpoint, e);
> -            }
> -
> -            protected boolean isSingleton(Object bean, String beanName) {
> -                // no application context has been injected which means the bean
> -                // has not been enlisted in Spring application context
> -                if (applicationContext == null || beanName == null) {
> -                    return super.isSingleton(bean, beanName);
> -                } else {
> -                    return applicationContext.isSingleton(beanName);
> -                }
> -            }
> -
> -            protected void startService(Service service, Object bean, String beanName) throws Exception {
> -                if (isSingleton(bean, beanName)) {
> -                    getCamelContext().addService(service);
> -                } else {
> -                    // only start service and do not add it to CamelContext
> -                    ServiceHelper.startService(service);
> -                    if (prototypeBeans.add(beanName)) {
> -                        // do not spam the log with WARN so do this only once per bean name
> -                        LOG.warn("The bean with id [" + beanName + "] is prototype scoped and cannot stop the injected service when bean is destroyed: "
> -                                + service + ". You may want to stop the service manually from the bean.");
> -                    }
> -                }
> -            }
> -        };
> -    }
> -
> -    public String getCamelId() {
> -        return camelId;
> -    }
> -
> -    public void setCamelId(String camelId) {
> -        this.camelId = camelId;
> -    }
> -
> +   
>     // Implementation methods
>     // -------------------------------------------------------------------------
> 
> -    /**
> -     * Can we post process the given bean?
> -     *
> -     * @param bean the bean
> -     * @param beanName the bean name
> -     * @return true to process it
> -     */
> -    protected boolean canPostProcessBean(Object bean, String beanName) {
> -        // the JMXAgent is a bit strange and causes Spring issues if we let it being
> -        // post processed by this one. It does not need it anyway so we are good to go.
> -        if (bean instanceof CamelJMXAgentDefinition) {
> -            return false;
> -        }
> -
> -        // all other beans can of course be processed
> -        return true;
> -    }
> -    
> -    
> -    protected boolean canSetCamelContext(Object bean, String beanName) {
> -        boolean answer = true;
> -        if (bean instanceof CamelContextAware) {
> -            CamelContextAware camelContextAware = (CamelContextAware) bean;
> -            CamelContext context = camelContextAware.getCamelContext();
> -            if (context != null) {
> -                if (LOG.isTraceEnabled()) {
> -                    LOG.trace("The camel context of " + beanName + " is set, so we skip inject the camel context of it.");
> -                }
> -                answer = false;
> -            }
> -        } else {
> -            answer = false;
> -        }
> -        return answer;
> -    }
> -
> +   
>     /**
>      * A strategy method to allow implementations to perform some custom JBI
>      * based injection of the POJO
> @@ -230,12 +144,12 @@ public class CamelBeanPostProcessor impl
>         ReflectionUtils.doWithFields(bean.getClass(), new ReflectionUtils.FieldCallback() {
>             public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
>                 EndpointInject endpointInject = field.getAnnotation(EndpointInject.class);
> -                if (endpointInject != null && postProcessor.matchContext(endpointInject.context())) {
> +                if (endpointInject != null && getPostProcessor().matchContext(endpointInject.context())) {
>                     injectField(field, endpointInject.uri(), endpointInject.ref(), bean, beanName);
>                 }
> 
>                 Produce produce = field.getAnnotation(Produce.class);
> -                if (produce != null && postProcessor.matchContext(produce.context())) {
> +                if (produce != null && getPostProcessor().matchContext(produce.context())) {
>                     injectField(field, produce.uri(), produce.ref(), bean, beanName);
>                 }
>             }
> @@ -257,12 +171,12 @@ public class CamelBeanPostProcessor impl
> 
>     protected void setterInjection(Method method, Object bean, String beanName) {
>         EndpointInject endpointInject = method.getAnnotation(EndpointInject.class);
> -        if (endpointInject != null && postProcessor.matchContext(endpointInject.context())) {
> +        if (endpointInject != null && getPostProcessor().matchContext(endpointInject.context())) {
>             setterInjection(method, bean, beanName, endpointInject.uri(), endpointInject.ref());
>         }
> 
>         Produce produce = method.getAnnotation(Produce.class);
> -        if (produce != null && postProcessor.matchContext(produce.context())) {
> +        if (produce != null && getPostProcessor().matchContext(produce.context())) {
>             setterInjection(method, bean, beanName, produce.uri(), produce.ref());
>         }
>     }
> @@ -280,9 +194,40 @@ public class CamelBeanPostProcessor impl
>         }
>     }
> 
> -    public CamelPostProcessorHelper getPostProcessor() {
> -        ObjectHelper.notNull(postProcessor, "postProcessor");
> -        return postProcessor;
> +    @Override
> +    public CamelPostProcessorHelper createCamelPostProcessorHelper(CamelContext camelContext) {        
> +        return new CamelPostProcessorHelper(camelContext) {
> +            @Override
> +            protected RuntimeException createProxyInstantiationRuntimeException(Class<?> type, Endpoint endpoint, Exception e) {
> +                return new BeanInstantiationException(type, "Could not instantiate proxy of type " + type.getName() + " on endpoint " + endpoint, e);
> +            }
> +
> +            protected boolean isSingleton(Object bean, String beanName) {
> +                // no application context has been injected which means the bean
> +                // has not been enlisted in Spring application context
> +                if (applicationContext == null || beanName == null) {
> +                    return super.isSingleton(bean, beanName);
> +                } else {
> +                    return applicationContext.isSingleton(beanName);
> +                }
> +            }
> +
> +            protected void startService(Service service, Object bean, String beanName) throws Exception {
> +                if (isSingleton(bean, beanName)) {
> +                    getCamelContext().addService(service);
> +                } else {
> +                    // only start service and do not add it to CamelContext
> +                    ServiceHelper.startService(service);
> +                    if (prototypeBeans.add(beanName)) {
> +                        // do not spam the log with WARN so do this only once per bean name
> +                        LOG.warn("The bean with id [" + beanName + "] is prototype scoped and cannot stop the injected service when bean is destroyed: "
> +                                + service + ". You may want to stop the service manually from the bean.");
> +                    }
> +                }
> +            }
> +        };
>     }
> +    
> +    
> 
> }
> 
> Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java (original)
> +++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/CamelContextResource.java Fri Nov  5 02:26:49 2010
> @@ -24,8 +24,8 @@ import javax.ws.rs.Path;
> import javax.ws.rs.Produces;
> import javax.ws.rs.core.MediaType;
> 
> +import com.sun.jersey.api.core.InjectParam;
> import com.sun.jersey.api.view.ImplicitProduces;
> -import com.sun.jersey.spi.inject.Inject;
> import com.sun.jersey.spi.resource.Singleton;
> import org.apache.camel.CamelContext;
> import org.apache.camel.ProducerTemplate;
> @@ -46,7 +46,7 @@ public class CamelContextResource {
>     private CamelContext camelContext;
>     private ProducerTemplate template;
> 
> -    public CamelContextResource(@Inject CamelContext camelContext) throws Exception {
> +    public CamelContextResource(@InjectParam CamelContext camelContext) throws Exception {
>         this.camelContext = camelContext;
>         this.template = camelContext.createProducerTemplate();
>         template.start();
> 
> Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java (original)
> +++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java Fri Nov  5 02:26:49 2010
> @@ -103,7 +103,9 @@ public class XmppConsumer extends Defaul
>             muc.leave();
>             muc = null;
>         }
> -        //the endpoint will clean up the connection
> +        if (connection != null && connection.isConnected()) {
> +            connection.disconnect();
> +        }
>     }
> 
>     public void chatCreated(Chat chat, boolean createdLocally) {
> 
> Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java (original)
> +++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java Fri Nov  5 02:26:49 2010
> @@ -99,6 +99,9 @@ public class XmppGroupChatProducer exten
>             chat.leave();
>             chat = null;
>         }
> +        if (connection != null && connection.isConnected()) {
> +            connection.disconnect();
> +        }
>         super.doStop();
>     }
> 
> 
> Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java (original)
> +++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java Fri Nov  5 02:26:49 2010
> @@ -51,10 +51,6 @@ public class XmppPrivateChatProducer ext
> 
>     public void process(Exchange exchange) {
>         try {
> -            if (connection == null) {
> -                connection = endpoint.createConnection();
> -            }
> -
>             // make sure we are connected
>             if (!connection.isConnected()) {
>                 if (LOG.isDebugEnabled()) {
> @@ -108,6 +104,22 @@ public class XmppPrivateChatProducer ext
>                     + " to: " + XmppEndpoint.getConnectionMessage(connection), exchange, e);
>         }
>     }
> +    
> +    @Override
> +    protected void doStart() throws Exception {
> +        if (connection == null) {
> +            connection = endpoint.createConnection();
> +        }
> +        super.doStart();
> +    }
> +
> +    @Override
> +    protected void doStop() throws Exception {
> +        if (connection != null && connection.isConnected()) {
> +            connection.disconnect();
> +        }
> +        super.doStop();
> +    }
> 
>     // Properties
>     // -------------------------------------------------------------------------
> 
> Modified: camel/trunk/parent/pom.xml
> URL: http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/parent/pom.xml (original)
> +++ camel/trunk/parent/pom.xml Fri Nov  5 02:26:49 2010
> @@ -150,7 +150,7 @@
>     <camel.osgi.import.defaults>
>       org.springframework.*;version="[2.5,4)",
>       org.apache.commons.logging.*;version="[1.1,2)",
> -      org.apache.cxf.*;version="[2.3.0,2.4)",
> +      org.apache.cxf.*;version="[2.2.11,2.4)",
>       org.apache.qpid.*;version="[0.5,0.6)",
>       org.apache.abdera.*;version="[0.4,0.5)",
>       org.apache.commons.httpclient.*;version="[3.1,4.0)",
> 
> Modified: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java
> URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java (original)
> +++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/OSGiBlueprintTestSupport.java Fri Nov  5 02:26:49 2010
> @@ -125,7 +125,7 @@ public class OSGiBlueprintTestSupport ex
>             // install the spring dm profile
>             profile("spring.dm").version("1.2.0"),
>             // this is how you set the default log level when using pax logging (logProfile)
> -            org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("TRACE"),
> +            org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
> 
>             // install blueprint requirements
>             mavenBundle("org.apache.felix", "org.apache.felix.configadmin"),
> 
> Modified: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java (original)
> +++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java Fri Nov  5 02:26:49 2010
> @@ -36,7 +36,6 @@ import static org.ops4j.pax.exam.contain
> import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.workingDirectory;
> 
> @RunWith(JUnit4TestRunner.class)
> -@Ignore
> public class CxfProxyExampleTest extends OSGiIntegrationSpringTestSupport {
> 
>     protected static ReportIncidentEndpoint createCXFClient() {
> @@ -73,9 +72,6 @@ public class CxfProxyExampleTest extends
>         return new OsgiBundleXmlApplicationContext(new String[]{"org/apache/camel/itest/osgi/cxf/camel-config.xml"});
>     }
> 
> -    // TODO: CxfConsumer should use OSGi http service (no embedded Jetty)
> -    // TODO: Make this test work with OSGi
> -
>     @Configuration
>     public static Option[] configure() {
>         Option[] options = options(
> 
> Modified: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java?rev=1031406&r1=1031405&r2=1031406&view=diff
> ==============================================================================
> --- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java (original)
> +++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/spring/xslt/XsltRouteTest.java Fri Nov  5 02:26:49 2010
> @@ -19,13 +19,13 @@ package org.apache.camel.itest.osgi.spri
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.component.mock.MockEndpoint;
> import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
> -import org.junit.Ignore;
> import org.junit.Test;
> import org.junit.runner.RunWith;
> +import org.ops4j.pax.exam.Option;
> +import org.ops4j.pax.exam.junit.Configuration;
> import org.ops4j.pax.exam.junit.JUnit4TestRunner;
> 
> @RunWith(JUnit4TestRunner.class)
> -@Ignore("TODO: fix me")
> public class XsltRouteTest extends OSGiIntegrationTestSupport {
> 
>     @Test
> @@ -51,5 +51,26 @@ public class XsltRouteTest extends OSGiI
>             }
>         };
>     }
> +    
> +    @Configuration
> +    public static Option[] configure() throws Exception {
> +        Option[] options = options(
> +            // install the spring dm profile            
> +            profile("spring.dm").version("1.2.0"),    
> +            // this is how you set the default log level when using pax logging (logProfile)
> +            org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
> +            
> +            
> +            // using the features to install the camel components             
> +            scanFeatures(getCamelKarafFeatureUrl(),                         
> +                          "camel-core", "camel-spring", "camel-test"),
> +            
> +            workingDirectory("target/paxrunner/"),
> +
> +            equinox(),
> +            felix());
> +        
> +        return options;
> +    }
> 
> }
> 
>