[jboss-cvs] JBossAS SVN: r94012 - in projects/embedded/trunk: api/src/main/java and 16 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 24 21:37:46 EDT 2009


Author: ALRubinger
Date: 2009-09-24 21:37:45 -0400 (Thu, 24 Sep 2009)
New Revision: 94012

Added:
   projects/embedded/trunk/api/src/main/java/org/
   projects/embedded/trunk/api/src/main/java/org/jboss/
   projects/embedded/trunk/api/src/main/java/org/jboss/embedded/
   projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/
   projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/
   projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java
   projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java
   projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java
Removed:
   projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/incubation/
   projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java
   projects/embedded/trunk/testsuite/src/test/java/org/jboss/embedded/test/
Modified:
   projects/embedded/trunk/api/pom.xml
   projects/embedded/trunk/assembly/embedded-assembly.xml
   projects/embedded/trunk/assembly/pom.xml
   projects/embedded/trunk/build/pom.xml
   projects/embedded/trunk/core/pom.xml
   projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java
   projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java
   projects/embedded/trunk/testsuite-full-dep/pom.xml
   projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java
   projects/embedded/trunk/testsuite/pom.xml
   projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java
Log:
[EMB-50] Separation of Embedded components to support a JBOSS_HOME-backed run mode

Modified: projects/embedded/trunk/api/pom.xml
===================================================================
--- projects/embedded/trunk/api/pom.xml	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/api/pom.xml	2009-09-25 01:37:45 UTC (rev 94012)
@@ -27,13 +27,26 @@
   <properties>
 
     <!-- Versioning -->
+    <version.org.jboss.bootstrap_jboss.bootstrap.api.as>2.0.0-SNAPSHOT</version.org.jboss.bootstrap_jboss.bootstrap.api.as>
 
-
   </properties>
 
   <!-- Dependencies -->
   <dependencies>
 
+    <!-- org.jboss.bootstrap:jboss-bootstrap-api-as -->
+    <dependency>
+      <groupId>org.jboss.bootstrap</groupId>
+      <artifactId>jboss-bootstrap-api-as</artifactId>
+      <version>${version.org.jboss.bootstrap_jboss.bootstrap.api.as}</version>
+    </dependency>
+
+    <!-- org.jboss.tmpdpl:tmpdpl-impl-vdf -->
+    <dependency>
+      <groupId>org.jboss.tmpdpl</groupId>
+      <artifactId>tmpdpl-impl-vdf</artifactId>
+    </dependency>
+
   </dependencies>
 
 </project>

Copied: projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java (from rev 93960, projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java)
===================================================================
--- projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java	                        (rev 0)
+++ projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+  *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.embedded.api.server;
+
+import org.jboss.bootstrap.api.as.config.JBossASServerConfig;
+import org.jboss.bootstrap.api.as.server.JBossASBasedServer;
+import org.jboss.tmpdpl.api.container.Container;
+
+
+/**
+ * JBossASEmbeddedServer
+ *
+ * Contract of the JBoss Application Server as seen by clients 
+ * wishing to embed into an existing runtime
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public interface JBossASEmbeddedServer
+      extends
+         JBossASBasedServer<JBossASEmbeddedServer, JBossASServerConfig>,
+         Container
+{
+
+}

Added: projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java
===================================================================
--- projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java	                        (rev 0)
+++ projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.embedded.api.server;
+
+import org.jboss.bootstrap.api.as.server.JBossASServerFactory;
+
+/**
+ * JBossASEmbeddedServerFactory
+ * 
+ * Stateless factory used in constructing new {@link JBossASEmbeddedServer}
+ * instances.  Does not leak internals and allows the client compilation and 
+ * runtime classpath (application ClassLoader) to be free of the 
+ * implementation classes.
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public class JBossASEmbeddedServerFactory
+{
+
+   //-------------------------------------------------------------------------------------||
+   // Class Members ----------------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   /**
+    * The FQN of the default server implementation class to create
+    */
+   public static final String DEFAULT_SERVER_IMPL_CLASS_NAME = "org.jboss.embedded.core.server.JBossASEmbeddedServerImpl";
+
+   //-------------------------------------------------------------------------------------||
+   // Constructor ------------------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   /**
+    * Constructor, should not be used
+    * 
+    * @throws UnsupportedOperationException If invoked
+    */
+   private JBossASEmbeddedServerFactory()
+   {
+      // No access
+      throw new UnsupportedOperationException("No instances permitted");
+   }
+
+   //-------------------------------------------------------------------------------------||
+   // Factory Methods --------------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   /**
+    * Creates a JBossASEmbeddedServer from the default implementation class name
+    * {@link JBossASEmbeddedServerFactory#DEFAULT_SERVER_IMPL_CLASS_NAME}, using the 
+    * Thread Context ClassLoader.  The returned server will additionally be created using
+    * the TCCL.
+    * 
+    * @return The newly-created Server
+    */
+   public static JBossASEmbeddedServer createServer()
+   {
+      return createServer(SecurityActions.getTccl());
+   }
+
+   /**
+    * Creates a JBossASEmbeddedServer from the default implementation class name
+    * {@link JBossASEmbeddedServerFactory#DEFAULT_SERVER_IMPL_CLASS_NAME}, using the
+    * specified ClassLoader.  The returned server will additionally be created using
+    * the ClassLoader denoted.
+    * 
+    * @param cl The ClassLoader used to create the new server instance
+    * @throws IllegalArgumentException If the ClassLoader is null
+    * @return The newly-created Server 
+    */
+   public static JBossASEmbeddedServer createServer(final ClassLoader cl) throws IllegalArgumentException
+   {
+      try
+      {
+         return JBossASServerFactory.createServer(DEFAULT_SERVER_IMPL_CLASS_NAME, cl, JBossASEmbeddedServer.class);
+      }
+      catch (final InstantiationException ie)
+      {
+         // Should really only be encountered if the impl class name above is wrong, so don't expose
+         // this as a checked exception to the user, wrap in a runtime exception
+         throw new RuntimeException("Server instance could not be created", ie);
+      }
+   }
+
+}

Added: projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java
===================================================================
--- projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java	                        (rev 0)
+++ projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.embedded.api.server;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+/**
+ * SecurityActions
+ * 
+ * Utility class for security actions, so as to provide
+ * some centralization without leaking privileged actions
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+class SecurityActions
+{
+
+   //-------------------------------------------------------------------------------------||
+   // Constructor ------------------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   /**
+    * In place to prevent instantiation 
+    */
+   private SecurityActions()
+   {
+   }
+
+   //-------------------------------------------------------------------------------------||
+   // Utility Methods --------------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   /**
+    * Obtains the Thread Context ClassLoader
+    * 
+    * @return
+    */
+   static ClassLoader getTccl()
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+      {
+
+         public ClassLoader run()
+         {
+            // Return the TCCL
+            return Thread.currentThread().getContextClassLoader();
+         }
+
+      });
+   }
+}

