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,