Return-Path: X-Original-To: apmail-openejb-commits-archive@www.apache.org Delivered-To: apmail-openejb-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DF99D43FA for ; Fri, 10 Jun 2011 07:10:04 +0000 (UTC) Received: (qmail 45119 invoked by uid 500); 10 Jun 2011 07:10:04 -0000 Delivered-To: apmail-openejb-commits-archive@openejb.apache.org Received: (qmail 45066 invoked by uid 500); 10 Jun 2011 07:10:04 -0000 Mailing-List: contact commits-help@openejb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openejb.apache.org Delivered-To: mailing list commits@openejb.apache.org Received: (qmail 45059 invoked by uid 99); 10 Jun 2011 07:10:03 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Jun 2011 07:10:03 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Jun 2011 07:10:01 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B841B2388994; Fri, 10 Jun 2011 07:09:41 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Fri, 10 Jun 2011 07:09:41 -0000 To: commits@openejb.apache.org From: dblevins@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110610070941.B841B2388994@eris.apache.org> 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 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 resources = new HashMap(); + + 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 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 @@ - - 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 @@ + @@ -130,6 +131,7 @@ +