Author: jason.greene(a)jboss.com
Date: 2006-10-26 02:40:22 -0400 (Thu, 26 Oct 2006)
New Revision: 1314
Added:
trunk/src/test/resources/jaxws/provider/shared/
trunk/src/test/resources/jaxws/provider/shared/wsdl/
trunk/src/test/resources/jaxws/provider/shared/wsdl/Provider.wsdl
Modified:
trunk/src/main/java/org/jboss/ws/deployment/AnnotationsMetaDataBuilder.java
trunk/src/main/java/org/jboss/ws/deployment/JAXWSMetaDataBuilder.java
trunk/src/main/java/org/jboss/ws/deployment/JAXWSProviderMetaDataBuilderJSE.java
trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
trunk/src/test/ant/build-jars-jaxws.xml
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanJAXB.java
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanMessage.java
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanPayload.java
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderJAXBTestCase.java
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderMessageTestCase.java
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderPayloadTestCase.java
Log:
Implement JBWS-1026
Fix bug in JSR181MetaDataBuilder relating to faults
Modified: trunk/src/main/java/org/jboss/ws/deployment/AnnotationsMetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/AnnotationsMetaDataBuilder.java 2006-10-25
22:10:54 UTC (rev 1313)
+++ trunk/src/main/java/org/jboss/ws/deployment/AnnotationsMetaDataBuilder.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -68,56 +68,6 @@
}
}
- protected void processOrGenerateWSDL(Class wsClass, ServiceMetaData serviceMetaData,
String wsdlLocation, EndpointMetaData endpointMetaData)
- {
- if (wsdlLocation.length() > 0)
- {
- serviceMetaData.setWsdlFile(wsdlLocation);
- }
- else
- {
- // Generate the wsdl
- ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- UnifiedMetaData wsMetaData = serviceMetaData.getUnifiedMetaData();
- Thread.currentThread().setContextClassLoader(wsMetaData.getClassLoader());
- String serviceName = serviceMetaData.getServiceName().getLocalPart();
-
- JavaToWSDL javaToWSDL = new JavaToWSDL(Constants.NS_WSDL11);
- javaToWSDL.setUnifiedMetaData(wsMetaData);
- javaToWSDL.setQualifiedElements(true);
- WSDLDefinitions wsdlDefinitions = javaToWSDL.generate(wsClass);
-
- ServerConfigFactory factory = ServerConfigFactory.getInstance();
- ServerConfig config = factory.getServerConfig();
- File tmpdir = new File(config.getServerTempDir().getCanonicalPath() +
"/jbossws");
- tmpdir.mkdirs();
-
- File wsdlTmpFile = File.createTempFile(serviceName, ".wsdl",
tmpdir);
- wsdlTmpFile.deleteOnExit();
-
- Writer writer = IOUtils.getCharsetFileWriter(wsdlTmpFile,
Constants.DEFAULT_XML_CHARSET);
- wsdlDefinitions.write(writer, Constants.DEFAULT_XML_CHARSET);
- writer.close();
-
- serviceMetaData.setWsdlFile(wsdlTmpFile.toURL().toExternalForm());
- }
- catch (RuntimeException rte)
- {
- throw rte;
- }
- catch (IOException e)
- {
- throw new WSException("Cannot write generated wsdl", e);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(ctxLoader);
- }
- }
- }
-
protected void processPortComponent(UnifiedDeploymentInfo udi, Class wsClass, String
linkName, ServerEndpointMetaData epMetaData)
{
String contextRoot = null;
@@ -136,12 +86,12 @@
String configName = anPortComponent.configName();
if (configName.length() > 0)
epMetaData.setConfigName(configName);
-
+
// setup config file
String configFile = anPortComponent.configFile();
if (configFile.length() > 0)
epMetaData.setConfigFile(configFile);
-
+
// setup endpoint url
if (anPortComponent.contextRoot().length() > 0)
{
Modified: trunk/src/main/java/org/jboss/ws/deployment/JAXWSMetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/JAXWSMetaDataBuilder.java 2006-10-25
22:10:54 UTC (rev 1313)
+++ trunk/src/main/java/org/jboss/ws/deployment/JAXWSMetaDataBuilder.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -39,10 +39,4 @@
public JAXWSMetaDataBuilder()
{
}
-
- protected void replaceAddressLocation(ServerEndpointMetaData epMetaData)
- {
- // FIXME: JBWS-1026
- // Remove this method
- }
}
Modified:
trunk/src/main/java/org/jboss/ws/deployment/JAXWSProviderMetaDataBuilderJSE.java
===================================================================
---
trunk/src/main/java/org/jboss/ws/deployment/JAXWSProviderMetaDataBuilderJSE.java 2006-10-25
22:10:54 UTC (rev 1313)
+++
trunk/src/main/java/org/jboss/ws/deployment/JAXWSProviderMetaDataBuilderJSE.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -116,7 +116,7 @@
// implement a typed Provider interface.
if (JavaUtils.isAssignableFrom(Provider.class, sepClass) == false)
throw new WebServiceException("Endpoint implementation does not implement
javax.xml.ws.Provider: " + sepClass.getName());
-
+
// 5.4 Conformance (WebServiceProvider annotation): A Provider based service
endpoint implementation
// MUST carry a WebServiceProvider annotation
WebServiceProvider anWebServiceProvider =
(WebServiceProvider)sepClass.getAnnotation(WebServiceProvider.class);
@@ -169,12 +169,11 @@
// Process invoke method
processInvokeMethod(sepMetaData);
- // Process or generate WSDL
+ // Process WSDL
String wsdlLocation = anWebServiceProvider.wsdlLocation();
+ if (wsdlLocation != null)
+ serviceMetaData.setWsdlFile(wsdlLocation);
- // FIXME: JBWS-1026
- // processOrGenerateWSDL(wsClass, serviceMetaData, wsdlLocation, sepMetaData);
-
// Set the endpoint address
processPortComponent(udi, sepClass, linkName, sepMetaData);
@@ -185,6 +184,13 @@
return sepMetaData;
}
+ @Override
+ protected void replaceAddressLocation(ServerEndpointMetaData epMetaData)
+ {
+ // A provider may not have a WSDL file
+ if (epMetaData.getServiceMetaData().getWsdlFile() != null)
+ super.replaceAddressLocation(epMetaData);
+ }
private void processInvokeMethod(ServerEndpointMetaData epMetaData) throws
SecurityException, NoSuchMethodException
{
Modified: trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java 2006-10-25
22:10:54 UTC (rev 1313)
+++ trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -774,6 +774,9 @@
String namespace;
String faultBeanName = null;
+ // Only the element name is effected by @WebFault, the type uses the same
convention
+ QName xmlType = new QName(omd.getQName().getNamespaceURI(),
exception.getSimpleName());
+
/*
* If @WebFault is present, and the exception contains getFaultInfo, the
* return value should be used. Otherwise we need to generate the bean.
@@ -795,16 +798,16 @@
}
else
{
- name = exception.getSimpleName();
- namespace = omd.getQName().getNamespaceURI();
+ name = xmlType.getLocalPart();
+ namespace = xmlType.getNamespaceURI();
}
if (faultBeanName == null)
faultBeanName =
JavaUtils.getPackageName(omd.getEndpointMetaData().getServiceEndpointInterface()) +
".jaxws." + exception.getSimpleName() + "Bean";
- QName xmlName = new QName(omd.getQName().getNamespaceURI(), name);
+ QName xmlName = new QName(namespace, name);
- FaultMetaData fmd = new FaultMetaData(omd, xmlName, exception.getName());
+ FaultMetaData fmd = new FaultMetaData(omd, xmlName, xmlType, exception.getName());
fmd.setFaultBeanName(faultBeanName);
if (generate)
Modified: trunk/src/test/ant/build-jars-jaxws.xml
===================================================================
--- trunk/src/test/ant/build-jars-jaxws.xml 2006-10-25 22:10:54 UTC (rev 1313)
+++ trunk/src/test/ant/build-jars-jaxws.xml 2006-10-26 06:40:22 UTC (rev 1314)
@@ -298,6 +298,9 @@
<include
name="org/jboss/test/ws/jaxws/provider/UserType.class"/>
<include
name="org/jboss/test/ws/jaxws/provider/package-info.class"/>
</classes>
+ <webinf dir="${build.test.dir}/resources/jaxws/provider/shared">
+ <include name="wsdl/Provider.wsdl"/>
+ </webinf>
</war>
<!-- jaxws-provider-message -->
@@ -305,6 +308,9 @@
<classes dir="${build.test.dir}/classes">
<include
name="org/jboss/test/ws/jaxws/provider/ProviderBeanMessage.class"/>
</classes>
+ <webinf dir="${build.test.dir}/resources/jaxws/provider/shared">
+ <include name="wsdl/Provider.wsdl"/>
+ </webinf>
</war>
<!-- jaxws-provider-payload -->
@@ -312,6 +318,9 @@
<classes dir="${build.test.dir}/classes">
<include
name="org/jboss/test/ws/jaxws/provider/ProviderBeanPayload.class"/>
</classes>
+ <webinf dir="${build.test.dir}/resources/jaxws/provider/shared">
+ <include name="wsdl/Provider.wsdl"/>
+ </webinf>
</war>
<!-- jaxws-samples-jsr181ejb -->
Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanJAXB.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanJAXB.java 2006-10-25
22:10:54 UTC (rev 1313)
+++ trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanJAXB.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -42,23 +42,27 @@
* @author Thomas.Diesler(a)jboss.org
* @since 29-Jun-2006
*/
-@WebServiceProvider
+@WebServiceProvider(
+ serviceName = "ProviderService",
+ portName = "ProviderPort",
+ targetNamespace = "http://org.jboss.ws/provider",
+ wsdlLocation = "WEB-INF/wsdl/Provider.wsdl")
@ServiceMode(value = Service.Mode.PAYLOAD)
public class ProviderBeanJAXB implements Provider<Source>
{
// provide logging
private static Logger log = Logger.getLogger(ProviderBeanJAXB.class);
-
+
public Source invoke(Source request)
{
try
{
JAXBContext jc =
JAXBContext.newInstance(UserType.class.getPackage().getName());
JAXBElement reqElement =
(JAXBElement)jc.createUnmarshaller().unmarshal(request);
-
+
UserType user = (UserType)reqElement.getValue();
log.info("[string=" + user.getString() + ",qname=" +
user.getQname() + "]");
-
+
JAXBElement resElement = new JAXBElement(new
QName("http://org.jboss.ws/provider", "user"), UserType.class, user);
return new JAXBSource(jc, resElement);
}
Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanMessage.java
===================================================================
---
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanMessage.java 2006-10-25
22:10:54 UTC (rev 1313)
+++
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanMessage.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -35,7 +35,11 @@
* @author Thomas.Diesler(a)jboss.org
* @since 29-Jun-2006
*/
-@WebServiceProvider
+@WebServiceProvider(
+ serviceName = "ProviderService",
+ portName = "ProviderPort",
+ targetNamespace = "http://org.jboss.ws/provider",
+ wsdlLocation = "WEB-INF/wsdl/Provider.wsdl")
@ServiceMode(value = Service.Mode.MESSAGE)
public class ProviderBeanMessage implements Provider<SOAPMessage>
{
Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanPayload.java
===================================================================
---
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanPayload.java 2006-10-25
22:10:54 UTC (rev 1313)
+++
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderBeanPayload.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -41,8 +41,12 @@
* @author Thomas.Diesler(a)jboss.org
* @since 29-Jun-2006
*/
-@WebServiceProvider
-// in absence PAYLOAD is implicit
+@WebServiceProvider(
+ serviceName = "ProviderService",
+ portName = "ProviderPort",
+ targetNamespace = "http://org.jboss.ws/provider",
+ wsdlLocation = "WEB-INF/wsdl/Provider.wsdl")
+// in absence PAYLOAD is implicit
// @ServiceMode(value = Service.Mode.PAYLOAD)
public class ProviderBeanPayload implements Provider<Source>
{
Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderJAXBTestCase.java
===================================================================
---
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderJAXBTestCase.java 2006-10-25
22:10:54 UTC (rev 1313)
+++
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderJAXBTestCase.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -40,6 +40,8 @@
import org.jboss.test.ws.JBossWSTest;
import org.jboss.test.ws.JBossWSTestSetup;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitionsFactory;
import org.w3c.dom.Element;
/**
@@ -57,26 +59,23 @@
public void testWSDLAccess() throws Exception
{
- System.out.println("FIXME: JBWS-1026");
- /*
URL wsdlURL = new URL("http://" + getServerHost() +
":8080/jaxws-provider-jaxb?wsdl");
WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
WSDLDefinitions wsdlDefinitions = factory.parse(wsdlURL);
assertNotNull(wsdlDefinitions);
- */
}
-
+
public void testProviderMessage() throws Exception
{
- String reqString =
- "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
- " <env:Header/>" +
- " <env:Body>" +
- " <ns1:user
xmlns:ns1='http://org.jboss.ws/provider'>" +
- " <ns1:string>Kermit</ns1:string>" +
- " <ns1:qname>The Frog</ns1:qname>" +
- " </ns1:user>" +
- " </env:Body>" +
+ String reqString =
+ "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
+ " <env:Header/>" +
+ " <env:Body>" +
+ " <ns1:user
xmlns:ns1='http://org.jboss.ws/provider'>" +
+ " <ns1:string>Kermit</ns1:string>" +
+ " <ns1:qname>The Frog</ns1:qname>" +
+ " </ns1:user>" +
+ " </env:Body>" +
"</env:Envelope>";
MessageFactory msgFactory = MessageFactory.newInstance();
@@ -86,12 +85,12 @@
URL epURL = new URL("http://" + getServerHost() +
":8080/jaxws-provider-jaxb");
SOAPMessage resMsg = con.call(reqMsg, epURL);
SOAPEnvelope resEnv = resMsg.getSOAPPart().getEnvelope();
-
+
Element child = (Element)resEnv.getBody().getChildElements().next();
JAXBContext jc = JAXBContext.newInstance(UserType.class.getPackage().getName());
JAXBElement jaxbEl = (JAXBElement)jc.createUnmarshaller().unmarshal(new
DOMSource(child));
UserType user = (UserType)jaxbEl.getValue();
-
+
assertEquals("Kermit", user.getString());
assertEquals(new QName("The Frog"), user.getQname());
}
Modified:
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderMessageTestCase.java
===================================================================
---
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderMessageTestCase.java 2006-10-25
22:10:54 UTC (rev 1313)
+++
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderMessageTestCase.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -36,6 +36,8 @@
import org.jboss.test.ws.JBossWSTest;
import org.jboss.test.ws.JBossWSTestSetup;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitionsFactory;
/**
* Test a Provider<SOAPMessage>
@@ -52,23 +54,20 @@
public void testWSDLAccess() throws Exception
{
- System.out.println("FIXME: JBWS-1026");
- /*
URL wsdlURL = new URL("http://" + getServerHost() +
":8080/jaxws-provider-message?wsdl");
WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
WSDLDefinitions wsdlDefinitions = factory.parse(wsdlURL);
assertNotNull(wsdlDefinitions);
- */
}
-
+
public void testProviderMessage() throws Exception
{
- String msgString =
- "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
- " <env:Header/>" +
- " <env:Body>" +
- " <ns1:somePayload
xmlns:ns1='http://org.jboss.ws/provider'/>" +
- " </env:Body>" +
+ String msgString =
+ "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
+ " <env:Header/>" +
+ " <env:Body>" +
+ " <ns1:somePayload
xmlns:ns1='http://org.jboss.ws/provider'/>" +
+ " </env:Body>" +
"</env:Envelope>";
MessageFactory msgFactory = MessageFactory.newInstance();
@@ -79,7 +78,7 @@
URL epURL = new URL("http://" + getServerHost() +
":8080/jaxws-provider-message");
SOAPMessage resMsg = con.call(reqMsg, epURL);
SOAPEnvelope resEnv = resMsg.getSOAPPart().getEnvelope();
-
+
assertEquals(reqEnv, resEnv);
}
}
Modified:
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderPayloadTestCase.java
===================================================================
---
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderPayloadTestCase.java 2006-10-25
22:10:54 UTC (rev 1313)
+++
trunk/src/test/java/org/jboss/test/ws/jaxws/provider/ProviderPayloadTestCase.java 2006-10-26
06:40:22 UTC (rev 1314)
@@ -36,6 +36,8 @@
import org.jboss.test.ws.JBossWSTest;
import org.jboss.test.ws.JBossWSTestSetup;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitionsFactory;
/**
* Test a Provider<SOAPMessage>
@@ -52,23 +54,20 @@
public void testWSDLAccess() throws Exception
{
- System.out.println("FIXME: JBWS-1026");
- /*
URL wsdlURL = new URL("http://" + getServerHost() +
":8080/jaxws-provider-payload?wsdl");
WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
WSDLDefinitions wsdlDefinitions = factory.parse(wsdlURL);
assertNotNull(wsdlDefinitions);
- */
}
-
+
public void testProviderMessage() throws Exception
{
- String reqString =
- "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
- " <env:Header/>" +
- " <env:Body>" +
- " <ns1:somePayload
xmlns:ns1='http://org.jboss.ws/provider'/>" +
- " </env:Body>" +
+ String reqString =
+ "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
+ " <env:Header/>" +
+ " <env:Body>" +
+ " <ns1:somePayload
xmlns:ns1='http://org.jboss.ws/provider'/>" +
+ " </env:Body>" +
"</env:Envelope>";
MessageFactory msgFactory = MessageFactory.newInstance();
@@ -79,7 +78,7 @@
URL epURL = new URL("http://" + getServerHost() +
":8080/jaxws-provider-payload");
SOAPMessage resMsg = con.call(reqMsg, epURL);
SOAPEnvelope resEnv = resMsg.getSOAPPart().getEnvelope();
-
+
assertEquals(reqEnv, resEnv);
}
}
Added: trunk/src/test/resources/jaxws/provider/shared/wsdl/Provider.wsdl
===================================================================
--- trunk/src/test/resources/jaxws/provider/shared/wsdl/Provider.wsdl 2006-10-25 22:10:54
UTC (rev 1313)
+++ trunk/src/test/resources/jaxws/provider/shared/wsdl/Provider.wsdl 2006-10-26 06:40:22
UTC (rev 1314)
@@ -0,0 +1,43 @@
+<?xml version='1.0'?>
+<definitions name='ProviderService'
targetNamespace='http://org.jboss.ws/provider'
xmlns='http://schemas.xmlsoap.org/wsdl/'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:tns='http://org.jboss.ws/provider'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
+ <types>
+ <xs:schema targetNamespace='http://org.jboss.ws/provider'
xmlns:tns='http://org.jboss.ws/provider' version='1.0'
xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='user' type='tns:UserType'/>
+ <xs:complexType name='UserType'>
+ <xs:sequence>
+ <xs:element name='string' type='xs:string'/>
+ <xs:element name='qname' type='xs:QName'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ </types>
+ <message name='echo'>
+ <part element='tns:user' name='user'/>
+ </message>
+ <message name='echoResponse'>
+ <part element='tns:user' name='user'/>
+ </message>
+ <portType name='Provider'>
+ <operation name='echo'>
+ <input message='tns:echo'/>
+ <output message='tns:echoResponse'/>
+ </operation>
+ </portType>
+ <binding name='ProviderBinding' type='tns:Provider'>
+ <soap:binding style='document'
transport='http://schemas.xmlsoap.org/soap/http'/>
+ <operation name='echo'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ </binding>
+ <service name='ProviderService'>
+ <port binding='tns:ProviderBinding' name='ProviderPort'>
+ <soap:address location='REPLACE_WITH_ACTUAL_URL'/>
+ </port>
+ </service>
+</definitions>
Property changes on: trunk/src/test/resources/jaxws/provider/shared/wsdl/Provider.wsdl
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF