You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/05/22 01:55:51 UTC
svn commit: r1341277 -
/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
Author: rmannibucau
Date: Mon May 21 23:55:51 2012
New Revision: 1341277
URL: http://svn.apache.org/viewvc?rev=1341277&view=rev
Log:
some persistenceurl management (to enhance)
Modified:
openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
Modified: openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java?rev=1341277&r1=1341276&r2=1341277&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java (original)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java Mon May 21 23:55:51 2012
@@ -1,7 +1,13 @@
package org.apache.openejb.arquillian.openejb;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -31,12 +37,16 @@ import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ArchivePath;
import org.jboss.shrinkwrap.api.Node;
import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.FileAsset;
+import org.jboss.shrinkwrap.api.asset.UrlAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.impl.base.filter.IncludeRegExpPaths;
public class OpenEJBArchiveProcessor implements ApplicationArchiveProcessor {
private static final Logger LOGGER = Logger.getLogger(OpenEJBArchiveProcessor.class.getName());
private static final String META_INF = "META-INF/";
+ private static final String WEB_INF = "WEB-INF/";
private static final String EJB_JAR_XML = "ejb-jar.xml";
private static final String BEANS_XML = "beans.xml";
@@ -54,6 +64,13 @@ public class OpenEJBArchiveProcessor imp
final Class<?> javaClass = testClass.getJavaClass();
final AppModule appModule = new AppModule(javaClass.getClassLoader(), javaClass.getName());
+ final String prefix;
+ if (archive instanceof WebArchive) {
+ prefix = WEB_INF;
+ } else {
+ prefix = META_INF;
+ }
+
// add the test as a managed bean to be able to inject into it easily
{
final EjbJar ejbJar = new EjbJar();
@@ -68,7 +85,7 @@ public class OpenEJBArchiveProcessor imp
final org.apache.xbean.finder.archive.Archive finderArchive = finderArchive(archive, appModule.getClassLoader());
final EjbJar ejbJar;
- final Node ejbJarXml = archive.get(META_INF.concat(EJB_JAR_XML));
+ final Node ejbJarXml = archive.get(prefix.concat(EJB_JAR_XML));
if (ejbJarXml != null) {
try {
ejbJar = ReadDescriptors.readEjbJar(ejbJarXml.getAsset().openStream());
@@ -84,35 +101,46 @@ public class OpenEJBArchiveProcessor imp
appModule.getEjbModules().add(ejbModule);
{
- final Node beansXml = archive.get(META_INF.concat(BEANS_XML));
+ final Node beansXml = archive.get(prefix.concat(BEANS_XML));
if (beansXml != null) {
ejbModule.getAltDDs().put(BEANS_XML, new AssetSource(beansXml.getAsset()));
}
}
{
- final Node persistenceXml = archive.get(META_INF.concat(PERSISTENCE_XML));
+ final Node persistenceXml = archive.get(prefix.concat(PERSISTENCE_XML));
if (persistenceXml != null) {
- appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset())));
+ final Asset asset = persistenceXml.getAsset();
+ if (asset instanceof UrlAsset) {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(URL.class, "url", asset)));
+ } else if (asset instanceof FileAsset) {
+ try {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(File.class, "file", asset).toURI().toURL()));
+ } catch (MalformedURLException e) {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset())));
+ }
+ } else {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset())));
+ }
}
}
{
- final Node openejbJarXml = archive.get(META_INF.concat(OPENEJB_JAR_XML));
+ final Node openejbJarXml = archive.get(prefix.concat(OPENEJB_JAR_XML));
if (openejbJarXml != null) {
ejbModule.getAltDDs().put(OPENEJB_JAR_XML, new AssetSource(openejbJarXml.getAsset()));
}
}
{
- final Node validationXml = archive.get(META_INF.concat(VALIDATION_XML));
+ final Node validationXml = archive.get(prefix.concat(VALIDATION_XML));
if (validationXml != null) {
ejbModule.getAltDDs().put(VALIDATION_XML, new AssetSource(validationXml.getAsset()));
}
}
{
- final Node envEntriesProperties = archive.get(META_INF.concat(ENV_ENTRIES_PROPERTIES));
+ final Node envEntriesProperties = archive.get(prefix.concat(ENV_ENTRIES_PROPERTIES));
if (envEntriesProperties != null) {
InputStream is = null;
final Properties properties = new Properties();
@@ -135,6 +163,16 @@ public class OpenEJBArchiveProcessor imp
module.set(appModule);
}
+ private <T> T get(Class<T> fileClass, String attr, Asset asset) {
+ try {
+ final Field field = asset.getClass().getDeclaredField(attr);
+ field.setAccessible(true);
+ return fileClass.cast(field.get(asset));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
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"));