You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/06/10 09:09:41 UTC
svn commit: r1134213 - in /openejb/trunk/openejb3/tck/cdi-embedded/src/test:
java/org/apache/openejb/tck/cdi/embedded/ContainersImpl.java
resources/failing.xml resources/passing.xml
Author: dblevins
Date: Fri Jun 10 07:09:41 2011
New Revision: 1134213
URL: http://svn.apache.org/viewvc?rev=1134213&view=rev
Log:
Workaround for CDITCK-216: No Support for standalone EJBContainer
Modified:
openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ContainersImpl.java
openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml
openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml
Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ContainersImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ContainersImpl.java?rev=1134213&r1=1134212&r2=1134213&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ContainersImpl.java (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ContainersImpl.java Fri Jun 10 07:09:41 2011
@@ -18,26 +18,32 @@ package org.apache.openejb.tck.cdi.embed
import org.apache.openejb.OpenEJB;
import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.cdi.ThreadSingletonService;
import org.apache.openejb.cdi.ThreadSingletonServiceImpl;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.SetAccessible;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.container.BeanManagerImpl;
import org.jboss.testharness.api.DeploymentException;
+import org.jboss.testharness.impl.packaging.ear.EjbJarXml;
+import org.jboss.testharness.impl.packaging.ear.PersistenceXml;
import org.jboss.testharness.spi.Containers;
import javax.ejb.embeddable.EJBContainer;
import java.io.BufferedOutputStream;
+import java.io.Closeable;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.Flushable;
import java.io.IOException;
import java.io.InputStream;
-import java.lang.reflect.AccessibleObject;
+import java.io.OutputStream;
import java.lang.reflect.Field;
+import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
/**
* @version $Rev$ $Date$
@@ -80,14 +86,11 @@ public class ContainersImpl implements C
return true;
}
- private void dump(Object o)
- {
- try
- {
+ private void dump(Object o) {
+ try {
final Class<? extends Object> clazz = o.getClass();
- for (Field field : clazz.getDeclaredFields())
- {
+ for (Field field : clazz.getDeclaredFields()) {
SetAccessible.on(field);
if (Collection.class.isAssignableFrom(field.getType())) {
@@ -95,29 +98,105 @@ public class ContainersImpl implements C
System.out.println(field.getName() + "\t= " + collection.size());
}
}
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
}
}
+ private URL getResource(Class clazz, String path) {
+ final String resourcePath = clazz.getPackage().getName().replace(".", "/") + "/" + path;
+
+ return clazz.getClassLoader().getResource(resourcePath);
+ }
+
private File writeToFile(InputStream archive, String name) throws IOException {
final File file = File.createTempFile("deploy", "-" + name);
file.deleteOnExit();
- final BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
-
try {
- int i = -1;
- while ((i = archive.read()) != -1) out.write(i);
- } finally {
- out.close();
- }
+ Map<String, URL> resources = new HashMap<String, URL>();
+
+ final Class<?> clazz = this.getClass().getClassLoader().loadClass(name.replace(".jar", ""));
+
+ if (clazz.isAnnotationPresent(EjbJarXml.class)) {
+ final URL resource = getResource(clazz, clazz.getAnnotation(EjbJarXml.class).value());
+
+ if (resource != null) resources.put("META-INF/ejb-jar.xml", resource);
+ }
+
+ if (clazz.isAnnotationPresent(PersistenceXml.class)) {
+ final URL resource = getResource(clazz, clazz.getAnnotation(PersistenceXml.class).value());
+
+ if (resource != null) resources.put("META-INF/persistence.xml", resource);
+ }
+
+ final boolean isJar = name.endsWith(".jar");
+
+ final ZipInputStream zin = new ZipInputStream(archive);
+ final ZipOutputStream zout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
+
+ for (ZipEntry entry; (entry = zin.getNextEntry()) != null; ) {
+ String entryName = entry.getName();
+
+ if (entryName.startsWith("WEB-INF")) {
+ System.out.println(entryName);
+ }
+ if (isJar && entryName.startsWith("WEB-INF/classes/")) {
+ entryName = entryName.replaceFirst("WEB-INF/classes/","");
+ }
+
+ InputStream src = zin;
+
+ if (resources.containsKey(entryName)) {
+ src = resources.get(entryName).openStream();
+ }
+
+ resources.remove(entryName);
+
+ zout.putNextEntry(new ZipEntry(entryName));
+
+ copy(src, zout);
+ }
+
+ for (Map.Entry<String, URL> entry : resources.entrySet()) {
+
+ zout.putNextEntry(new ZipEntry(entry.getKey()));
+
+ copy(entry.getValue().openStream(), zout);
+ }
+
+ close(zin);
+ close(zout);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
return file;
}
+ private static void copy(InputStream from, OutputStream to) throws IOException {
+ byte[] buffer = new byte[1024];
+ int length = 0;
+ while ((length = from.read(buffer)) != -1) {
+ to.write(buffer, 0, length);
+ }
+ }
+
+ public static void close(Closeable closeable) throws IOException {
+ if (closeable == null) return;
+ try {
+ if (closeable instanceof Flushable) {
+ ((Flushable) closeable).flush();
+ }
+ } catch (IOException e) {
+ }
+ try {
+ closeable.close();
+ } catch (IOException e) {
+ }
+ }
+
+
@Override
public DeploymentException getDeploymentException() {
return new DeploymentException(exception.getLocalizedMessage(), exception);
Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml?rev=1134213&r1=1134212&r2=1134213&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml Fri Jun 10 07:09:41 2011
@@ -16,11 +16,9 @@
<class name="org.jboss.jsr299.tck.tests.context.request.ejb.EJBRequestContextTest"/>
<class name="org.jboss.jsr299.tck.tests.deployment.packaging.bundledLibrary.LibraryInEarTest"/>
<class name="org.jboss.jsr299.tck.tests.event.observer.enterprise.EnterpriseEventInheritenceTest"/>
- <class name="org.jboss.jsr299.tck.tests.extensions.container.event.ContainerEventTest"/>
<class name="org.jboss.jsr299.tck.tests.extensions.processBean.ProcessSessionBeanTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.builtin.BuiltInBeansTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.definition.EnterpriseBeanDefinitionTest"/>
- <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.definition.EnterpriseBeanViaXmlTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.lifecycle.EnterpriseBeanLifecycleTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.newBean.NewEnterpriseBeanICTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.remove.EnterpriseBeanRemoveMethodTest"/>
Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml?rev=1134213&r1=1134212&r2=1134213&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml Fri Jun 10 07:09:41 2011
@@ -115,6 +115,7 @@
<class name="org.jboss.jsr299.tck.tests.extensions.annotated.AlternativeMetaDataTest"/>
<class name="org.jboss.jsr299.tck.tests.extensions.bean.bytype.BeanByTypeTest"/>
<class name="org.jboss.jsr299.tck.tests.extensions.beanManager.BeanManagerTest"/>
+ <class name="org.jboss.jsr299.tck.tests.extensions.container.event.ContainerEventTest"/>
<class name="org.jboss.jsr299.tck.tests.extensions.producer.ProducerTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.disposal.method.definition.DisposalMethodDefinitionTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.disposal.method.definition.broken.initializerUnallowed.InitializerUnallowedDefinitionTest"/>
@@ -130,6 +131,7 @@
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.broken.statelessWithConversationScope.StatelessWithConversationScopeTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.broken.statelessWithRequestScope.StatelessWithRequestScopeTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.broken.statelessWithSessionScope.StatelessWithSessionScopeTest"/>
+ <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.definition.EnterpriseBeanViaXmlTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.newBean.NewEnterpriseBeanTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.initializer.InitializerMethodTest"/>
<class name="org.jboss.jsr299.tck.tests.implementation.initializer.broken.methodAnnotatedProduces.InitializerMethodAnnotatedProducesTest"/>