[jboss-cvs] JBossAS SVN: r67020 - in trunk/ejb3: src/main/org/jboss/ejb3/client and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Nov 13 09:46:05 EST 2007


Author: adrian at jboss.org
Date: 2007-11-13 09:46:05 -0500 (Tue, 13 Nov 2007)
New Revision: 67020

Modified:
   trunk/ejb3/build-test.xml
   trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java
   trunk/ejb3/src/main/org/jboss/ejb3/client/ClientLauncher.java
   trunk/ejb3/src/main/org/jboss/injection/PersistenceContextHandler.java
Log:
[EJBTHREE-1067] - Update the ejb3 appclient to use the new unified metadata

Modified: trunk/ejb3/build-test.xml
===================================================================
--- trunk/ejb3/build-test.xml	2007-11-13 14:39:22 UTC (rev 67019)
+++ trunk/ejb3/build-test.xml	2007-11-13 14:46:05 UTC (rev 67020)
@@ -259,15 +259,18 @@
    </path>
 
    <path id="client.classpath">
+      <pathelement path="${jboss.dist}/client/jbossall-client.jar"/>
+      
+      <!-- FIXME - shouldn't these be in jbossall-client.jar???? -->
       <path refid="apache.codec.classpath"/>
       <path refid="apache.log4j.classpath"/>
       <path refid="apache.logging.classpath"/>
       <path refid="jboss.test.classpath"/>
       <path refid="sun.servlet.classpath"/>
-      <pathelement path="${jboss.dist}/client/jbossall-client.jar"/>
       <pathelement path="${jboss.dist}/client/jboss-ejb3-client.jar"/>
 	  <pathelement path="${jboss.dist}/lib/jboss-vfs.jar"/>
       <path refid="jboss.microcontainer.classpath"/>
+      <path refid="jboss.metadata.classpath"/>
    </path>
 
    <!-- The "security" test needs JaasSecurityManagerServiceMBean -->

Modified: trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java	2007-11-13 14:39:22 UTC (rev 67019)
+++ trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java	2007-11-13 14:46:05 UTC (rev 67020)
@@ -61,6 +61,7 @@
 import org.jboss.metadata.client.jboss.JBossClientMetaData;
 import org.jboss.metadata.client.spec.ApplicationClientMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
 import org.jboss.metadata.javaee.spec.RemoteEnvironment;
 import org.jboss.metamodel.descriptor.EnvironmentRefGroup;
 import org.jboss.util.NotImplementedException;
@@ -372,18 +373,22 @@
    {
       processPostConstructs(mainClass);
       
-      for(LifecycleCallbackMetaData callback : xml.getPostConstructs())
+      LifecycleCallbacksMetaData callbacks = xml.getPostConstructs();
+      if (callbacks != null)
       {
-         String className = callback.getClassName();
-         String methodName = callback.getMethodName();
-         Class<?> lifecycleClass;
-         if(className == null)
-            lifecycleClass = mainClass;
-         else
-            lifecycleClass = Thread.currentThread().getContextClassLoader().loadClass(className);
-         Class<?> parameterTypes[] = new Class[0];
-         Method method = lifecycleClass.getDeclaredMethod(methodName, parameterTypes);
-         postConstructs.add(method);
+         for(LifecycleCallbackMetaData callback : callbacks)
+         {
+            String className = callback.getClassName();
+            String methodName = callback.getMethodName();
+            Class<?> lifecycleClass;
+            if(className == null)
+               lifecycleClass = mainClass;
+            else
+               lifecycleClass = Thread.currentThread().getContextClassLoader().loadClass(className);
+            Class<?> parameterTypes[] = new Class[0];
+            Method method = lifecycleClass.getDeclaredMethod(methodName, parameterTypes);
+            postConstructs.add(method);
+         }
       }
    }
    

