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