Author: dkulp
Date: Fri Jan 13 21:22:03 2012
New Revision: 1231305
URL: http://svn.apache.org/viewvc?rev=1231305&view=rev
Log:
Merged revisions 1231301 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1231301 | dkulp | 2012-01-13 16:16:37 -0500 (Fri, 13 Jan 2012) | 2 lines
[CXF-4016] Fix problems of having only an XmlRootElement annotation on a
fault bean
........
Modified:
cxf/branches/2.5.x-fixes/ (props changed)
cxf/branches/2.5.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
cxf/branches/2.5.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java?rev=1231305&r1=1231304&r2=1231305&view=diff
==============================================================================
---
cxf/branches/2.5.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
(original)
+++
cxf/branches/2.5.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
Fri Jan 13 21:22:03 2012
@@ -575,7 +575,6 @@ class JAXBSchemaInitializer extends Serv
XmlSchemaSequence seq, JAXBBeanInfo beanInfo,
QName name, boolean isArray) {
XmlSchemaElement el = new XmlSchemaElement(schema, false);
- el.setName(name.getLocalPart());
if (isArray) {
el.setMinOccurs(0);
@@ -590,9 +589,9 @@ class JAXBSchemaInitializer extends Serv
QName ename = new QName(beanInfo.getElementNamespaceURI(null),
beanInfo.getElementLocalName(null));
XmlSchemaElement el2 = schemas.getElementByQName(ename);
- el.setName(null);
- el.getRef().setTargetQName(el2.getRef().getTargetQName());
+ el.getRef().setTargetQName(el2.getQName());
} else {
+ el.setName(name.getLocalPart());
Iterator<QName> itr = beanInfo.getTypeNames().iterator();
if (!itr.hasNext()) {
return;
Modified:
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java?rev=1231305&r1=1231304&r2=1231305&view=diff
==============================================================================
---
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
(original)
+++
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
Fri Jan 13 21:22:03 2012
@@ -22,8 +22,11 @@ import java.util.Collection;
import javax.jws.WebService;
import javax.wsdl.Definition;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import javax.xml.ws.Endpoint;
+import javax.xml.ws.WebFault;
import org.w3c.dom.Document;
@@ -196,6 +199,76 @@ public class CodeFirstWSDLTest extends A
@Test
+ public void testOnlyRootElementOnFaultBean() throws Exception {
+ //CXF-4016
+ EndpointImpl ep = (EndpointImpl)Endpoint.publish("local://foo4016",
new CXF4016Impl());
+ ServiceWSDLBuilder wsdlBuilder =
+ new ServiceWSDLBuilder(bus,
ep.getService().getServiceInfos().get(0));
+ Definition def = wsdlBuilder.build();
+ Document d =
bus.getExtension(WSDLManager.class).getWSDLFactory().newWSDLWriter().getDocument(def);
+ this.addNamespace("http://www.example.org/contract/DoubleIt", "tns");
+ //org.apache.cxf.helpers.XMLUtils.printDOM(d);
+ assertValid("//xsd:element[@ref='tns:CustomMessageBean']", d);
+ }
+
+
+ @WebService(targetNamespace = "http://www.example.org/contract/DoubleIt",
+ serviceName = "DoubleItService",
+ portName = "DoubleItPort")
+ public static class CXF4016Impl {
+ public int doubleIt(int numberToDouble) throws CustomException {
+ return numberToDouble * 2;
+ }
+
+ }
+ @WebFault(name = "CustomException", targetNamespace =
"http://www.example.org/contract/DoubleIt")
+ public static class CustomException extends Exception {
+ private static final long serialVersionUID = 1L;
+ private CustomMessageBean faultInfo;
+
+ public CustomException(String msg) {
+ super(msg);
+ }
+ public CustomException(String msg, CustomMessageBean b) {
+ super(msg);
+ faultInfo = b;
+ }
+ public CustomMessageBean getCustomMessage() {
+ return faultInfo;
+ }
+ public void setCustomMessage(CustomMessageBean b) {
+ faultInfo = b;
+ }
+ }
+
+ @XmlRootElement(name = "CustomMessageBean")
+ @XmlType(name = "", propOrder = { "myId", "msg" })
+ public static class CustomMessageBean {
+ String msg;
+ int myId;
+
+ public CustomMessageBean() {
+ }
+
+ public int getMyId() {
+ return myId;
+ }
+
+ public void setMyId(int myId) {
+ this.myId = myId;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+ }
+
+
+ @Test
public void testDocumentationOnImpl() throws Exception {
//CXF-3092
EndpointImpl ep = (EndpointImpl)Endpoint.publish("local://foo", new
CXF3092Impl());