Modified: trunk/ejb3/src/main/org/jboss/ejb3/client/ClientLauncher.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/client/ClientLauncher.java	2007-11-13 14:39:22 UTC (rev 67019)
+++ trunk/ejb3/src/main/org/jboss/ejb3/client/ClientLauncher.java	2007-11-13 14:46:05 UTC (rev 67020)
@@ -22,19 +22,27 @@
 package org.jboss.ejb3.client;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.jboss.client.AppClientLauncher;
-import org.jboss.ejb3.metamodel.ApplicationClientDD;
-import org.jboss.ejb3.metamodel.ApplicationClientDDObjectFactory;
-import org.jboss.ejb3.metamodel.JBossClientDDObjectFactory;
 import org.jboss.logging.Logger;
+import org.jboss.metadata.client.jboss.JBossClient5DTDMetaData;
+import org.jboss.metadata.client.jboss.JBossClient5MetaData;
 import org.jboss.metadata.client.jboss.JBossClientMetaData;
+import org.jboss.metadata.client.spec.ApplicationClient14DTDMetaData;
+import org.jboss.metadata.client.spec.ApplicationClient14MetaData;
+import org.jboss.metadata.client.spec.ApplicationClient5MetaData;
+import org.jboss.metadata.client.spec.ApplicationClientMetaData;
 import org.jboss.util.NotImplementedException;
 import org.jboss.xb.binding.JBossXBException;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SingletonSchemaResolverFactory;
 
 /**
  * This class launches a JavaEE 5 application client.
@@ -51,6 +59,29 @@
 {
    private static final Logger log = Logger.getLogger(ClientLauncher.class);
    
+   /** The unmarshaller factory */
+   private static UnmarshallerFactory factory = UnmarshallerFactory.newInstance();
+   
+   /** The schema resolver */
+   private static DefaultSchemaResolver resolver = (DefaultSchemaResolver) SingletonSchemaResolverFactory.getInstance().getSchemaBindingResolver();
+   
+   static
+   {
+      // FIXME hardwiring
+      resolver.addClassBindingForLocation("application-client", ApplicationClient14DTDMetaData.class);
+      resolver.addClassBindingForLocation("application-client_1_2.dtd", ApplicationClient14DTDMetaData.class);
+      resolver.addClassBindingForLocation("application-client_1_3.dtd", ApplicationClient14DTDMetaData.class);
+      resolver.addClassBindingForLocation("application-client_1_4.xsd", ApplicationClient14MetaData.class);
+      resolver.addClassBindingForLocation("application-client_5.xsd", ApplicationClient5MetaData.class);
+      resolver.addClassBindingForLocation("jboss-client", JBossClient5DTDMetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_3_0.dtd", JBossClient5DTDMetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_3_2.dtd", JBossClient5DTDMetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_4_0.dtd", JBossClient5DTDMetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_4_2.dtd", JBossClient5DTDMetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_5_0.dtd", JBossClient5DTDMetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_5_0.xsd", JBossClient5MetaData.class);
+   }
+   
    private static URL findResource(String resourceName)
    {
       URL url;
@@ -106,14 +137,79 @@
       return loadXML(url, null);
    }
    