Modified: projects/embedded/trunk/assembly/embedded-assembly.xml
===================================================================
--- projects/embedded/trunk/assembly/embedded-assembly.xml	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/assembly/embedded-assembly.xml	2009-09-25 01:37:45 UTC (rev 94012)
@@ -4,7 +4,7 @@
 -->
 <assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd">
-  <id>embedded</id>
+  <id>launcher</id>
   <formats>
     <format>jar</format>
   </formats>
@@ -12,38 +12,13 @@
   <dependencySets>
     <dependencySet>
       <unpack>true</unpack>
-      <unpackOptions>
-        <includes>
-          <include>org/jboss/bootstrap/spi/**</include>
-        </includes>
-      </unpackOptions>
       <includes>
-        <include>org.jboss.bootstrap:jboss-bootstrap-spi</include>
+        <include>org.jboss.bootstrap:jboss-bootstrap-api-as</include>
+        <include>org.jboss.bootstrap:jboss-bootstrap-api</include>
+        <include>org.jboss.embedded:jboss-embedded-api</include>
+        <include>org.jboss.tmpdpl:tmpdpl-api</include>
       </includes>
     </dependencySet>
-    <dependencySet>
-      <unpack>true</unpack>
-      <unpackOptions>
-        <includes>
-          <include>org/jboss/bootstrap/spi/as/config/JBossASConfigurationInitializer*</include>
-          <include>org/jboss/bootstrap/spi/as/config/JBossASServerConfig*</include>
-        </includes>
-      </unpackOptions>
-      <includes>
-        <include>org.jboss.bootstrap:jboss-bootstrap-spi-as</include>
-      </includes>
-    </dependencySet>
-    <dependencySet>
-      <unpack>true</unpack>
-      <unpackOptions>
-        <includes>
-          <include>org/jboss/bootstrap/spi/mc/config/MCBasedServerConfig*</include>
-        </includes>
-      </unpackOptions>
-      <includes>
-        <include>org.jboss.bootstrap:jboss-bootstrap-spi-mc</include>
-      </includes>
-    </dependencySet>
   </dependencySets>
   <fileSets>
     <fileSet>

Modified: projects/embedded/trunk/assembly/pom.xml
===================================================================
--- projects/embedded/trunk/assembly/pom.xml	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/assembly/pom.xml	2009-09-25 01:37:45 UTC (rev 94012)
@@ -62,35 +62,17 @@
   <!-- Dependencies -->
   <dependencies>
     
-    
-    <!--
-    
-    Note: jboss-bootstrap may NOT be leaked as a dependency
-    anywhere in this chain.  This will muss up the ClassLoading
-    needed to run in Embedded mode (as server will be created
-    using wrong ClassLoader)
-    
+    <!-- org.jboss.embedded:jboss-embedded-core -->
+    <!-- 
+    Don't export this dependency; mark as optional
      -->
-    
     <dependency>
-      <groupId>org.jboss.bootstrap</groupId>
-      <artifactId>jboss-bootstrap-impl-as</artifactId>
-      <optional>true</optional>
-    </dependency> 
-<!-- 
-    <dependency>
       <groupId>org.jboss.embedded</groupId>
       <artifactId>jboss-embedded-core</artifactId>
+      <optional>true</optional>
       <version>${version.org.jboss.embedded_jboss.embedded.core}</version>
-      - We cannot export the jboss-bootstrap dependency -
-      <exclusions>
-        <exclusion>
-            <groupId>org.jboss.bootstrap</groupId>
-            <artifactId>jboss-bootstrap-impl-as</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
- -->
+    </dependency> 
+
   </dependencies>
 
 </project>

Modified: projects/embedded/trunk/build/pom.xml
===================================================================
--- projects/embedded/trunk/build/pom.xml	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/build/pom.xml	2009-09-25 01:37:45 UTC (rev 94012)
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
+  <!--
   vi:ts=2:sw=2:expandtab:
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    
+
   <!-- Parent -->
   <parent>
     <groupId>org.jboss.jbossas</groupId>
@@ -23,23 +22,24 @@
   <name>JBossAS Embedded Build</name>
   <description>JBoss Application Server Embedded Build</description>
   <packaging>pom</packaging>
-  
+
   <!-- Properties -->
   <properties>
-  
+
     <!-- Versioning -->
     <version.junit_junit>4.6</version.junit_junit>
-    <version.org.jboss.shrinkwrap_shrinkwrap.impl.vfs>0.1.0-SNAPSHOT</version.org.jboss.shrinkwrap_shrinkwrap.impl.vfs>
+    <version.org.jboss.jbossas>5.2.0-SNAPSHOT</version.org.jboss.jbossas>
+    <version.org.jboss.shrinkwrap_shrinkwrap.impl.base>0.1.0-SNAPSHOT</version.org.jboss.shrinkwrap_shrinkwrap.impl.base>
     <version.org.jboss.tmpdpl_tmpdpl.impl.vdf>0.1.0-SNAPSHOT</version.org.jboss.tmpdpl_tmpdpl.impl.vdf>
-  
+
   </properties>
-  
+
   <!-- SCM -->
   <scm>
     <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/embedded/trunk</connection>
     <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/embedded/trunk</developerConnection>
     <url>http://anonsvn.jboss.org/repos/jbossas/projects/embedded/trunk</url>
-  </scm> 
+  </scm>
 
   <!-- Issues -->
   <issueManagement>
@@ -76,7 +76,7 @@
           <executable>${JAVA_HOME}/bin/javac</executable>
         </configuration>
       </plugin>
-      
+
       <!-- Surefire -->
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
@@ -89,9 +89,10 @@
             <include>**/*TestSuite.java</include>
           </includes>
           <forkMode>always</forkMode>
-          <!-- Required to bump the space for relective data like
-               classes, methods, etc.  EMB-41
--->
+          <!--
+            Required to bump the space for relective data like classes,
+            methods, etc. EMB-41
+          -->
           <argLine>-XX:MaxPermSize=256m</argLine>
         </configuration>
       </plugin>
@@ -104,8 +105,8 @@
           <tagBase>https://svn.jboss.org/repos/jbossas/projects/embedded/tags</tagBase>
         </configuration>
       </plugin>
-      
-     <!-- Enforce Maven Environment -->
+
+      <!-- Enforce Maven Environment -->
       <plugin>
         <artifactId>maven-enforcer-plugin
         </artifactId>
@@ -137,58 +138,72 @@
   <dependencyManagement>
     <dependencies>
 
+      <!-- JUnit -->
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${version.junit_junit}</version>
         <scope>test</scope>
       </dependency>
