Author: rmannibucau
Date: Wed May  2 16:11:49 2012
New Revision: 1333092

URL: http://svn.apache.org/viewvc?rev=1333092&view=rev
Log:
rewriting a part of embedded arquillian adapter to avoid to dump any file on 
disk

Added:
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/AdapterArquillianStandaloneTest.java
      - copied, changed from r1332872, 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java
      - copied, changed from r1332872, 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EJBArquillianStandaloneTest.java
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EnvEntriesArquillianStandaloneTest.java
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/JPAArquillianAdapterTest.java
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/ResourceArquillianStandaloneTest.java
      - copied, changed from r1332872, 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/LengthInputStream.java
Removed:
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
Modified:
    openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
    
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
    
openejb/trunk/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java

Modified: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml?rev=1333092&r1=1333091&r2=1333092&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml 
(original)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/pom.xml 
Wed May  2 16:11:49 2012
@@ -13,7 +13,6 @@
   <name>OpenEJB :: TomEE Arquillian Adaptor :: OpenEJB Container</name> <!-- 
TODO: rename parent to be arquillian-parent -->
 
   <dependencies>
-
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
@@ -31,7 +30,6 @@
       <version>${version.arquillian}</version>
     </dependency>
 
-
     <dependency>
       <groupId>org.jboss.arquillian.junit</groupId>
       <artifactId>arquillian-junit-container</artifactId>
@@ -39,30 +37,6 @@
     </dependency>
 
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.arquillian.testenricher</groupId>
-      <artifactId>arquillian-testenricher-cdi</artifactId>
-      <version>${version.arquillian}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.arquillian.testenricher</groupId>
-      <artifactId>arquillian-testenricher-resource</artifactId>
-      <version>${version.arquillian}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.arquillian.testenricher</groupId>
-      <artifactId>arquillian-testenricher-ejb</artifactId>
-      <version>${version.arquillian}</version>
-    </dependency>
-
-    <dependency>
       <groupId>org.jboss.shrinkwrap.descriptors</groupId>
       <artifactId>shrinkwrap-descriptors-impl</artifactId>
       <version>${version.shrinkwrap.descriptor}</version>
@@ -72,11 +46,21 @@
       <artifactId>shrinkwrap-descriptors-api</artifactId>
       <version>${version.shrinkwrap.descriptor}</version>
     </dependency>
+    <dependency>
+      <groupId>org.jboss.shrinkwrap</groupId>
+      <artifactId>shrinkwrap-api</artifactId>
+      <version>${version.shrinkwrap.shrinkwrap}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.shrinkwrap</groupId>
+      <artifactId>shrinkwrap-impl-base</artifactId>
+      <version>${version.shrinkwrap.shrinkwrap}</version>
+    </dependency>
 
     <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>${javaee-api.version}</version>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 </project>

Modified: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java?rev=1333092&r1=1333091&r2=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
 (original)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
 Wed May  2 16:11:49 2012
@@ -1,92 +1,219 @@
 package org.apache.openejb.arquillian.openejb;
 
-import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.PersistenceModule;
+import org.apache.openejb.config.sys.JaxbOpenejb;
+import org.apache.openejb.jee.Beans;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.JaxbJavaee;
+import org.apache.openejb.jee.ManagedBean;
+import org.apache.openejb.jee.TransactionType;
+import org.apache.openejb.jee.bval.ValidationConfigType;
+import org.apache.openejb.jee.jpa.unit.JaxbPersistenceFactory;
+import org.apache.openejb.jee.jpa.unit.Persistence;
+import org.apache.openejb.jee.oejb3.EjbDeployment;
+import org.apache.openejb.jee.oejb3.JaxbOpenejbJar3;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.loader.IO;
+import org.apache.openejb.util.LengthInputStream;
+import org.apache.xbean.finder.AnnotationFinder;
+import org.apache.xbean.finder.archive.ClassesArchive;
 import 
org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor;
+import org.jboss.arquillian.core.api.InstanceProducer;
+import org.jboss.arquillian.core.api.annotation.Inject;
 import org.jboss.arquillian.test.spi.TestClass;
+import org.jboss.arquillian.test.spi.annotation.SuiteScoped;
 import org.jboss.shrinkwrap.api.Archive;
 import org.jboss.shrinkwrap.api.ArchivePath;
-import org.jboss.shrinkwrap.api.ArchivePaths;
 import org.jboss.shrinkwrap.api.Node;
