djencks 2005/07/23 01:57:31
Modified: modules/openejb-builder/src/java/org/openejb/deployment
OpenEJBModuleBuilder.java SessionBuilder.java
Log:
GERONIMO-782 clean up openejb code calling WebServiceBuilder
Revision Changes Path
1.49 +40 -21
openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java
Index: OpenEJBModuleBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- OpenEJBModuleBuilder.java 21 Jul 2005 22:56:00 -0000 1.48
+++ OpenEJBModuleBuilder.java 23 Jul 2005 05:57:31 -0000 1.49
@@ -54,6 +54,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.net.MalformedURLException;
import java.security.Permissions;
import java.util.HashMap;
import java.util.HashSet;
@@ -61,6 +62,7 @@
import java.util.Set;
import java.util.List;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.jar.JarFile;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
@@ -142,6 +144,7 @@
private final SessionBuilder sessionBuilder;
private final EntityBuilder entityBuilder;
private final MdbBuilder mdbBuilder;
+ private final WebServiceBuilder webServiceBuilder;
private final TransactionImportPolicyBuilder
transactionImportPolicyBuilder;
private final Repository repository;
@@ -157,6 +160,7 @@
this.sessionBuilder = new SessionBuilder(this, linkTemplate,
webServiceBuilder);
this.entityBuilder = new EntityBuilder(this);
this.mdbBuilder = new MdbBuilder(this);
+ this.webServiceBuilder = webServiceBuilder;
this.repository = repository;
}
@@ -236,8 +240,8 @@
try {
if (plan instanceof XmlObject) {
openejbJar = (OpenejbOpenejbJarType)
SchemaConversionUtils.getNestedObjectAsType((XmlObject) plan,
-
"openejb-jar",
-
OpenejbOpenejbJarType.type);
+ "openejb-jar",
+ OpenejbOpenejbJarType.type);
} else {
OpenejbOpenejbJarDocument openejbJarDoc = null;
if (plan != null) {
@@ -485,50 +489,65 @@
// create an index of the openejb ejb configurations by ejb-name
Map openejbBeans = new HashMap();
List badBeans = new ArrayList();
- //TODO NPE if enterprise-beans or session is missing
+ //overridden web service locations
+ Map correctedPortLocations = new HashMap();
+
OpenejbSessionBeanType[] openejbSessionBeans =
openejbEjbJar.getEnterpriseBeans().getSessionArray();
for (int i = 0; i < openejbSessionBeans.length; i++) {
OpenejbSessionBeanType sessionBean = openejbSessionBeans[i];
- if(beans.contains(sessionBean.getEjbName())) {
+ if (beans.contains(sessionBean.getEjbName())) {
openejbBeans.put(sessionBean.getEjbName(), sessionBean);
+ if (sessionBean.isSetWebServiceAddress()) {
+ String location =
sessionBean.getWebServiceAddress().trim();
+ correctedPortLocations.put(sessionBean.getEjbName(),
location);
+ }
} else {
badBeans.add(sessionBean.getEjbName());
}
}
- //TODO NPE as above
OpenejbEntityBeanType[] openejbEntityBeans =
openejbEjbJar.getEnterpriseBeans().getEntityArray();
for (int i = 0; i < openejbEntityBeans.length; i++) {
OpenejbEntityBeanType entityBean = openejbEntityBeans[i];
- if(beans.contains(entityBean.getEjbName())) {
+ if (beans.contains(entityBean.getEjbName())) {
openejbBeans.put(entityBean.getEjbName(), entityBean);
} else {
badBeans.add(entityBean.getEjbName());
}
}
- //TODO NPE as above
OpenejbMessageDrivenBeanType[] openejbMessageDrivenBeans =
openejbEjbJar.getEnterpriseBeans().getMessageDrivenArray();
for (int i = 0; i < openejbMessageDrivenBeans.length; i++) {
OpenejbMessageDrivenBeanType messageDrivenBean =
openejbMessageDrivenBeans[i];
- if(beans.contains(messageDrivenBean.getEjbName())) {
+ if (beans.contains(messageDrivenBean.getEjbName())) {
openejbBeans.put(messageDrivenBean.getEjbName(),
messageDrivenBean);
} else {
badBeans.add(messageDrivenBean.getEjbName());
}
}
- if(badBeans.size() > 0) {
- if(badBeans.size() == 1) {
- throw new DeploymentException("EJB '"+badBeans.get(0)+"' is
described in OpenEJB deployment plan but does not exist in
META-INF/ejb-jar.xml");
+ if (badBeans.size() > 0) {
+ if (badBeans.size() == 1) {
+ throw new DeploymentException("EJB '" + badBeans.get(0) + "'
is described in OpenEJB deployment plan but does not exist in
META-INF/ejb-jar.xml");
}
StringBuffer buf = new StringBuffer();
buf.append("The following EJBs are described in the OpenEJB
deployment plan but do not exist in META-INF/ejb-jar.xml: ");
for (int i = 0; i < badBeans.size(); i++) {
- if(i>0) buf.append(", ");
+ if (i > 0) buf.append(", ");
buf.append(badBeans.get(i));
}
throw new DeploymentException(buf.toString());
}
+ Map portInfoMap = Collections.EMPTY_MAP;
+ JarFile jarFile = ejbModule.getModuleFile();
+ URL wsDDUrl = null;
+ try {
+ wsDDUrl = DeploymentUtil.createJarURL(jarFile,
"META-INF/webservices.xml");
+ portInfoMap =
webServiceBuilder.parseWebServiceDescriptor(wsDDUrl, jarFile, true,
correctedPortLocations);
+ } catch (MalformedURLException e) {
+ //there is no webservices file
+ }
+
+
TransactionPolicyHelper transactionPolicyHelper;
if (ejbJar.isSetAssemblyDescriptor()) {
transactionPolicyHelper = new
TransactionPolicyHelper(ejbJar.getAssemblyDescriptor().getContainerTransactionArray());
@@ -550,7 +569,7 @@
// String contextID = ejbModuleObjectName.getCanonicalName();
String policyContextID =
ejbModuleObjectName.getCanonicalName().replaceAll("[,: ]", "_");
- sessionBuilder.buildBeans(earContext, moduleJ2eeContext, cl,
ejbModule, componentPermissions, openejbBeans, transactionPolicyHelper,
enterpriseBeans, listener, policyContextID);
+ sessionBuilder.buildBeans(earContext, moduleJ2eeContext, cl,
ejbModule, componentPermissions, openejbBeans, transactionPolicyHelper,
enterpriseBeans, listener, policyContextID, portInfoMap);
entityBuilder.buildBeans(earContext, moduleJ2eeContext, cl,
ejbModule, openejbBeans, componentPermissions, transactionPolicyHelper,
enterpriseBeans, policyContextID);
@@ -578,15 +597,15 @@
//construct name from components
try {
return NameFactory.getComponentName(resourceLocator.getDomain(),
- resourceLocator.getServer(),
-
resourceLocator.getApplication(),
- NameFactory.JCA_RESOURCE,
- resourceLocator.getModule(),
- resourceLocator.getName(),
- //todo determine type from
iface class
+ resourceLocator.getServer(),
+ resourceLocator.getApplication(),
+ NameFactory.JCA_RESOURCE,
+ resourceLocator.getModule(),
+ resourceLocator.getName(),
+ //todo determine type from iface class
// resourceLocator.getType(),
-
NameFactory.JCA_MANAGED_CONNECTION_FACTORY,
- j2eeContext);
+ NameFactory.JCA_MANAGED_CONNECTION_FACTORY,
+ j2eeContext);
} catch (MalformedObjectNameException e) {
throw new DeploymentException("Could not construct cmp
datasource object name", e);
}
1.30 +5 -23
openejb/modules/openejb-builder/src/java/org/openejb/deployment/SessionBuilder.java
Index: SessionBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/SessionBuilder.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- SessionBuilder.java 21 Jul 2005 22:56:00 -0000 1.29
+++ SessionBuilder.java 23 Jul 2005 05:57:31 -0000 1.30
@@ -55,6 +55,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.Iterator;
import java.util.jar.JarFile;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
@@ -170,7 +171,7 @@
}
- protected void buildBeans(EARContext earContext, J2eeContext
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, ComponentPermissions
componentPermissions, Map openejbBeans, TransactionPolicyHelper
transactionPolicyHelper, EnterpriseBeansType enterpriseBeans, ObjectName
listener, String policyContextID) throws DeploymentException {
+ protected void buildBeans(EARContext earContext, J2eeContext
moduleJ2eeContext, ClassLoader cl, EJBModule ejbModule, ComponentPermissions
componentPermissions, Map openejbBeans, TransactionPolicyHelper
transactionPolicyHelper, EnterpriseBeansType enterpriseBeans, ObjectName
listener, String policyContextID, Map portInfoMap) throws DeploymentException {
// Session Beans
SessionBeanType[] sessionBeans = enterpriseBeans.getSessionArray();
for (int i = 0; i < sessionBeans.length; i++) {
@@ -183,38 +184,19 @@
boolean isStateless =
"Stateless".equals(sessionBean.getSessionType().getStringValue().trim());
boolean isServiceEndpoint = sessionBean.isSetServiceEndpoint();
-// String serviceEndpointName =
OpenEJBModuleBuilder.getJ2eeStringValue(sessionBean.getServiceEndpoint());
-
if (isStateless && isServiceEndpoint) {
- addWSContainerGBean(earContext, ejbModule, cl,
sessionObjectName, sessionBean, openejbSessionBean, listener);
+ addWSContainerGBean(earContext, ejbModule, cl, portInfoMap,
sessionObjectName, sessionBean, openejbSessionBean, listener);
}
}
}
- private void addWSContainerGBean(EARContext earContext, EJBModule
ejbModule, ClassLoader cl, ObjectName sessionObjectName, SessionBeanType
sessionBean, OpenejbSessionBeanType openejbSessionBean, ObjectName listener)
throws DeploymentException {
+ private void addWSContainerGBean(EARContext earContext, EJBModule
ejbModule, ClassLoader cl, Map portInfoMap, ObjectName sessionObjectName,
SessionBeanType sessionBean, OpenejbSessionBeanType openejbSessionBean,
ObjectName listener) throws DeploymentException {
String ejbName = sessionBean.getEjbName().getStringValue().trim();
J2eeContext j2eeContext = earContext.getJ2eeContext();
OpenejbWebServiceSecurityType webServiceSecurity =
openejbSessionBean == null ? null : openejbSessionBean.getWebServiceSecurity();
- //todo this should be done all at once, and put in the corrected
port locations map.
- String location = null;
- if (openejbSessionBean != null &&
openejbSessionBean.isSetWebServiceAddress()) {
- location = openejbSessionBean.getWebServiceAddress().trim();
- }
- JarFile jarFile = ejbModule.getModuleFile();
- //these should be parameters or fields
- Map correctedPortLocations = new HashMap();
- //umm, put them all in
- correctedPortLocations.put(ejbName, location);
- URL wsDDUrl = null;
- try {
- wsDDUrl = DeploymentUtil.createJarURL(jarFile,
"META-INF/webservices.xml");
- } catch (MalformedURLException e) {
- throw new DeploymentException("Could not locate webservices
descriptor", e);
- }
- Map portInfoMap =
webServiceBuilder.parseWebServiceDescriptor(wsDDUrl, jarFile, true,
correctedPortLocations);
//this code belongs here
ObjectName linkName = null;
@@ -228,7 +210,7 @@
linkData.setName(linkName);
Object portInfo = portInfoMap.get(ejbName);
//let the webServiceBuilder configure its part
- webServiceBuilder.configureEJB(linkData, jarFile, portInfo, cl);
+ webServiceBuilder.configureEJB(linkData, ejbModule.getModuleFile(),
portInfo, cl);
//configure the security part and references
if (webServiceSecurity != null) {
linkData.setAttribute("securityRealmName",
webServiceSecurity.getSecurityRealmName().trim());