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 2011/12/15 00:18:15 UTC

svn commit: r1214539 - in /openejb/trunk/openejb: assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ tck/cdi-tomee/src/main/resources/META-INF/ tck/tck-common/ tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ utils/webdeplo...

Author: rmannibucau
Date: Wed Dec 14 23:18:15 2011
New Revision: 1214539

URL: http://svn.apache.org/viewvc?rev=1214539&view=rev
Log:
using new FullRestartContainer for cdi-tomee

Added:
    openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java
    openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
    openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/
    openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacade.java
    openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java
Modified:
    openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java
    openejb/trunk/openejb/tck/cdi-tomee/src/main/resources/META-INF/jboss-test-harness.properties
    openejb/trunk/openejb/tck/tck-common/pom.xml
    openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java

Modified: openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java?rev=1214539&r1=1214538&r2=1214539&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java Wed Dec 14 23:18:15 2011
@@ -36,4 +36,11 @@ public class DeploymentExceptionManager 
     public synchronized void clearDelpoyementException(AppInfo info) {
         deploymentException.remove(info);
     }
+
+    public Exception getFirstException() {
+        if (deploymentException.isEmpty()) {
+            return null;
+        }
+        return deploymentException.values().iterator().next();
+    }
 }

Modified: openejb/trunk/openejb/tck/cdi-tomee/src/main/resources/META-INF/jboss-test-harness.properties
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/cdi-tomee/src/main/resources/META-INF/jboss-test-harness.properties?rev=1214539&r1=1214538&r2=1214539&view=diff
==============================================================================
--- openejb/trunk/openejb/tck/cdi-tomee/src/main/resources/META-INF/jboss-test-harness.properties (original)
+++ openejb/trunk/openejb/tck/cdi-tomee/src/main/resources/META-INF/jboss-test-harness.properties Wed Dec 14 23:18:15 2011
@@ -20,7 +20,8 @@ org.jboss.jsr299.tck.spi.Beans=org.apach
 org.jboss.jsr299.tck.spi.Contexts=org.apache.openejb.tck.cdi.tomee.ContextsImpl
 org.jboss.jsr299.tck.spi.EL=org.apache.openejb.tck.cdi.tomee.ELImpl
 org.jboss.testharness.spi.StandaloneContainers=org.apache.openejb.tck.impl.StandaloneContainersImpl
-org.jboss.testharness.spi.Containers=org.apache.openejb.tck.impl.ContainersImplTomEE
+# org.jboss.testharness.spi.Containers=org.apache.openejb.tck.impl.ContainersImplTomEE
+org.jboss.testharness.spi.Containers=org.apache.openejb.tck.impl.FullRestartContainer
 
 org.jboss.testharness.standalone=false
 org.jboss.testharness.api.TestLauncher=org.jboss.testharness.impl.runner.servlet.ServletTestLauncher

Modified: openejb/trunk/openejb/tck/tck-common/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/tck-common/pom.xml?rev=1214539&r1=1214538&r2=1214539&view=diff
==============================================================================
--- openejb/trunk/openejb/tck/tck-common/pom.xml (original)
+++ openejb/trunk/openejb/tck/tck-common/pom.xml Wed Dec 14 23:18:15 2011
@@ -53,9 +53,14 @@
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.openejb</groupId>
+      <groupId>${project.groupId}</groupId>
       <artifactId>openejb-client</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>webdeployer</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file

