[jboss-cvs] JBossAS SVN: r59913 - in trunk: server/src/main/org/jboss/metamodel/descriptor and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jan 22 05:24:32 EST 2007


Author: thomas.diesler at jboss.com
Date: 2007-01-22 05:24:32 -0500 (Mon, 22 Jan 2007)
New Revision: 59913

Modified:
   trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
   trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java
   trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java
   trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java
   trunk/server/src/resources/dtd/service-ref_5_0.dtd
Log:
Support service-ref/handler-chain

Modified: trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	2007-01-22 09:20:53 UTC (rev 59912)
+++ trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	2007-01-22 10:24:32 UTC (rev 59913)
@@ -83,15 +83,13 @@
    {
       String name = wsref.name();
       if (name.equals(""))
-      {
          name = InjectionUtil.getEncName(type).substring(4);
-      }
       
       if (!container.getEncInjectors().containsKey(name))
       {
          String encName = "env/" + name;
          ServiceRef sref = getServiceRef(name);
-         container.getEncInjectors().put(name, new WebServiceRefInjector(encName, null, wsref, sref));
+         container.getEncInjectors().put(name, new WebServiceRefInjector(encName, type, sref));
       }
    }
 
@@ -105,17 +103,14 @@
 
       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))
       {
-         Class refType = method.getParameterTypes()[0];
          ServiceRef sref = getServiceRef(name);
-         container.getEncInjectors().put(name, new WebServiceRefInjector(encName, refType, wsref, sref));
+         container.getEncInjectors().put(name, new WebServiceRefInjector(encName, method, sref));
       }
 
       injectors.put(method, new JndiMethodInjector(method, encName, encCtx));
@@ -128,17 +123,14 @@
 
       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))
       {
-         Class refType = field.getType();
          ServiceRef sref = getServiceRef(name);
-         container.getEncInjectors().put(name, new WebServiceRefInjector(encName, refType, wsref, sref));
+         container.getEncInjectors().put(name, new WebServiceRefInjector(encName, field, sref));
       }
 
       injectors.put(field, new JndiFieldInjector(field, encName, encCtx));

Modified: trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java	2007-01-22 09:20:53 UTC (rev 59912)
+++ trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java	2007-01-22 10:24:32 UTC (rev 59913)
@@ -24,6 +24,7 @@
 // $Id$
 
 import java.io.IOException;
+import java.lang.reflect.AnnotatedElement;
 
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
@@ -32,7 +33,6 @@
 import javax.xml.transform.Source;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.ws.WebServiceException;
-import javax.xml.ws.WebServiceRef;
 
 import org.jboss.logging.Logger;
 import org.jboss.metamodel.descriptor.ServiceRef;
@@ -54,13 +54,8 @@
    private static final Logger log = Logger.getLogger(WebServiceRefInjector.class);
 
    private String name;
+   private AnnotatedElement anElement;
 
-   private Class refType;
-
-   private String refTypeName;
-
-   private WebServiceRef wsref;
-
    private ServiceRef sref;
 
    // The @WebServiceRef handler MBean interface
@@ -68,16 +63,14 @@
    public interface WebServiceRefHandlerMBean
    {
       ObjectName OBJECT_NAME = ObjectNameFactory.create("jboss.ws:service=WebServiceRefHandler");
-      void setupWebServiceRef(Context encCtx, String encName, Class refType, WebServiceRef wsref, VirtualFile vfsRoot, Source metadata) throws NamingException;
+      void setupWebServiceRef(Context encCtx, String encName, AnnotatedElement anElement, VirtualFile vfsRoot, Source metadata) throws NamingException;
    }
 
-   public WebServiceRefInjector(String name, Class refType, WebServiceRef wsref, ServiceRef sref)
+   public WebServiceRefInjector(String name, AnnotatedElement anElement, ServiceRef sref)
    {
       this.name = name;
-      this.refType = refType;
-      this.wsref = wsref;
+      this.anElement = anElement;
       this.sref = sref;
-      this.refTypeName = (refType != null ? refType.getName() : null);
    }
 
    public void inject(InjectionContainer container)
@@ -91,13 +84,13 @@
          MBeanServer server = MBeanServerLocator.locateJBoss();
          ObjectName oname = WebServiceRefHandlerMBean.OBJECT_NAME;
          WebServiceRefHandlerMBean handler = (WebServiceRefHandlerMBean)MBeanProxy.get(WebServiceRefHandlerMBean.class, oname, server);