-      
+
+      <!-- Deployable Containers (groupId and artifactId will change) -->
       <dependency>
         <groupId>org.jboss.tmpdpl</groupId>
         <artifactId>tmpdpl-impl-vdf</artifactId>
         <version>${version.org.jboss.tmpdpl_tmpdpl.impl.vdf}</version>
       </dependency>
 
+      <!-- ShrinkWrap (Declarative Archives) -->
       <dependency>
         <groupId>org.jboss.shrinkwrap</groupId>
-        <artifactId>shrinkwrap-impl-vfs</artifactId>
-        <version>${version.org.jboss.shrinkwrap_shrinkwrap.impl.vfs}</version>
+        <artifactId>shrinkwrap-impl-base</artifactId>
+        <version>${version.org.jboss.shrinkwrap_shrinkwrap.impl.base}</version>
       </dependency>
+
+      <!-- AS modules and 3rdparty deps -->
+      <dependency>
+        <groupId>org.jboss.jbossas</groupId>
+        <artifactId>jboss-as-build</artifactId>
+        <version>${version.org.jboss.jbossas}</version>
+        <type>pom</type>
+      </dependency>
+
+      <!-- JBossAS Client assembly
       
-      <!-- 
-      TODO: Remove
-      This is just until all deps for bootstrap are updated
+      This one is for runtime.  We really want just compile-time.
+      
+      Plus it leaks in A LOT.
+       
       <dependency>
-        <groupId>org.jboss.bootstrap</groupId>
+        <groupId>org.jboss.jbossas</groupId>
+        <artifactId>jboss-as-client</artifactId>
+        <version>${version.org.jboss.jbossas}</version>
+        <scope>test</scope>
+        <type>pom</type>
+      </dependency>
+      
+      -->
+
+      <!--
+        TODO: Remove This is just until all deps for bootstrap are
+        updated <dependency> <groupId>org.jboss.bootstrap</groupId>
         <artifactId>jboss-bootstrap-impl-as</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-      </dependency>
-            <dependency>
+        <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
         <groupId>org.jboss.bootstrap</groupId>
         <artifactId>jboss-bootstrap-impl-mc</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-      </dependency>
-            <dependency>
+        <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
         <groupId>org.jboss.bootstrap</groupId>
         <artifactId>jboss-bootstrap-impl-base</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-      </dependency>
-            <dependency>
+        <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
         <groupId>org.jboss.bootstrap</groupId>
         <artifactId>jboss-bootstrap-spi</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-      </dependency>
-            <dependency>
+        <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
         <groupId>org.jboss.bootstrap</groupId>
         <artifactId>jboss-bootstrap-spi-as</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-      </dependency>
-            <dependency>
+        <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
         <groupId>org.jboss.bootstrap</groupId>
         <artifactId>jboss-bootstrap-spi-mc</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-      </dependency>
+        <version>2.0.0-SNAPSHOT</version> </dependency>
       -->
 
     </dependencies>

Modified: projects/embedded/trunk/core/pom.xml
===================================================================
--- projects/embedded/trunk/core/pom.xml	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/pom.xml	2009-09-25 01:37:45 UTC (rev 94012)
@@ -27,80 +27,36 @@
   <properties>
 
     <!-- Versioning -->
-    <version.org.jboss.jbossas>5.2.0-SNAPSHOT</version.org.jboss.jbossas>
+    <version.org.jboss.embedded_jboss.embedded.api>0.1.0-SNAPSHOT
+    </version.org.jboss.embedded_jboss.embedded.api>
+    <version.org.jboss.bootstrap_jboss.bootstrap.impl.as>2.0.0-alpha-4
+    </version.org.jboss.bootstrap_jboss.bootstrap.impl.as>
 
-    <!--
-      TODO: Properties below this line should be ultimately removed as
-      these dependencies should be provided as part of the AS dependency
-      chain
-    -->
-
-    <version.jboss.web>2.1.3.GA</version.jboss.web>
-    <version.jboss.messaging>1.4.3.GA</version.jboss.messaging>
-    <version.org.slf4j_slf4j.jboss.logging>1.0.2.GA</version.org.slf4j_slf4j.jboss.logging>
-
   </properties>
 
   <!-- Dependencies -->
   <dependencies>
 
+    <!-- org.jboss.embedded:jboss.embedded.api -->
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
+      <groupId>org.jboss.embedded</groupId>
+      <artifactId>jboss-embedded-api</artifactId>
+      <version>${version.org.jboss.embedded_jboss.embedded.api}</version>
     </dependency>
 
+    <!-- org.jboss.bootstrap:jboss-bootstrap-impl-as -->
     <dependency>
-      <groupId>org.jboss.tmpdpl</groupId>
-      <artifactId>tmpdpl-impl-vdf</artifactId>
+      <groupId>org.jboss.bootstrap</groupId>
+      <artifactId>jboss-bootstrap-impl-as</artifactId>
+      <version>${version.org.jboss.bootstrap_jboss.bootstrap.impl.as}</version>
     </dependency>
 
-    <!-- AS modules and 3rdparty deps -->
+    <!-- JUnit -->
     <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-build</artifactId>
-      <version>${version.org.jboss.jbossas}</version>
-      <type>pom</type>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
     </dependency>
 
-    <!--
-      Deps in the runtime of AS but *not* part of the AS dependency tree
-
-      TODO: Get these represented by the AS build dependency chain
-      JBAS-7267
-    -->
-
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-management</artifactId>
-      <version>${version.org.jboss.jbossas}</version>
-      <classifier>jsr77</classifier>
-    </dependency>
-    <dependency>
-      <groupId>jboss.web</groupId>
-      <artifactId>jsp-api</artifactId>
-      <version>${version.jboss.web}</version>
-    </dependency>
-    <dependency>
-      <groupId>jboss.web</groupId>
-      <artifactId>el-api</artifactId>
-      <version>${version.jboss.web}</version>
-    </dependency>
-    <dependency>
-      <groupId>jboss.web</groupId>
-      <artifactId>jasper-jdt</artifactId>
-      <version>${version.jboss.web}</version>
-    </dependency>
-    <dependency>
-      <groupId>jboss.messaging</groupId>
-      <artifactId>jboss-messaging</artifactId>
-      <version>${version.jboss.messaging}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss.slf4j</groupId>
-      <artifactId>slf4j-jboss-logging</artifactId>
-      <version>${version.org.slf4j_slf4j.jboss.logging}</version>
-    </dependency>
-
   </dependencies>
 
 </project>

Modified: projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java
===================================================================
--- projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -21,9 +21,9 @@
  */
 package org.jboss.embedded.core.lifecycle;
 
