Author: gnodet
Date: Mon Oct 16 06:20:55 2006
New Revision: 464479

URL: http://svn.apache.org/viewvc?view=rev&rev=464479
Log:
Simplify xbean deployer by extending BaseXBeanDeployer.
Fix SM-708: a parent BeanFactory containing the "context" bean is created

Modified:
    
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java
    
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181XBeanDeployer.java
    
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/packaging/Jsr181ServiceUnitAnalyzer.java

Modified: 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java?view=diff&rev=464479&r1=464478&r2=464479
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181Endpoint.java
 Mon Oct 16 06:20:55 2006
@@ -43,6 +43,7 @@
 import org.apache.servicemix.common.Endpoint;
 import org.apache.servicemix.common.EndpointComponentContext;
 import org.apache.servicemix.common.ExchangeProcessor;
+import org.apache.servicemix.common.ManagementSupport;
 import org.apache.servicemix.jsr181.xfire.JbiFaultSerializer;
 import org.apache.servicemix.jsr181.xfire.ServiceFactoryHelper;
 import org.codehaus.xfire.XFire;
@@ -199,12 +200,19 @@
         try {
             registerService();
         } catch (Exception e) {
-            throw new DeploymentException(e);
+            throw ManagementSupport.failure(
+                            "deploy", 
+                            
getServiceUnit().getComponent().getComponentName(), 
+                            null, 
+                            e);
         }
     }
     
     public void registerService() throws Exception {
         if (pojo == null) {
+            if (pojoClass == null) {
+                throw new IllegalArgumentException("Endpoint must have a 
non-null pojo or a pojoClass");
+            }
             Class cl = Class.forName(pojoClass, true, 
getServiceUnit().getConfigurationClassLoader());
             pojo = cl.newInstance();
         }

Modified: 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181XBeanDeployer.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181XBeanDeployer.java?view=diff&rev=464479&r1=464478&r2=464479
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181XBeanDeployer.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181XBeanDeployer.java
 Mon Oct 16 06:20:55 2006
@@ -21,95 +21,22 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.jbi.management.DeploymentException;
-
 import org.apache.servicemix.common.BaseLifeCycle;
-import org.apache.servicemix.common.Endpoint;
-import org.apache.servicemix.common.xbean.AbstractXBeanDeployer;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanNotOfRequiredTypeException;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import 
org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.apache.servicemix.common.xbean.BaseXBeanDeployer;
+import org.apache.servicemix.common.xbean.ParentBeanFactoryPostProcessor;
 
-public class Jsr181XBeanDeployer extends AbstractXBeanDeployer {
+public class Jsr181XBeanDeployer extends BaseXBeanDeployer {
 
     public Jsr181XBeanDeployer(Jsr181Component component) {
-        super(component);
-    }
-
-    protected boolean validate(Endpoint endpoint) throws DeploymentException {
-        if (endpoint instanceof Jsr181Endpoint == false) {
-            throw failure("deploy", "Endpoint should be a Jsr181 endpoint", 
null);
-        }
-        Jsr181Endpoint ep = (Jsr181Endpoint) endpoint;
-        if (ep.getPojo() == null && ep.getPojoClass() == null) {
-            throw failure("deploy", "Endpoint must have a non-null pojo or a 
pojoClass", null);
-        }
-        try {
-            ep.registerService();
-        } catch (Exception e) {
-            throw failure("deploy", "Could not register endpoint", e);
-        }
-        return true;
+        super(component, Jsr181Endpoint.class);
     }
 
     protected List getBeanFactoryPostProcessors(String serviceUnitRootPath) {
+        Map beans = new HashMap();
+        beans.put("context", new EndpointComponentContext(((BaseLifeCycle) 
component.getLifeCycle()).getContext()));
         List processors = new 
ArrayList(super.getBeanFactoryPostProcessors(serviceUnitRootPath));
-        processors.add(new BeanFactoryPostProcessor() {
-            public void postProcessBeanFactory(ConfigurableListableBeanFactory 
factory) throws BeansException {
-                Map beans = new HashMap();
-                beans.put("context", new 
EndpointComponentContext(((BaseLifeCycle) 
component.getLifeCycle()).getContext()));
-                BeanFactory parent = new SimpleBeanFactory(beans);
-                factory.setParentBeanFactory(parent);
-            }
-        });
+        processors.add(new ParentBeanFactoryPostProcessor(beans));
         return processors;
-    }
-    
-    private static class SimpleBeanFactory implements BeanFactory {
-        private final Map beans;
-        public SimpleBeanFactory(Map beans) {
-            this.beans = beans;
-        }
-        public boolean containsBean(String name) {
-            return beans.containsKey(name);
-        }
-        public String[] getAliases(String name) throws 
NoSuchBeanDefinitionException {
-            Object bean = beans.get(name);
-            if (bean == null) {
-                throw new NoSuchBeanDefinitionException(name);
-            }
-            return new String[0];
-        }
-        public Object getBean(String name) throws BeansException {
-            return getBean(name, null);
-        }
-        public Object getBean(String name, Class requiredType) throws 
BeansException {
-            Object bean = beans.get(name);
-            if (bean == null) {
-                throw new NoSuchBeanDefinitionException(name);
-            }
-            if (requiredType != null && !requiredType.isInstance(bean)) {
-                throw new BeanNotOfRequiredTypeException(name, requiredType, 
bean.getClass());
-            }
-            return bean;
-        }
-        public Class getType(String name) throws NoSuchBeanDefinitionException 
{
-            Object bean = beans.get(name);
-            if (bean == null) {
-                throw new NoSuchBeanDefinitionException(name);
-            }
-            return bean.getClass();
-        }
-        public boolean isSingleton(String name) throws 
NoSuchBeanDefinitionException {
-            Object bean = beans.get(name);
-            if (bean == null) {
-                throw new NoSuchBeanDefinitionException(name);
-            }
-            return true;
-        }
     }
 
 }

Modified: 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/packaging/Jsr181ServiceUnitAnalyzer.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/packaging/Jsr181ServiceUnitAnalyzer.java?view=diff&rev=464479&r1=464478&r2=464479
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/packaging/Jsr181ServiceUnitAnalyzer.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/packaging/Jsr181ServiceUnitAnalyzer.java
 Mon Oct 16 06:20:55 2006
@@ -17,7 +17,10 @@
 package org.apache.servicemix.jsr181.packaging;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.MissingResourceException;
 import java.util.logging.Logger;
 
@@ -33,6 +36,7 @@
 
 import org.apache.servicemix.common.Endpoint;
 import org.apache.servicemix.common.xbean.AbstractXBeanServiceUnitAnalyzer;
+import org.apache.servicemix.common.xbean.ParentBeanFactoryPostProcessor;
 import org.apache.servicemix.jsr181.Jsr181Component;
 import org.apache.servicemix.jsr181.Jsr181Endpoint;
 import org.w3c.dom.Document;
@@ -45,17 +49,14 @@
        }
 
        protected List getProvides(Endpoint endpoint) {
-
                // We need to generate the dummy component to register the 
services
                Jsr181Endpoint jsr181Endpoint = (Jsr181Endpoint) endpoint;
                try {
                        Jsr181Component componentDummy = new Jsr181Component();
-                       componentDummy
-                                       .setEndpoints(new Jsr181Endpoint[] { 
jsr181Endpoint });
+                       componentDummy.setEndpoints(new Jsr181Endpoint[] { 
jsr181Endpoint });
                        componentDummy.getLifeCycle().init(new 
DummyComponentContext());
                } catch (Exception e) {
-                       throw new RuntimeException("Unable to register JSR-181 
service, "
-                                       + e.getMessage(), e);
+                       throw new RuntimeException("Unable to register JSR-181 
service, " + e.getMessage(), e);
                }
                return super.getProvides(endpoint);
        }
@@ -71,6 +72,12 @@
                        return false;
        }
 
+    protected List getBeanFactoryPostProcessors(String absolutePath) {
+        Map beans = new HashMap();
+        beans.put("context", new DummyComponentContext());
+        return Collections.singletonList(new 
ParentBeanFactoryPostProcessor(beans));
+    }
+    
        public class DummyComponentContext implements ComponentContext {
 
                public ServiceEndpoint activateEndpoint(QName serviceName,


Reply via email to