[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