-import org.jboss.bootstrap.spi.lifecycle.LifecycleEventException;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleEventHandler;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
+import org.jboss.bootstrap.api.lifecycle.LifecycleEventException;
+import org.jboss.bootstrap.api.lifecycle.LifecycleEventHandler;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
 import org.jboss.logging.Logger;
 
 /**

Deleted: projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java
===================================================================
--- projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -1,43 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
-  *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.embedded.core.server;
-
-import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
-import org.jboss.bootstrap.spi.as.server.JBossASBasedServer;
-import org.jboss.tmpdpl.api.container.Container;
-
-/**
- * JBossASEmbeddedServer
- *
- * Contract of the JBoss Application Server as seen by clients 
- * wishing to embed into an existing runtime
- *
- * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
- * @version $Revision: $
- */
-public interface JBossASEmbeddedServer
-      extends
-         JBossASBasedServer<JBossASEmbeddedServer, JBossASServerConfig>,
-         Container
-{
-
-}

Modified: projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java
===================================================================
--- projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -27,15 +27,16 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.jboss.bootstrap.api.as.config.JBossASServerConfig;
+import org.jboss.bootstrap.api.lifecycle.LifecycleEventHandler;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
 import org.jboss.bootstrap.impl.as.config.BasicJBossASServerConfig;
 import org.jboss.bootstrap.impl.as.server.AbstractJBossASServerBase;
-import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleEventHandler;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.deployers.client.spi.Deployment;
 import org.jboss.deployers.client.spi.main.MainDeployer;
+import org.jboss.embedded.api.server.JBossASEmbeddedServer;
 import org.jboss.embedded.core.lifecycle.IgnoreXbUnorderedSequenceLifecycleEventHandler;
 import org.jboss.embedded.core.lifecycle.InitLoggingManagerLifecycleEventHandler;
 import org.jboss.embedded.core.lifecycle.SetRmiHostnameLifecycleEventHandler;

Modified: projects/embedded/trunk/testsuite/pom.xml
===================================================================
--- projects/embedded/trunk/testsuite/pom.xml	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite/pom.xml	2009-09-25 01:37:45 UTC (rev 94012)
@@ -25,6 +25,9 @@
 
     <!-- Versioning -->
     <version.org.jboss.embedded_jboss.embedded.assembly>0.1.0-SNAPSHOT</version.org.jboss.embedded_jboss.embedded.assembly>
+    <version.org.apache.httpcomponents_httpclient>4.0-beta2</version.org.apache.httpcomponents_httpclient>
+    <version.org.jboss.javaee_jboss.jms.api>1.1.0.GA</version.org.jboss.javaee_jboss.jms.api>
+    <version.org.jboss.javaee_jboss.persistence.api>3.0.0.CR1</version.org.jboss.javaee_jboss.persistence.api>
 
   </properties>
 
@@ -35,27 +38,50 @@
       <groupId>org.jboss.embedded</groupId>
       <artifactId>jboss-embedded-assembly</artifactId>
       <version>${version.org.jboss.embedded_jboss.embedded.assembly}</version>
-      <classifier>embedded</classifier>
+      <classifier>launcher</classifier>
       <scope>test</scope>
     </dependency>
- 
+
     <dependency>
-      <groupId>org.jboss.logging</groupId>
-      <artifactId>jboss-logging-log4j</artifactId>
+      <groupId>org.jboss.embedded</groupId>
+      <artifactId>jboss-embedded-testsuite-fulldep</artifactId>
+      <classifier>tests</classifier>
+      <version>0.1.0-SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.shrinkwrap</groupId>
+      <artifactId>shrinkwrap-impl-base</artifactId>
       <scope>test</scope>
     </dependency>
 
+    <!-- Apache HttpClient -->
     <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <version>${version.org.apache.httpcomponents_httpclient}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
-    
+
     <dependency>
-      <groupId>gnu-getopt</groupId>
-      <artifactId>getopt</artifactId>
-      <version>1.0.13</version>
+      <groupId>org.jboss.javaee</groupId>
+      <artifactId>jboss-jms-api</artifactId>
+      <version>${version.org.jboss.javaee_jboss.jms.api}</version>
+      <scope>test</scope>
     </dependency>
-    
+
+    <dependency>
+      <groupId>org.jboss.javaee</groupId>
+      <artifactId>jboss-persistence-api</artifactId>
+      <version>${version.org.jboss.javaee_jboss.persistence.api}</version>
+      <scope>test</scope>
+    </dependency>
+
   </dependencies>
 
 </project>

Modified: projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java
===================================================================
--- projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -19,41 +19,76 @@
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
+//FIXME We have to be in org.jboss due to JMX getPackage in AS 
 package org.jboss;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.InputStreamReader;
+import java.net.URI;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.logging.Logger;
 
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueConnectionFactory;
+import javax.jms.QueueSender;
+import javax.jms.QueueSession;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.jboss.bootstrap.spi.as.config.JBossASConfigurationInitializer;
-import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
-import org.jboss.bootstrap.spi.factory.ServerFactory;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
-import org.jboss.bootstrap.spi.server.Server;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.utils.URIUtils;
+import org.apache.http.client.utils.URLEncodedUtils;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
+import org.jboss.embedded.api.server.JBossASEmbeddedServer;
+import org.jboss.embedded.api.server.JBossASEmbeddedServerFactory;
+import org.jboss.embedded.testsuite.fulldep.ejb3.entity.Jbossian;
+import org.jboss.embedded.testsuite.fulldep.ejb3.entity.JbossianRegistrarBean;
+import org.jboss.embedded.testsuite.fulldep.ejb3.entity.JbossianRegistrarLocalBusiness;
+import org.jboss.embedded.testsuite.fulldep.ejb3.mdb.MessageStoringMdb;
+import org.jboss.embedded.testsuite.fulldep.ejb3.slsb.OutputBean;
+import org.jboss.embedded.testsuite.fulldep.ejb3.slsb.OutputLocalBusiness;
+import org.jboss.embedded.testsuite.fulldep.servlet.JspForwardingServlet;
+import org.jboss.shrinkwrap.api.JavaArchiveFactory;
+import org.jboss.shrinkwrap.api.Path;
+import org.jboss.shrinkwrap.api.WebArchiveFactory;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.impl.base.path.BasicPath;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
- * ServerUnitTestCase
+ * ServerTestCase
  * 
- * Don't even begin to consider this a real test :D
- * It's essentially all the logic of what Embedded Core will
- * provide in one unified place.
+ * The beginnings of the prototype for an end-user view 
+ * of the Embedded Server.  Tests here should include lifecycle
+ * to start/stop the server, and checks to ensure that
+ * subsystems are working as expected.
  * 
  * This is the initial prototype for Embedded AS to run 
