[jboss-cvs] JBossAS SVN: r61183 - in branches/tdiesler/trunk: ejb3/src/main/org/jboss/injection and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 7 07:13:06 EST 2007


Author: thomas.diesler at jboss.com
Date: 2007-03-07 07:13:06 -0500 (Wed, 07 Mar 2007)
New Revision: 61183

Added:
   branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefObjectFactory.java
Removed:
   branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
Modified:
   branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java
   branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java
   branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
   branches/tdiesler/trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java
   branches/tdiesler/trunk/server/src/resources/dtd/service-ref_5_0.dtd
   branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java
   branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java
   branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment2.java
Log:
partial

Modified: branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java
===================================================================
--- branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -119,6 +119,11 @@
       currentEjb.addServiceRef(ref);
    }
    
+   public ServiceRefMetaData getServiceRef(String name)
+   {
+      return currentEjb.getServiceRef(name);
+   }
+   
    public void setMethodAttributes(MethodAttributes attributes)
    {
       currentEjb.setMethodAttributes(attributes);

Modified: branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -95,9 +95,22 @@
       dd.updateMessageDestinationRef(ref);
    }
 
-   public void addChild(ApplicationClientDD parent, ServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(ApplicationClientDD parent, ServiceRefMetaData sref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      dd.addServiceRef(ref);
+      String refName = sref.getServiceRefName();
+      if (refName == null)
+         throw new IllegalStateException("Invalid service-ref-name: " + refName);
+
+      ServiceRefMetaData targetRef = parent.getServiceRef(refName);
+      if (targetRef == null)
+      {
+         log.debug("Cannot find <service-ref> with name: " + refName);
+         parent.addServiceRef(sref);
+      }
+      else
+      {
+         targetRef.merge(sref);
+      }
    }
 
    public void addChild(ApplicationClientDD dd, ResourceEnvRef envRef, UnmarshallingContext navigator, String namespaceURI, String localName)

Modified: branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -662,9 +662,22 @@
    /**
     * Called when parsing character is complete.
     */
-   public void addChild(EnterpriseBeans parent, ServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(EnterpriseBeans parent, ServiceRefMetaData sref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.addServiceRef(ref);
+      String refName = sref.getServiceRefName();
+      if (refName == null)
+         throw new IllegalStateException("Invalid service-ref-name: " + refName);
+
+      ServiceRefMetaData targetRef = parent.getServiceRef(refName);
+      if (targetRef == null)
+      {
+         log.debug("Cannot find <service-ref> with name: " + refName);
+         parent.addServiceRef(sref);
+      }
+      else
+      {
+         targetRef.merge(sref);
+      }
    }
 
    /**

Deleted: branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
===================================================================
--- branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -1,150 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt 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.injection;
-
-// $Id$
-
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.xml.ws.WebServiceRef;
-import javax.xml.ws.WebServiceRefs;
-
-import org.jboss.logging.Logger;
-import org.jboss.metadata.serviceref.ServiceRefMetaData;
-import org.jboss.metamodel.descriptor.EnvironmentRefGroup;
-
-/**
- * Handle @WebServiceRef annotations
- * 
- * @author Thomas.Diesler at jboss.com
- */
-public class WebServiceRefHandler implements InjectionHandler
-{
-   private static final Logger log = Logger.getLogger(WebServiceRefHandler.class);
-   private Map<String, ServiceRefMetaData> srefMap = new HashMap<String, ServiceRefMetaData>();
-
-   public void loadXml(EnvironmentRefGroup xml, InjectionContainer container)
-   {
-      if (xml == null) return;
-      if (xml.getServiceRefs() == null) return;
-      for (ServiceRefMetaData sref : xml.getServiceRefs())
-      {
-         log.debug("service-ref: " + sref);
-         if (srefMap.get(sref.getServiceRefName()) != null)
-               throw new IllegalStateException ("Duplicate <service-ref-name> in " + sref);
-         
-         srefMap.put(sref.getServiceRefName(), sref);
-      }
-   }
-
-   public void handleClassAnnotations(Class type, InjectionContainer container)
-   {
-      WebServiceRef wsref = container.getAnnotation(WebServiceRef.class, type);
-      if (wsref != null)
-      {
-         bindRefOnType(type, container, wsref);
-      }
-
-      WebServiceRefs refs = container.getAnnotation(WebServiceRefs.class, type);
-      if (refs != null)
-      {
-         for (WebServiceRef refItem : refs.value())
-         {
-            bindRefOnType(type, container, refItem);
-         }
-      }
-   }
-
-   private void bindRefOnType(Class type, InjectionContainer container, WebServiceRef wsref)
-   {
-      String name = wsref.name();
-      if (name.equals(""))
-         name = InjectionUtil.getEncName(type).substring(4);
-      
-      if (!container.getEncInjectors().containsKey(name))
-      {
-         String encName = "env/" + name;
-         ServiceRefMetaData sref = getServiceRef(name);
-         container.getEncInjectors().put(name, new ServiceRefInjector(encName, type, sref));
-      }
-   }
-
-   public void handleMethodAnnotations(Method method, InjectionContainer container, Map<AccessibleObject, Injector> injectors)
-   {
-      WebServiceRef wsref = method.getAnnotation(WebServiceRef.class);
-      if (wsref == null) return;
-
-      if (!method.getName().startsWith("set"))
-         throw new RuntimeException("@WebServiceRef can only be used with a set method: " + method);
-
-      String name = wsref.name();
-      if (name.equals(""))
-         name = InjectionUtil.getEncName(method).substring(4);
-      
-      String encName = "env/" + name;
-      Context encCtx = container.getEnc();
-      if (!container.getEncInjectors().containsKey(name))
-      {
-         ServiceRefMetaData sref = getServiceRef(name);
-         container.getEncInjectors().put(name, new ServiceRefInjector(encName, method, sref));
-      }
-
-      injectors.put(method, new JndiMethodInjector(method, encName, encCtx));
-   }
-
-   public void handleFieldAnnotations(Field field, InjectionContainer container, Map<AccessibleObject, Injector> injectors)
-   {
-      WebServiceRef wsref = field.getAnnotation(WebServiceRef.class);
-      if (wsref == null) return;
-
-      String name = wsref.name();
-      if (name.equals(""))
-         name = InjectionUtil.getEncName(field).substring(4);
-
-      String encName = "env/" + name;
-      Context encCtx = container.getEnc();
-      if (!container.getEncInjectors().containsKey(name))
-      {
-         ServiceRefMetaData sref = getServiceRef(name);
-         container.getEncInjectors().put(name, new ServiceRefInjector(encName, field, sref));
-      }
-
-      injectors.put(field, new JndiFieldInjector(field, encName, encCtx));
-   }
-
-   private ServiceRefMetaData getServiceRef(String name)
-   {
-      ServiceRefMetaData sref = srefMap.get(name);
-      if (sref == null)
-      {
-         log.debug("No override for @WebServiceRef.name: " + name);
-         sref = new ServiceRefMetaData();
-         sref.setServiceRefName(name);
-      }
-      return sref;
-   }
-}

Added: branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
===================================================================
--- branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	                        (rev 0)
+++ branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -0,0 +1,150 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.injection;
+
+// $Id$
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.naming.Context;
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceRefs;
+
+import org.jboss.logging.Logger;
+import org.jboss.metadata.serviceref.ServiceRefMetaData;
+import org.jboss.metamodel.descriptor.EnvironmentRefGroup;
+
+/**
+ * Handle @WebServiceRef annotations
+ * 
+ * @author Thomas.Diesler at jboss.com
+ */
+public class WebServiceRefHandler implements InjectionHandler
+{
+   private static final Logger log = Logger.getLogger(WebServiceRefHandler.class);
+   private Map<String, ServiceRefMetaData> srefMap = new HashMap<String, ServiceRefMetaData>();
+
+   public void loadXml(EnvironmentRefGroup xml, InjectionContainer container)
+   {
+      if (xml == null) return;
+      if (xml.getServiceRefs() == null) return;
+      for (ServiceRefMetaData sref : xml.getServiceRefs())
+      {
+         log.debug("service-ref: " + sref);
+         if (srefMap.get(sref.getServiceRefName()) != null)
+               throw new IllegalStateException ("Duplicate <service-ref-name> in " + sref);
+         
+         srefMap.put(sref.getServiceRefName(), sref);
+      }
+   }
+
+   public void handleClassAnnotations(Class type, InjectionContainer container)
+   {
+      WebServiceRef wsref = container.getAnnotation(WebServiceRef.class, type);
+      if (wsref != null)
+      {
+         bindRefOnType(type, container, wsref);
+      }
+
+      WebServiceRefs refs = container.getAnnotation(WebServiceRefs.class, type);
+      if (refs != null)
+      {
+         for (WebServiceRef refItem : refs.value())
+         {
+            bindRefOnType(type, container, refItem);
+         }
+      }
+   }
+
+   private void bindRefOnType(Class type, InjectionContainer container, WebServiceRef wsref)
+   {
+      String name = wsref.name();
+      if (name.equals(""))
+         name = InjectionUtil.getEncName(type).substring(4);
+      
+      if (!container.getEncInjectors().containsKey(name))
+      {
+         String encName = "env/" + name;
+         ServiceRefMetaData sref = getServiceRef(name);
+         container.getEncInjectors().put(name, new ServiceRefInjector(encName, type, sref));
+      }
+   }
+
+   public void handleMethodAnnotations(Method method, InjectionContainer container, Map<AccessibleObject, Injector> injectors)
+   {
+      WebServiceRef wsref = method.getAnnotation(WebServiceRef.class);
+      if (wsref == null) return;
+
+      if (!method.getName().startsWith("set"))
+         throw new RuntimeException("@WebServiceRef can only be used with a set method: " + method);
+
+      String name = wsref.name();
+      if (name.equals(""))
+         name = InjectionUtil.getEncName(method).substring(4);
+      
+      String encName = "env/" + name;
+      Context encCtx = container.getEnc();
+      if (!container.getEncInjectors().containsKey(name))
+      {
+         ServiceRefMetaData sref = getServiceRef(name);
+         container.getEncInjectors().put(name, new ServiceRefInjector(encName, method, sref));
+      }
+
+      injectors.put(method, new JndiMethodInjector(method, encName, encCtx));
+   }
+
+   public void handleFieldAnnotations(Field field, InjectionContainer container, Map<AccessibleObject, Injector> injectors)
+   {
+      WebServiceRef wsref = field.getAnnotation(WebServiceRef.class);
+      if (wsref == null) return;
+
+      String name = wsref.name();
+      if (name.equals(""))
+         name = InjectionUtil.getEncName(field).substring(4);
+
+      String encName = "env/" + name;
+      Context encCtx = container.getEnc();
+      if (!container.getEncInjectors().containsKey(name))
+      {
+         ServiceRefMetaData sref = getServiceRef(name);
+         container.getEncInjectors().put(name, new ServiceRefInjector(encName, field, sref));
+      }
+
+      injectors.put(field, new JndiFieldInjector(field, encName, encCtx));
+   }
+
+   private ServiceRefMetaData getServiceRef(String name)
+   {
+      ServiceRefMetaData sref = srefMap.get(name);
+      if (sref == null)
+      {
+         log.debug("No override for @WebServiceRef.name: " + name);
+         sref = new ServiceRefMetaData();
+         sref.setServiceRefName(name);
+      }
+      return sref;
+   }
+}

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -576,18 +576,22 @@
       ref.setJndiName(child.getJndiName());
    }
 
-   public void addChild(BeanHolder parent, ServiceRefMetaData sourceRef,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, ServiceRefMetaData sref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      String refName = sourceRef.getServiceRefName();
+      String refName = sref.getServiceRefName();
       if (refName == null)
          throw new IllegalStateException("Invalid service-ref-name: " + refName);
-      
+
       ServiceRefMetaData targetRef = parent.metaData.getServiceRef(refName);
       if (targetRef == null)
-         throw new IllegalStateException("Cannot find service-ref: " + refName);
-      
-      targetRef.merge(sourceRef);
+      {
+         log.debug("Cannot find <service-ref> with name: " + refName);
+         parent.metaData.addServiceRef(sref);
+      }
+      else
+      {
+         targetRef.merge(sref);
+      }
    }
 
    public void addChild(InvokerMetaData parent, InvokerMetaData.EjbRef child,

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -23,7 +23,9 @@
 
 import javax.persistence.PersistenceContextType;
 
+import org.jboss.logging.Logger;
 import org.jboss.metadata.serviceref.ServiceRefMetaData;
+import org.jboss.metadata.serviceref.ServiceRefObjectFactory;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.xml.sax.Attributes;
@@ -34,8 +36,11 @@
  * @author Thomas.Diesler at jboss.org
  * @version <tt>$Revision: 56531 $</tt>
  */
-public abstract class DDObjectFactory implements ObjectModelFactory
+public abstract class DDObjectFactory extends ServiceRefObjectFactory implements ObjectModelFactory
 {
+   // provide logging
+   protected Logger log = Logger.getLogger(getClass());
+
    public Object newChild(PersistenceUnitRef ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       return newRefChild(ref, localName);
@@ -324,7 +329,6 @@
       }
    }
 
-
    public void setValue(SecurityRoleMetaData role, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       if (localName.equals("role-name"))

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -43,22 +43,27 @@
    // The parent service-ref
    private ServiceRefMetaData serviceRefMetaData;
 
+   // Standard properties
+   
    // The required <service-endpoint-interface> element
    private String serviceEndpointInterface;
    // The optional <enable-mtom> element
    private Boolean enableMTOM;
    // The optional <port-component-link> element
    private String portComponentLink;
+   
+   // JBoss properties 
+   
    // The optional <port-qname> element
    private QName portQName;
+   // The optional JBossWS config-name
+   private String configName;
+   // The optional JBossWS config-file
+   private String configFile;
    // Arbitrary proxy properties given by <call-property> 
    private List<CallPropertyMetaData> callProperties = new ArrayList<CallPropertyMetaData>();
    // Arbitrary proxy properties given by <stub-property> 
    private List<StubPropertyMetaData> stubProperties = new ArrayList<StubPropertyMetaData>();
-   // The optional JBossWS config-name
-   private String configName;
-   // The optional JBossWS config-file
-   private String configFile;
 
    public PortComponentRefMetaData(ServiceRefMetaData serviceRefMetaData)
    {
@@ -70,6 +75,15 @@
       return serviceRefMetaData;
    }
 
+   public void merge(PortComponentRefMetaData pcref)
+   {
+      portQName = pcref.portQName;
+      configName = pcref.configName;
+      configFile = pcref.configFile;
+      callProperties = pcref.callProperties;
+      stubProperties = pcref.stubProperties;
+   }
+   
    public Boolean getEnableMTOM()
    {
       return enableMTOM;

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -52,9 +52,11 @@
    // provide logging
    private static Logger log = Logger.getLogger(ServiceRefMetaData.class);
 
+   // Standard properties 
+
    // The required <service-ref-name> element
    private String serviceRefName;
-   // The required <service-interface> element
+   // The JAXRPC required <service-interface> element
    private String serviceInterface;
    // service-res-type
    private String serviceRefType;
@@ -70,14 +72,19 @@
    private List<HandlerMetaData> handlers = new ArrayList<HandlerMetaData>();
    // The optional <handler-chains> elements. JAX-WS handlers declared in the standard JavaEE5 descriptor
    private HandlerChainsMetaData handlerChains;
-   // The optional <handler-chain> element. JAX-WS handler chain declared in the JBoss JavaEE5 descriptor
-   private String handlerChain;
+
+   // JBoss properties 
+
+   // The optional <service-impl-class> element
+   private String serviceImplClass;
    // The optional JBossWS config-name
    private String configName;
    // The optional JBossWS config-file
    private String configFile;
    // The optional URL of the actual WSDL to use, <wsdl-override> 
    private String wsdlOverride;
+   // The optional <handler-chain> element. JAX-WS handler chain declared in the JBoss JavaEE5 descriptor
+   private String handlerChain;
    // Arbitrary proxy properties given by <call-property> 
    private List<CallPropertyMetaData> callProperties = new ArrayList<CallPropertyMetaData>();
 
@@ -88,20 +95,24 @@
    {
    }
 
-   public void merge(ServiceRefMetaData sourceRef)
+   public void merge(ServiceRefMetaData sref)
    {
-      handlerChain = sourceRef.getHandlerChain();
-      configName = sourceRef.configName;
-      configFile = sourceRef.configFile;
-      wsdlOverride = sourceRef.wsdlOverride;
-      callProperties = sourceRef.getCallProperties();
+      serviceImplClass = sref.serviceImplClass;
+      configName = sref.configName;
+      configFile = sref.configFile;
+      wsdlOverride = sref.wsdlOverride;
+      handlerChain = sref.handlerChain;
+      callProperties = sref.callProperties;
 
-      for (PortComponentRefMetaData pcSourceRef : sourceRef.getPortComponentRefs())
+      if (serviceQName == null && sref.serviceQName != null)
+         serviceQName = sref.serviceQName;
+
+      for (PortComponentRefMetaData pcref : sref.getPortComponentRefs())
       {
-         String seiName = pcSourceRef.getServiceEndpointInterface();
+         String seiName = pcref.getServiceEndpointInterface();
          if (seiName == null)
          {
-            log.warn("Illegal service endpoint interface: " + seiName);
+            log.warn("Null service endpoint interface in: " + toXMLFragmet());
             continue;
          }
 
@@ -109,13 +120,11 @@
          if (pcTargetRef == null)
          {
             log.warn("Cannot find port component ref with SEI name: " + seiName);
-            addPortComponentRef(pcSourceRef);
-            pcTargetRef = pcSourceRef;
+            addPortComponentRef(pcref);
+            pcTargetRef = pcref;
          }
 
-         pcTargetRef.setPortQName(pcSourceRef.getPortQName());
-         pcTargetRef.setCallProperties(pcSourceRef.getCallProperties());
-         pcTargetRef.setStubProperties(pcSourceRef.getStubProperties());
+         pcTargetRef.merge(pcref);
       }
    }
 
@@ -167,6 +176,16 @@
       this.serviceInterface = serviceInterface;
    }
 
+   public String getServiceImplClass()
+   {
+      return serviceImplClass;
+   }
+
+   public void setServiceImplClass(String serviceImplClass)
+   {
+      this.serviceImplClass = serviceImplClass;
+   }
+
    public QName getServiceQName()
    {
       return serviceQName;
@@ -395,8 +414,17 @@
          root.add(handler.toXMLFragment());
       if (handlerChains != null)
          root.add(handlerChains.toXMLFragment());
+
+      if (serviceImplClass != null)
+         root.addElement("service-impl-class").addText(serviceImplClass);
+      if (configName != null)
+         root.addElement("config-name").addText(configName);
+      if (configFile != null)
+         root.addElement("config-file").addText(configFile);
       if (handlerChain != null)
          root.addElement("handler-chain").addText(handlerChain);
+      if (wsdlOverride != null)
+         root.addElement("wsdl-override").addText(wsdlOverride);
 
       for (CallPropertyMetaData prop : getCallProperties())
       {
@@ -405,12 +433,6 @@
          propEl.addElement("prop-value").addText(prop.getPropValue());
       }
 
-      if (configName != null)
-         root.addElement("config-name").addText(configName);
-      if (configFile != null)
-         root.addElement("config-file").addText(configFile);
-      if (wsdlOverride != null)
-         root.addElement("wsdl-override").addText(wsdlOverride);
       return root.asXML();
    }
 }

Added: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefObjectFactory.java	                        (rev 0)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -0,0 +1,277 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.metadata.serviceref;
+
+// $Id$
+
+import javax.xml.namespace.QName;
+
+import org.jboss.xb.binding.ObjectModelFactory;
+import org.jboss.xb.binding.UnmarshallingContext;
+import org.xml.sax.Attributes;
+
+/**
+ * A object model factory for <service-ref>
+ * 
+ * @author Thomas.Diesler at jboss.com
+ */
+public abstract class ServiceRefObjectFactory implements ObjectModelFactory
+{
+   public void setValue(ServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      /* Standard properties */
+      if (localName.equals("service-ref-name"))
+      {
+         ref.setServiceRefName(value);
+      }
+      else if (localName.equals("service-interface"))
+      {
+         ref.setServiceInterface(value);
+      }
+      else if (localName.equals("service-ref-type"))
+      {
+         ref.setServiceRefType(value);
+      }
+      else if (localName.equals("wsdl-file"))
+      {
+         ref.setWsdlFile(value);
+      }
+      else if (localName.equals("jaxrpc-mapping-file"))
+      {
+         ref.setMappingFile(value);
+      }
+      else if (localName.equals("service-qname"))
+      {
+         ref.setServiceQName(QName.valueOf(value));
+      }
+
+      /* JBoss properties */
+      else if (localName.equals("service-impl-class"))
+      {
+         ref.setServiceImplClass(value);
+      }
+      else if (localName.equals("config-name"))
+      {
+         ref.setConfigName(value);
+      }
+      else if (localName.equals("config-file"))
+      {
+         ref.setConfigFile(value);
+      }
+      else if (localName.equals("wsdl-override"))
+      {
+         ref.setWsdlOverride(value);
+      }
+      else if (localName.equals("handler-chain"))
+      {
+         ref.setHandlerChain(value);
+      }
+   }
+
+   public Object newChild(ServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      Object child = null;
+      if (localName.equals("port-component-ref"))
+         child = new PortComponentRefMetaData(ref);
+      else if (localName.equals("handler"))
+         child = new HandlerMetaData();
+      else if (localName.equals("handler-chains"))
+         child = new HandlerChainsMetaData();
+      
+      else if (localName.equals("call-property"))
+         child = new CallPropertyMetaData();
+
+      return child;
+   }
+
+   public Object newChild(HandlerChainsMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      Object child = null;
+      if (localName.equals("handler-chain"))
+         child = new HandlerChainMetaData();
+
+      return child;
+   }
+
+   public void addChild(ServiceRefMetaData parent, PortComponentRefMetaData pcRef, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addPortComponentRef(pcRef);
+   }
+
+   public void addChild(ServiceRefMetaData parent, HandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addHandler(handler);
+   }
+
+   public void addChild(ServiceRefMetaData parent, HandlerChainsMetaData handlerChains, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.setHandlerChains(handlerChains);
+   }
+
+   public void addChild(ServiceRefMetaData parent, CallPropertyMetaData callProp, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addCallProperty(callProp);
+   }
+
+   public void addChild(HandlerChainsMetaData parent, HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addHandlerChain(handlerChain);
+   }
+
+   public void setValue(PortComponentRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("service-endpoint-interface"))
+      {
+         ref.setServiceEndpointInterface(value);
+      }
+      else if (localName.equals("enable-mtom"))
+      {
+         ref.setEnableMTOM(Boolean.valueOf(value));
+      }
+      else if (localName.equals("port-component-link"))
+      {
+         ref.setPortComponentLink(value);
+      }
+      else if (localName.equals("port-qname"))
+      {
+         ref.setPortQName(QName.valueOf(value));
+      }
+      else if (localName.equals("config-name"))
+      {
+         ref.setConfigName(value);
+      }
+      else if (localName.equals("config-file"))
+      {
+         ref.setConfigFile(value);
+      }
+   }
+
+   public Object newChild(PortComponentRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      Object child = null;
+      if (localName.equals("call-property"))
+         child = new CallPropertyMetaData();
+      if (localName.equals("stub-property"))
+         child = new StubPropertyMetaData();
+      return child;
+   }
+
+   public void setValue(HandlerChainMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("service-name-pattern"))
+      {
+         ref.setServiceNamePattern(QName.valueOf(value));
+      }
+      else if (localName.equals("port-name-pattern"))
+      {
+         ref.setPortNamePattern(QName.valueOf(value));
+      }
+      else if (localName.equals("protocol-binding"))
+      {
+         ref.setProtocolBindings(value);
+      }
+   }
+
+   public void setValue(HandlerMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("handler-name"))
+      {
+         ref.setHandlerName(value);
+      }
+      else if (localName.equals("handler-class"))
+      {
+         ref.setHandlerClass(value);
+      }
+      else if (localName.equals("soap-header"))
+      {
+         ref.addSoapHeader(navigator.resolveQName(value));
+      }
+      else if (localName.equals("soap-role"))
+      {
+         ref.addSoapRole(value);
+      }
+      else if (localName.equals("port-name"))
+      {
+         ref.addPortName(value);
+      }
+   }
+
+   public Object newChild(HandlerMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      Object child = null;
+      if (localName.equals("init-param"))
+         child = new InitParamMetaData();
+
+      return child;
+   }
+
+   public void addChild(HandlerMetaData parent, InitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addInitParam(param);
+   }
+
+   public void setValue(InitParamMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("param-name"))
+      {
+         ref.setParamName(value);
+      }
+      else if (localName.equals("param-value"))
+      {
+         ref.setParamValue(value);
+      }
+   }
+
+   public void setValue(CallPropertyMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("prop-name"))
+      {
+         ref.setPropName(value);
+      }
+      else if (localName.equals("prop-value"))
+      {
+         ref.setPropValue(value);
+      }
+   }
+
+   public void setValue(StubPropertyMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("prop-name"))
+      {
+         ref.setPropName(value);
+      }
+      else if (localName.equals("prop-value"))
+      {
+         ref.setPropValue(value);
+      }
+   }
+   
+   public void addChild(PortComponentRefMetaData ref, CallPropertyMetaData callProp, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      ref.addCallProperty(callProp);
+   }
+
+   public void addChild(PortComponentRefMetaData ref, StubPropertyMetaData stubProp, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      ref.addStubProperty(stubProp);
+   }
+}


