Author: richard.opalka(a)jboss.com
Date: 2010-02-25 05:17:43 -0500 (Thu, 25 Feb 2010)
New Revision: 11684
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/EndpointReferenceUtil.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/NativeEndpointReference.java
Log:
[JBWS-2942] fixing NativeEndpointReference implementation to don't serialize empty
metadata and reference parameters elements
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java 2010-02-25
09:23:21 UTC (rev 11683)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java 2010-02-25
10:17:43 UTC (rev 11684)
@@ -173,8 +173,9 @@
try
{
- //we currently support W3CEndpointReference only
- return new W3CEndpointReference(eprInfoset);
+ final NativeEndpointReference nativeEPR = new
NativeEndpointReference(eprInfoset);
+ final Source source =
EndpointReferenceUtil.getSourceFromEndpointReference(nativeEPR);
+ return new W3CEndpointReference(source);
}
catch (Exception e)
{
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/EndpointReferenceUtil.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/EndpointReferenceUtil.java 2010-02-25
09:23:21 UTC (rev 11683)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/EndpointReferenceUtil.java 2010-02-25
10:17:43 UTC (rev 11684)
@@ -68,7 +68,7 @@
throw new WebServiceException("EndpointReference of type " + clazz +
" not supported.");
}
- private static Source getSourceFromEndpointReference(EndpointReference epr)
+ public static Source getSourceFromEndpointReference(EndpointReference epr)
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
StreamResult result = new StreamResult(outputStream);
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/NativeEndpointReference.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/NativeEndpointReference.java 2010-02-25
09:23:21 UTC (rev 11683)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/wsaddressing/NativeEndpointReference.java 2010-02-25
10:17:43 UTC (rev 11684)
@@ -56,7 +56,7 @@
* @see EndpointReferenceUtil class.
*
* @author alessio.soldano(a)jboss.com
- * @author <a href="mailto:ropalka@redhat.com">Richard
Opalka</a>ok
+ * @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
* @since 28-Feb-2009
*/
@XmlRootElement(name = "EndpointReference", namespace =
NativeEndpointReference.WSA_NS)
@@ -75,9 +75,9 @@
@XmlElement(name = "Address", namespace = WSA_NS)
private Address address;
@XmlElement(name = "ReferenceParameters", namespace = WSA_NS)
- private Elements referenceParameters = new Elements();
+ private Elements referenceParameters;
@XmlElement(name = "Metadata", namespace = WSA_NS)
- private Elements metadata = new Elements();
+ private Elements metadata;
@XmlAnyAttribute
private Map<QName, String> attributes;
@XmlAnyElement
@@ -113,8 +113,14 @@
{
NativeEndpointReference epr = jc.createUnmarshaller().unmarshal(source,
NativeEndpointReference.class).getValue();
this.address = epr.address;
- this.referenceParameters = epr.referenceParameters;
- this.metadata = epr.metadata;
+ if ((epr.referenceParameters != null) &&
(!epr.referenceParameters.isEmpty()))
+ {
+ this.referenceParameters = epr.referenceParameters;
+ }
+ if ((epr.metadata != null) && (!epr.metadata.isEmpty()))
+ {
+ this.metadata = epr.metadata;
+ }
this.attributes = epr.attributes;
this.elements = epr.elements;
if (epr.metadata != null)
@@ -193,6 +199,9 @@
final String attrName = this.getNamespaceAttributeName(serviceName.getPrefix());
this.serviceNameElement.setAttribute(attrName, serviceName.getNamespaceURI());
this.serviceNameElement.setTextContent(this.toString(serviceName));
+ if (this.metadata == null)
+ this.metadata = new Elements();
+
this.metadata.addElement(this.serviceNameElement);
}
@@ -226,12 +235,18 @@
final String attrName = this.getNamespaceAttributeName(interfaceName.getPrefix());
interfaceNameElement.setAttribute(attrName, interfaceName.getNamespaceURI());
interfaceNameElement.setTextContent(this.toString(interfaceName));
+ if (this.metadata == null)
+ this.metadata = new Elements();
+
this.metadata.addElement(interfaceNameElement);
}
@XmlTransient
public List<Element> getMetadata()
{
+ if (this.metadata == null)
+ return null;
+
return this.metadata.getElements();
}
@@ -240,6 +255,9 @@
if ((metadata == null) || (metadata.size() == 0))
return;
+ if (this.metadata == null)
+ this.metadata = new Elements();
+
this.metadata.setElements(metadata);
}
@@ -268,12 +286,18 @@
return;
this.wsdlLocation = wsdlLocation;
+ if (this.metadata == null)
+ this.metadata = new Elements();
+
this.metadata.addAttribute(WSDL_LOCATION_QNAME, wsdlLocation);
}
@XmlTransient
public List<Element> getReferenceParameters()
{
+ if (this.referenceParameters == null)
+ return null;
+
return this.referenceParameters.getElements();
}
@@ -282,6 +306,9 @@
if ((metadata == null) || (metadata.size() == 0))
return;
+ if (this.referenceParameters == null)
+ this.referenceParameters = new Elements();
+
this.referenceParameters.setElements(metadata);
}
@@ -499,6 +526,15 @@
}
this.attributes.put(attrName, attrValue);
}
+
+ @XmlTransient
+ public boolean isEmpty()
+ {
+ final boolean noAttributes = this.attributes == null || this.attributes.size()
== 0;
+ final boolean noElements = this.elements == null || this.elements.size() == 0;
+
+ return noAttributes && noElements;
+ }
}
}
Show replies by date