Author: thomas.diesler(a)jboss.com
Date: 2007-04-13 10:18:51 -0400 (Fri, 13 Apr 2007)
New Revision: 2830
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceObjectFactory.java
trunk/jbossws-core/src/java/org/jboss/ws/core/utils/DOMUtils.java
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/ServiceRefMetaDataParser.java
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedServiceRefMetaData.java
trunk/jbossws-tests/src/resources/jaxrpc/wsse/username/META-INF/jboss-client.xml
Log:
Add support for jaxrpc stub-properties
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceImpl.java
===================================================================
---
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceImpl.java 2007-04-13
11:23:45 UTC (rev 2829)
+++
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceImpl.java 2007-04-13
14:18:51 UTC (rev 2830)
@@ -50,6 +50,7 @@
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedInitParamMetaData;
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedPortComponentRefMetaData;
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
+import org.jboss.ws.metadata.j2ee.serviceref.UnifiedStubPropertyMetaData;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
import org.jboss.ws.metadata.umdm.HandlerMetaData;
@@ -404,7 +405,7 @@
private Remote createProxy(Class seiClass, EndpointMetaData epMetaData) throws
Exception
{
CallImpl call = new CallImpl(this, epMetaData);
- initCallProperties(call, seiClass.getName());
+ initStubProperties(call, seiClass.getName());
PortProxy handler = new PortProxy(call);
ClassLoader cl = epMetaData.getClassLoader();
@@ -413,6 +414,22 @@
return proxy;
}
+ private void initStubProperties(CallImpl call, String seiName)
+ {
+ // nothing to do
+ if (usrMetaData == null)
+ return;
+
+ for (UnifiedPortComponentRefMetaData upcRef : usrMetaData.getPortComponentRefs())
+ {
+ if (seiName.equals(upcRef.getServiceEndpointInterface()))
+ {
+ for (UnifiedStubPropertyMetaData prop : upcRef.getStubProperties())
+ call.setProperty(prop.getPropName(), prop.getPropValue());
+ }
+ }
+ }
+
private void initCallProperties(CallImpl call, String seiName)
{
// nothing to do
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceObjectFactory.java
===================================================================
---
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceObjectFactory.java 2007-04-13
11:23:45 UTC (rev 2829)
+++
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/ServiceObjectFactory.java 2007-04-13
14:18:51 UTC (rev 2830)
@@ -205,7 +205,7 @@
}
}
- narrowPortSelection(serviceRef, serviceMetaData);
+ //narrowPortSelection(serviceRef, serviceMetaData);
/********************************************************
* Setup the Proxy that implements the service-interface
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/utils/DOMUtils.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/utils/DOMUtils.java 2007-04-13 11:23:45
UTC (rev 2829)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/utils/DOMUtils.java 2007-04-13 14:18:51
UTC (rev 2830)
@@ -208,7 +208,7 @@
return resolveQName(el, qualifiedName);
}
- /** Transform the giveen qualified name into a QName
+ /** Transform the given qualified name into a QName
*/
public static QName resolveQName(Element el, String qualifiedName)
{
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/ServiceRefMetaDataParser.java
===================================================================
---
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/ServiceRefMetaDataParser.java 2007-04-13
11:23:45 UTC (rev 2829)
+++
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/ServiceRefMetaDataParser.java 2007-04-13
14:18:51 UTC (rev 2830)
@@ -23,14 +23,15 @@
// $Id$
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
import org.jboss.logging.Logger;
import org.jboss.ws.core.utils.DOMUtils;
import org.jboss.xb.QNameBuilder;
import org.w3c.dom.Element;
-import javax.xml.namespace.QName;
-import java.util.Iterator;
-
/**
* The metdata data from service-ref element in web.xml, ejb-jar.xml, and
* application-client.xml.
@@ -85,20 +86,20 @@
{
Element pcrefElement = (Element)iterator.next();
String seiName = getOptionalElementContent(pcrefElement,
"service-endpoint-interface");
- String portNameString = getOptionalElementContent(pcrefElement,
"port-qname");
- QName portName = portNameString!=null ? QName.valueOf(portNameString) : null;
// TODO: unify QName parsing
+ QName portName = getOptionalElementContentAsQName(pcrefElement,
"port-qname");
UnifiedPortComponentRefMetaData pcref = sref.getPortComponentRef(seiName,
portName);
- if (pcref == null && seiName!=null)
+ if (pcref == null && seiName != null)
{
// Its ok to only have the <port-component-ref> in jboss.xml and not in
ejb-jar.xml
// if it has at least a SEI declared
pcref = new UnifiedPortComponentRefMetaData(sref);
+ pcref.importStandardXml(pcrefElement);
sref.addPortComponentRef(pcref);
- }
+ }
- if(pcref!=null) pcref.importJBossXml(pcrefElement);
-
+ if (pcref != null)
+ pcref.importJBossXml(pcrefElement);
}
// Parse the call-property elements
@@ -120,9 +121,6 @@
public void importJBossXml(Element root, UnifiedPortComponentRefMetaData pcref)
{
- // update or set SEI. It may be null when no std. DD is used.
- pcref.setServiceEndpointInterface(getOptionalElementContent(root,
"service-endpoint-interface"));
-
// Look for call-property elements
Iterator iterator = DOMUtils.getChildElements(root, "call-property");
while (iterator.hasNext())
@@ -147,22 +145,22 @@
}
// portQName
- Element portQName = DOMUtils.getFirstChildElement(root, "port-qname");
- if(portQName!=null)
- pcref.setPortQName(QName.valueOf(getTextContent(portQName)));
+ QName portQName = getOptionalElementContentAsQName(root, "port-qname");
+ if (portQName != null)
+ pcref.setPortQName(portQName);
// config
Element configName = DOMUtils.getFirstChildElement(root, "config-name");
- if(configName!=null)
+ if (configName != null)
pcref.setConfigName(getTextContent(configName));
Element configFile = DOMUtils.getFirstChildElement(root, "config-file");
- if(configFile!=null)
+ if (configFile != null)
pcref.setConfigFile(getTextContent(configFile));
// service-endpoint-interface
Element sei = DOMUtils.getFirstChildElement(root,
"service-endpoint-interface");
- if(sei!=null)
+ if (sei != null)
pcref.setServiceEndpointInterface(getTextContent(sei));
}
@@ -189,7 +187,7 @@
{
Element headerElement = (Element)iterator.next();
String content = getTextContent(headerElement);
- QName qname = QNameBuilder.buildQName(headerElement, content);
+ QName qname = DOMUtils.resolveQName(headerElement, content);
href.addSoapHeader(qname);
}
@@ -226,6 +224,17 @@
return getTextContent(DOMUtils.getFirstChildElement(element, childName));
}
+ private QName getOptionalElementContentAsQName(Element element, String childName)
+ {
+ QName qname = null;
+ String value = getOptionalElementContent(element, childName);
+ if (value != null)
+ {
+ qname = (value.startsWith("{") ? QName.valueOf(value) :
DOMUtils.resolveQName(element, value));
+ }
+ return qname;
+ }
+
private String getTextContent(Element element)
{
String content = null;
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedServiceRefMetaData.java
===================================================================
---
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedServiceRefMetaData.java 2007-04-13
11:23:45 UTC (rev 2829)
+++
trunk/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedServiceRefMetaData.java 2007-04-13
14:18:51 UTC (rev 2830)
@@ -123,10 +123,9 @@
if (targetPCRef == null)
{
log.warn("Cannot find port component ref: [sei=" + seiName +
",port=" + portQName + "]");
- if(seiName!=null)
+ if (seiName != null)
addPortComponentRef(pcref);
- else
- log.warn("Ingore port component ref without SEI declaration: " +
pcref);
+ else log.warn("Ingore port component ref without SEI declaration: "
+ pcref);
targetPCRef = pcref;
}
Modified:
trunk/jbossws-tests/src/resources/jaxrpc/wsse/username/META-INF/jboss-client.xml
===================================================================
---
trunk/jbossws-tests/src/resources/jaxrpc/wsse/username/META-INF/jboss-client.xml 2007-04-13
11:23:45 UTC (rev 2829)
+++
trunk/jbossws-tests/src/resources/jaxrpc/wsse/username/META-INF/jboss-client.xml 2007-04-13
14:18:51 UTC (rev 2830)
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8' ?>
-<!DOCTYPE jboss-client PUBLIC "-//JBoss//DTD Application Client 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss-client_4_0.dtd">
+<!DOCTYPE jboss-client PUBLIC "-//JBoss//DTD Application Client 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-client_4_2.dtd">
<jboss-client>
<jndi-name>jbossws-client</jndi-name>
@@ -10,14 +10,14 @@
<config-name>Standard WSSecurity Client</config-name>
<port-component-ref>
<service-endpoint-interface>org.jboss.test.ws.jaxrpc.wsse.JaxRpcTestService</service-endpoint-interface>
- <call-property>
+ <stub-property>
<prop-name>javax.xml.rpc.security.auth.username</prop-name>
<prop-value>kermit</prop-value>
- </call-property>
- <call-property>
+ </stub-property>
+ <stub-property>
<prop-name>javax.xml.rpc.security.auth.password</prop-name>
<prop-value>thefrog</prop-value>
- </call-property>
+ </stub-property>
</port-component-ref>
<wsdl-override>http://@jbosstest.host.name@:8080/jaxrpc-wsse-username?wsdl</wsdl-override>
</service-ref>