- * with a minimal AS Dependency Set upon the Application
- * ClassLoader.  The deps are defined by the Embedded assembly,
- * which closely matches run.jar in the traditional
- * AS setup.
- * 
- * Most of the logic in this class has been pulled from AS Main.
- * 
- * We also have a series of nasty test-only hacks here until
- * everything's past the prototyping phase and in some fully-working
- * order.
+ * with a full AS Dependency Set upon the Application
+ * ClassLoader.  The deps are defined by pom.xml and its parents.
  *
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
@@ -66,28 +101,89 @@
    //-------------------------------------------------------------------------------||
 
    /**
+    * Logger
+    */
+   private static final Logger log = Logger.getLogger(ServerTestCase.class.getName());
+
+   /**
     * The server instance
     */
-   private static Server<?, ?> server;
+   private static JBossASEmbeddedServer server;
 
-   private static final String DEFAULT_AS_SERVER_IMPL_CLASS_NAME = "org.jboss.bootstrap.impl.as.server.JBossASServerImpl";
+   /**
+    * Path, relative to the resources base, of a test web.xml
+    */
+   private static final String PATH_ACTUAL_WEB_XML = "webxml/servletForwardingToJsp.xml";
 
-   @Deprecated
-   //FIXME Hack
-   private static final String HARDCODED_JBOSS_HOME = "/home/alrubinger/business/jboss/wc/jbossas/branches/Branch_5_x/build/output/jboss-5.2.0.Beta/";
+   /**
+    * Filename of a test queue *-service.xml
+    */
+   private static final String FILENAME_QUEUE_SERVICE_XML = "mdb-queue-service.xml";
 
    /**
-    * Stupid ol' boot library list
+    * Path, relative to the resources base, of a test queue *-service.xml
     */
+   private static final String PATH_QUEUE_SERVICE_XML = "queues/" + FILENAME_QUEUE_SERVICE_XML;
+
+   /**
+    * Path, relative to the resources base, of a test JSP
+    */
+   private static final String PATH_JSP = "jsp/requestParamEcho.jsp";
+
+   /**
+    * Path, relative to the resources base, of a persistence.xml file for Embedded DataSource
+    */
+   private static final String PATH_RESOURCE_PERSISTENCE_XML_EMBEDDED = "persistence/persistenceEmbedded.xml";
+
+   /**
+    * Path, relative to the deployment root, of a persistence.xml file
+    */
+   private static final String PATH_DESTINATION_PERSISTENCE_XML = "persistence.xml";
+
+   /**
+    * Path, relative to the resources base, of the directory containing DataSource resources
+    */
+   private static final String PATH_RESOURCE_DS_XMLs = "datasources/";
+
+   /**
+    * Filename of the Embedded DataSource deployment XML
+    */
+   private static final String FILENAME_EMBEDDED_DS = "embedded-ds.xml";
+
+   /**
+    * Path, relative to the resources base, of the directory containing DataSource resources
+    */
+   private static final String PATH_RESOURCE_DS_XML_EMBEDDED = PATH_RESOURCE_DS_XMLs + FILENAME_EMBEDDED_DS;
+
+   /**
+    * Separator character within archives
+    */
+   private static final char SEPARATOR = '/';
+
+   /**
+    * The JNDI Context
+    */
+   private static Context NAMING_CONTEXT;
+
+   /**
+    * Name of the Queue Connection Factory in JNDI
+    */
+   private static final String JNDI_NAME_CONNECTION_FACTORY = "ConnectionFactory";
+
+   /**
+    * JNDI name suffix appended to local business EJB3 views
+    */
+   private static final String JNDI_SUFFIX_LOCAL_BUSINESS = "/local";
+   
+   
+   //FIXME Remove this
    @Deprecated
-   //FIXME We need to have the endorsed libs here?  Why not accepted from java.endorsed.dirs?
-   private static final String[] DEFAULT_BOOT_LIBRARY_LIST =
+   public static final String[] DEFAULT_BOOT_LIBRARY_LIST =
    {
          // Concurrent
          "concurrent.jar",
          // Logging
-         "log4j-boot.jar",
-         "jboss-logging-spi.jar",
+         "log4j-boot.jar", "jboss-logging-spi.jar",
          "jboss-logging-log4j.jar",
          "jboss-logging-jdk.jar",
          "jboss-logmanager.jar",
@@ -97,127 +193,371 @@
          "jboss-xml-binding.jar",
          // Bootstrap
          "jboss-bootstrap-spi.jar", "jboss-bootstrap-spi-as.jar", "jboss-bootstrap-spi-mc.jar",
-         "jboss-bootstrap-impl-base.jar",
-         "jboss-bootstrap-impl-as.jar",
-         "jboss-bootstrap-impl-mc.jar",
+         "jboss-bootstrap-impl-base.jar", "jboss-bootstrap-impl-as.jar",
+         "jboss-bootstrap-impl-mc.jar","jboss-bootstrap-api-as.jar","jboss-bootstrap-api-mc.jar",
+         "jboss-bootstrap-api.jar",
          // Microcontainer
          "javassist.jar", "jboss-reflect.jar", "jboss-mdr.jar", "jboss-dependency.jar", "jboss-kernel.jar",
-         "jboss-metatype.jar",
-         "jboss-managed.jar",
+         "jboss-metatype.jar", "jboss-managed.jar",
          // Fixme ClassLoading
          "jboss-vfs.jar", "jboss-classloading-spi.jar", "jboss-classloader.jar", "jboss-classloading.jar",
          "jboss-classloading-vfs.jar",
          // Fixme aop
-         "jboss-aop.jar", "jboss-aop-mc-int.jar", "trove.jar",
-         // Endorsed
-         "endorsed/jaxb-api.jar", "endorsed/xercesImpl.jar", "endorsed/activation.jar", "endorsed/jaxb-api.jar",
-         "endorsed/resolver.jar", "endorsed/serializer.jar", "endorsed/stax-api.jar", "endorsed/xalan.jar"};
+         "jboss-aop.jar", "jboss-aop-mc-int.jar", "trove.jar",};
 
+
    //-------------------------------------------------------------------------------||
-   // Tests ------------------------------------------------------------------------||
+   // Lifecycle --------------------------------------------------------------------||
    //-------------------------------------------------------------------------------||
 
    /**
-    * Ensures that the server reports as running
+    * Starts up the Application Server.  Relies upon either Environment
+    * Variable "JBOSS_HOME" or System Property "jboss.home" being set, with 
+    * precedence to the system property
     */