-         handler.setupWebServiceRef(encCtx, name, refType, wsref, vfsRoot, getMetaData());
+         handler.setupWebServiceRef(encCtx, name, anElement, vfsRoot, getMetaData());
          
-         log.debug("@WebServiceRef bound [env=" + name + ",ref=" + refTypeName + "]");
+         log.debug("@WebServiceRef bound [env=" + name + "]");
       }
       catch (Exception e)
       {
-         throw new WebServiceException("Unable to bind @WebServiceRef [enc=" + name + ",type=" + refTypeName + "]", e);
+         throw new WebServiceException("Unable to bind @WebServiceRef [enc=" + name + "]", e);
       }
    }
 
@@ -110,6 +103,6 @@
 
    public String toString()
    {
-      return super.toString() + "{enc=" + name + ",type=" + refTypeName + "}";
+      return super.toString() + "{enc=" + name + "}";
    }
 }

Modified: trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java	2007-01-22 09:20:53 UTC (rev 59912)
+++ trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java	2007-01-22 10:24:32 UTC (rev 59913)
@@ -24,19 +24,17 @@
 import javax.persistence.PersistenceContextType;
 import javax.xml.namespace.QName;
 
-import org.jboss.logging.Logger;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.xml.sax.Attributes;
 
 /**
  * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ * @author Thomas.Diesler at jboss.com
  * @version <tt>$Revision$</tt>
  */
 public abstract class DDObjectFactory implements ObjectModelFactory
 {
-   private static final Logger log = Logger.getLogger(DDObjectFactory.class);
-
    public Object newChild(PersistenceUnitRef ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       return newRefChild(ref, localName);
@@ -347,6 +345,10 @@
       {
          ref.setConfigFile(value);
       }
+      else if (localName.equals("handler-chain"))
+      {
+         ref.setHandlerChain(value);
+      }
       else if (localName.equals("wsdl-override"))
       {
          ref.setWsdlOverride(value);

Modified: trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java
===================================================================
--- trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java	2007-01-22 09:20:53 UTC (rev 59912)
+++ trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java	2007-01-22 10:24:32 UTC (rev 59913)
@@ -26,8 +26,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.jboss.xb.QNameBuilder;
-
 // $Id$
 
 /**
@@ -44,6 +42,7 @@
    private QName serviceQName;
    private String configName;
    private String configFile;
+   private String handlerChain;
    private List<PortInfo> portInfos = new ArrayList<PortInfo>();
    private String wsdlOverride;
 
@@ -77,41 +76,51 @@
       this.serviceQName = serviceQName;
    }
    
-   public List<PortInfo> getPortInfos()
+   public String getConfigFile()
    {
-      return portInfos;
+      return configFile;
    }
 
-   public String getWsdlOverride()
+   public void setConfigFile(String configFile)
    {
-      return wsdlOverride;
+      this.configFile = configFile;
    }
 
-   public void setWsdlOverride(String wsdlLocation)
+   public String getConfigName()
    {
-      this.wsdlOverride = wsdlLocation;
+      return configName;
    }
 
-   public String getConfigFile()
+   public void setConfigName(String configName)
    {
-      return configFile;
+      this.configName = configName;
    }
 
-   public void setConfigFile(String configFile)
+   public String getHandlerChain()
    {
-      this.configFile = configFile;
+      return handlerChain;
    }
 
-   public String getConfigName()
+   public void setHandlerChain(String handlerChain)
    {
-      return configName;
+      this.handlerChain = handlerChain;
    }
 
-   public void setConfigName(String configName)
+   public List<PortInfo> getPortInfos()
    {
-      this.configName = configName;
+      return portInfos;
    }
 
+   public String getWsdlOverride()
+   {
+      return wsdlOverride;
+   }
+
+   public void setWsdlOverride(String wsdlLocation)
+   {
+      this.wsdlOverride = wsdlLocation;
+   }
+
    public String toXMLFragment() 
    {
       StringBuilder xml = new StringBuilder("<service-ref>");
@@ -129,6 +138,9 @@
       if (configFile != null)
          xml.append("<config-file>" + configFile + "</config-file>");
       
+      if (handlerChain != null)
+         xml.append("<handler-chain>" + handlerChain + "</handler-chain>");
+      
       for (PortInfo portInfo : portInfos)
          xml.append(portInfo.toXMLFragment());
       

Modified: trunk/server/src/resources/dtd/service-ref_5_0.dtd
===================================================================
--- trunk/server/src/resources/dtd/service-ref_5_0.dtd	2007-01-22 09:20:53 UTC (rev 59912)
+++ trunk/server/src/resources/dtd/service-ref_5_0.dtd	2007-01-22 10:24:32 UTC (rev 59913)
@@ -20,35 +20,36 @@
   Example:
   
   <service-ref>
-    <service-ref-name>OrganizationService</service-ref-name>
-    <wsdl-override>file:/wsdlRepository/organization-service.wsdl</wsdl-override>
+   <service-ref-name>OrganizationService</service-ref-name>
+   <wsdl-override>file:/wsdlRepository/organization-service.wsdl</wsdl-override>
   </service-ref>
 
   <service-ref>
-    <service-ref-name>OrganizationService</service-ref-name>
-    <config-name>Secure Client Config</config-name>
-    <config-file>META-INF/jbossws-client-config.xml</config-file>
+   <service-ref-name>OrganizationService</service-ref-name>
+   <config-name>Secure Client Config</config-name>
+   <config-file>META-INF/jbossws-client-config.xml</config-file>
+   <handler-chain>META-INF/jbossws-client-handlers.xml</handler-chain>
   </service-ref>
   
   <service-ref>
-    <service-ref-name>SecureService</service-ref-name>
-      <service-class-name>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpointService</service-class-name>
-      <service-qname>{http://org.jboss.ws/wsref}SecureEndpointService</service-qname>
-      <port-info>
-        <service-endpoint-interface>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpoint</service-endpoint-interface>
-        <port-qname>{http://org.jboss.ws/wsref}SecureEndpointPort</port-qname>
-        <stub-property>
-          <name>javax.xml.ws.security.auth.username</name>
-          <value>kermit</value>
-        </stub-property>
-        <stub-property>
-          <name>javax.xml.ws.security.auth.password</name>
-          <value>thefrog</value>
-        </stub-property>
-    </port-info>
+   <service-ref-name>SecureService</service-ref-name>
+   <service-class-name>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpointService</service-class-name>
+   <service-qname>{http://org.jboss.ws/wsref}SecureEndpointService</service-qname>
+    <port-info>
+     <service-endpoint-interface>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpoint</service-endpoint-interface>
+     <port-qname>{http://org.jboss.ws/wsref}SecureEndpointPort</port-qname>
+     <stub-property>
+      <name>javax.xml.ws.security.auth.username</name>
+      <value>kermit</value>
+     </stub-property>
+     <stub-property>
+      <name>javax.xml.ws.security.auth.password</name>
+      <value>thefrog</value>
+     </stub-property>
+   </port-info>
   </service-ref>
 -->
-<!ELEMENT service-ref (service-ref-name, service-class-name?, service-qname?, config-name?, config-file?, port-info*, wsdl-override?)>
+<!ELEMENT service-ref (service-ref-name, service-class-name?, service-qname?, config-name?, config-file?, handler-chain?, port-info*, wsdl-override?)>
 
 <!-- 
   The service-ref-name element gives the ENC relative name.
@@ -72,23 +73,12 @@
 <!ELEMENT service-qname (#PCDATA)>
 
 <!-- 
-  The optional config-name element gives the client configuration name that must be present in
-  the configuration given by element config-file. All newly created ports will be configured with
-  this config name.
-
-  The default is: Standard Client
+  The optional handler-chain element is a URL or resource name to a handler chain configuration.
+  See: @HandlerChain.file
 -->
-<!ELEMENT config-name (#PCDATA)>
+<!ELEMENT handler-chain (#PCDATA)>
 
 <!-- 
-  The optional config-file element gives the to a URL or resource name for the client configuration.
-  All newly created ports will be configured with this config file.
-  
-  The default is: META-INF/standard-jbossws-client-config.xml
--->
-<!ELEMENT config-file (#PCDATA)>
-
-<!-- 
   Information for a port within a service-reference.
   
   Either service-endpoint-interface or wsdl-port or both
@@ -121,6 +111,23 @@
 <!ELEMENT port-qname (#PCDATA)>
 
 <!-- 
+  The optional config-name element gives the client configuration name that must be present in
+  the configuration given by element config-file. Ports that match this port info will be 
+  configured with this config name.
+
+  The default is: Standard Client
+-->
+<!ELEMENT config-name (#PCDATA)>
+
+<!-- 
+  The optional config-file element is a URL or resource name for the client configuration.
+  Ports that match this port info will be configured with this config file.
+  
+  The default is: META-INF/standard-jbossws-client-config.xml
+-->
+<!ELEMENT config-file (#PCDATA)>
+
+<!-- 
   Property values that should be set on a stub before it's returned to 
   to the web service client.  The property names can be any properties supported
   by the StubExt or Stub implementation. 




More information about the jboss-cvs-commits mailing list