djencks     2005/07/21 00:32:11

  Modified:    modules/openejb-builder/src/java/org/openejb/deployment
                        OpenEJBModuleBuilder.java SessionBuilder.java
  Removed:     modules/openejb-builder/src/java/org/openejb/deployment
                        AxisWebServiceContainerBuilder.java
  Log:

  GERONIMO-782 step 2. Use WebserviceBuilder interfaces from tomcat builder and 
openejb builder.  openejb builder still needs cleanup
  
  Revision  Changes    Path
  1.47      +6 -4      
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.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- OpenEJBModuleBuilder.java 20 Jul 2005 00:01:18 -0000      1.46
  +++ OpenEJBModuleBuilder.java 21 Jul 2005 04:32:11 -0000      1.47
  @@ -80,6 +80,7 @@
   import org.apache.geronimo.j2ee.deployment.Module;
   import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
   import org.apache.geronimo.j2ee.deployment.RefContext;
  +import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
   import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
   import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
   import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
  @@ -142,12 +143,12 @@
       private final TransactionImportPolicyBuilder 
transactionImportPolicyBuilder;
       private final Repository repository;
   
  -    public OpenEJBModuleBuilder(URI defaultParentId, ObjectName listener, 
Repository repository) {
  +    public OpenEJBModuleBuilder(URI defaultParentId, ObjectName listener, 
WebServiceBuilder webServiceBuilder, Repository repository) {
           this.defaultParentId = defaultParentId;
           this.listener = listener;
           this.transactionImportPolicyBuilder = new 
NoDistributedTxTransactionImportPolicyBuilder();
           this.cmpEntityBuilder = new CMPEntityBuilder(this);
  -        this.sessionBuilder = new SessionBuilder(this);
  +        this.sessionBuilder = new SessionBuilder(this, webServiceBuilder);
           this.entityBuilder = new EntityBuilder(this);
           this.mdbBuilder = new MdbBuilder(this);
           this.repository = repository;
  @@ -612,11 +613,12 @@
           GBeanInfoBuilder infoBuilder = new 
GBeanInfoBuilder(OpenEJBModuleBuilder.class, NameFactory.MODULE_BUILDER);
           infoBuilder.addAttribute("defaultParentId", URI.class, true);
           infoBuilder.addAttribute("listener", ObjectName.class, true);
  +        infoBuilder.addReference("WebServiceBuilder", 
WebServiceBuilder.class, NameFactory.MODULE_BUILDER);
           infoBuilder.addReference("Repository", Repository.class, 
NameFactory.GERONIMO_SERVICE);
           infoBuilder.addInterface(ModuleBuilder.class);
           infoBuilder.addInterface(EJBReferenceBuilder.class);
   
  -        infoBuilder.setConstructor(new String[]{"defaultParentId", 
"listener", "Repository"});
  +        infoBuilder.setConstructor(new String[]{"defaultParentId", 
"listener", "WebServiceBuilder", "Repository"});
           GBEAN_INFO = infoBuilder.getBeanInfo();
       }
   
  
  
  
  1.28      +81 -20    
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.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- SessionBuilder.java       20 Jul 2005 02:33:48 -0000      1.27
  +++ SessionBuilder.java       21 Jul 2005 04:32:11 -0000      1.28
  @@ -49,10 +49,12 @@
   
   import java.net.URI;
   import java.net.URL;
  +import java.net.MalformedURLException;
   import java.security.Permissions;
   import java.util.List;
   import java.util.Map;
   import java.util.Set;
  +import java.util.HashMap;
   import java.util.jar.JarFile;
   import javax.management.MalformedObjectNameException;
   import javax.management.ObjectName;
  @@ -65,6 +67,7 @@
   import org.apache.geronimo.j2ee.deployment.EARContext;
   import org.apache.geronimo.j2ee.deployment.EJBModule;
   import org.apache.geronimo.j2ee.deployment.RefContext;
  +import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
   import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
   import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
   import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
  @@ -98,11 +101,17 @@
   import org.openejb.transaction.TransactionPolicyType;
   import org.openejb.xbeans.ejbjar.OpenejbSessionBeanType;
   import org.openejb.xbeans.ejbjar.OpenejbTssType;
  +import org.openejb.xbeans.ejbjar.OpenejbWebServiceSecurityType;
  +import org.openejb.server.axis.WSContainerGBean;
   
   
   class SessionBuilder extends BeanBuilder {
  -    public SessionBuilder(OpenEJBModuleBuilder builder) {
  +
  +    private final WebServiceBuilder webServiceBuilder;
  +
  +    public SessionBuilder(OpenEJBModuleBuilder builder, WebServiceBuilder 
webServiceBuilder) {
           super(builder);
  +        this.webServiceBuilder = webServiceBuilder;
       }
   
       private ObjectName createEJBObjectName(J2eeContext moduleJ2eeContext, 
SessionBeanType sessionBean) throws DeploymentException {
  @@ -170,20 +179,72 @@
               ObjectName sessionObjectName = 
createEJBObjectName(moduleJ2eeContext, sessionBean);
               assert sessionObjectName != null: "StatelesSessionBean object 
name is null";
               addEJBContainerGBean(earContext, ejbModule, 
componentPermissions, cl, sessionObjectName, sessionBean, openejbSessionBean, 
transactionPolicyHelper, policyContextID);
  -            addWSContainerGBean(earContext, ejbModule, cl, 
sessionObjectName, sessionBean, openejbSessionBean, transactionPolicyHelper, 
listener);
   
  +            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);
  +            }
           }
       }
   
  -    private void addWSContainerGBean(EARContext earContext, EJBModule 
ejbModule, ClassLoader cl, ObjectName sessionObjectName, SessionBeanType 
sessionBean, OpenejbSessionBeanType openejbSessionBean, TransactionPolicyHelper 
transactionPolicyHelper, ObjectName listener) throws DeploymentException {
  -        AxisWebServiceContainerBuilder axisWebServiceContainerBuilder = new 
AxisWebServiceContainerBuilder();
  -        axisWebServiceContainerBuilder.addGbean(earContext, ejbModule, cl, 
sessionObjectName, listener, sessionBean, openejbSessionBean, 
transactionPolicyHelper, openejbSessionBean == null? null: 
openejbSessionBean.getWebServiceSecurity());
  +    private void addWSContainerGBean(EARContext earContext, EJBModule 
ejbModule, ClassLoader cl, 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;
  +        try {
  +            linkName = NameFactory.getComponentName(null, null, null, null, 
null, ejbName, NameFactory.WEB_SERVICE_LINK, j2eeContext);
  +        } catch (MalformedObjectNameException e) {
  +            throw new DeploymentException("Could not construct web service 
link name", e);
  +        }
  +        //TODO get this from configuration object name
  +        GBeanData linkData = new GBeanData(linkName, 
WSContainerGBean.GBEAN_INFO);
  +
  +        Object portInfo = portInfoMap.get(ejbName);
  +        webServiceBuilder.configureEJB(linkData, jarFile, portInfo, cl);
  +
  +        if (webServiceSecurity != null) {
  +            linkData.setAttribute("securityRealmName", 
webServiceSecurity.getSecurityRealmName().trim());
  +            linkData.setAttribute("realmName", 
webServiceSecurity.getRealmName().trim());
  +            linkData.setAttribute("transportGuarantee", 
webServiceSecurity.getTransportGuarantee().toString());
  +            linkData.setAttribute("authMethod", 
webServiceSecurity.getAuthMethod().toString());
  +        }
  +        linkData.setReferencePattern("WebServiceContainer", listener);
  +        linkData.setReferencePattern("EJBContainer", sessionObjectName);
  +
  +        GBeanData gBean = linkData;
  +
  +        earContext.addGBean(gBean);
       }
   
       private void addEJBContainerGBean(EARContext earContext, EJBModule 
ejbModule, ComponentPermissions componentPermissions, ClassLoader cl, 
ObjectName sessionObjectName, SessionBeanType sessionBean, 
OpenejbSessionBeanType openejbSessionBean, TransactionPolicyHelper 
transactionPolicyHelper, String policyContextID) throws DeploymentException {
           String ejbName = sessionBean.getEjbName().getStringValue();
   
  -        GBeanData result;
           ContainerBuilder builder = null;
           ContainerSecurityBuilder containerSecurityBuilder = new 
ContainerSecurityBuilder();
           Permissions toBeChecked = new Permissions();
  @@ -262,12 +323,12 @@
                   OpenejbTssType tss = openejbSessionBean.getTss();
                   try {
                       tssBeanObjectName = 
NameFactory.getComponentName(getStringValue(tss.getDomain()),
  -                        getStringValue(tss.getServer()),
  -                        getStringValue(tss.getApplication()),
  -                        getStringValue(tss.getModule()),
  -                        getStringValue(tss.getName()),
  -                        NameFactory.CORBA_TSS,
  -                        earContext.getJ2eeContext());
  +                            getStringValue(tss.getServer()),
  +                            getStringValue(tss.getApplication()),
  +                            getStringValue(tss.getModule()),
  +                            getStringValue(tss.getName()),
  +                            NameFactory.CORBA_TSS,
  +                            earContext.getJ2eeContext());
                   } catch (MalformedObjectNameException e) {
                       throw new DeploymentException("Invalid object name for 
tss bean", e);
                   }
  @@ -308,19 +369,19 @@
           }
   
           WebserviceDescriptionType[] webserviceDescriptions = 
webservicesDocument.getWebservices().getWebserviceDescriptionArray();
  -            for (int i = 0; i < webserviceDescriptions.length && handlers == 
null; i++) {
  +        for (int i = 0; i < webserviceDescriptions.length && handlers == 
null; i++) {
   
  -                PortComponentType[] portComponents = 
webserviceDescriptions[i].getPortComponentArray();
  -                for (int j = 0; j < portComponents.length && handlers == 
null; j++) {
  +            PortComponentType[] portComponents = 
webserviceDescriptions[i].getPortComponentArray();
  +            for (int j = 0; j < portComponents.length && handlers == null; 
j++) {
   
  -                    EjbLinkType ejbLink = 
portComponents[j].getServiceImplBean().getEjbLink();
  -                    if (ejbLink != null && 
ejbLink.getStringValue().trim().equals(ejbName)) {
  -                        handlers = portComponents[j].getHandlerArray();
  -                    }
  +                EjbLinkType ejbLink = 
portComponents[j].getServiceImplBean().getEjbLink();
  +                if (ejbLink != null && 
ejbLink.getStringValue().trim().equals(ejbName)) {
  +                    handlers = portComponents[j].getHandlerArray();
                   }
               }
  +        }
   
  -        if (handlers != null){
  +        if (handlers != null) {
               List handlerInfos = 
WSDescriptorParser.createHandlerInfoList(handlers, cl);
               return new HandlerChainConfiguration(handlerInfos, new 
String[]{});
           } else {
  
  
  

Reply via email to