-   @Test
-   public void testServerStart() throws Throwable
+   @BeforeClass
+   public static void startEmbedddedASAndSetNamingContext() throws Exception
    {
-      System.setProperty("xb.builder.useUnorderedSequence", Boolean.TRUE.toString());
-      System.setProperty("java.rmi.server.hostname", "localhost");
 
-      final String propKeyJBossasBindAddress = JBossASServerConfig.PROP_KEY_JBOSSAS_BIND_ADDRESS;
-      final String defaultBindAddress = "127.0.0.1";
-      System.setProperty(propKeyJBossasBindAddress, defaultBindAddress);
+      final Set<URL> urls = new HashSet<URL>();
+      final String jbossHome = System.getenv("JBOSS_HOME");
+      if (jbossHome == null || jbossHome.length() == 0)
+      {
+         throw new IllegalStateException("JBOSS_HOME is not set");
+      }
+      log.info("JBOSS_HOME: " + jbossHome);
+      final File jbossHomeFile = new File(jbossHome);
+      final URL jbossHomeUrl = jbossHomeFile.toURI().toURL();
+      final URL jbossLib = new URL(jbossHomeUrl, "lib/");
+      final URL jbossBin = new URL(jbossHomeUrl, "bin/");
+      log.info("JBOSS Lib: " + jbossLib);
+      
+      
+      final File libDir = new File(jbossLib.toURI());
+//      final File[] libs = libDir.listFiles();
+//      for (final File lib : libs)
+//      {
+//         urls.add(lib.toURI().toURL());
+//      }
+      
+      for(final String libName:DEFAULT_BOOT_LIBRARY_LIST)
+      {
+         urls.add(new URL(jbossLib,libName));
+      }
+      final URL runJar = new URL(jbossBin,"run.jar");
+      urls.add(runJar);
+      
+      final URL[] urlarray = urls.toArray(new URL[]{});
+      
+      final URLClassLoader urlcl = new URLClassLoader(urls.toArray(new URL[]
+      {}));
+      log.info("URLs: " + urls);
+      log.info("Number of URLs: " + urlarray.length);
+      
+      // Set TCCL to the URLCL
+      final ClassLoader oldCl = SecurityActions.getThreadContextClassLoader();
+      SecurityActions.setThreadContextClassLoader(urlcl);
+      
+      final URL[] roundtripURls = urlcl.getURLs();
+      log.info("Number of URLs: " + roundtripURls.length);
+//      final String className="org.jboss.bootstrap.impl.as.server.AbstractJBossASServerBase";
+      final String className = "org.jboss.bootstrap.impl.mc.server.AbstractMCServerBase";
+      Class<?> clazz = Class.forName(className, false, urlcl);
+      ClassLoader loading = clazz.getClassLoader();
+      log.info("Got:"+clazz + " via: " + loading + ", tried via: " + urlcl);
 
-      // Initialize the JDK logmanager
-      String name = System.getProperty("java.util.logging.manager");
-      if (name == null)
+      // Make Server (will pull JBOSS_HOME from env var or sys prop)
+      server = JBossASEmbeddedServerFactory.createServer(urlcl);
+
+      try
       {
-         System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
+         log.info("Created: " + server);
+
+         // Start
+         log.info("Starting Server: " + server);
+         server.start();
+         log.info("...started.");
+
+         // Set Naming Context
+         NAMING_CONTEXT = new InitialContext();
       }
+      finally
+      {
+         SecurityActions.setThreadContextClassLoader(oldCl);
+      }
+   }
 
-      final String jbossHome = HARDCODED_JBOSS_HOME;
-      final String jbossLib = jbossHome + "lib";
+   /**
+    * Shuts down the Application Server after the suite ends
+    */
+   @AfterClass
+   public static void stopEmbeddedAS() throws Exception
+   {
+      // If exists and started
+      if (server != null && server.getState().equals(LifecycleState.STARTED))
+      {
+         // Shutdown
+         log.info("Shutting down server: " + server);
+         server.shutdown();
+      }
 
-      final Set<URL> urls = new HashSet<URL>();
+   }
 
