You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by dj...@apache.org on 2006/11/27 01:52:21 UTC
svn commit: r479481 - in
/incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment:
OpenEjbModuleBuilder.java XmlBeansSessionBuilder.java
Author: djencks
Date: Sun Nov 26 16:52:20 2006
New Revision: 479481
URL: http://svn.apache.org/viewvc?view=rev&rev=479481
Log:
GERONIMO-2597 make web service builder optional and allow multiple builders
Modified:
incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/OpenEjbModuleBuilder.java
incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/XmlBeansSessionBuilder.java
Modified: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/OpenEjbModuleBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/OpenEjbModuleBuilder.java?view=diff&rev=479481&r1=479480&r2=479481
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/OpenEjbModuleBuilder.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/OpenEjbModuleBuilder.java Sun Nov 26 16:52:20 2006
@@ -27,6 +27,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -49,14 +50,13 @@
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.ReferencePatterns;
-import org.apache.geronimo.gbean.SingleElementCollection;
+import org.apache.geronimo.j2ee.deployment.ActivationSpecInfoLocator;
import org.apache.geronimo.j2ee.deployment.EARContext;
import org.apache.geronimo.j2ee.deployment.EJBModule;
import org.apache.geronimo.j2ee.deployment.Module;
import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
-import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
import org.apache.geronimo.j2ee.deployment.NamingBuilder;
-import org.apache.geronimo.j2ee.deployment.ActivationSpecInfoLocator;
+import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.kernel.GBeanNotFoundException;
import org.apache.geronimo.kernel.Kernel;
@@ -69,8 +69,8 @@
import org.apache.geronimo.schema.NamespaceElementConverter;
import org.apache.geronimo.schema.SchemaConversionUtils;
import org.apache.geronimo.security.jacc.ComponentPermissions;
-import org.apache.geronimo.xbeans.geronimo.naming.GerResourceLocatorType;
import org.apache.geronimo.xbeans.geronimo.j2ee.GerSecurityDocument;
+import org.apache.geronimo.xbeans.geronimo.naming.GerResourceLocatorType;
import org.apache.geronimo.xbeans.j2ee.AssemblyDescriptorType;
import org.apache.geronimo.xbeans.j2ee.EjbJarDocument;
import org.apache.geronimo.xbeans.j2ee.EjbJarType;
@@ -78,10 +78,6 @@
import org.apache.geronimo.xbeans.j2ee.EntityBeanType;
import org.apache.geronimo.xbeans.j2ee.MessageDrivenBeanType;
import org.apache.geronimo.xbeans.j2ee.SessionBeanType;
-import org.apache.xmlbeans.XmlException;
-import org.apache.xmlbeans.XmlObject;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlDocumentProperties;
import org.apache.openejb.EJBModuleImplGBean;
import org.apache.openejb.EjbDeployment;
import org.apache.openejb.proxy.EJBProxyFactory;
@@ -91,6 +87,10 @@
import org.apache.openejb.xbeans.ejbjar.OpenejbOpenejbJarType;
import org.apache.openejb.xbeans.ejbjar.OpenejbSessionBeanType;
import org.apache.openejb.xbeans.pkgen.EjbKeyGeneratorDocument;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlDocumentProperties;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
/**
@@ -111,7 +111,7 @@
private final XmlBeansEntityBuilder xmlBeansEntityBuilder;
private final CmpSchemaBuilder cmpSchemaBuilder;
private final XmlBeansMdbBuilder xmlBeansMdbBuilder;
- private final SingleElementCollection webServiceBuilder;
+ private final Collection webServiceBuilders;
private final NamespaceDrivenBuilderCollection securityBuilders;
private final NamespaceDrivenBuilderCollection serviceBuilders;
private final NamingBuilder namingBuilders;
@@ -150,8 +150,9 @@
defaultCmpEjbContainer,
defaultMdbEjbContainer,
listener,
- getLinkData(kernel, webServiceLinkTemplate),
- new SingleElementCollection(webServiceBuilder),
+ getLinkData(kernel,
+ webServiceLinkTemplate),
+ webServiceBuilder,
securityBuilders == null ? Collections.EMPTY_SET : securityBuilders,
serviceBuilders == null ? Collections.EMPTY_SET : serviceBuilders,
namingBuilders,
@@ -185,7 +186,7 @@
defaultMdbEjbContainer,
listener,
linkTemplate,
- new SingleElementCollection(webServiceBuilder),
+ Collections.singleton(webServiceBuilder),
securityBuilder == null ? Collections.EMPTY_SET : Collections.singleton(securityBuilder),
serviceBuilder == null ? Collections.EMPTY_SET : Collections.singleton(serviceBuilder),
namingBuilders,
@@ -202,7 +203,7 @@
String defaultMdbEjbContainer,
AbstractNameQuery listener,
GBeanData linkTemplate,
- SingleElementCollection webServiceBuilder,
+ Collection webServiceBuilder,
Collection securityBuilders,
Collection serviceBuilders,
NamingBuilder namingBuilders,
@@ -216,7 +217,7 @@
this.xmlBeansEntityBuilder = new XmlBeansEntityBuilder(this, defaultBmpEjbContainer, defaultCmpEjbContainer);
this.cmpSchemaBuilder = new TranqlCmpSchemaBuilder();
this.xmlBeansMdbBuilder = new XmlBeansMdbBuilder(this, kernel, defaultMdbEjbContainer);
- this.webServiceBuilder = webServiceBuilder;
+ this.webServiceBuilders = webServiceBuilder;
this.securityBuilders = new NamespaceDrivenBuilderCollection(securityBuilders, GerSecurityDocument.type.getDocumentElementName());
this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders, GBeanBuilder.SERVICE_QNAME);
this.namingBuilders = namingBuilders;
@@ -224,8 +225,8 @@
this.activationSpecInfoLocator = activationSpecInfoLocator;
}
- public WebServiceBuilder getWebServiceBuilder() {
- return (WebServiceBuilder) webServiceBuilder.getElement();
+ public Collection getWebServiceBuilders() {
+ return webServiceBuilders;
}
public NamingBuilder getNamingBuilders() {
@@ -307,7 +308,11 @@
correctedPortLocations.put(sessionBean.getEjbName(), location);
}
}
- Map portInfoMap = getWebServiceBuilder().findWebServices(moduleFile, true, correctedPortLocations, environment);
+ Map sharedContext = new HashMap();
+ for (Iterator iterator = webServiceBuilders.iterator(); iterator.hasNext();) {
+ WebServiceBuilder serviceBuilder = (WebServiceBuilder) iterator.next();
+ serviceBuilder.findWebServices(moduleFile, true, correctedPortLocations, environment, sharedContext);
+ }
AbstractName moduleName;
if (earName == null) {
@@ -317,7 +322,7 @@
moduleName = naming.createChildName(earName, targetPath, NameFactory.EJB_MODULE);
}
- return new EJBModule(standAlone, moduleName, environment, moduleFile, targetPath, ejbJar, openejbJar, specDD, portInfoMap);
+ return new EJBModule(standAlone, moduleName, environment, moduleFile, targetPath, ejbJar, openejbJar, specDD, sharedContext);
}
OpenejbOpenejbJarType getOpenejbJar(Object plan, JarFile moduleFile, boolean standAlone, String targetPath, EjbJarType ejbJar) throws DeploymentException {
@@ -682,7 +687,7 @@
// String contextID = ejbModuleObjectName.getCanonicalName();
String policyContextID = moduleBaseName.toString().replaceAll("[,: ]", "_");
- Map portInfoMap = ejbModule.getPortMap();
+ Map portInfoMap = ejbModule.getSharedContext();
xmlBeansSessionBuilder.buildBeans(earContext, moduleBaseName, cl, ejbModule, componentPermissions, openejbBeans, transactionPolicyHelper, enterpriseBeans, listener, policyContextID, portInfoMap);
Modified: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/XmlBeansSessionBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/XmlBeansSessionBuilder.java?view=diff&rev=479481&r1=479480&r2=479481
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/XmlBeansSessionBuilder.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/apache/openejb/deployment/XmlBeansSessionBuilder.java Sun Nov 26 16:52:20 2006
@@ -23,6 +23,7 @@
import java.util.Map;
import java.util.SortedMap;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.jar.JarFile;
import org.apache.geronimo.webservices.builder.WSDescriptorParser;
@@ -34,6 +35,7 @@
import org.apache.geronimo.j2ee.deployment.EARContext;
import org.apache.geronimo.j2ee.deployment.EJBModule;
import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
import org.apache.geronimo.kernel.config.Configuration;
@@ -98,12 +100,12 @@
boolean isStateless = "Stateless".equals(sessionBean.getSessionType().getStringValue().trim());
boolean isServiceEndpoint = sessionBean.isSetServiceEndpoint();
if (isStateless && isServiceEndpoint) {
- addWSContainerGBean(earContext, sessionName, ejbModule, cl, portInfoMap, sessionBean, openejbSessionBean, listener);
+ addWSContainerGBean(earContext, sessionName, ejbModule, cl, sessionBean, openejbSessionBean, listener);
}
}
}
- private void addWSContainerGBean(EARContext earContext, AbstractName sessionName, EJBModule ejbModule, ClassLoader cl, Map portInfoMap, SessionBeanType sessionBean, OpenejbSessionBeanType openejbSessionBean, AbstractNameQuery listener) throws DeploymentException {
+ private void addWSContainerGBean(EARContext earContext, AbstractName sessionName, EJBModule ejbModule, ClassLoader cl, SessionBeanType sessionBean, OpenejbSessionBeanType openejbSessionBean, AbstractNameQuery listener) throws DeploymentException {
String ejbName = sessionBean.getEjbName().getStringValue().trim();
OpenejbWebServiceSecurityType webServiceSecurity = openejbSessionBean == null ? null : openejbSessionBean.getWebServiceSecurity();
@@ -113,9 +115,18 @@
GBeanData linkData = new GBeanData(linkDataTemplate);
linkData.setAbstractName(linkName);
- Object portInfo = portInfoMap.get(ejbName);
//let the webServiceBuilder configure its part
- moduleBuilder.getWebServiceBuilder().configureEJB(linkData, ejbModule.getModuleFile(), portInfo, cl);
+ boolean configured = false;
+ for (Iterator iterator = moduleBuilder.getWebServiceBuilders().iterator(); iterator.hasNext();) {
+ WebServiceBuilder serviceBuilder = (WebServiceBuilder) iterator.next();
+ if (serviceBuilder.configureEJB(linkData, ejbName, ejbModule.getModuleFile(), ejbModule.getSharedContext(), cl)) {
+ configured = true;
+ break;
+ }
+ }
+ if (!configured) {
+ throw new DeploymentException("No web service builder configured ejb web service " + ejbName);
+ }
//configure the security part and references
if (webServiceSecurity != null) {
linkData.setAttribute("securityRealmName", webServiceSecurity.getSecurityRealmName().trim());