-import org.jboss.shrinkwrap.api.asset.Asset;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
-import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.impl.base.filter.IncludeRegExpPaths;
 
 public class OpenEJBArchiveProcessor implements ApplicationArchiveProcessor {
-    private static final String EJB_JAR_XML = "ejb-jar.xml";
-    private static final String WEB_INF = "/WEB-INF";
-    private static final String META_INF = "/META-INF";
+    private static final Logger LOGGER = 
Logger.getLogger(OpenEJBArchiveProcessor.class.getName());
+
+    private static final String META_INF = "META-INF/";
+    public static final String ENV_ENTRIES_PROPERTIES_NAME = 
"env-entries.properties";
+
+    private static final String BEANS_XML = META_INF.concat("beans.xml");
+    private static final String EJB_JAR_XML = META_INF.concat("ejb-jar.xml");
+    private static final String VALIDATION_XML = 
META_INF.concat("validation.xml");
+    private static final String PERSISTENCE_XML = 
META_INF.concat("persistence.xml");
+    private static final String OPENEJB_JAR_XML = 
META_INF.concat("openejb-jar.xml");
+    private static final String ENV_ENTRIES_PROPERTIES = 
META_INF.concat(ENV_ENTRIES_PROPERTIES_NAME);
+
+    @Inject
+    @SuiteScoped
+    private InstanceProducer<AppModule> module;
 
     @Override
     public void process(final Archive<?> archive, final TestClass testClass) {
-        final ArchivePath path = ArchivePaths.create(EJB_JAR_XML);
-        final Asset newAsset;
-        if (archive.contains(ArchivePaths.create(path.get()))) {
-            final Node node = archive.get(path);
-            final Asset asset = node.getAsset();
-            newAsset = enhancedAsset(asset, testClass.getJavaClass());
+        final Class<?> javaClass = testClass.getJavaClass();
+        final AppModule appModule = new AppModule(javaClass.getClassLoader(), 
javaClass.getName());
+
+        // add the test as a managed bean to be able to inject into it easily
+        {
+            final EjbJar ejbJar = new EjbJar();
+            final OpenejbJar openejbJar = new OpenejbJar();
+            final ManagedBean bean = ejbJar.addEnterpriseBean(new 
ManagedBean(javaClass.getSimpleName(), javaClass.getName(), true));
+            bean.setTransactionType(TransactionType.BEAN);
+            final EjbDeployment ejbDeployment = 
openejbJar.addEjbDeployment(bean);
+            ejbDeployment.setDeploymentId(javaClass.getName());
+            appModule.getEjbModules().add(new EjbModule(ejbJar, openejbJar));
+        }
+
+        final org.apache.xbean.finder.archive.Archive finderArchive = 
finderArchive(archive, appModule.getClassLoader());
+
+        final EjbJar ejbJar;
+        final Node ejbJarXml = archive.get(EJB_JAR_XML);
+        if (ejbJarXml != null) {
+            EjbJar readEjbJar = null;
+            LengthInputStream lis = null;
+            try {
+                lis = new LengthInputStream(ejbJarXml.getAsset().openStream());
+                readEjbJar = (EjbJar) JaxbJavaee.unmarshalJavaee(EjbJar.class, 
lis);
+            } catch (Exception e) {
+                if (lis != null && lis.getLength() == 0) {
+                    readEjbJar = new EjbJar();
+                } else {
+                    LOGGER.log(Level.SEVERE, "can't read ejb-jar.xml", e);
+                }
+            } finally {
+                IO.close(lis);
+            }
+            ejbJar = readEjbJar;
         } else {
-            newAsset = new StringAsset(ejbJar(testClass.getJavaClass()));
+            ejbJar = new EjbJar();
         }
 
+        final EjbModule ejbModule = new EjbModule(ejbJar);
+        ejbModule.setFinder(new AnnotationFinder(finderArchive));
+        appModule.getEjbModules().add(ejbModule);
+
+        {
+            final Node beansXml = archive.get(BEANS_XML);
+            if (beansXml != null) {
+                LengthInputStream lis = null;
+                try {
+                    lis = new 
LengthInputStream(beansXml.getAsset().openStream());
+                    final Beans beans = (Beans) 
JaxbJavaee.unmarshalJavaee(Beans.class, lis);
+                    ejbModule.setBeans(beans);
+                } catch (Exception e) {
+                    if (lis != null && lis.getLength() == 0) {
+                        ejbModule.setBeans(new Beans());
+                    } else {
+                        LOGGER.log(Level.SEVERE, "can't read beans.xml", e);
+                    }
+                } finally {
+                    IO.close(lis);
+                }
+            }
+        }
 
-        if (archive instanceof WebArchive) {
-            archive.delete(WEB_INF + path.get());
-            ((WebArchive) archive).addAsWebInfResource(newAsset, path);
-        } else if (archive instanceof JavaArchive) {
-            archive.delete(META_INF + path.get());
-            ((JavaArchive) archive).addAsManifestResource(newAsset, path);
+        {
+            final Node persistenceXml = archive.get(PERSISTENCE_XML);
+            if (persistenceXml != null) {
+                String rootUrl = 
persistenceXml.getPath().getParent().getParent().get();
+                if ("/".equals(rootUrl)) {
+                    rootUrl = ""; // "/" is too bad for a rootUrl and it can't 
be null
+                }
+
+                LengthInputStream lis = null;
+                try {
+                    lis = new 
LengthInputStream(persistenceXml.getAsset().openStream());
+                    final Persistence persistence = 
JaxbPersistenceFactory.getPersistence(Persistence.class, lis);
+                    final PersistenceModule persistenceModule = new 
PersistenceModule(rootUrl, persistence);
+                    persistenceModule.getWatchedResources().add(rootUrl);
+                    appModule.getPersistenceModules().add(persistenceModule);
+                } catch (Exception e) {
+                    LOGGER.log(Level.SEVERE, "can't read persistence.xml", e);
+                } finally {
+                    IO.close(lis);
+                }
+            }
         }
-    }
 
-    private Asset enhancedAsset(Asset asset, Class<?> javaClass) {
-        if (asset instanceof EmptyAsset) {
-            return new StringAsset(ejbJar(javaClass));
-        } else {
-            String content;
-            try {
-                content = IO.slurp(asset.openStream());
-            } catch (IOException e) {
-                content = "";
+        {
+            final Node openejbJarXml = archive.get(OPENEJB_JAR_XML);
+            if (openejbJarXml != null) {
+                InputStream is = null;
+                try {
+                    is = openejbJarXml.getAsset().openStream();
+                    final OpenejbJar openejbJar = 
JaxbOpenejbJar3.unmarshal(OpenejbJar.class, is);
+                    ejbModule.setOpenejbJar(openejbJar);
+                } catch (Exception e) {
+                    LOGGER.log(Level.SEVERE, "can't read openejb-jar.xml", e);
+                } finally {
+                    IO.close(is);
+                }
             }
+        }
 
-            if (content == null || content.isEmpty()) {
-                return new StringAsset(ejbJar(javaClass));
-            } else if (content.contains("<enterprise-beans>")) {
-                content = content.replace("<enterprise-beans>", 
"<enterprise-beans>\n" + managedBeanBlock(javaClass));
-                return new StringAsset(content);
-            } else if (content.contains("<ejb-jar>")) {
-                content = content.replace("<ejb-jar>", "<ejb-jar>\n" + 
enterpriseBean(javaClass));
-                return new StringAsset(content);
+        {
+            final Node validationXml = archive.get(VALIDATION_XML);
+            if (validationXml != null) {
+                InputStream is = null;
+                try {
+                    is = validationXml.getAsset().openStream();
+                    final ValidationConfigType validation = 
JaxbOpenejb.unmarshal(ValidationConfigType.class, is, false);
+                    ejbModule.setValidationConfig(validation);
+                } catch (Exception e) {
+                    LOGGER.log(Level.SEVERE, "can't read validation.xml", e);
+                } finally {
+                    IO.close(is);
+                }
             }
-            return asset; // shouldn't happen
         }
-    }
 
-    private String enterpriseBean(final Class<?> clazz) {
-        return "   <enterprise-beans>\n" +
-                managedBeanBlock(clazz) +
-                "   </enterprise-beans>\n";
+        {
+            final Node envEntriesProperties = 
archive.get(ENV_ENTRIES_PROPERTIES);
+            if (envEntriesProperties != null) {
+                InputStream is = null;
+                final Properties properties = new Properties();
+                try {
+                    is = envEntriesProperties.getAsset().openStream();
+                    properties.load(is);
+                    ejbModule.getAltDDs().put(ENV_ENTRIES_PROPERTIES_NAME, 
properties);
+
+                    // do it for test class too
+                    
appModule.getEjbModules().iterator().next().getAltDDs().put(ENV_ENTRIES_PROPERTIES_NAME,
 properties);
+                } catch (Exception e) {
+                    LOGGER.log(Level.SEVERE, "can't read 
env-entries.properties", e);
+                } finally {
+                    IO.close(is);
+                }
+            }
+        }
+
+        // "env-entries.properties"
+
+        // export it to be usable in the container
+        module.set(appModule);
     }
 
-    private String ejbJar(final Class<?> clazz) {
-        return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                "<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\"; \n" +
-                "         
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; \n" +
-                "         
xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"; +
-                "         version=\"3.0\">\n" +
-                enterpriseBean(clazz) +
-                "</ejb-jar>\n";
+    private org.apache.xbean.finder.archive.Archive finderArchive(final 
Archive<?> archive, final ClassLoader cl) {
+        final List<Class<?>> classes = new ArrayList<Class<?>>();
+        final Map<ArchivePath, Node> content = archive.getContent(new 
IncludeRegExpPaths(".*.class"));
+        for (Map.Entry<ArchivePath, Node> node : content.entrySet()) {
+            final String classname = name(node.getKey().get());
+            try {
+                classes.add(cl.loadClass(classname));
+            } catch (ClassNotFoundException e) {
+                e.printStackTrace();
+            }
+        }
+        return new ClassesArchive(classes);
     }
 
-    private String managedBeanBlock(final Class<?> clazz) {
-        return "      <session>\n" +
-                "         <ejb-name>" + clazz.getSimpleName() + 
"</ejb-name>\n" +
-                "         <ejb-class>" + clazz.getName() + "</ejb-class>\n" +
-                "         <session-type>Managed</session-type>\n" +
-                "         <transaction-type>Bean</transaction-type>\n" +
-                "      </session>\n";
+    private static String name(final String raw) {
+        final String name = raw.replace('/', '.');
+        return name.substring(1, name.length() - 6);
     }
 }

Modified: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java?rev=1333092&r1=1333091&r2=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
 (original)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
 Wed May  2 16:11:49 2012
@@ -1,6 +1,5 @@
 package org.apache.openejb.arquillian.openejb;
 
-import java.io.File;
 import java.util.Properties;
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -8,12 +7,13 @@ import javax.naming.NamingException;
 import org.apache.openejb.AppContext;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.OpenEjbContainer;
-import org.apache.openejb.assembler.DeployerEjb;
 import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.DeploymentFilterable;
 import org.apache.openejb.core.LocalInitialContext;
 import org.apache.openejb.core.LocalInitialContextFactory;
-import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
 import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
@@ -23,14 +23,14 @@ import org.jboss.arquillian.container.sp
 import 
org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
 import org.jboss.arquillian.container.spi.context.annotation.ContainerScoped;
 import org.jboss.arquillian.container.spi.context.annotation.DeploymentScoped;
+import org.jboss.arquillian.core.api.Instance;
 import org.jboss.arquillian.core.api.InstanceProducer;
 import org.jboss.arquillian.core.api.annotation.Inject;
+import org.jboss.arquillian.test.spi.annotation.SuiteScoped;
 import org.jboss.shrinkwrap.api.Archive;
-import org.jboss.shrinkwrap.api.exporter.ZipExporter;
 import org.jboss.shrinkwrap.descriptor.api.Descriptor;
 
 public class OpenEJBDeployableContainer implements 
DeployableContainer<OpenEJBConfiguration> {
-    private static final String DEPLOYMENT_SUB_DIR = 
"/arquillian-openejb-working-dir";
     private static final Properties PROPERTIES = new Properties();
 
     static {
@@ -45,12 +45,14 @@ public class OpenEJBDeployableContainer 
         }
     }
 
+    // system
+    private Assembler assembler;
     private InitialContext initialContext;
-    private DeployerEjb deployer;
-    private File baseDeploymentDir;
-    private File archiveFile;
     private ContainerSystem containerSystem;
+    private ConfigurationFactory configurationFactory;
 
+    // suite
+    private AppInfo appInfo;
 
     @Inject
     @DeploymentScoped
@@ -60,6 +62,10 @@ public class OpenEJBDeployableContainer 
     @ContainerScoped
     private InstanceProducer<ContainerSystem> containerSystemProducer;
 
+    @Inject
+    @SuiteScoped
+    private Instance<AppModule> module;
+
     @Override
     public Class<OpenEJBConfiguration> getConfigurationClass() {
         return OpenEJBConfiguration.class;
@@ -72,30 +78,24 @@ public class OpenEJBDeployableContainer 
 
     @Override
     public void start() throws LifecycleException {
+        // todo: manage properties (aquillian.xml/annotation on test)
         try {
             initialContext = new InitialContext(PROPERTIES);
         } catch (NamingException e) {
             throw new LifecycleException("can't start the OpenEJB container", 
e);
         }
 
-        deployer = new DeployerEjb();
-        baseDeploymentDir = new File(System.getProperty("java.io.tmpdir") + 
DEPLOYMENT_SUB_DIR);
+        assembler = SystemInstance.get().getComponent(Assembler.class);
         containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
         containerSystemProducer.set(containerSystem);
+        configurationFactory = new ConfigurationFactory();
     }
 
     @Override
     public ProtocolMetaData deploy(final Archive<?> archive) throws 
DeploymentException {
-        int i = 0;
-        do {
-            archiveFile = new File(baseDeploymentDir, i++ + "/" + 
archive.getName());
-        } while (archiveFile.exists());
-        Files.mkdirs(archiveFile.getParentFile());
-        archive.as(ZipExporter.class).exportTo(archiveFile, true);
-
         try {
-            final AppInfo info = 
deployer.deploy(archiveFile.getCanonicalPath());
-            final AppContext appCtx = 
containerSystem.getAppContext(info.appId);
+            appInfo = configurationFactory.configureApplication(module.get());
+            final AppContext appCtx = assembler.createApplication(appInfo);
             appContextProducer.set(appCtx);
         } catch (Exception e) {
             throw new DeploymentException("can't deploy " + archive.getName(), 
e);
@@ -106,8 +106,7 @@ public class OpenEJBDeployableContainer 
     @Override
     public void undeploy(final Archive<?> archive) throws DeploymentException {
         try {
-            deployer.undeploy(archiveFile.getCanonicalPath());
-            Files.delete(archiveFile);
+            assembler.destroyApplication(appInfo.path);
         } catch (Exception e) {
             throw new DeploymentException("can't undeploy " + 
archive.getName(), e);
         }
@@ -123,7 +122,6 @@ public class OpenEJBDeployableContainer 
             throw new LifecycleException("can't close the OpenEJB container", 
e);
         } finally {
             OpenEJB.destroy();
-            Files.delete(baseDeploymentDir);
         }
     }
 

Modified: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java?rev=1333092&r1=1333091&r2=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
 (original)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
 Wed May  2 16:11:49 2012
@@ -33,12 +33,12 @@ public class OpenEJBInjectionEnricher im
             // ignored
         }
 
-        final BeanContext context = 
containerSystem.get().getBeanContext(testInstance.getClass().getSimpleName());
+        final BeanContext context = 
containerSystem.get().getBeanContext(testInstance.getClass().getName());
         if (context != null) {
             ThreadContext callContext = new ThreadContext(context, null, 
Operation.INJECTION);
             ThreadContext oldContext = ThreadContext.enter(callContext);
             try {
-                final InjectionProcessor processor = new 
InjectionProcessor(testInstance, context.getInjections(), 
context.getJndiContext());
+                final InjectionProcessor processor = new 
InjectionProcessor<Object>(testInstance, context.getInjections(), 
context.getJndiContext());
                 processor.createInstance();
             } catch (OpenEJBException e) {
                 // ignored

Copied: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/AdapterArquillianStandaloneTest.java
 (from r1332872, 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/AdapterArquillianStandaloneTest.java?p2=openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/AdapterArquillianStandaloneTest.java&p1=openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java&r1=1332872&r2=1333092&rev=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
 (original)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/AdapterArquillianStandaloneTest.java
 Wed May  2 16:11:49 2012
@@ -1,10 +1,5 @@
 package org.apache.openejb.arquillian.openejb;
 
-import javax.annotation.Resource;
-import javax.ejb.EJB;
-import javax.ejb.Singleton;
-import javax.inject.Inject;
-import javax.sql.DataSource;
 import org.apache.openejb.loader.SystemInstance;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
@@ -15,28 +10,13 @@ import org.jboss.shrinkwrap.api.spec.Jav
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 @RunWith(Arquillian.class)
-public class SimpleArquillianStandaloneTest {
-    @Inject
-    private ABean bean;
-
-    @Inject
-    private AnEJB ejbFromCdiAnnotation;
-
-    @EJB
-    private AnEJB ejbFromEjbAnnotation;
-
-    @Resource
-    private DataSource defaultDs;
-
+public class AdapterArquillianStandaloneTest {
     @Deployment
     public static JavaArchive archive() {
-        return ShrinkWrap.create(JavaArchive.class, 
SimpleArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
-                    .addClass(ABean.class)
-                    .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("ejb-jar.xml"))
+        return ShrinkWrap.create(JavaArchive.class, 
AdapterArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
                     .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("beans.xml"));
     }
 
@@ -44,16 +24,4 @@ public class SimpleArquillianStandaloneT
     public void checkItIsStarted() {
         assertTrue(SystemInstance.isInitialized());
     }
-
-    @Test
-    public void checkInjection() {
-        assertNotNull(bean);
-        assertNotNull(ejbFromCdiAnnotation);
-        assertNotNull(ejbFromEjbAnnotation);
-        assertNotNull(defaultDs);
-    }
-
-    public static class ABean {}
-
-    @Singleton public static class AnEJB {}
 }

Copied: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java
 (from r1332872, 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java?p2=openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java&p1=openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java&r1=1332872&r2=1333092&rev=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
 (original)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java
 Wed May  2 16:11:49 2012
@@ -1,10 +1,7 @@
 package org.apache.openejb.arquillian.openejb;
 
-import javax.annotation.Resource;
-import javax.ejb.EJB;
 import javax.ejb.Singleton;
 import javax.inject.Inject;
-import javax.sql.DataSource;
 import org.apache.openejb.loader.SystemInstance;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
@@ -19,24 +16,17 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertTrue;
 
 @RunWith(Arquillian.class)
-public class SimpleArquillianStandaloneTest {
+public class CDIArquillianStandaloneTest {
     @Inject
     private ABean bean;
 
     @Inject
     private AnEJB ejbFromCdiAnnotation;
 
-    @EJB
-    private AnEJB ejbFromEjbAnnotation;
-
-    @Resource
-    private DataSource defaultDs;
-
     @Deployment
     public static JavaArchive archive() {
-        return ShrinkWrap.create(JavaArchive.class, 
SimpleArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
-                    .addClass(ABean.class)
-                    .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("ejb-jar.xml"))
+        return ShrinkWrap.create(JavaArchive.class, 
CDIArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
+                    .addClasses(ABean.class, AnEJB.class)
                     .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("beans.xml"));
     }
 
@@ -46,11 +36,9 @@ public class SimpleArquillianStandaloneT
     }
 
     @Test
-    public void checkInjection() {
+    public void checkInjections() {
         assertNotNull(bean);
         assertNotNull(ejbFromCdiAnnotation);
-        assertNotNull(ejbFromEjbAnnotation);
-        assertNotNull(defaultDs);
     }
 
     public static class ABean {}

Added: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EJBArquillianStandaloneTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EJBArquillianStandaloneTest.java?rev=1333092&view=auto
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EJBArquillianStandaloneTest.java
 (added)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EJBArquillianStandaloneTest.java
 Wed May  2 16:11:49 2012
@@ -0,0 +1,35 @@
+package org.apache.openejb.arquillian.openejb;
+
+import javax.ejb.EJB;
+import javax.ejb.Singleton;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(Arquillian.class)
+public class EJBArquillianStandaloneTest {
+    @EJB
+    private AnEJB ejbFromEjbAnnotation;
+
+    @Deployment
+    public static JavaArchive archive() {
+        return ShrinkWrap.create(JavaArchive.class, 
EJBArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
+                .addClass(AnEJB.class)
+                .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("ejb-jar.xml"));
+    }
+
+    @Test
+    public void checkInjections() {
+        assertNotNull(ejbFromEjbAnnotation);
+    }
+
+    @Singleton
+    public static class AnEJB {}
+}

Added: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EnvEntriesArquillianStandaloneTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EnvEntriesArquillianStandaloneTest.java?rev=1333092&view=auto
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EnvEntriesArquillianStandaloneTest.java
 (added)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/EnvEntriesArquillianStandaloneTest.java
 Wed May  2 16:11:49 2012
@@ -0,0 +1,32 @@
+package org.apache.openejb.arquillian.openejb;
+
+import javax.annotation.Resource;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertEquals;
+
+@RunWith(Arquillian.class)
+public class EnvEntriesArquillianStandaloneTest {
+    @Resource(name = "foo")
+    private String foo;
+
+    @Deployment
+    public static JavaArchive archive() {
+        return ShrinkWrap.create(JavaArchive.class, 
EnvEntriesArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
+                .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("ejb-jar.xml"))
+                .addAsManifestResource(new StringAsset("foo=bar"), 
ArchivePaths.create("env-entries.properties"));
+    }
+
+    @Test
+    public void check() {
+        assertEquals("bar", foo);
+    }
+}

Added: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/JPAArquillianAdapterTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/JPAArquillianAdapterTest.java?rev=1333092&view=auto
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/JPAArquillianAdapterTest.java
 (added)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/JPAArquillianAdapterTest.java
 Wed May  2 16:11:49 2012
@@ -0,0 +1,90 @@
+package org.apache.openejb.arquillian.openejb;
+
+import javax.ejb.Singleton;
+import javax.inject.Inject;
+import javax.persistence.Entity;
+import javax.persistence.EntityManager;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.PersistenceContext;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(Arquillian.class)
+public class JPAArquillianAdapterTest {
+    @Inject
+    private Persister persister;
+
+    @Deployment
+    public static JavaArchive archive() {
+        return ShrinkWrap.create(JavaArchive.class, 
JPAArquillianAdapterTest.class.getSimpleName().concat(".jar"))
+                .addClasses(Person.class, Persister.class)
+                .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("ejb-jar.xml"))
+                .addAsManifestResource(new StringAsset("<?xml version=\"1.0\" 
encoding=\"UTF-8\"?>\n" +
+                        "<persistence version=\"2.0\"\n" +
+                        "             
xmlns=\"http://java.sun.com/xml/ns/persistence\"\n"; +
+                        "             
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"; +
+                        "             
xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence\n"; +
+                        "                       
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\";>\n" +
+                        "  <persistence-unit name=\"person\">\n" +
+                        "    <jta-data-source>My 
DataSource</jta-data-source>\n" +
+                        "    <non-jta-data-source>My Unmanaged 
DataSource</non-jta-data-source>\n" +
+                        "    <class>" + Person.class.getName() + "</class>\n" +
+                        "    <properties>\n" +
+                        "      <property 
name=\"openjpa.jdbc.SynchronizeMappings\" 
value=\"buildSchema(ForeignKeys=true)\"/>\n" +
+                        "    </properties>\n" +
+                        "  </persistence-unit>\n" +
+                        "</persistence>"), 
ArchivePaths.create("persistence.xml"));
+    }
+
+    @Test
+    public void persist() {
+        persister.persist(new Person("foo"));
+    }
+
+    @Entity
+    public static class Person {
+        @Id
+        @GeneratedValue
+        private long id;
+
+        private String name;
+
+        public Person() {
+            // no-op
+        }
+
+        public Person(final String name) {
+            this.name = name;
+        }
+
+        public long getId() {
+            return id;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+    }
+
+    @Singleton
+    public static class Persister {
+        @PersistenceContext
+        private EntityManager em;
+
+        public void persist(final Person person) {
+            em.persist(person);
+        }
+    }
+}

Copied: 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/ResourceArquillianStandaloneTest.java
 (from r1332872, 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/ResourceArquillianStandaloneTest.java?p2=openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/ResourceArquillianStandaloneTest.java&p1=openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java&r1=1332872&r2=1333092&rev=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/SimpleArquillianStandaloneTest.java
 (original)
+++ 
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-container/src/test/java/org/apache/openejb/arquillian/openejb/ResourceArquillianStandaloneTest.java
 Wed May  2 16:11:49 2012
@@ -1,11 +1,7 @@
 package org.apache.openejb.arquillian.openejb;
 
 import javax.annotation.Resource;
-import javax.ejb.EJB;
-import javax.ejb.Singleton;
-import javax.inject.Inject;
 import javax.sql.DataSource;
-import org.apache.openejb.loader.SystemInstance;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ArchivePaths;
@@ -16,44 +12,20 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 
 @RunWith(Arquillian.class)
-public class SimpleArquillianStandaloneTest {
-    @Inject
-    private ABean bean;
-
-    @Inject
-    private AnEJB ejbFromCdiAnnotation;
-
-    @EJB
-    private AnEJB ejbFromEjbAnnotation;
-
+public class ResourceArquillianStandaloneTest {
     @Resource
     private DataSource defaultDs;
 
     @Deployment
     public static JavaArchive archive() {
-        return ShrinkWrap.create(JavaArchive.class, 
SimpleArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
-                    .addClass(ABean.class)
-                    .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("ejb-jar.xml"))
+        return ShrinkWrap.create(JavaArchive.class, 
ResourceArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
                     .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("beans.xml"));
     }
 
     @Test
-    public void checkItIsStarted() {
-        assertTrue(SystemInstance.isInitialized());
-    }
-
-    @Test
-    public void checkInjection() {
-        assertNotNull(bean);
-        assertNotNull(ejbFromCdiAnnotation);
-        assertNotNull(ejbFromEjbAnnotation);
+    public void checkInjections() {
         assertNotNull(defaultDs);
     }
-
-    public static class ABean {}
-
-    @Singleton public static class AnEJB {}
 }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java?rev=1333092&r1=1333091&r2=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
 Wed May  2 16:11:49 2012
@@ -118,7 +118,12 @@ public class EnvEntriesPropertiesDeploye
 
     @SuppressWarnings({"unchecked"})
     private Map<String, String> getEnvEntries(DeploymentModule module) {
-        URL propsUrl = (URL) module.getAltDDs().get("env-entries.properties");
+        final Object value = module.getAltDDs().get("env-entries.properties");
+        if (value instanceof Map) {
+            return (Map<String, String>) value;
+        }
+
+        URL propsUrl = (URL) value;
         if (propsUrl == null) {
             propsUrl = (URL) module.getAltDDs().get("env-entry.properties");
         }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java?rev=1333092&r1=1333091&r2=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
 Wed May  2 16:11:49 2012
@@ -16,6 +16,20 @@
  */
 package org.apache.openejb.config;
 
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.List;
+import javax.wsdl.Definition;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.config.sys.JaxbOpenejb;
 import org.apache.openejb.config.sys.Resources;
@@ -46,6 +60,7 @@ import org.apache.openejb.jee.oejb2.Open
 import org.apache.openejb.jee.oejb3.JaxbOpenejbJar3;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.loader.IO;
+import org.apache.openejb.util.LengthInputStream;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.URLs;
@@ -54,22 +69,6 @@ import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
 
-import javax.wsdl.Definition;
-import javax.wsdl.factory.WSDLFactory;
-import javax.wsdl.xml.WSDLReader;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.List;
-
 public class ReadDescriptors implements DynamicDeployer {
     public static final Logger logger = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP, ReadDescriptors.class);
 
@@ -727,37 +726,4 @@ public class ReadDescriptors implements 
             return new ByteArrayInputStream(bytes);
         }
     }
-
-    private static class LengthInputStream extends FilterInputStream {
-        private long length;
-
-        public LengthInputStream(InputStream in) throws IOException {
-            super(in);
-        }
-
-        @Override
-        public int read() throws IOException {
-            final int i = super.read();
-            if (i > 0) length++;
-            return i;
-        }
-
-        @Override
-        public int read(byte[] b) throws IOException {
-            final int i = super.read(b);
-            if (i > 0) length += i;
-            return i;
-        }
-
-        @Override
-        public int read(byte[] b, int off, int len) throws IOException {
-            final int i = super.read(b, off, len);
-            if (i > 0) length += i;
-            return i;
-        }
-
-        public long getLength() {
-            return length;
-        }
-    }
 }

Added: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/LengthInputStream.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/LengthInputStream.java?rev=1333092&view=auto
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/LengthInputStream.java
 (added)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/LengthInputStream.java
 Wed May  2 16:11:49 2012
@@ -0,0 +1,38 @@
+package org.apache.openejb.util;
+
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class LengthInputStream extends FilterInputStream {
+    private long length;
+
+    public LengthInputStream(InputStream in) throws IOException {
+        super(in);
+    }
+
+    @Override
+    public int read() throws IOException {
+        final int i = super.read();
+        if (i > 0) length++;
+        return i;
+    }
+
+    @Override
+    public int read(byte[] b) throws IOException {
+        final int i = super.read(b);
+        if (i > 0) length += i;
+        return i;
+    }
+
+    @Override
+    public int read(byte[] b, int off, int len) throws IOException {
+        final int i = super.read(b, off, len);
+        if (i > 0) length += i;
+        return i;
+    }
+
+    public long getLength() {
+        return length;
+    }
+}

Modified: 
openejb/trunk/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java?rev=1333092&r1=1333091&r2=1333092&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java
 Wed May  2 16:11:49 2012
@@ -40,34 +40,37 @@ import java.net.URL;
 public class JaxbPersistenceFactory {
     public static final String PERSISTENCE_SCHEMA = 
"http://java.sun.com/xml/ns/persistence";;
 
+    public static <T> T getPersistence(Class<T> clazz, InputStream 
persistenceDescriptor) throws Exception {
+        JAXBContext jc = JAXBContextFactory.newInstance(clazz);
+        Unmarshaller u = jc.createUnmarshaller();
+        UnmarshallerHandler uh = u.getUnmarshallerHandler();
+
+        // create a new XML parser
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+        factory.setNamespaceAware(true);
+        factory.setValidating(true);
+        SAXParser parser = factory.newSAXParser();
+
+        XMLReader xmlReader = parser.getXMLReader();
+
+        // Create a filter to intercept events
+        PersistenceFilter xmlFilter = new PersistenceFilter(xmlReader);
+
+        // Be sure the filter has the JAXB content handler set (or it wont
+        // work)
+        xmlFilter.setContentHandler(uh);
+        SAXSource source = new SAXSource(xmlFilter, new 
InputSource(persistenceDescriptor));
+
+        return (T) u.unmarshal(source);
+    }
+
     public static <T> T getPersistence(Class<T> clazz, URL url) throws 
Exception {
         InputStream persistenceDescriptor = null;
 
         try {
 
             persistenceDescriptor = url.openStream();
-
-            JAXBContext jc = JAXBContextFactory.newInstance(clazz);
-            Unmarshaller u = jc.createUnmarshaller();
-            UnmarshallerHandler uh = u.getUnmarshallerHandler();
-
-            // create a new XML parser
-            SAXParserFactory factory = SAXParserFactory.newInstance();
-            factory.setNamespaceAware(true);
-            factory.setValidating(true);
-            SAXParser parser = factory.newSAXParser();
-
-            XMLReader xmlReader = parser.getXMLReader();
-
-            // Create a filter to intercept events
-            PersistenceFilter xmlFilter = new PersistenceFilter(xmlReader);
-
-            // Be sure the filter has the JAXB content handler set (or it wont
-            // work)
-            xmlFilter.setContentHandler(uh);
-            SAXSource source = new SAXSource(xmlFilter, new 
InputSource(persistenceDescriptor));
-
-            return (T) u.unmarshal(source);
+            return getPersistence(clazz, persistenceDescriptor);
 
         } finally {
             if (persistenceDescriptor != null) persistenceDescriptor.close();


Reply via email to