-      for (String filename : DEFAULT_BOOT_LIBRARY_LIST)
+   //-------------------------------------------------------------------------------||
+   // Tests ------------------------------------------------------------------------||
+   //-------------------------------------------------------------------------------||
+
+   /**
+    * Tests EJB3 Stateless Session Beans via a virtual archive
+    * deployment
+    */
+   @Test
+   public void testSlsb() throws Exception
+   {
+      // Log
+      log.info("testSlsb");
+
+      // Make a deployment
+      final String name = "slsb.jar";
+      final JavaArchive archive = JavaArchiveFactory.create(name).addClasses(OutputBean.class,
+            OutputLocalBusiness.class);
+      log.info(archive.toString(true));
+      // Deploy
+      server.deploy(archive);
+
+      // Test
+      final OutputLocalBusiness bean = (OutputLocalBusiness) NAMING_CONTEXT.lookup(OutputBean.class.getSimpleName()
+            + JNDI_SUFFIX_LOCAL_BUSINESS);;
+      final String output = bean.getOutput();
+      log.info("Got output: " + output);
+      Assert.assertEquals(OutputLocalBusiness.OUTPUT, output);
+
+      // Undeploy
+      server.undeploy(archive);
+
+   }
+
+   /**
+    * Tests deployment of a virtual WAR containing a servlet 
+    * and JSP.
+    * 
+    * The Servlet will forward to the JSP path denoted by request param
+    * "jsp".  The JSP will echo the value of request param "echo".
+    * 
+    * @throws Exception
+    */
+   @Test
+   public void testWarServletJsp() throws Exception
+   {
+      // Log
+      log.info("testWarServletJsp");
+
+      // Make a deployment
+      final String appName = "testServletJsp";
+      final String name = appName + ".war";
+      final Class<?> servletClass = JspForwardingServlet.class;
+      final WebArchive archive = WebArchiveFactory.create(name);
+      final Path targetPathWebXml = new BasicPath("web.xml");
+      archive.addWebResource(targetPathWebXml, PATH_ACTUAL_WEB_XML).addResource(PATH_JSP).addClass(servletClass);
+      log.info(archive.toString(true));
+
+      // Deploy
+      server.deploy(archive);
+
+      // Get an HTTP Client
+      final HttpClient client = new DefaultHttpClient();
+
+      // Make an HTTP Request
+      final String echoValue = "EmbeddedBiatch";
+      final List<NameValuePair> params = new ArrayList<NameValuePair>();
+      params.add(new BasicNameValuePair("jsp", PATH_JSP));
+      params.add(new BasicNameValuePair("echo", echoValue));
+      final URI uri = URIUtils.createURI("http", "localhost", 8080, appName + SEPARATOR + servletClass.getSimpleName(),
+            URLEncodedUtils.format(params, "UTF-8"), null);
+      final HttpGet request = new HttpGet(uri);
+
+      // Execute the request
+      log.info("Executing request to: " + request.getURI());
+      final HttpResponse response = client.execute(request);
+      final HttpEntity entity = response.getEntity();
+      if (entity == null)
       {
-         final File bootLibFile = new File(jbossLib, filename);
-         if (!bootLibFile.exists())
-         {
-            System.out.println("WARNING: Could not find expected boot lib " + bootLibFile);
-         }
-         final URL bootLibUrl = bootLibFile.toURI().toURL();
-         urls.add(bootLibUrl);
+         TestCase.fail("Request returned no entity");
       }
 
-      /*
-       * Set boot log directory
-       */
-      final String sysPropBootLogDir = "jboss.boot.server.log.dir";
-      final String sysPropLogDir = JBossASServerConfig.PROP_KEY_JBOSSAS_SERVER_LOG_DIR;
-      String serverName = System.getProperty(JBossASServerConfig.PROP_KEY_JBOSSAS_SERVER_NAME);
-      if (serverName == null || serverName.length() == 0)
+      // Read the result, ensure it's what we're expecting (should be the value of request param "echo")
+      final BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
+      final String line = reader.readLine();
+      log.info("Got response: " + line);
+      Assert.assertEquals(echoValue, line);
+
+      // Undeploy
+      server.undeploy(archive);
+   }
+
+   /**
+    * Tests deployment of a JMS Queue with EJB3 MDB Listener
+    * 
+    * The MDB will simply store the text of the message in a publicly-accessible
+    * static field
+    * 
+    * @throws Exception
+    */
+   @Test
+   public void testJmsAndMdb() throws Exception
+   {
+      // Log
+      log.info("testJmsAndMdb");
+
+      // Create a virtual archive for the MDB deployment
+      final String name = "jms-mdb-test.jar";
+      final JavaArchive archive = JavaArchiveFactory.create(name);
+      final Path queuesTargetPath = new BasicPath(FILENAME_QUEUE_SERVICE_XML);
+      archive.addClass(MessageStoringMdb.class).addResource(queuesTargetPath, PATH_QUEUE_SERVICE_XML);
+
+      // Deploy
+      log.info(archive.toString(true));
+      server.deploy(archive);
+
+      // Define a String message to send
+      final String message = "From in-JVM Test Message";
+
+      // Send the message
+      this.sendTextMessageToQueue(message, MessageStoringMdb.NAME_QUEUE);
+
+      // Wait on the MDB to process
+      try
       {
-         serverName = JBossASConfigurationInitializer.VALUE_SERVER_NAME_DEFAULT;
+         MessageStoringMdb.BARRIER.await(10, TimeUnit.SECONDS);
       }
-      final String manualBootLogDir = System.getProperty(sysPropBootLogDir);
-      final String manualLogDir = System.getProperty(sysPropLogDir);
-      // If nothing's been explicitly specified
-      if (manualBootLogDir == null && manualLogDir == null)
+      catch (final InterruptedException e)
       {
-         // We default it
-         final File jbossHomeFile = new File(jbossHome);
-         final URL jbossHomeUrl = jbossHomeFile.toURI().toURL();
-         final URL serverLog = new URL(jbossHomeUrl, "server/" + serverName + "/log/");
-         final File serverLogFile = new File(serverLog.toURI());
-         final String serverLogString = serverLogFile.getAbsolutePath();
-         System.setProperty(sysPropBootLogDir, serverLogString);
+         // Clear the flag
+         Thread.interrupted();
+         // Throw up
+         throw e;
       }
-      // If we've got a manual log dir, use it
-      else if (manualLogDir != null)
+      catch (final TimeoutException e)
       {
-         System.setProperty(sysPropBootLogDir, manualLogDir);
+         TestCase.fail("The MDB did not process the message in the allotted time");
       }
 
-      final URL[] urlArray = urls.toArray(new URL[]
-      {});
+      // Get the contents of the String from the MDB
+      final String received = MessageStoringMdb.LAST_MESSAGE_CONTENTS;
 
-      final Thread currentThread = Thread.currentThread();
-      final ClassLoader oldCl = currentThread.getContextClassLoader();
+      // Ensure equal
+      Assert.assertEquals("The test message received was not as expected", message, received);
 
-      final ClassLoader loadingCl = new URLClassLoader(urlArray, oldCl);
+      // Undeploy
+      server.undeploy(archive);
 
-      // Make Server
-      server = ServerFactory.createServer(DEFAULT_AS_SERVER_IMPL_CLASS_NAME, loadingCl);
+   }
 
-      // Get out the default configuration
-      // This cast to object first is to workaround the JDK Bug: http://bugs.sun.com/view_bug.do?bug_id=6548436
-      final Object jdk6Bug6548436Hack = (Object) server.getConfiguration();
-      JBossASServerConfig config = (JBossASServerConfig) jdk6Bug6548436Hack;
+   /**
+    * Tests deployment of a JCA DataSource and EJB3 Entity Bean (JPA)
+    * 
+    * A test SLSB will also be used to create a few rows in the DB, 
+    * then obtain all.
+    * 
+    * @throws Exception
+    */
+   @Test
+   public void testDataSourceAndEntity() throws Exception
+   {
+      // Log
+      log.info("testDataSourceAndEntity");
 
-      // Set JBOSS_HOME
-      config.jbossHome(jbossHome);
+      // Create a virtual archive for DS, persistence.xml, Entity, and SLSB
+      final String name = "datasource-entity-test.jar";
+      final Path targetDsPath = new BasicPath(FILENAME_EMBEDDED_DS); //TODO Use factory when available
+      final Path targetPersistencePath = new BasicPath(PATH_DESTINATION_PERSISTENCE_XML); //TODO Use factory when available
+      final JavaArchive archive = JavaArchiveFactory.create(name);
+      archive.addClasses(Jbossian.class, JbossianRegistrarLocalBusiness.class, JbossianRegistrarBean.class)
+            .addResource(targetDsPath, PATH_RESOURCE_DS_XML_EMBEDDED).addManifestResource(targetPersistencePath,
+                  PATH_RESOURCE_PERSISTENCE_XML_EMBEDDED);
 
-      currentThread.setContextClassLoader(loadingCl);
-      try
-      {
-         // Start
-         server.start();
+      // Deploy
+      log.info(archive.toString(true));
+      server.deploy(archive);
 
-         final LifecycleState state = server.getState();
-         final LifecycleState expected = LifecycleState.STARTED;
-         TestCase.assertEquals("The server is not reporting as started", expected, state);
+      // Make some JBossians
+      final Jbossian jgreene = new Jbossian("Jason T. Greene", "AS Hole", 12);
+      final Jbossian jpederse = new Jbossian("Jesper Pedersen", "Professional Tattletale", 21);
+      final Jbossian dmlloyd = new Jbossian("David M. Lloyd", "???????", 15);
+      final Jbossian wolfc = new Jbossian("Carlo de Wolf", "Superlead", 13);
+      final Jbossian alr = new Jbossian("Andew Lee Rubinger", "The New Fluery", 58);
+      final Jbossian asaldhan = new Jbossian("Anil Saldhana", "Karma Police", 23);
 
-         // Shutdown
-         server.shutdown();
+      // Get an SLSB to interact w/ the DB
+      final JbossianRegistrarLocalBusiness slsb = (JbossianRegistrarLocalBusiness) NAMING_CONTEXT
+            .lookup(JbossianRegistrarBean.class.getSimpleName() + JNDI_SUFFIX_LOCAL_BUSINESS);
+
+      // Add the JBossians
+      slsb.add(jgreene);
+      slsb.add(jpederse);
+      slsb.add(dmlloyd);
+      slsb.add(wolfc);
+      slsb.add(alr);
+      slsb.add(asaldhan);
+
+      // Get all
+      final Collection<Jbossian> jbossians = slsb.getAllJbossians();
+      log.info("Got all JBossians: " + jbossians);
+
+      // Test
+      Assert.assertEquals(6, jbossians.size());
+
+      // Undeploy
+      server.undeploy(archive);
+   }
+
+   //-------------------------------------------------------------------------------------||
+   // Internal Helper Methods ------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   /**
+    * Sends a JMS {@link TextMessage} containing the specified contents to the 
+    * queue of the specified name  
+    * 
+    * @param contents
+    * @param queueName
+    * @throws Exception
+    * @throws IllegalArgumentException If either argument is not provided
+    */
+   private void sendTextMessageToQueue(final String contents, final String queueName) throws Exception,
+         IllegalArgumentException
+   {
+      // Precondition check
+      if (contents == null || contents.length() == 0)
+      {
+         throw new IllegalArgumentException("contents must be provided");
       }
-      finally
+      if (queueName == null || queueName.length() == 0)
       {
-         currentThread.setContextClassLoader(oldCl);
+         throw new IllegalArgumentException("queueName must be provided");
       }
 
+      // Get the queue from JNDI
+      final Queue queue = (Queue) NAMING_CONTEXT.lookup(queueName);
+
+      // Get the ConnectionFactory from JNDI
+      final QueueConnectionFactory factory = (QueueConnectionFactory) NAMING_CONTEXT
+            .lookup(JNDI_NAME_CONNECTION_FACTORY);
+
+      // Make a Connection
+      final QueueConnection connection = factory.createQueueConnection();
+      final QueueSession sendSession = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
+
+      // Make the message
+      final TextMessage message = sendSession.createTextMessage(contents);
+
+      // Send the message
+      final QueueSender sender = sendSession.createSender(queue);
+      sender.send(message);
+      log.info("Sent message " + message + " with contents: " + contents);
+
+      // Clean up
+      sendSession.close();
+      connection.close();
    }
 }

