dain        2004/04/06 14:41:46

  Modified:    modules/core/src/java/org/openejb/deployment
                        EJBConfigBuilder.java TransactionPolicyHelper.java
  Log:

  Added an assembly module
  Fixed remaining not serializable bugs
  Added configuration files for itests to deploy into new assembly
  
  Revision  Changes    Path
  1.5       +65 -28    
openejb/modules/core/src/java/org/openejb/deployment/EJBConfigBuilder.java
  
  Index: EJBConfigBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/deployment/EJBConfigBuilder.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EJBConfigBuilder.java     6 Apr 2004 00:43:07 -0000       1.4
  +++ EJBConfigBuilder.java     6 Apr 2004 18:41:46 -0000       1.5
  @@ -65,8 +65,8 @@
   import java.util.jar.JarOutputStream;
   import javax.management.MalformedObjectNameException;
   import javax.management.ObjectName;
  -import javax.transaction.UserTransaction;
   import javax.naming.NamingException;
  +import javax.transaction.UserTransaction;
   
   import org.apache.geronimo.common.xml.XmlBeansUtil;
   import org.apache.geronimo.deployment.ConfigurationBuilder;
  @@ -85,20 +85,20 @@
   import org.apache.geronimo.xbeans.j2ee.EjbJarDocument;
   import org.apache.geronimo.xbeans.j2ee.EjbJarType;
   import org.apache.geronimo.xbeans.j2ee.EnterpriseBeansType;
  -import org.apache.geronimo.xbeans.j2ee.EnvEntryType;
  -import org.apache.geronimo.xbeans.j2ee.SessionBeanType;
   import org.apache.geronimo.xbeans.j2ee.EntityBeanType;
  -import org.apache.geronimo.xbeans.j2ee.ResourceRefType;
  +import org.apache.geronimo.xbeans.j2ee.EnvEntryType;
   import org.apache.geronimo.xbeans.j2ee.ResourceEnvRefType;
  +import org.apache.geronimo.xbeans.j2ee.ResourceRefType;
  +import org.apache.geronimo.xbeans.j2ee.SessionBeanType;
   import org.apache.xmlbeans.SchemaTypeLoader;
   import org.apache.xmlbeans.XmlBeans;
   import org.apache.xmlbeans.XmlObject;
   
  -import org.openejb.EJBModule;
   import org.openejb.ContainerBuilder;
  -import org.openejb.sfsb.StatefulContainerBuilder;
  +import org.openejb.EJBModule;
   import org.openejb.entity.bmp.BMPContainerBuilder;
   import org.openejb.entity.cmp.CMPContainerBuilder;
  +import org.openejb.sfsb.StatefulContainerBuilder;
   import org.openejb.slsb.StatelessContainerBuilder;
   import org.apache.geronimo.transaction.UserTransactionImpl;
   import org.openejb.xbeans.ejbjar.OpenejbEntityBeanType;
  @@ -108,6 +108,8 @@
   import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarDocument;
   import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarType;
   import org.openejb.xbeans.ejbjar.OpenejbSessionBeanType;
  +import org.openejb.xbeans.ejbjar.OpenejbDependencyType;
  +import org.openejb.xbeans.ejbjar.impl.OpenejbOpenejbJarDocumentImpl;
   
   /**
    *
  @@ -140,16 +142,35 @@
                   moduleBase = new URL("jar:" + module.toString() + "!/");
               }
               XmlObject plan = XmlBeansUtil.getXmlObject(new URL(moduleBase, 
"META-INF/openejb-jar.xml"), OpenejbOpenejbJarDocument.type);
  -// todo should be able to deploy a naked EAR
  -//            if (plan == null) {
  -//                plan = getPlan(new URL(moduleBase, "META-INF/ejb-jar.xml"), 
EjbJarDocument.type);
  -//            }
  +            if (plan == null) {
  +                URL ejbJarXml = new URL(moduleBase, "META-INF/ejb-jar.xml");
  +                return createDefaultPlan(ejbJarXml);
  +            }
               return plan;
           } catch (MalformedURLException e) {
               return null;
           }
       }
   
  +    private OpenejbOpenejbJarDocument createDefaultPlan(URL module) {
  +        EjbJarDocument ejbJarDoc = (EjbJarDocument) 
XmlBeansUtil.getXmlObject(module, EjbJarDocument.type);
  +        if (ejbJarDoc == null) {
  +            return null;
  +        }
  +
  +        EjbJarType ejbJar = ejbJarDoc.getEjbJar();
  +
  +        OpenejbOpenejbJarDocument doc = new 
OpenejbOpenejbJarDocumentImpl(OpenejbOpenejbJarDocument.type);
  +        OpenejbOpenejbJarType openejbEjbJar = doc.addNewOpenejbJar();
  +        openejbEjbJar.setParentId("org/apache/geronimo/Server");
  +        String ejbModuleName = ejbJar.getId();
  +        if(ejbModuleName != null) {
  +            openejbEjbJar.setConfigId(ejbModuleName);
  +        } else {
  +            openejbEjbJar.setConfigId("unnamed/ejbmodule/" + 
System.currentTimeMillis());
  +        }
  +        return doc;
  +    }
   
       public void buildConfiguration(File outfile, File module, XmlObject plan) 
throws IOException, DeploymentException {
           if (module.isDirectory()) {
  @@ -184,6 +205,11 @@
               }
               context.addStreamInclude(URI.create("ejb.jar"), module);
   
  +            OpenejbDependencyType[] dependencies = 
openejbEjbJar.getDependencyArray();
  +            for (int i = 0; i < dependencies.length; i++) {
  +                context.addDependency(getDependencyURI(dependencies[i]));
  +            }
  +
               buildGBeanConfiguration(context, openejbEjbJar);
   
               context.close();
  @@ -269,7 +295,6 @@
               SessionBeanType sessionBean = sessionBeans[i];
               String ejbName = sessionBean.getEjbName().getStringValue();
               OpenejbSessionBeanType openejbSessionBean = 
(OpenejbSessionBeanType)openejbBeans.get(ejbName);
  -            TransactionPolicySource txPolicySource = 
transactionPolicyHelper.getTransactionPolicySource(ejbName);
   
               ObjectName sessionObjectName = createSessionObjectName(
                       sessionBean,
  @@ -278,7 +303,7 @@
                       "null",
                       ejbModuleName);
   
  -            GBeanMBean sessionGBean = createSessionBean(sessionObjectName, 
sessionBean, openejbSessionBean, txPolicySource, cl);
  +            GBeanMBean sessionGBean = createSessionBean(sessionObjectName, 
sessionBean, openejbSessionBean, transactionPolicyHelper, cl);
               context.addGBean(sessionObjectName, sessionGBean);
           }
   
  @@ -289,7 +314,6 @@
               EntityBeanType entityBean = entityBeans[i];
               String ejbName = entityBean.getEjbName().getStringValue();
               OpenejbEntityBeanType openejbEntityBean = 
(OpenejbEntityBeanType)openejbBeans.get(ejbName);
  -            TransactionPolicySource txPolicySource = 
transactionPolicyHelper.getTransactionPolicySource(ejbName);
   
               ObjectName entityObjectName = createEntityObjectName(
                       entityBean,
  @@ -298,12 +322,12 @@
                       "null",
                       ejbModuleName);
   
  -            GBeanMBean entityGBean = createEntityBean(entityObjectName, entityBean, 
openejbEntityBean, txPolicySource, cl);
  +            GBeanMBean entityGBean = createEntityBean(entityObjectName, entityBean, 
openejbEntityBean, transactionPolicyHelper, cl);
               context.addGBean(entityObjectName, entityGBean);
           }
       }
   
  -    public GBeanMBean createSessionBean(Object containerId, SessionBeanType 
sessionBean, OpenejbSessionBeanType openejbSessionBean, TransactionPolicySource 
transactionPolicySource, ClassLoader cl) throws DeploymentException {
  +    public GBeanMBean createSessionBean(Object containerId, SessionBeanType 
sessionBean, OpenejbSessionBeanType openejbSessionBean, TransactionPolicyHelper 
transactionPolicyHelper, ClassLoader cl) throws DeploymentException {
           String ejbName = sessionBean.getEjbName().getStringValue();
   
           ContainerBuilder builder = null;
  @@ -328,6 +352,7 @@
               
builder.setTransactionPolicySource(TransactionPolicyHelper.StatelessBMTPolicySource);
           } else {
               userTransaction = null;
  +            TransactionPolicySource transactionPolicySource = 
transactionPolicyHelper.getTransactionPolicySource(ejbName);
               builder.setTransactionPolicySource(transactionPolicySource);
           }
   
  @@ -361,7 +386,7 @@
           return createEJBObjectName(type, domainName, serverName, applicationName, 
moduleName, ejbName);
       }
   
  -    public GBeanMBean createEntityBean(Object containerId, EntityBeanType 
entityBean, OpenejbEntityBeanType openejbEntityBean, TransactionPolicySource 
transactionPolicySource, ClassLoader cl) throws DeploymentException {
  +    public GBeanMBean createEntityBean(Object containerId, EntityBeanType 
entityBean, OpenejbEntityBeanType openejbEntityBean, TransactionPolicyHelper 
transactionPolicyHelper, ClassLoader cl) throws DeploymentException {
           String ejbName = entityBean.getEjbName().getStringValue();
   
           ContainerBuilder builder = null;
  @@ -378,13 +403,14 @@
           builder.setRemoteInterfaceName(getJ2eeStringValue(entityBean.getRemote()));
           
builder.setLocalHomeInterfaceName(getJ2eeStringValue(entityBean.getLocalHome()));
           builder.setLocalInterfaceName(getJ2eeStringValue(entityBean.getLocal()));
  +        TransactionPolicySource transactionPolicySource = 
transactionPolicyHelper.getTransactionPolicySource(ejbName);
           builder.setTransactionPolicySource(transactionPolicySource);
   
           try {
               ReadOnlyContext compContext = buildComponentContext(entityBean, 
openejbEntityBean, null, cl);
               builder.setComponentContext(compContext);
           } catch (Exception e) {
  -            throw new DeploymentException("Unable to create EJB jndi environment: 
ejbName" + ejbName, e);
  +            throw new DeploymentException("Unable to create EJB jndi environment: 
ejbName=" + ejbName, e);
           }
   
           try {
  @@ -393,7 +419,7 @@
               gbean.setReferencePatterns("trackedConnectionAssociator", 
Collections.singleton(new ObjectName("*:type=ConnectionTracker,*")));
               return gbean;
           } catch (Exception e) {
  -            throw new DeploymentException("Unable to initialize EJBContainer GBean: 
ejbName" + ejbName, e);
  +            throw new DeploymentException("Unable to initialize EJBContainer GBean: 
ejbName=" + ejbName, e);
           }
       }
   
  @@ -550,15 +576,26 @@
           return configID;
       }
   
  -//    private byte[] getBytes(InputStream is) throws IOException {
  -//        byte[] buffer = new byte[4096];
  -//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
  -//        int count;
  -//        while ((count = is.read(buffer)) > 0) {
  -//            baos.write(buffer, 0, count);
  -//        }
  -//        return baos.toByteArray();
  -//    }
  +    private URI getDependencyURI(OpenejbDependencyType dep) throws 
DeploymentException {
  +        URI uri;
  +        if (dep.isSetUri()) {
  +            try {
  +                uri = new URI(dep.getUri());
  +            } catch (URISyntaxException e) {
  +                throw new DeploymentException("Invalid dependency URI " + 
dep.getUri(), e);
  +            }
  +        } else {
  +            // @todo support more than just jars
  +            String id = dep.getGroupId() + "/jars/" + dep.getArtifactId() + '-' + 
dep.getVersion() + ".jar";
  +            try {
  +                uri = new URI(id);
  +            } catch (URISyntaxException e) {
  +                throw new DeploymentException("Unable to construct URI for 
groupId=" + dep.getGroupId() + ", artifactId=" + dep.getArtifactId() + ", version=" + 
dep.getVersion(), e);
  +            }
  +        }
  +        return uri;
  +    }
  +
   
       private String getJ2eeStringValue(org.apache.geronimo.xbeans.j2ee.String 
string) {
           if (string == null) {
  
  
  
  1.5       +4 -4      
openejb/modules/core/src/java/org/openejb/deployment/TransactionPolicyHelper.java
  
  Index: TransactionPolicyHelper.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/deployment/TransactionPolicyHelper.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TransactionPolicyHelper.java      1 Apr 2004 22:36:52 -0000       1.4
  +++ TransactionPolicyHelper.java      6 Apr 2004 18:41:46 -0000       1.5
  @@ -103,16 +103,16 @@
       }
   
       public TransactionPolicySource getTransactionPolicySource(String ejbName) 
throws DeploymentException {
  -        return new TransactionPolicySourceImpl((SortedSet) 
ejbNameToTransactionAttributesMap.get(ejbName));
  +        return new TransactionPolicySourceImpl(ejbName, (SortedSet) 
ejbNameToTransactionAttributesMap.get(ejbName));
       }
   
       private static class TransactionPolicySourceImpl implements 
TransactionPolicySource {
           private final SortedSet transactionPolicies;
   
  -        public TransactionPolicySourceImpl(SortedSet transactionPolicies) throws 
DeploymentException {
  +        public TransactionPolicySourceImpl(String ejbName, SortedSet 
transactionPolicies) throws DeploymentException {
               //To allow more lenient spec interpretations, with default of Requires, 
substitute an empty sorted set here.
               if (transactionPolicies == null) {
  -                throw new DeploymentException("You must specify transaction 
attributes, see ejb 2.1 spec 17.4.1");
  +                throw new DeploymentException("You must specify transaction 
attributes, see ejb 2.1 spec 17.4.1: ejbName=" + ejbName);
               }
               this.transactionPolicies = transactionPolicies;
           }
  
  
  

Reply via email to