You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/03/02 14:55:00 UTC

svn commit: r513764 - /incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java

Author: gnodet
Date: Fri Mar  2 05:54:59 2007
New Revision: 513764

URL: http://svn.apache.org/viewvc?view=rev&rev=513764
Log:
SM-858: The JBIContainer can now be injected on the POJO

Modified:
    incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java

Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java?view=diff&rev=513764&r1=513763&r2=513764
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java Fri Mar  2 05:54:59 2007
@@ -19,6 +19,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.net.URL;
 import java.util.HashMap;
@@ -44,6 +45,7 @@
 import org.apache.servicemix.common.ExchangeProcessor;
 import org.apache.servicemix.common.ManagementSupport;
 import org.apache.servicemix.common.tools.wsdl.WSDLFlattener;
+import org.apache.servicemix.jbi.container.JBIContainer;
 import org.apache.servicemix.jsr181.xfire.JbiFaultSerializer;
 import org.apache.servicemix.jsr181.xfire.ServiceFactoryHelper;
 import org.codehaus.xfire.XFire;
@@ -181,7 +183,7 @@
         logger = this.serviceUnit.getComponent().getLogger();
         ComponentContext ctx = this.serviceUnit.getComponent().getComponentContext();
         activated = ctx.activateEndpoint(service, endpoint);
-        injectContext(new EndpointComponentContext(this));
+        injectPojo(new EndpointComponentContext(this), getContainer());
         processor.start();
     }
 
@@ -194,15 +196,34 @@
         processor.stop();
         ComponentContext ctx = this.serviceUnit.getComponent().getComponentContext();
         ctx.deactivateEndpoint(ep);
-        injectContext(null);
+        injectPojo(null, null);
     }
 
-    protected void injectContext(ComponentContext context) {
+    protected void injectPojo(ComponentContext context, JBIContainer container) {
         try {
             Method mth = pojo.getClass().getMethod("setContext", new Class[] { ComponentContext.class });
             mth.invoke(pojo, new Object[] { context });
         } catch (Exception e) {
             logger.debug("Unable to inject ComponentContext: " + e.getMessage());
+        }
+        try {
+            Method mth = pojo.getClass().getMethod("setContainer", new Class[] { JBIContainer.class });
+            mth.invoke(pojo, new Object[] { container });
+        } catch (Exception e) {
+            logger.debug("Unable to inject JBIContainer: " + e.getMessage());
+        }
+    }
+    
+    protected JBIContainer getContainer() {
+        try {
+            ComponentContext ctx = getServiceUnit().getComponent().getComponentContext();
+            Field field = ctx.getClass().getDeclaredField("container");
+            field.setAccessible(true);
+            JBIContainer container = (JBIContainer) field.get(ctx);
+            return container;
+        } catch (Exception e) {
+            logger.debug("Unable to retrieve JBIContainer: " + e.getMessage());
+            return null;
         }
     }