Modified: projects/embedded/trunk/testsuite-full-dep/pom.xml
===================================================================
--- projects/embedded/trunk/testsuite-full-dep/pom.xml	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite-full-dep/pom.xml	2009-09-25 01:37:45 UTC (rev 94012)
@@ -28,8 +28,37 @@
     <version.org.jboss.embedded_jboss.embedded.core>0.1.0-SNAPSHOT</version.org.jboss.embedded_jboss.embedded.core>
     <version.org.apache.httpcomponents_httpclient>4.0-beta2</version.org.apache.httpcomponents_httpclient>
 
+    <!--
+      TODO: Properties below this line should be ultimately removed as
+      these dependencies should be provided as part of the AS dependency
+      chain
+    -->
+
+    <version.jboss.web>2.1.3.GA</version.jboss.web>
+    <version.jboss.messaging>1.4.3.GA</version.jboss.messaging>
+    <version.org.slf4j_slf4j.jboss.logging>1.0.2.GA</version.org.slf4j_slf4j.jboss.logging>
+
   </properties>
 
+  <build>
+
+    <!-- Make a Test JAR (temporary, used by testsuite component) -->
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+
+  </build>
+
   <!-- Dependencies -->
   <dependencies>
 
@@ -41,9 +70,10 @@
       <scope>test</scope>
     </dependency>
 
+    <!-- ShrinkWrap -->
     <dependency>
       <groupId>org.jboss.shrinkwrap</groupId>
-      <artifactId>shrinkwrap-impl-vfs</artifactId>
+      <artifactId>shrinkwrap-impl-base</artifactId>
       <scope>test</scope>
     </dependency>
 
@@ -61,6 +91,52 @@
       <scope>test</scope>
     </dependency>
 
+    <!-- AS modules and 3rdparty deps -->
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-build</artifactId>
+      <type>pom</type>
+    </dependency>
+
+    <!--
+      Deps in the runtime of AS but *not* part of the AS dependency tree
+
+      TODO: Get these represented by the AS build dependency chain
+      JBAS-7267
+    -->
+
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-management</artifactId>
+      <version>${version.org.jboss.jbossas}</version>
+      <classifier>jsr77</classifier>
+    </dependency>
+    <dependency>
+      <groupId>jboss.web</groupId>
+      <artifactId>jsp-api</artifactId>
+      <version>${version.jboss.web}</version>
+    </dependency>
+    <dependency>
+      <groupId>jboss.web</groupId>
+      <artifactId>el-api</artifactId>
+      <version>${version.jboss.web}</version>
+    </dependency>
+    <dependency>
+      <groupId>jboss.web</groupId>
+      <artifactId>jasper-jdt</artifactId>
+      <version>${version.jboss.web}</version>
+    </dependency>
+    <dependency>
+      <groupId>jboss.messaging</groupId>
+      <artifactId>jboss-messaging</artifactId>
+      <version>${version.jboss.messaging}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.slf4j</groupId>
+      <artifactId>slf4j-jboss-logging</artifactId>
+      <version>${version.org.slf4j_slf4j.jboss.logging}</version>
+    </dependency>
+
   </dependencies>
 
 </project>

Modified: projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java
===================================================================
--- projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java	2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java	2009-09-25 01:37:45 UTC (rev 94012)
@@ -52,8 +52,8 @@
 import org.apache.http.client.utils.URLEncodedUtils;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.message.BasicNameValuePair;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
-import org.jboss.embedded.core.server.JBossASEmbeddedServer;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
+import org.jboss.embedded.api.server.JBossASEmbeddedServer;
 import org.jboss.embedded.core.server.JBossASEmbeddedServerImpl;
 import org.jboss.embedded.testsuite.fulldep.ejb3.entity.Jbossian;
 import org.jboss.embedded.testsuite.fulldep.ejb3.entity.JbossianRegistrarBean;
@@ -264,14 +264,12 @@
       // Log
       log.info("testWarServletJsp");
 
-      // Get the path to the test web.xml file and JSP 
-      final Path targetPathWebXml = new BasicPath("web.xml");
-
       // Make a deployment
       final String appName = "testServletJsp";
       final String name = appName + ".war";
       final Class<?> servletClass = JspForwardingServlet.class;
       final WebArchive archive = WebArchiveFactory.create(name);
+      final Path targetPathWebXml = new BasicPath("web.xml");
       archive.addWebResource(targetPathWebXml, PATH_ACTUAL_WEB_XML).addResource(PATH_JSP).addClass(servletClass);
       log.info(archive.toString(true));
 




More information about the jboss-cvs-commits mailing list