Property changes on: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefObjectFactory.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -210,18 +210,22 @@
       parent.addSecurityRole(role);
    }
 
-   public void addChild(WebMetaData parent, ServiceRefMetaData sourceRef,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(WebMetaData parent, ServiceRefMetaData sref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      String refName = sourceRef.getServiceRefName();
+      String refName = sref.getServiceRefName();
       if (refName == null)
          throw new IllegalStateException("Invalid service-ref-name: " + refName);
-      
+
       ServiceRefMetaData targetRef = parent.getServiceRef(refName);
       if (targetRef == null)
-         throw new IllegalStateException("Cannot find service-ref: " + refName);
-      
-      targetRef.merge(sourceRef);
+      {
+         log.debug("Cannot find <service-ref> with name: " + refName);
+         parent.addServiceRef(sref);
+      }
+      else
+      {
+         targetRef.merge(sref);
+      }
    }
 
    public void addChild(WebMetaData parent, Servlet servlet,

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -22,16 +22,9 @@
 package org.jboss.metamodel.descriptor;
 
 import javax.persistence.PersistenceContextType;
-import javax.xml.namespace.QName;
 
-import org.jboss.metadata.serviceref.CallPropertyMetaData;
-import org.jboss.metadata.serviceref.HandlerChainMetaData;
-import org.jboss.metadata.serviceref.HandlerChainsMetaData;
-import org.jboss.metadata.serviceref.HandlerMetaData;
-import org.jboss.metadata.serviceref.InitParamMetaData;
-import org.jboss.metadata.serviceref.PortComponentRefMetaData;
 import org.jboss.metadata.serviceref.ServiceRefMetaData;
-import org.jboss.metadata.serviceref.StubPropertyMetaData;
+import org.jboss.metadata.serviceref.ServiceRefObjectFactory;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.xml.sax.Attributes;
@@ -41,7 +34,7 @@
  * @author Thomas.Diesler at jboss.com
  * @version <tt>$Revision$</tt>
  */
-public abstract class DDObjectFactory implements ObjectModelFactory
+public abstract class DDObjectFactory extends ServiceRefObjectFactory implements ObjectModelFactory
 {
    public Object newChild(PersistenceUnitRef ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
@@ -321,229 +314,6 @@
       }
    }
    
-   // ******************************************************** 
-   // START ServiceRefMetaData 
-
-   public void setValue(ServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      /* Standard properties */
-      if (localName.equals("service-ref-name"))
-      {
-         ref.setServiceRefName(value);
-      }
-      else if (localName.equals("service-interface"))
-      {
-         ref.setServiceInterface(value);
-      }
-      else if (localName.equals("service-ref-type"))
-      {
-         ref.setServiceRefType(value);
-      }
-      else if (localName.equals("wsdl-file"))
-      {
-         ref.setWsdlFile(value);
-      }
-      else if (localName.equals("jaxrpc-mapping-file"))
-      {
-         ref.setMappingFile(value);
-      }
-      else if (localName.equals("service-qname"))
-      {
-         ref.setServiceQName(QName.valueOf(value));
-      }
-
-      /* JBoss properties */
-      else if (localName.equals("config-name"))
-      {
-         ref.setConfigName(value);
-      }
-      else if (localName.equals("config-file"))
-      {
-         ref.setConfigFile(value);
-      }
-      else if (localName.equals("wsdl-override"))
-      {
-         ref.setWsdlOverride(value);
-      }
-      else if (localName.equals("handler-chain"))
-      {
-         ref.setHandlerChain(value);
-      }
-   }
-
-   public Object newChild(ServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      Object child = null;
-      if (localName.equals("port-component-ref"))
-         child = new PortComponentRefMetaData(ref);
-      else if (localName.equals("handler"))
-         child = new HandlerMetaData();
-      else if (localName.equals("handler-chains"))
-         child = new HandlerChainsMetaData();
-      
-      else if (localName.equals("call-property"))
-         child = new CallPropertyMetaData();
-
-      return child;
-   }
-
-   public Object newChild(HandlerChainsMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      Object child = null;
-      if (localName.equals("handler-chain"))
-         child = new HandlerChainMetaData();
-
-      return child;
-   }
-
-   public void addChild(ServiceRefMetaData parent, PortComponentRefMetaData pcRef, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      parent.addPortComponentRef(pcRef);
-   }
-
-   public void addChild(ServiceRefMetaData parent, HandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      parent.addHandler(handler);
-   }
-
-   public void addChild(ServiceRefMetaData parent, HandlerChainsMetaData handlerChains, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      parent.setHandlerChains(handlerChains);
-   }
-
-   public void addChild(ServiceRefMetaData parent, CallPropertyMetaData callProp, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      parent.addCallProperty(callProp);
-   }
-
-   public void addChild(HandlerChainsMetaData parent, HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      parent.addHandlerChain(handlerChain);
-   }
-
-   public void setValue(PortComponentRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (localName.equals("service-endpoint-interface"))
-      {
-         ref.setServiceEndpointInterface(value);
-      }
-      else if (localName.equals("enable-mtom"))
-      {
-         ref.setEnableMTOM(Boolean.valueOf(value));
-      }
-      else if (localName.equals("port-component-link"))
-      {
-         ref.setPortComponentLink(value);
-      }
-      else if (localName.equals("port-qname"))
-      {
-         ref.setPortComponentLink(value);
-      }
-   }
-
-   public Object newChild(PortComponentRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      Object child = null;
-      if (localName.equals("call-property"))
-         child = new CallPropertyMetaData();
-      if (localName.equals("stub-property"))
-         child = new StubPropertyMetaData();
-      return child;
-   }
-
-   public void setValue(HandlerChainMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (localName.equals("service-name-pattern"))
-      {
-         ref.setServiceNamePattern(QName.valueOf(value));
-      }
-      else if (localName.equals("port-name-pattern"))
-      {
-         ref.setPortNamePattern(QName.valueOf(value));
-      }
-      else if (localName.equals("protocol-binding"))
-      {
-         ref.setProtocolBindings(value);
-      }
-   }
-
-   public void setValue(HandlerMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (localName.equals("handler-name"))
-      {
-         ref.setHandlerName(value);
-      }
-      else if (localName.equals("handler-class"))
-      {
-         ref.setHandlerClass(value);
-      }
-      else if (localName.equals("soap-header"))
-      {
-         ref.addSoapHeader(navigator.resolveQName(value));
-      }
-      else if (localName.equals("soap-role"))
-      {
-         ref.addSoapRole(value);
-      }
-      else if (localName.equals("port-name"))
-      {
-         ref.addPortName(value);
-      }
-   }
-
-   public Object newChild(HandlerMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      Object child = null;
-      if (localName.equals("init-param"))
-         child = new InitParamMetaData();
-
-      return child;
-   }
-
-   public void addChild(HandlerMetaData parent, InitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      parent.addInitParam(param);
-   }
-
-   public void setValue(InitParamMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (localName.equals("param-name"))
-      {
-         ref.setParamName(value);
-      }
-      else if (localName.equals("param-value"))
-      {
-         ref.setParamValue(value);
-      }
-   }
-
-   public void setValue(CallPropertyMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (localName.equals("prop-name"))
-      {
-         ref.setPropName(value);
-      }
-      else if (localName.equals("prop-value"))
-      {
-         ref.setPropValue(value);
-      }
-   }
-
-   public void setValue(StubPropertyMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (localName.equals("prop-name"))
-      {
-         ref.setPropName(value);
-      }
-      else if (localName.equals("prop-value"))
-      {
-         ref.setPropValue(value);
-      }
-   }
-   
-   // END ServiceRefMetaData 
-   // ******************************************************** 
-
    public void setValue(NameValuePair nvPair, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       if (localName.equals("name"))

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -24,6 +24,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 
 import org.jboss.logging.Logger;
@@ -45,7 +46,7 @@
    protected HashMap<String, MessageDestinationRef> messageDestinationRefs = new HashMap<String, MessageDestinationRef>();
    /** An index of MessageDestinationRef keyed by message-destination-link values */
    protected HashMap<String, MessageDestinationRef> messageDestinationRefsByLink = new HashMap<String, MessageDestinationRef>();
-   protected List<ServiceRefMetaData> serviceRefs = new ArrayList<ServiceRefMetaData>();
+   protected HashMap<String, ServiceRefMetaData> serviceRefs = new LinkedHashMap<String, ServiceRefMetaData>();
    protected HashMap<String, JndiRef> jndiRefs = new HashMap<String, JndiRef>();
    protected List<PersistenceContextRef> persistenceContextRefs = new ArrayList<PersistenceContextRef>();
    protected List<PersistenceUnitRef> persistenceUnitRefs = new ArrayList<PersistenceUnitRef>();
@@ -126,16 +127,21 @@
       jndiRefs.put(ref.getJndiRefName(), ref);
    }
    
-   public List<ServiceRefMetaData> getServiceRefs()
+   public Collection<ServiceRefMetaData> getServiceRefs()
    {
-      return serviceRefs;
+      return serviceRefs.values();
    }
 
    public void addServiceRef(ServiceRefMetaData ref)
    {
-      serviceRefs.add(ref);
+      serviceRefs.put(ref.getServiceRefName(), ref);
    }
    
+   public ServiceRefMetaData getServiceRef(String name)
+   {
+      return serviceRefs.get(name);
+   }
+
    public void updateEjbRef(EjbRef updatedRef)
    {
       EjbRef ref = (EjbRef)ejbRefs.get(updatedRef.getEjbRefName());

Modified: branches/tdiesler/trunk/server/src/resources/dtd/service-ref_5_0.dtd
===================================================================
--- branches/tdiesler/trunk/server/src/resources/dtd/service-ref_5_0.dtd	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/server/src/resources/dtd/service-ref_5_0.dtd	2007-03-07 12:13:06 UTC (rev 61183)
@@ -33,7 +33,7 @@
   
   <service-ref>
    <service-ref-name>SecureService</service-ref-name>
-   <service-interface>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpointService</service-interface>
+   <service-impl-class>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpointService</service-impl-class>
    <service-qname>{http://org.jboss.ws/wsref}SecureEndpointService</service-qname>
     <port-component-ref>
      <service-endpoint-interface>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpoint</service-endpoint-interface>
@@ -49,7 +49,7 @@
    </port-component-ref>
   </service-ref>
 -->
-<!ELEMENT service-ref (service-ref-name, service-interface?, service-qname?, config-name?, config-file?, handler-chain?, port-component-ref*, wsdl-override?)>
+<!ELEMENT service-ref (service-ref-name, service-impl-class?, service-qname?, config-name?, config-file?, handler-chain?, port-component-ref*, wsdl-override?)>
 
 <!-- 
   The service-ref-name element gives the ENC relative name.
@@ -58,10 +58,10 @@
 <!ELEMENT service-ref-name (#PCDATA)>
 
 <!--
-  Name of the service interface.
+  Name of the JAXWS service implementation class.
   Overrides @WebServiceRef.value
 -->
-<!ELEMENT service-interface (#PCDATA)>
+<!ELEMENT service-impl-class (#PCDATA)>
 
 <!-- 
   The service-qname element declares the specific WSDL service element.
@@ -134,17 +134,17 @@
   
   See javadoc for org.jboss.ws.core.StubExt, javax.xml.rpc.Stub
 -->
-<!ELEMENT stub-property (name, value)>
+<!ELEMENT stub-property (prop-name, prop-value)>
 
 <!--
   This text nodes holds a name string.
 -->
-<!ELEMENT name (#PCDATA)>
+<!ELEMENT prop-name (#PCDATA)>
 
 <!--
   This text nodes holds a value string.
 -->
-<!ELEMENT value (#PCDATA)>
+<!ELEMENT prop-value (#PCDATA)>
 
 <!-- 
   The wsdl-override element the actual wsdl docuement the web service client

Modified: branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -174,9 +174,22 @@
       parent.updateMessageDestinationRef(ref);
    }
 
-   public void addChild(WebDD parent, ServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(WebDD parent, ServiceRefMetaData sref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.addServiceRef(ref);
+      String refName = sref.getServiceRefName();
+      if (refName == null)
+         throw new IllegalStateException("Invalid service-ref-name: " + refName);
+
+      ServiceRefMetaData targetRef = parent.getServiceRef(refName);
+      if (targetRef == null)
+      {
+         log.debug("Cannot find <service-ref> with name: " + refName);
+         parent.addServiceRef(sref);
+      }
+      else
+      {
+         targetRef.merge(sref);
+      }
    }
 
    public void addChild(WebDD parent, ResourceEnvRef ref, UnmarshallingContext navigator, String namespaceURI, String localName)

Modified: branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java
===================================================================
--- branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -50,9 +50,6 @@
 import org.jboss.deployers.spi.deployer.DeploymentUnit;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.WebMetaData;
-import org.jboss.metadata.serviceref.ServiceRefHandler;
-import org.jboss.metadata.serviceref.ServiceRefHandlerFactory;
-import org.jboss.metadata.serviceref.ServiceRefMetaData;
 import org.jboss.mx.util.MBeanServerLocator;
 import org.jboss.naming.NonSerializableFactory;
 import org.jboss.security.AuthorizationManager;
@@ -356,6 +353,7 @@
             injectionContainer.populateEnc(webLoader.getClassLoader());
 
             // Bind <service-ref> elements
+            /*
             ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
             if (refHandler != null)
             {
@@ -366,6 +364,7 @@
                   refHandler.setupServiceRef(envCtx, encName, null, vfsRoot, sref.toXMLFragmet());
                }
             }
+            */
 
             // TODO: this should be bindings in the metadata
             currentThread.setContextClassLoader(webLoader.getClassLoader());

Modified: branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment2.java
===================================================================
--- branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment2.java	2007-03-07 11:20:31 UTC (rev 61182)
+++ branches/tdiesler/trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment2.java	2007-03-07 12:13:06 UTC (rev 61183)
@@ -474,6 +474,7 @@
                linkSecurityDomain(securityDomain, envCtx);
 
                // Bind <service-ref> elements
+               /*
                ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
                if (refHandler != null)
                {
@@ -484,7 +485,7 @@
                      refHandler.setupServiceRef(envCtx, encName, null, vfsRoot, sref.toXMLFragmet());
                   }
                }
-
+               */
             }
             catch (Throwable t)
             {




More information about the jboss-cvs-commits mailing list