[jbossws-commits] JBossWS SVN: r3536 - trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Mon Jun 11 12:11:42 EDT 2007


Author: heiko.braun at jboss.com
Date: 2007-06-11 12:11:41 -0400 (Mon, 11 Jun 2007)
New Revision: 3536

Modified:
   trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java
Log:
- Assert on required elements
- Additional docs and coments

Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java	2007-06-11 16:10:41 UTC (rev 3535)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java	2007-06-11 16:11:41 UTC (rev 3536)
@@ -23,28 +23,6 @@
 
 //$Id$
 
-import java.lang.reflect.Array;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFactory;
-import javax.xml.soap.SOAPHeader;
-import javax.xml.soap.SOAPHeaderElement;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.ws.addressing.AddressingConstants;
-import javax.xml.ws.addressing.AddressingException;
-import javax.xml.ws.addressing.ReferenceParameters;
-import javax.xml.ws.addressing.Relationship;
-import javax.xml.ws.addressing.soap.SOAPAddressingBuilder;
-import javax.xml.ws.addressing.soap.SOAPAddressingProperties;
-
 import org.jboss.util.NotImplementedException;
 import org.jboss.ws.core.soap.NameImpl;
 import org.jboss.ws.core.soap.SOAPFactoryImpl;
@@ -57,7 +35,23 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 
-/** 
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+import javax.xml.ws.addressing.AddressingConstants;
+import javax.xml.ws.addressing.AddressingException;
+import javax.xml.ws.addressing.ReferenceParameters;
+import javax.xml.ws.addressing.Relationship;
+import javax.xml.ws.addressing.soap.SOAPAddressingBuilder;
+import javax.xml.ws.addressing.soap.SOAPAddressingProperties;
+import java.lang.reflect.Array;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
  * Subimplementation of <code>AddressingProperties</code> includes methods that
  * read and write the Message Addressing Properties to a <code>SOAPMessage</code>.
  * All individual properties must implement <code>SOAPAddressingElement</code>.
@@ -67,270 +61,308 @@
  */
 public class SOAPAddressingPropertiesImpl extends AddressingPropertiesImpl implements SOAPAddressingProperties
 {
-   private static AddressingConstants ADDR = new AddressingConstantsImpl();
+	private static AddressingConstants ADDR = new AddressingConstantsImpl();
 
-   private NamespaceRegistry nsRegistry = new NamespaceRegistry();
+	private NamespaceRegistry nsRegistry = new NamespaceRegistry();
 
-   public void readHeaders(SOAPMessage message) throws AddressingException
-   {
-      try
-      {
-         SOAPHeader soapHeader = message.getSOAPHeader();
+	private String getRequiredHeaderContent(SOAPHeader soapHeader, QName qname)
+	{
+		Element element = DOMUtils.getFirstChildElement(soapHeader, qname);
+		if(null == element) throw new IllegalArgumentException("Required element "+qname+" is missing");
 
-         SOAPAddressingBuilder builder = new SOAPAddressingBuilderImpl();
-         AddressingConstants ADDR = builder.newAddressingConstants();
+		String value = DOMUtils.getTextContent(element);
+		if(null == value || value.equals("")) throw new IllegalArgumentException("Required element "+qname+" is missing");
+		
+		return value;
+	}
 
-         Element wsaAction = DOMUtils.getFirstChildElement(soapHeader, ADDR.getActionQName());
-         if (wsaAction != null)
-         {
-            // Register wsa namespace
-            nsRegistry.registerURI(ADDR.getNamespaceURI(), ADDR.getNamespacePrefix());
+	private String getOptionalHeaderContent(SOAPHeader soapHeader, QName qname)
+	{
+		Element element = DOMUtils.getFirstChildElement(soapHeader, ADDR.getMessageIDQName());
+		if (element != null)
+		{
+			return DOMUtils.getTextContent(element);
+		}
 
-            // Register namespaces
-            NamedNodeMap attribs = soapHeader.getAttributes();
-            for (int i = 0; i < attribs.getLength(); i++)
-            {
-               Attr attr = (Attr)attribs.item(i);
-               String attrName = attr.getName();
-               String attrValue = attr.getValue();
-               if (attrName.startsWith("xmlns:"))
-               {
-                  String prefix = attrName.substring(6);
-                  nsRegistry.registerURI(attrValue, prefix);
-               }
-            }
+		return null;
+	}
+	
+	public void readHeaders(SOAPMessage message) throws AddressingException
+	{
+		try
+		{
+			SOAPHeader soapHeader = message.getSOAPHeader();
 
-            // Read wsa:To
-            Element wsaTo = DOMUtils.getFirstChildElement(soapHeader, ADDR.getToQName());
-            if (wsaTo != null)
-            {
-               String to = DOMUtils.getTextContent(wsaTo);
-               setTo(builder.newURI(to));
-            }
+			SOAPAddressingBuilder builder = new SOAPAddressingBuilderImpl();
+			AddressingConstants ADDR = builder.newAddressingConstants();
+			registerNamespaces(ADDR, soapHeader);
+			
+			// required elements
+			String action = getRequiredHeaderContent(soapHeader, ADDR.getActionQName());			
+			String to = getRequiredHeaderContent(soapHeader, ADDR.getToQName());			
 
-            // Read wsa:From
-            Element wsaFrom = DOMUtils.getFirstChildElement(soapHeader, ADDR.getFromQName());
-            if (wsaFrom != null)
-            {
-               EndpointReferenceImpl ref = new EndpointReferenceImpl(wsaFrom);
-               setReplyTo(ref);
-            }
+			// wsa:Action
+			// This REQUIRED element of type xs:anyURI conveys the [action] property.
+			// The [children] of this element convey the value of this property.
+			setAction(builder.newURI(action));
 
-            // Read wsa:ReplyTo
-            Element wsaReplyTo = DOMUtils.getFirstChildElement(soapHeader, ADDR.getReplyToQName());
-            if (wsaReplyTo != null)
-            {
-               EndpointReferenceImpl ref = new EndpointReferenceImpl(wsaReplyTo);
-               setReplyTo(ref);
-            }
+			// wsa:To
+			// This REQUIRED element (of type xs:anyURI) provides the value for the [destination] property.
+			setTo(builder.newURI(to));
 
-            // Read wsa:FaultTo
-            Element wsaFaultTo = DOMUtils.getFirstChildElement(soapHeader, ADDR.getFaultToQName());
-            if (wsaFaultTo != null)
-            {
-               EndpointReferenceImpl ref = new EndpointReferenceImpl(wsaFaultTo);
-               setFaultTo(ref);
-            }
+			// Read wsa:From
+			// This OPTIONAL element (of type wsa:EndpointReferenceType) provides the value for the [source endpoint] property.
+			Element wsaFrom = DOMUtils.getFirstChildElement(soapHeader, ADDR.getFromQName());
+			if (wsaFrom != null)
+			{
+				EndpointReferenceImpl ref = new EndpointReferenceImpl(wsaFrom);
+				setReplyTo(ref);
+			}
 
-            // Read wsa:Action
-            String action = DOMUtils.getTextContent(wsaAction);
-            setAction(builder.newURI(action));
+			// Read wsa:ReplyTo
+			// This OPTIONAL element (of type wsa:EndpointReferenceType) provides the value for the [reply endpoint] property.
+			// This element MUST be present if a reply is expected. If this element is present, wsa:MessageID MUST be present.
+			Element wsaReplyTo = DOMUtils.getFirstChildElement(soapHeader, ADDR.getReplyToQName());
+			if (wsaReplyTo != null)
+			{
+				EndpointReferenceImpl ref = new EndpointReferenceImpl(wsaReplyTo);
+				setReplyTo(ref);
+			}
+			
+			// Read wsa:FaultTo
+			// This OPTIONAL element (of type wsa:EndpointReferenceType) provides the value for the [fault endpoint] property.
+			// If this element is present, wsa:MessageID MUST be present.
+			Element wsaFaultTo = DOMUtils.getFirstChildElement(soapHeader, ADDR.getFaultToQName());
+			if (wsaFaultTo != null)
+			{
+				EndpointReferenceImpl ref = new EndpointReferenceImpl(wsaFaultTo);
+				setFaultTo(ref);
+			}
 
-            // Read wsa:MessageID
-            Element wsaMessageId = DOMUtils.getFirstChildElement(soapHeader, ADDR.getMessageIDQName());
-            if (wsaMessageId != null)
-            {
-               String messageID = DOMUtils.getTextContent(wsaMessageId);
-               setMessageID(builder.newURI(messageID));
-            }
+			// Read wsa:MessageID
+			// This OPTIONAL element conveys the [message id] property.
+			// This element MUST be present if wsa:ReplyTo or wsa:FaultTo is present.
+			if(wsaReplyTo!=null || wsaFaultTo!=null)
+			{
+				String msgIdValue = getRequiredHeaderContent(soapHeader, ADDR.getMessageIDQName());
+				setMessageID(builder.newURI(msgIdValue));
+			}
+			else
+			{
+				String messageID = getOptionalHeaderContent(soapHeader, ADDR.getMessageIDQName());
+				if(messageID!=null) setMessageID(builder.newURI(messageID));
+			}
+			
+			// Read wsa:RelatesTo
+			// This OPTIONAL (repeating) element information item contributes one abstract [relationship] property value,
+			// in the form of a (URI, QName) pair.
+			// The [children] property of this element (which is of type xs:anyURI) conveys the [message id]
+			// of the related message. This element MUST be present if the message is a reply.
+			Iterator itRelatesTo = DOMUtils.getChildElements(soapHeader, ADDR.getRelatesToQName());
+			List<Relationship> relList = new ArrayList<Relationship>();
+			while (itRelatesTo.hasNext())
+			{
+				Element wsaRelatesTo = (Element)itRelatesTo.next();
+				QName type = DOMUtils.getAttributeValueAsQName(wsaRelatesTo, ADDR.getRelationshipTypeName());
+				String uri = DOMUtils.getTextContent(wsaRelatesTo);
+				Relationship rel = builder.newRelationship(new URI(uri));
+				rel.setType(type);
+				relList.add(rel);
+			}
+			Relationship[] relArr = (Relationship[])Array.newInstance(Relationship.class, relList.size());
+			relList.toArray(relArr);
+			setRelatesTo(relArr);
 
-            // Read wsa:RelatesTo
-            Iterator itRelatesTo = DOMUtils.getChildElements(soapHeader, ADDR.getRelatesToQName());
-            List<Relationship> relList = new ArrayList<Relationship>();
-            while (itRelatesTo.hasNext())
-            {
-               Element wsaRelatesTo = (Element)itRelatesTo.next();
-               QName type = DOMUtils.getAttributeValueAsQName(wsaRelatesTo, ADDR.getRelationshipTypeName());
-               String uri = DOMUtils.getTextContent(wsaRelatesTo);
-               Relationship rel = builder.newRelationship(new URI(uri));
-               rel.setType(type);
-               relList.add(rel);
-            }
-            Relationship[] relArr = (Relationship[])Array.newInstance(Relationship.class, relList.size());
-            relList.toArray(relArr);
-            setRelatesTo(relArr);
-         }
+			// Read wsa:ReferenceParameters
+			QName refQName = new QName(getNamespaceURI(), "IsReferenceParameter");
+			ReferenceParameters refParams = getReferenceParameters();
+			Iterator it = soapHeader.examineAllHeaderElements();
+			while (it.hasNext())
+			{
+				SOAPHeaderElement headerElement = (SOAPHeaderElement)it.next();
+				if ("true".equals(DOMUtils.getAttributeValue(headerElement, refQName)))
+				{
+					refParams.addElement(headerElement);
+				}
+			}
+		}
+		catch (SOAPException ex)
+		{
+			throw new AddressingException("Cannot read headers", ex);
+		}
+		catch (URISyntaxException ex)
+		{
+			throw new AddressingException("Cannot read headers", ex);
+		}
+	}
 
-         // Read wsa:ReferenceParameters
-         QName refQName = new QName(getNamespaceURI(), "IsReferenceParameter");
-         ReferenceParameters refParams = getReferenceParameters();
-         Iterator it = soapHeader.examineAllHeaderElements();
-         while (it.hasNext())
-         {
-            SOAPHeaderElement headerElement = (SOAPHeaderElement)it.next();
-            if ("true".equals(DOMUtils.getAttributeValue(headerElement, refQName)))
-            {
-               refParams.addElement(headerElement);
-            }
-         }
-      }
-      catch (SOAPException ex)
-      {
-         throw new AddressingException("Cannot read headers", ex);
-      }
-      catch (URISyntaxException ex)
-      {
-         throw new AddressingException("Cannot read headers", ex);
-      }
-   }
+	private void registerNamespaces(AddressingConstants ADDR, SOAPHeader soapHeader)
+	{
+		// Register wsa namespace
+		nsRegistry.registerURI(ADDR.getNamespaceURI(), ADDR.getNamespacePrefix());
 
-   public void writeHeaders(SOAPMessage message) throws AddressingException
-   {
-      try
-      {
-         SOAPFactoryImpl factory = (SOAPFactoryImpl)SOAPFactory.newInstance();
+		// Register namespaces
+		NamedNodeMap attribs = soapHeader.getAttributes();
+		for (int i = 0; i < attribs.getLength(); i++)
+		{
+			Attr attr = (Attr)attribs.item(i);
+			String attrName = attr.getName();
+			String attrValue = attr.getValue();
+			if (attrName.startsWith("xmlns:"))
+			{
+				String prefix = attrName.substring(6);
+				nsRegistry.registerURI(attrValue, prefix);
+			}
+		}
+	}
 
-         SOAPHeader soapHeader = message.getSOAPHeader();
+	public void writeHeaders(SOAPMessage message) throws AddressingException
+	{
+		try
+		{
+			SOAPFactoryImpl factory = (SOAPFactoryImpl)SOAPFactory.newInstance();
 
-         if (getAction() == null)
-            throw new AddressingException("Required addressing property wsa:Action");
+			SOAPHeader soapHeader = message.getSOAPHeader();
 
-         // Add the xmlns:wsa declaration 
-         soapHeader.addNamespaceDeclaration(ADDR.getNamespacePrefix(), ADDR.getNamespaceURI());
+			if (getAction() == null)
+				throw new AddressingException("Required addressing property wsa:Action");
 
-         // Write wsa:To
-         if (getTo() != null)
-         {
-            SOAPElement wsaTo = soapHeader.addChildElement(new NameImpl(ADDR.getToQName()));
-            wsaTo.addTextNode(getTo().getURI().toString());
-         }
+			// Add the xmlns:wsa declaration
+			soapHeader.addNamespaceDeclaration(ADDR.getNamespacePrefix(), ADDR.getNamespaceURI());
 
-         // Write wsa:From
-         if (getFrom() != null)
-         {
-            EndpointReferenceImpl epr = (EndpointReferenceImpl)getFrom();
-            epr.setRootQName(ADDR.getFromQName());
-            SOAPElement soapElement = factory.createElement(epr.toElement());
-            soapElement.removeNamespaceDeclaration(ADDR.getNamespacePrefix());
-            soapHeader.addChildElement(soapElement);
-         }
+			// Write wsa:To
+			if (getTo() != null)
+			{
+				SOAPElement wsaTo = soapHeader.addChildElement(new NameImpl(ADDR.getToQName()));
+				wsaTo.addTextNode(getTo().getURI().toString());
+			}
 
-         // Write wsa:ReplyTo
-         if (getReplyTo() != null)
-         {
-            EndpointReferenceImpl epr = (EndpointReferenceImpl)getReplyTo();
-            epr.setRootQName(ADDR.getReplyToQName());
-            SOAPElement soapElement = factory.createElement(epr.toElement());
-            soapElement.removeNamespaceDeclaration(ADDR.getNamespacePrefix());
-            soapHeader.addChildElement(soapElement);
-         }
+			// Write wsa:From
+			if (getFrom() != null)
+			{
+				EndpointReferenceImpl epr = (EndpointReferenceImpl)getFrom();
+				epr.setRootQName(ADDR.getFromQName());
+				SOAPElement soapElement = factory.createElement(epr.toElement());
+				soapElement.removeNamespaceDeclaration(ADDR.getNamespacePrefix());
+				soapHeader.addChildElement(soapElement);
+			}
 
-         // Write wsa:FaultTo
-         if (getFaultTo() != null)
-         {
-            EndpointReferenceImpl epr = (EndpointReferenceImpl)getFaultTo();
-            epr.setRootQName(ADDR.getFaultToQName());
-            SOAPElement soapElement = factory.createElement(epr.toElement());
-            soapElement.removeNamespaceDeclaration(ADDR.getNamespacePrefix());
-            soapHeader.addChildElement(soapElement);
-         }
+			// Write wsa:ReplyTo
+			if (getReplyTo() != null)
+			{
+				EndpointReferenceImpl epr = (EndpointReferenceImpl)getReplyTo();
+				epr.setRootQName(ADDR.getReplyToQName());
+				SOAPElement soapElement = factory.createElement(epr.toElement());
+				soapElement.removeNamespaceDeclaration(ADDR.getNamespacePrefix());
+				soapHeader.addChildElement(soapElement);
+			}
 
-         // Write wsa:Action
-         SOAPElement wsaAction = soapHeader.addChildElement(new NameImpl(ADDR.getActionQName()));
-         wsaAction.addTextNode(getAction().getURI().toString());
+			// Write wsa:FaultTo
+			if (getFaultTo() != null)
+			{
+				EndpointReferenceImpl epr = (EndpointReferenceImpl)getFaultTo();
+				epr.setRootQName(ADDR.getFaultToQName());
+				SOAPElement soapElement = factory.createElement(epr.toElement());
+				soapElement.removeNamespaceDeclaration(ADDR.getNamespacePrefix());
+				soapHeader.addChildElement(soapElement);
+			}
 
-         // Write wsa:MessageID
-         if (getMessageID() != null)
-         {
-            SOAPElement wsaMessageId = soapHeader.addChildElement(new NameImpl(ADDR.getMessageIDQName()));
-            wsaMessageId.addTextNode(getMessageID().getURI().toString());
-         }
+			// Write wsa:Action
+			SOAPElement wsaAction = soapHeader.addChildElement(new NameImpl(ADDR.getActionQName()));
+			wsaAction.addTextNode(getAction().getURI().toString());
 
-         // Write wsa:RelatesTo
-         if (getRelatesTo() != null)
-         {
-            for (Relationship rel : getRelatesTo())
-            {
-               SOAPElement wsaRelatesTo = soapHeader.addChildElement(new NameImpl(ADDR.getRelatesToQName()));
-               if (rel.getType() != null)
-               {
-                  wsaRelatesTo.setAttribute(ADDR.getRelationshipTypeName(), getPrefixedName(rel.getType()));
-               }
-               wsaRelatesTo.addTextNode(rel.getID().toString());
-            }
-         }
+			// Write wsa:MessageID
+			if (getMessageID() != null)
+			{
+				SOAPElement wsaMessageId = soapHeader.addChildElement(new NameImpl(ADDR.getMessageIDQName()));
+				wsaMessageId.addTextNode(getMessageID().getURI().toString());
+			}
 
-         // Write wsa:ReferenceParameters
-         ReferenceParameters refParams = getReferenceParameters();
-         if (refParams.getElements().size() > 0 || refParams.getAttributes().size() > 0)
-         {
-            SOAPElement wsaRefParams = soapHeader.addChildElement(new NameImpl(ADDR.getReferenceParametersQName()));
-            appendAttributes(wsaRefParams, refParams.getAttributes());
-            appendElements(wsaRefParams, refParams.getElements());
-         }
+			// Write wsa:RelatesTo
+			if (getRelatesTo() != null)
+			{
+				for (Relationship rel : getRelatesTo())
+				{
+					SOAPElement wsaRelatesTo = soapHeader.addChildElement(new NameImpl(ADDR.getRelatesToQName()));
+					if (rel.getType() != null)
+					{
+						wsaRelatesTo.setAttribute(ADDR.getRelationshipTypeName(), getPrefixedName(rel.getType()));
+					}
+					wsaRelatesTo.addTextNode(rel.getID().toString());
+				}
+			}
 
-         appendElements(soapHeader, getElements());
-      }
-      catch (SOAPException ex)
-      {
-         throw new AddressingException("Cannot read headers", ex);
-      }
-   }
+			// Write wsa:ReferenceParameters
+			ReferenceParameters refParams = getReferenceParameters();
+			if (refParams.getElements().size() > 0 || refParams.getAttributes().size() > 0)
+			{
+				SOAPElement wsaRefParams = soapHeader.addChildElement(new NameImpl(ADDR.getReferenceParametersQName()));
+				appendAttributes(wsaRefParams, refParams.getAttributes());
+				appendElements(wsaRefParams, refParams.getElements());
+			}
 
-   public void setMu(boolean mu)
-   {
-      throw new NotImplementedException();
-   }
+			appendElements(soapHeader, getElements());
+		}
+		catch (SOAPException ex)
+		{
+			throw new AddressingException("Cannot read headers", ex);
+		}
+	}
 
-   private void appendAttributes(SOAPElement soapElement, Map<QName, String> attributes)
-   {
-      for (QName qname : attributes.keySet())
-      {
-         String qualname = getPrefixedName(qname);
-         String value = attributes.get(qname);
-         soapElement.setAttribute(qualname, value);
-      }
-   }
+	public void setMu(boolean mu)
+	{
+		throw new NotImplementedException();
+	}
 
-   private void appendElements(SOAPElement soapElement, List<Object> elements)
-   {
-      try
-      {
-         SOAPFactoryImpl factory = (SOAPFactoryImpl)SOAPFactory.newInstance();
-         for (Object obj : elements)
-         {
-            if (obj instanceof Element)
-            {
-               SOAPElement child = factory.createElement((Element)obj);
-               soapElement.addChildElement(child);
-            }
-            else if (obj instanceof String)
-            {
-               Element el = DOMUtils.parse((String)obj);
-               SOAPElement child = factory.createElement(el);
-               soapElement.addChildElement(child);
-            }
-            else
-            {
-               throw new AddressingException("Unsupported element: " + obj.getClass().getName());
-            }
-         }
-      }
-      catch (RuntimeException rte)
-      {
-         throw rte;
-      }
-      catch (Exception ex)
-      {
-         throw new AddressingException("Cannot append elements", ex);
-      }
-   }
+	private void appendAttributes(SOAPElement soapElement, Map<QName, String> attributes)
+	{
+		for (QName qname : attributes.keySet())
+		{
+			String qualname = getPrefixedName(qname);
+			String value = attributes.get(qname);
+			soapElement.setAttribute(qualname, value);
+		}
+	}
 
-   private String getPrefixedName(QName qname)
-   {
-      String prefix = qname.getPrefix();
-      String localPart = qname.getLocalPart();
-      String qualname = (prefix != null && prefix.length() > 0 ? prefix + ":" + localPart : localPart);
-      return qualname;
-   }
+	private void appendElements(SOAPElement soapElement, List<Object> elements)
+	{
+		try
+		{
+			SOAPFactoryImpl factory = (SOAPFactoryImpl)SOAPFactory.newInstance();
+			for (Object obj : elements)
+			{
+				if (obj instanceof Element)
+				{
+					SOAPElement child = factory.createElement((Element)obj);
+					soapElement.addChildElement(child);
+				}
+				else if (obj instanceof String)
+				{
+					Element el = DOMUtils.parse((String)obj);
+					SOAPElement child = factory.createElement(el);
+					soapElement.addChildElement(child);
+				}
+				else
+				{
+					throw new AddressingException("Unsupported element: " + obj.getClass().getName());
+				}
+			}
+		}
+		catch (RuntimeException rte)
+		{
+			throw rte;
+		}
+		catch (Exception ex)
+		{
+			throw new AddressingException("Cannot append elements", ex);
+		}
+	}
+
+	private String getPrefixedName(QName qname)
+	{
+		String prefix = qname.getPrefix();
+		String localPart = qname.getLocalPart();
+		String qualname = (prefix != null && prefix.length() > 0 ? prefix + ":" + localPart : localPart);
+		return qualname;
+	}
 }




More information about the jbossws-commits mailing list