Added: openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java?rev=1214539&view=auto
==============================================================================
--- openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java (added)
+++ openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java Wed Dec 14 23:18:15 2011
@@ -0,0 +1,59 @@
+package org.apache.openejb.tck.impl;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.Flushable;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author rmannibucau
+ */
+public class AbstractContainers {
+    protected static final String tmpDir = System.getProperty("java.io.tmpdir");
+
+    protected void writeToFile(File file, InputStream archive) {
+        try {
+            FileOutputStream fos = new FileOutputStream(file);
+            byte[] buffer = new byte[4096];
+            int bytesRead;
+            while ((bytesRead = archive.read(buffer)) > -1) {
+                fos.write(buffer, 0, bytesRead);
+            }
+            Util.close(fos);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    protected static void delete(File file) {
+        if (file.isDirectory()) {
+            for (File f : file.listFiles()) {
+                delete(f);
+            }
+        }
+        if (!file.delete()) {
+            file.deleteOnExit();
+        }
+    }
+
+    protected static final class Util {
+        static void close(Closeable closeable) throws IOException {
+            if (closeable == null)
+                return;
+            try {
+                if (closeable instanceof Flushable) {
+                    ((Flushable) closeable).flush();
+                }
+            } catch (IOException e) {
+                // no-op
+            }
+            try {
+                closeable.close();
+            } catch (IOException e) {
+                // no-op
+            }
+        }
+    }
+}

Modified: openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java?rev=1214539&r1=1214538&r2=1214539&view=diff
==============================================================================
--- openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java (original)
+++ openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java Wed Dec 14 23:18:15 2011
@@ -16,17 +16,6 @@
  */
 package org.apache.openejb.tck.impl;
 
-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.util.Properties;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
 import org.apache.openejb.assembler.Deployer;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.client.RemoteInitialContextFactory;
@@ -36,14 +25,20 @@ import org.apache.openejb.loader.Options
 import org.jboss.testharness.api.DeploymentException;
 import org.jboss.testharness.spi.Containers;
 
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
 /**
  * @version $Rev$ $Date$
  */
-public class ContainersImplTomEE implements Containers {
+public class ContainersImplTomEE extends AbstractContainers implements Containers {
     private static int count = 0;
     private final RemoteServer server;
     private Deployer deployer = null;
-    private static final String tmpDir = System.getProperty("java.io.tmpdir");
     private Exception exception;
     private AppInfo appInfo;
     private File currentFile = null;
@@ -109,28 +104,6 @@ public class ContainersImplTomEE impleme
         return true;
     }
 
-    private void writeToFile(File file, InputStream archive) {
-        try {
-            FileOutputStream fos = new FileOutputStream(file);
-            byte[] buffer = new byte[4096];
-            int bytesRead = -1;
-            while ((bytesRead = archive.read(buffer)) > -1) {
-                fos.write(buffer, 0, bytesRead);
-            }
-            Util.close(fos);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private File getFile(String name) {
-        final File dir = new File(tmpDir, Math.random()+"");
-        dir.mkdir();
-        dir.deleteOnExit();
-
-        return new File(dir, name);
-    }
-
     @Override
     public DeploymentException getDeploymentException() {
         try {
@@ -165,15 +138,11 @@ public class ContainersImplTomEE impleme
         }
     }
 
-    private static void delete(File file) {
-        if (file.isDirectory()) {
-            for (File f : file.listFiles()) {
-                delete(f);
-            }
-        }
-        if (!file.delete()) {
-            file.deleteOnExit();
-        }
+    protected File getFile(String name) {
+        final File dir = new File(tmpDir, Math.random()+"");
+        dir.mkdir();
+        dir.deleteOnExit();
+        return new File(dir, name);
     }
 
     @Override
@@ -186,22 +155,4 @@ public class ContainersImplTomEE impleme
         System.out.println("Cleanup called");
         server.stop();
     }
-    private static final class Util {
-        static void close(Closeable closeable) throws IOException {
-            if (closeable == null)
-                return;
-            try {
-                if (closeable instanceof Flushable) {
-                    ((Flushable) closeable).flush();
-                }
-            } catch (IOException e) {
-                // no-op
-            }
-            try {
-                closeable.close();
-            } catch (IOException e) {
-                // no-op
-            }
-        }
-    }
 }

Added: openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java?rev=1214539&view=auto
==============================================================================
--- openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java (added)
+++ openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java Wed Dec 14 23:18:15 2011
@@ -0,0 +1,91 @@
+package org.apache.openejb.tck.impl;
+
+import org.apache.openejb.client.RemoteInitialContextFactory;
+import org.apache.openejb.config.RemoteServer;
+import org.apache.openejb.loader.Options;
+import org.apache.tomee.catalina.facade.ExceptionManagerFacade;
+import org.jboss.testharness.api.DeploymentException;
+import org.jboss.testharness.spi.Containers;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+/**
+ * flow:
+ * - copy file
+ * - start the server
+ * - stop the server
+ * - remove the file
+ */
+public class FullRestartContainer extends AbstractContainers implements Containers {
+    private static final File WEBAPP_DIR = new File(System.getProperty("openejb.home"), "webapps/");
+
+    private RemoteServer server;
+    private Exception exception;
+    private File currentFile;
+
+    @Override
+    public DeploymentException getDeploymentException() {
+        if (exception instanceof DeploymentException) {
+            return (DeploymentException) exception;
+        }
+        System.out.println("BADCAST");
+        return new DeploymentException("", exception);
+    }
+
+    @Override
+    public boolean deploy(InputStream archive, String name) throws IOException {
+        currentFile = new File(WEBAPP_DIR, name);
+        System.out.println(currentFile);
+        writeToFile(currentFile, archive);
+
+        server = new RemoteServer(20, true);
+        try {
+            server.start();
+        } catch (RuntimeException e) {
+            e.printStackTrace();
+            throw e;
+        }
+        return (exception = lookup().exception()) == null;
+    }
+
+    @Override
+    public void undeploy(String name) throws IOException {
+        server.destroy();
+        delete(currentFile);
+    }
+
+    @Override
+    public void setup() throws IOException {
+        // no-op
+    }
+
+    @Override
+    public void cleanup() throws IOException {
+        // no-op
+    }
+
+    private ExceptionManagerFacade lookup() {
+        final Options options = new Options(System.getProperties());
+        final Properties props = new Properties();
+        props.put(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName());
+        String port = System.getProperty("server.http.port");
+        if (port != null) {
+            System.out.println("provider url = " + "http://localhost:" + port + "/openejb/ejb");
+            props.put(Context.PROVIDER_URL, options.get(Context.PROVIDER_URL,"http://localhost:" + port + "/openejb/ejb"));
+        } else {
+            throw new RuntimeException("Please set the tomee port as a system property");
+        }
+
+        try {
+            InitialContext context = new InitialContext(props);
+            return (ExceptionManagerFacade) context.lookup("openejb/ExceptionManagerFacadeRemote");
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}

Added: openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacade.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacade.java?rev=1214539&view=auto
==============================================================================
--- openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacade.java (added)
+++ openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacade.java Wed Dec 14 23:18:15 2011
@@ -0,0 +1,11 @@
+package org.apache.tomee.catalina.facade;
+
+import javax.ejb.Remote;
+
+/**
+ * @author rmannibucau
+ */
+@Remote
+public interface ExceptionManagerFacade {
+    Exception exception();
+}

Added: openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java?rev=1214539&view=auto
==============================================================================
--- openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java (added)
+++ openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java Wed Dec 14 23:18:15 2011
@@ -0,0 +1,19 @@
+package org.apache.tomee.catalina.facade;
+
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.tomee.catalina.DeploymentExceptionManager;
+
+import javax.ejb.Singleton;
+import javax.ejb.TransactionManagement;
+import javax.ejb.TransactionManagementType;
+
+/**
+ * @author rmannibucau
+ */
+@Singleton(name = "openejb/ExceptionManagerFacade")
+@TransactionManagement(TransactionManagementType.BEAN)
+public class ExceptionManagerFacadeBean implements ExceptionManagerFacade {
+    public Exception exception() {
+        return SystemInstance.get().getComponent(DeploymentExceptionManager.class).getFirstException();
+    }
+}