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());
  
  
  

Reply via email to