+   public static Unmarshaller createUnmarshaller() throws JBossXBException, IOException
+   {
+      Unmarshaller unmarshaller = factory.newUnmarshaller();
+      unmarshaller.setSchemaValidation(true);
+      unmarshaller.setValidation(true);
+      return unmarshaller;
+      
+   }
+   
    public static JBossClientMetaData loadXML(URL url, URL jbossClientURL) throws JBossXBException, IOException
    {
-      /*
-      ApplicationClientDD dd = ApplicationClientDDObjectFactory.parse(url);
-      dd = JBossClientDDObjectFactory.parse(jbossClientURL, dd);
-      return dd;
-      */
-      throw new RuntimeException("NYI");
+      if (url == null)
+         throw new RuntimeException("Null url for application-client.xml");
+
+      log.debug("Parsing application-client.xml: "+url);
+      Unmarshaller unmarshaller = createUnmarshaller();
+      InputStream is = url.openStream();
+      Object parsed = null;
+      try
+      {
+         parsed = unmarshaller.unmarshal(is, resolver);
+         log.debug("Parsed application-client.xml: "+url+" to: "+parsed);
+      }
+      finally
+      {
+         try
+         {
+            is.close();
+         }
+         catch (Exception ignored)
+         {
+         }
+      }
+      if (parsed == null)
+         throw new JBossXBException("The xml " + url + " is not well formed!");
+
+      ApplicationClientMetaData applicationClientMetaData = ApplicationClientMetaData.class.cast(parsed);
+      
+      JBossClientMetaData jbossClientMetaData;
+      if (jbossClientURL == null)
+         jbossClientMetaData = new JBossClientMetaData();
+      else
+      {
+
+         log.debug("Parsing jboss-client.xml: "+jbossClientURL);
+         unmarshaller = createUnmarshaller();
+         is = jbossClientURL.openStream();
+         parsed = null;
+         try
+         {
+            parsed = unmarshaller.unmarshal(is, resolver);
+            log.debug("Parsed jboss-client.xml: "+jbossClientURL+" to: "+parsed);
+
+            if (parsed == null)
+               throw new JBossXBException("The xml " + url + " is not well formed!");
+
+            jbossClientMetaData = JBossClientMetaData.class.cast(parsed);
+         }
+         finally
+         {
+            try
+            {
+               is.close();
+            }
+            catch (Exception ignored)
+            {
+            }
+         }
+      }
+
+      JBossClientMetaData result = new JBossClientMetaData();
+      result.merge(jbossClientMetaData, applicationClientMetaData, true);
+      return result;
    }
    
    /**
@@ -145,13 +241,9 @@
          URL appXmlURL = mainClass.getClassLoader().getResource("META-INF/application-client.xml");
          if(appXmlURL == null)
             throw new RuntimeException("Can't find META-INF/application-client.xml");
+         URL jbossXmlURL = mainClass.getClassLoader().getResource("META-INF/jboss-client.xml");
+         JBossClientMetaData xml = loadXML(appXmlURL, jbossXmlURL);
          
-         // FIXME: client metadata
-         JBossClientMetaData xml = null;
-         //JBossClientMetaData xml = ApplicationClientDDObjectFactory.parse(appXmlURL);
-         if(true)
-            throw new RuntimeException("NYI");
-         
          // FIXME: j2ee.clientName
          
          List<String> newArgs = new ArrayList<String>();

Modified: trunk/ejb3/src/main/org/jboss/injection/PersistenceContextHandler.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/injection/PersistenceContextHandler.java	2007-11-13 14:39:22 UTC (rev 67019)
+++ trunk/ejb3/src/main/org/jboss/injection/PersistenceContextHandler.java	2007-11-13 14:46:05 UTC (rev 67020)
@@ -23,6 +23,7 @@
 
 import org.jboss.metadata.javaee.spec.Environment;
 import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
+import org.jboss.metadata.javaee.spec.RemoteEnvironment;
 import org.jboss.logging.Logger;
 import org.jboss.annotation.IgnoreDependency;
 
@@ -42,7 +43,7 @@
  * @version $Revision$
  * @Inject and create Injectors
  */
-public class PersistenceContextHandler<X extends Environment> implements InjectionHandler<X>
+public class PersistenceContextHandler<X extends RemoteEnvironment> implements InjectionHandler<X>
 {
    @SuppressWarnings("unused")
    private static final Logger log = Logger
@@ -51,8 +52,10 @@
    public void loadXml(X xml, InjectionContainer container)
    {
       if (xml == null) return;
-      if (xml.getPersistenceContextRefs() == null) return;
-      for (PersistenceContextReferenceMetaData ref : xml.getPersistenceContextRefs())
+      if (xml instanceof Environment == false) return;
+      Environment env = (Environment) xml;
+      if (env.getPersistenceContextRefs() == null) return;
+      for (PersistenceContextReferenceMetaData ref : env.getPersistenceContextRefs())
       {
          String encName = "env/" + ref.getPersistenceContextRefName();
          // we add injection target no matter what.  enc injection might be overridden but




More information about the jboss-cvs-commits mailing list