You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsrf-commits@ws.apache.org by sc...@apache.org on 2005/08/02 18:30:44 UTC
svn commit: r227033 [18/27] - in /webservices/wsrf/trunk: ./
src/java/org/apache/ws/ src/java/org/apache/ws/addressing/
src/java/org/apache/ws/addressing/v2003_03/
src/java/org/apache/ws/addressing/v2004_08_10/
src/java/org/apache/ws/resource/ src/java...
Modified: webservices/wsrf/trunk/src/java/org/apache/ws/util/SaajUtils.java
URL: http://svn.apache.org/viewcvs/webservices/wsrf/trunk/src/java/org/apache/ws/util/SaajUtils.java?rev=227033&r1=227032&r2=227033&view=diff
==============================================================================
--- webservices/wsrf/trunk/src/java/org/apache/ws/util/SaajUtils.java (original)
+++ webservices/wsrf/trunk/src/java/org/apache/ws/util/SaajUtils.java Tue Aug 2 09:28:49 2005
@@ -20,7 +20,6 @@
import org.apache.ws.util.i18n.Messages;
import org.apache.ws.util.i18n.MessagesImpl;
import org.w3c.dom.Element;
-
import javax.xml.namespace.QName;
import javax.xml.soap.Detail;
import javax.xml.soap.DetailEntry;
@@ -40,237 +39,239 @@
*/
public abstract class SaajUtils
{
- public static final Messages MSG = MessagesImpl.getInstance();
-
- /**
- * Given a {@link SOAPElement}, returns a list containing the children of that element. If at least one of the
- * children is a SOAPElement, any {@link Text} nodes are excluded from the list. This is because it is assumed that
- * if the specified element has mixed content, it is only because of insignificant whitespace text nodes.
- *
- * @param soapElem a SAAJ {@link SOAPElement}
- *
- * @return a list containing the children of the specified {@link SOAPElement}
- */
- public static List getChildNodes( SOAPElement soapElem )
- {
- List elem_children = new ArrayList();
- List text_children = new ArrayList();
- Iterator node_iter = soapElem.getChildElements();
-
- while ( node_iter.hasNext() )
- {
- Node child_node = (Node) node_iter.next();
-
- if ( isSOAPElement( child_node ) )
- {
- elem_children.add( child_node );
- }
- else
- {
- text_children.add( child_node );
- }
- }
-
- return ( elem_children.isEmpty() ? text_children : elem_children );
- }
-
- /**
- * DOCUMENT_ME
- *
- * @param elem DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- */
- public static QName getQualifiedName( SOAPElement elem )
- {
- return ( elem != null ) ? NameUtils.toQName( elem.getElementName() ) : null;
- }
-
- /**
- * Returns true if the specified SAAJ node is an element, or false otherwise.
- *
- * @param soap_node a SAAJ node
- *
- * @return true if the specified SAAJ node is an element, or false otherwise
- */
- public static boolean isSOAPElement( Node soap_node )
- {
- // NOTE: the second condition below is nessary for Axis, because its Text impl also implements SOAPElement
- return ( soap_node instanceof SOAPElement && !( soap_node instanceof Text ) );
- }
-
- /**
- * Returns true if the specified SAAJ node is text, or false otherwise.
- *
- * @param soap_node a SAAJ node
- *
- * @return true if the specified SAAJ node is text, or false otherwise
- */
- public static boolean isText( Node soap_node )
- {
- return ( soap_node instanceof Text );
- }
-
- /**
- * Returns the value of the specified SAAJ text node.
- *
- * @param soapNode a SAAJ text node
- *
- * @return the value of the specified SAAJ text node
- *
- * @throws SOAPException
- */
- public static String getValue( Node soapNode )
- throws SOAPException
- {
- if ( soapNode == null )
- {
- throw new IllegalArgumentException( MSG.getMessage( Keys.PARAM_MAY_NOT_BE_NULL ) );
- }
-
- if ( isText( soapNode ) )
- {
- return getTextValue( (Text) soapNode );
- }
- else
- {
- return getSOAPElementValue( (SOAPElement) soapNode );
- }
- }
-
- /**
- * DOCUMENT_ME
- *
- * @param soapElem DOCUMENT_ME
- * @param value DOCUMENT_ME
- *
- * @throws SOAPException DOCUMENT_ME
- */
- public static void addTextNode( SOAPElement soapElem,
- String value )
- throws SOAPException
- {
- soapElem.addTextNode( value );
-
- if ( soapElem.getValue() == null )
- {
- Iterator childElemIter = soapElem.getChildElements();
-
- if ( childElemIter.hasNext() )
- {
- Node firstChild = (Node) childElemIter.next();
+ /** DOCUMENT_ME */
+ public static final Messages MSG = MessagesImpl.getInstance( );
- if ( firstChild instanceof Text )
- {
- firstChild.setValue( value );
-
- return;
- }
- }
- }
- }
-
- /**
- * DOCUMENT_ME
- *
- * @param value DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- *
- * @throws SOAPException DOCUMENT_ME
- */
- public static Text createTextNode( String value )
- throws SOAPException
- {
- return ( (Text) SOAPFactory.newInstance().createElement( "foo" ).addTextNode( value ).getChildElements()
- .next() );
- }
-
- /**
- * Converts a DOM {@link org.w3c.dom.Element} to a SAAJ {@link javax.xml.soap.SOAPElement}.
- *
- * @param elem a DOM {@link org.w3c.dom.Element}
- *
- * @return a {@link javax.xml.soap.SOAPElement}
- *
- * @throws javax.xml.soap.SOAPException
- */
- public static SOAPElement toSOAPElement( Element elem )
- throws SOAPException
- {
- return ( new Dom2SaajConverter().toSOAPElement( elem ) );
- }
-
- /**
- * Adds a DOM {@link org.w3c.dom.Element} as an entry to a SAAJ {@link Detail}.
- *
- * @param detail a SAAJ detail
- * @param domElem a DOM element to be added as an entry in the specified detail
- *
- * @return a SAAJ detail entry
- *
- * @throws javax.xml.soap.SOAPException
- */
- public static DetailEntry addDetailEntry( Detail detail, Element domElem )
- throws SOAPException
- {
- return ( new Dom2SaajConverter().addDetailEntry( detail, domElem ) );
- }
-
- private static String getSOAPElementValue( SOAPElement soapElem )
- {
- String value = soapElem.getValue();
-
- if ( value == null )
- {
- Text textNode = getTextNode( soapElem );
-
- if ( textNode != null )
- {
- value = textNode.getValue();
- }
- }
-
- if ( value == null )
- {
- value = soapElem.getNodeValue();
- }
-
- return value;
- }
-
- private static Text getTextNode( SOAPElement soapElem )
- {
- Iterator childElemIter = soapElem.getChildElements();
-
- if ( childElemIter.hasNext() )
- {
- Node firstChild = (Node) childElemIter.next();
+ /**
+ * Given a {@link SOAPElement}, returns a list containing the children of that element. If at least one of the
+ * children is a SOAPElement, any {@link Text} nodes are excluded from the list. This is because it is assumed that
+ * if the specified element has mixed content, it is only because of insignificant whitespace text nodes.
+ *
+ * @param soapElem a SAAJ {@link SOAPElement}
+ *
+ * @return a list containing the children of the specified {@link SOAPElement}
+ */
+ public static List getChildNodes( SOAPElement soapElem )
+ {
+ List elem_children = new ArrayList( );
+ List text_children = new ArrayList( );
+ Iterator node_iter = soapElem.getChildElements( );
+
+ while ( node_iter.hasNext( ) )
+ {
+ Node child_node = (Node) node_iter.next( );
+
+ if ( isSOAPElement( child_node ) )
+ {
+ elem_children.add( child_node );
+ }
+ else
+ {
+ text_children.add( child_node );
+ }
+ }
+
+ return ( elem_children.isEmpty( ) ? text_children : elem_children );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param elem DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static QName getQualifiedName( SOAPElement elem )
+ {
+ return ( elem != null ) ? NameUtils.toQName( elem.getElementName( ) ) : null;
+ }
+
+ /**
+ * Returns true if the specified SAAJ node is an element, or false otherwise.
+ *
+ * @param soap_node a SAAJ node
+ *
+ * @return true if the specified SAAJ node is an element, or false otherwise
+ */
+ public static boolean isSOAPElement( Node soap_node )
+ {
+ // NOTE: the second condition below is nessary for Axis, because its Text impl also implements SOAPElement
+ return ( soap_node instanceof SOAPElement && !( soap_node instanceof Text ) );
+ }
+
+ /**
+ * Returns true if the specified SAAJ node is text, or false otherwise.
+ *
+ * @param soap_node a SAAJ node
+ *
+ * @return true if the specified SAAJ node is text, or false otherwise
+ */
+ public static boolean isText( Node soap_node )
+ {
+ return ( soap_node instanceof Text );
+ }
+
+ /**
+ * Returns the value of the specified SAAJ text node.
+ *
+ * @param soapNode a SAAJ text node
+ *
+ * @return the value of the specified SAAJ text node
+ *
+ * @throws SOAPException
+ */
+ public static String getValue( Node soapNode )
+ throws SOAPException
+ {
+ if ( soapNode == null )
+ {
+ throw new IllegalArgumentException( MSG.getMessage( Keys.PARAM_MAY_NOT_BE_NULL ) );
+ }
+
+ if ( isText( soapNode ) )
+ {
+ return getTextValue( (Text) soapNode );
+ }
+ else
+ {
+ return getSOAPElementValue( (SOAPElement) soapNode );
+ }
+ }
+
+ /**
+ * Adds a DOM {@link org.w3c.dom.Element} as an entry to a SAAJ {@link Detail}.
+ *
+ * @param detail a SAAJ detail
+ * @param domElem a DOM element to be added as an entry in the specified detail
+ *
+ * @return a SAAJ detail entry
+ *
+ * @throws javax.xml.soap.SOAPException
+ */
+ public static DetailEntry addDetailEntry( Detail detail,
+ Element domElem )
+ throws SOAPException
+ {
+ return ( new Dom2SaajConverter( ).addDetailEntry( detail, domElem ) );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param soapElem DOCUMENT_ME
+ * @param value DOCUMENT_ME
+ *
+ * @throws SOAPException DOCUMENT_ME
+ */
+ public static void addTextNode( SOAPElement soapElem,
+ String value )
+ throws SOAPException
+ {
+ soapElem.addTextNode( value );
+
+ if ( soapElem.getValue( ) == null )
+ {
+ Iterator childElemIter = soapElem.getChildElements( );
+
+ if ( childElemIter.hasNext( ) )
+ {
+ Node firstChild = (Node) childElemIter.next( );
if ( firstChild instanceof Text )
{
- return (Text) firstChild;
- }
- }
+ firstChild.setValue( value );
- return null;
- }
-
- private static String getTextValue( Text soapText )
- throws SOAPException
- {
- String value = soapText.getValue();
-
- if ( value == null )
- {
- value = soapText.toString();
- }
-
- if ( value == null )
- {
- throw new SOAPException( MSG.getMessage( Keys.TEXT_NODE_IS_NULL ) );
- }
+ return;
+ }
+ }
+ }
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param value DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ *
+ * @throws SOAPException DOCUMENT_ME
+ */
+ public static Text createTextNode( String value )
+ throws SOAPException
+ {
+ return ( (Text) SOAPFactory.newInstance( ).createElement( "foo" ).addTextNode( value ).getChildElements( )
+ .next( ) );
+ }
+
+ /**
+ * Converts a DOM {@link org.w3c.dom.Element} to a SAAJ {@link javax.xml.soap.SOAPElement}.
+ *
+ * @param elem a DOM {@link org.w3c.dom.Element}
+ *
+ * @return a {@link javax.xml.soap.SOAPElement}
+ *
+ * @throws javax.xml.soap.SOAPException
+ */
+ public static SOAPElement toSOAPElement( Element elem )
+ throws SOAPException
+ {
+ return ( new Dom2SaajConverter( ).toSOAPElement( elem ) );
+ }
+
+ private static String getSOAPElementValue( SOAPElement soapElem )
+ {
+ String value = soapElem.getValue( );
+
+ if ( value == null )
+ {
+ Text textNode = getTextNode( soapElem );
+
+ if ( textNode != null )
+ {
+ value = textNode.getValue( );
+ }
+ }
+
+ if ( value == null )
+ {
+ value = soapElem.getNodeValue( );
+ }
+
+ return value;
+ }
+
+ private static Text getTextNode( SOAPElement soapElem )
+ {
+ Iterator childElemIter = soapElem.getChildElements( );
+
+ if ( childElemIter.hasNext( ) )
+ {
+ Node firstChild = (Node) childElemIter.next( );
+
+ if ( firstChild instanceof Text )
+ {
+ return (Text) firstChild;
+ }
+ }
+
+ return null;
+ }
+
+ private static String getTextValue( Text soapText )
+ throws SOAPException
+ {
+ String value = soapText.getValue( );
+
+ if ( value == null )
+ {
+ value = soapText.toString( );
+ }
+
+ if ( value == null )
+ {
+ throw new SOAPException( MSG.getMessage( Keys.TEXT_NODE_IS_NULL ) );
+ }
- return value;
- }
+ return value;
+ }
}
Modified: webservices/wsrf/trunk/src/java/org/apache/ws/util/WsdlUtils.java
URL: http://svn.apache.org/viewcvs/webservices/wsrf/trunk/src/java/org/apache/ws/util/WsdlUtils.java?rev=227033&r1=227032&r2=227033&view=diff
==============================================================================
--- webservices/wsrf/trunk/src/java/org/apache/ws/util/WsdlUtils.java (original)
+++ webservices/wsrf/trunk/src/java/org/apache/ws/util/WsdlUtils.java Tue Aug 2 09:28:49 2005
@@ -1,116 +1,158 @@
-/*=============================================================================*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *=============================================================================*/
-package org.apache.ws.util;
-
-import javax.wsdl.Import;
-import javax.wsdl.Input;
-import javax.wsdl.Message;
-import javax.wsdl.Operation;
-import javax.wsdl.Output;
-import javax.wsdl.Port;
-import javax.wsdl.PortType;
-import javax.wsdl.Service;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Generic utility methods for working with various JWSDL objects.
- *
- * @author Ian Springer (Hewlett-Packard Company)
- */
-public abstract class WsdlUtils
-{
- /**
- * DOCUMENT_ME
- *
- * @param service DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- */
- public static Map getPortTypes( Service service )
- {
- Map portTypes = new HashMap();
- Map ports = service.getPorts();
- Iterator portsIter = ports.values().iterator();
- while ( portsIter.hasNext() )
- {
- Port port = (Port) portsIter.next();
- PortType portType = port.getBinding().getPortType();
- portTypes.put( portType.getQName(),
- portType );
- }
-
- return portTypes;
- }
-
- public static boolean equals( Import import1, Import import2 )
- {
- if ( import1 == null )
- {
- return import2 == null;
- }
- else if ( import2 == null )
- {
- return false;
- }
- return import1.getNamespaceURI().equals( import2.getNamespaceURI() ) &&
- import1.getLocationURI().equals( import2.getLocationURI() );
- }
-
- public static boolean equals( Operation op1,
- Operation op2 )
- {
- if ( op1 == null )
- {
- return op2 == null;
- }
-
- if ( op2 == null )
- {
- return false;
- }
-
- return equals( op1.getInput(),
- op2.getInput() ) && equals( op1.getOutput(),
- op2.getOutput() );
- }
-
- public static boolean equals( Input input1,
- Input input2 )
- {
- return equals( input1.getMessage(),
- input2.getMessage() );
- }
-
- public static boolean equals( Output output1,
- Output output2 )
- {
- if(output1 == null && output2==null)
- {
- return true;
- }
- return equals( output1.getMessage(),
- output2.getMessage() );
- }
-
- public static boolean equals( Message msg1,
- Message msg2 )
- {
- return msg1.getQName().equals( msg2.getQName() );
- }
-
-}
+/*=============================================================================*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.util;
+
+import javax.wsdl.Import;
+import javax.wsdl.Input;
+import javax.wsdl.Message;
+import javax.wsdl.Operation;
+import javax.wsdl.Output;
+import javax.wsdl.Port;
+import javax.wsdl.PortType;
+import javax.wsdl.Service;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Generic utility methods for working with various JWSDL objects.
+ *
+ * @author Ian Springer (Hewlett-Packard Company)
+ */
+public abstract class WsdlUtils
+{
+ /**
+ * DOCUMENT_ME
+ *
+ * @param service DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static Map getPortTypes( Service service )
+ {
+ Map portTypes = new HashMap( );
+ Map ports = service.getPorts( );
+ Iterator portsIter = ports.values( ).iterator( );
+ while ( portsIter.hasNext( ) )
+ {
+ Port port = (Port) portsIter.next( );
+ PortType portType = port.getBinding( ).getPortType( );
+ portTypes.put( portType.getQName( ),
+ portType );
+ }
+
+ return portTypes;
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param import1 DOCUMENT_ME
+ * @param import2 DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static boolean equals( Import import1,
+ Import import2 )
+ {
+ if ( import1 == null )
+ {
+ return import2 == null;
+ }
+ else if ( import2 == null )
+ {
+ return false;
+ }
+
+ return import1.getNamespaceURI( ).equals( import2.getNamespaceURI( ) )
+ && import1.getLocationURI( ).equals( import2.getLocationURI( ) );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param op1 DOCUMENT_ME
+ * @param op2 DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static boolean equals( Operation op1,
+ Operation op2 )
+ {
+ if ( op1 == null )
+ {
+ return op2 == null;
+ }
+
+ if ( op2 == null )
+ {
+ return false;
+ }
+
+ return equals( op1.getInput( ),
+ op2.getInput( ) ) && equals( op1.getOutput( ),
+ op2.getOutput( ) );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param input1 DOCUMENT_ME
+ * @param input2 DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static boolean equals( Input input1,
+ Input input2 )
+ {
+ return equals( input1.getMessage( ),
+ input2.getMessage( ) );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param output1 DOCUMENT_ME
+ * @param output2 DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static boolean equals( Output output1,
+ Output output2 )
+ {
+ if ( ( output1 == null ) && ( output2 == null ) )
+ {
+ return true;
+ }
+
+ return equals( output1.getMessage( ),
+ output2.getMessage( ) );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param msg1 DOCUMENT_ME
+ * @param msg2 DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static boolean equals( Message msg1,
+ Message msg2 )
+ {
+ return msg1.getQName( ).equals( msg2.getQName( ) );
+ }
+}
\ No newline at end of file
Modified: webservices/wsrf/trunk/src/java/org/apache/ws/util/WsrfWsdlUtils.java
URL: http://svn.apache.org/viewcvs/webservices/wsrf/trunk/src/java/org/apache/ws/util/WsrfWsdlUtils.java?rev=227033&r1=227032&r2=227033&view=diff
==============================================================================
--- webservices/wsrf/trunk/src/java/org/apache/ws/util/WsrfWsdlUtils.java (original)
+++ webservices/wsrf/trunk/src/java/org/apache/ws/util/WsrfWsdlUtils.java Tue Aug 2 09:28:49 2005
@@ -23,7 +23,6 @@
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-
import javax.wsdl.Definition;
import javax.wsdl.Operation;
import javax.wsdl.PortType;
@@ -45,416 +44,500 @@
*/
public abstract class WsrfWsdlUtils
{
+ /**
+ * DOCUMENT_ME
+ *
+ * @param portType DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ *
+ * @throws org.apache.ws.resource.InvalidWsrfWsdlException DOCUMENT_ME
+ */
+ public static String getMetadataDescriptorLocation( PortType portType )
+ throws org.apache.ws.resource.InvalidWsrfWsdlException
+ {
+ Map extAttribs = portType.getExtensionAttributes( );
+ final QName METADATA_DESCRIPTOR_PORTTYPE_ATTRIB =
+ new QName( "http://docs.oasis-open.org/wsrf/2004/10/wsrf-WSResourceMetadataDescriptor-1.0-draft-01.xsd",
+ "metadataDescriptorLocation", "wsrmd" );
+ QName qValue = ( (QName) extAttribs.get( METADATA_DESCRIPTOR_PORTTYPE_ATTRIB ) );
+ if ( qValue == null )
+ {
+ return null;
+ }
+
+ String value = qValue.getLocalPart( );
+ StringTokenizer tokenizer = new StringTokenizer( value );
+ if ( tokenizer.countTokens( ) != 2 )
+ {
+ throw new org.apache.ws.resource.InvalidWsrfWsdlException( METADATA_DESCRIPTOR_PORTTYPE_ATTRIB
+ + " attribute on portType must be of the format \"namespaceURI locationURL\"" );
+ }
+
+ tokenizer.nextToken( );
+ return tokenizer.nextToken( );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param portType DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static QName getMetadataDescriptorName( PortType portType )
+ {
+ Map extAttribs = portType.getExtensionAttributes( );
+ return (QName) extAttribs.get( new QName( "http://docs.oasis-open.org/wsrf/2004/10/wsrf-WSResourceMetadataDescriptor-1.0-draft-01.xsd",
+ "metadataDescriptor", "wsrmd" ) );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param portType DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static QName getResourcePropertiesDocumentName( PortType portType )
+ {
+ Map extAttribs = portType.getExtensionAttributes( );
+ QName rpDocDefQName =
+ (QName) extAttribs.get( org.apache.ws.resource.properties.v2004_11.ResourcePropertiesConstants.RESOURCE_PROPERTIES_PORTTYPE_ATTRIB );
+ if ( rpDocDefQName == null )
+ {
+ rpDocDefQName =
+ (QName) extAttribs.get( org.apache.ws.resource.properties.v2004_06.ResourcePropertiesConstants.RESOURCE_PROPERTIES_PORTTYPE_ATTRIB );
+ }
+
+ return rpDocDefQName;
+ }
+
+ /**
+ * @param rpDocElemName
+ * @param def
+ * @param baseUrl
+ *
+ * @return the names of the resource properties associated with the specified portType
+ */
+ public static QName[] getResourcePropertyNames( QName rpDocElemName,
+ Definition def,
+ URL baseUrl )
+ throws InvalidWsrfWsdlException
+ {
+ if ( rpDocElemName == null )
+ {
+ return null;
+ }
+
+ Set propNames = new HashSet( );
+ Element[] schemaElems = getSchemaElements( def );
+ XsdElement rpDocXsdElem = null;
+ for ( int i = 0; i < schemaElems.length; i++ )
+ {
+ rpDocXsdElem = getXsdElementElementRecursively( schemaElems[i], rpDocElemName, baseUrl );
+ if ( rpDocXsdElem != null )
+ {
+ break;
+ }
+ }
+
+ if ( rpDocXsdElem == null )
+ {
+ throw new InvalidWsrfWsdlException( "Unable to locate the ResourceProperties document element with QName "
+ + rpDocElemName );
+ }
+
+ QName type = getQualifiedAttribute( rpDocXsdElem, "type" );
+ Element rpDocTypeElem;
+ if ( type != null )
+ {
+ if ( !type.getNamespaceURI( ).equals( rpDocXsdElem.getSchemaElement( ).getAttribute( "targetNamespace" ) ) )
+ {
+ throw new InvalidWsrfWsdlException( "This tool currently does not support referencing a ResourceProperties complexType that is not in the current schema's targetNamespace." );
+ }
+
+ rpDocTypeElem = getComplexTypeByName( rpDocXsdElem.getSchemaElement( ),
+ type.getLocalPart( ) );
+ }
+ else
+ {
+ rpDocTypeElem =
+ (Element) rpDocXsdElem.getElement( )
+ .getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, "complexType" ).item( 0 );
+ }
+
+ if ( rpDocTypeElem == null )
+ {
+ throw new InvalidWsrfWsdlException( "Unable to determine type of the ResourceProperties document element with QName "
+ + rpDocElemName
+ + " - expected either a type atribute or a nested anonymous complexType element." );
+ }
+
+ Element sequenceElem = null;
+ NodeList sequenceNodes = rpDocTypeElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, "sequence" );
+ if ( sequenceNodes != null )
+ {
+ sequenceElem = (Element) sequenceNodes.item( 0 );
+ }
+ else
+ {
+ sequenceNodes = rpDocTypeElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, "all" );
+ if ( sequenceNodes != null )
+ {
+ sequenceElem = (Element) sequenceNodes.item( 0 );
+ }
+ }
- /**
- * DOCUMENT_ME
- *
- * @param mostDerivedPortType DOCUMENT_ME
- * @param specPortType DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- */
- public static boolean implementsPortType( PortType mostDerivedPortType,
- PortType specPortType )
- {
- List specOps = specPortType.getOperations();
- if ( specOps.size() == 0 )
- {
- return false;
- // TODO (v1.1): need to determine if props are present for portTypes which have no ops.
- }
- boolean foundSome = false;
- for ( int i = 0; i < specOps.size(); i++ )
- {
- Operation specOp = (Operation) specOps.get( i );
- Operation aggregatedOp = mostDerivedPortType.getOperation( specOp.getName(),
- null,
- null );
- if ( !WsdlUtils.equals( specOp, aggregatedOp ) )
- {
- if ( foundSome )
- {
- System.out.println( "WARNING: PortType " + mostDerivedPortType.getQName()
- + " contains some, but not all, operations from portType "
- + specPortType.getQName() );
- }
-
- return false;
- }
-
- if ( !isInheritedOperation( specOp, specPortType ) )
- {
- foundSome = true;
+ if ( sequenceElem == null )
+ {
+ throw new RuntimeException( "Resource property element definitions must be contained in an xsd:sequence or an xsd:all element." );
+ }
+
+ NodeList propElems = sequenceElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, "element" );
+ for ( int j = 0; j < propElems.getLength( ); j++ )
+ {
+ Element propElem = (Element) propElems.item( j );
+ QName propName =
+ getQualifiedAttribute( new XsdElement( propElem,
+ rpDocXsdElem.getSchemaElement( ) ),
+ "ref" );
+ if ( propName == null )
+ {
+ throw new InvalidWsrfWsdlException( "All element defs within the resource property document def must have a 'ref' attribute that points at a global element def." );
+ }
+
+ propNames.add( propName );
+ }
+
+ return (QName[]) propNames.toArray( new QName[0] );
+ }
+
+ /**
+ *
+ * @param def a JWSDL definition
+ *
+ * @return array of DOM elements, representing any xsd:schema elements within the specified definition's types section
+ */
+ public static Element[] getSchemaElements( Definition def )
+ {
+ List schemaElems = new ArrayList( );
+ if ( def.getTypes( ) != null )
+ {
+ List extElems = def.getTypes( ).getExtensibilityElements( );
+ for ( int i = 0; i < extElems.size( ); i++ )
+ {
+ ExtensibilityElement extElem = (ExtensibilityElement) extElems.get( i );
+ if ( extElem instanceof UnknownExtensibilityElement )
+ {
+ UnknownExtensibilityElement unknownExtElem = (UnknownExtensibilityElement) extElem;
+ Element elem = unknownExtElem.getElement( );
+ if ( elem.getNamespaceURI( ).equals( XmlConstants.NSURI_SCHEMA_XSD )
+ && elem.getLocalName( ).equals( XmlConstants.XSD_SCHEMA.getLocalPart( ) ) )
+ {
+ schemaElems.add( elem );
+ }
+ }
+ }
+ }
+
+ return (Element[]) schemaElems.toArray( new Element[0] );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param mostDerivedPortType DOCUMENT_ME
+ * @param specPortType DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static boolean implementsPortType( PortType mostDerivedPortType,
+ PortType specPortType )
+ {
+ List specOps = specPortType.getOperations( );
+ if ( specOps.size( ) == 0 )
+ {
+ return false;
+
+ // TODO (v1.1): need to determine if props are present for portTypes which have no ops.
+ }
+
+ boolean foundSome = false;
+ for ( int i = 0; i < specOps.size( ); i++ )
+ {
+ Operation specOp = (Operation) specOps.get( i );
+ Operation aggregatedOp = mostDerivedPortType.getOperation( specOp.getName( ),
+ null,
+ null );
+ if ( !WsdlUtils.equals( specOp, aggregatedOp ) )
+ {
+ if ( foundSome )
+ {
+ System.out.println( "WARNING: PortType " + mostDerivedPortType.getQName( )
+ + " contains some, but not all, operations from portType "
+ + specPortType.getQName( ) );
}
- }
- return true;
- }
-
- private static boolean isInheritedOperation( Operation specOp,
- PortType specPortType )
- {
- return !specOp.getInput().getMessage().getQName().getNamespaceURI().equals( specPortType.getQName()
- .getNamespaceURI() );
- }
-
- /**
- * @param rpDocElemName
- * @param def
- * @param baseUrl
- *
- * @return the names of the resource properties associated with the specified portType
- */
- public static QName[] getResourcePropertyNames( QName rpDocElemName,
- Definition def, URL baseUrl ) throws InvalidWsrfWsdlException
- {
- if ( rpDocElemName == null )
- {
- return null;
- }
- Set propNames = new HashSet();
- Element[] schemaElems = getSchemaElements( def );
- XsdElement rpDocXsdElem = null;
- for ( int i = 0; i < schemaElems.length; i++ )
- {
- rpDocXsdElem = getXsdElementElementRecursively( schemaElems[i], rpDocElemName, baseUrl );
- if ( rpDocXsdElem != null )
- {
- break;
- }
- }
- if ( rpDocXsdElem == null )
- {
- throw new InvalidWsrfWsdlException(
- "Unable to locate the ResourceProperties document element with QName " + rpDocElemName );
- }
- QName type = getQualifiedAttribute( rpDocXsdElem, "type" );
- Element rpDocTypeElem;
- if ( type != null )
- {
- if ( !type.getNamespaceURI().equals( rpDocXsdElem.getSchemaElement().getAttribute( "targetNamespace" ) ) )
- {
- throw new InvalidWsrfWsdlException(
- "This tool currently does not support referencing a ResourceProperties complexType that is not in the current schema's targetNamespace." );
- }
- rpDocTypeElem = getComplexTypeByName( rpDocXsdElem.getSchemaElement(), type.getLocalPart() );
- }
- else
- {
- rpDocTypeElem =
- (Element) rpDocXsdElem.getElement().getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD,
- "complexType" )
- .item( 0 );
- }
- if ( rpDocTypeElem == null )
- {
- throw new InvalidWsrfWsdlException(
- "Unable to determine type of the ResourceProperties document element with QName " + rpDocElemName +
- " - expected either a type atribute or a nested anonymous complexType element." );
- }
- Element sequenceElem = null;
- NodeList sequenceNodes = rpDocTypeElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, "sequence" );
- if ( sequenceNodes != null )
- {
- sequenceElem = (Element) sequenceNodes.item( 0 );
- }
- else
- {
- sequenceNodes = rpDocTypeElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, "all" );
- if ( sequenceNodes != null )
- {
- sequenceElem = (Element) sequenceNodes.item( 0 );
- }
- }
- if ( sequenceElem == null )
- {
- throw new RuntimeException(
- "Resource property element definitions must be contained in an xsd:sequence or an xsd:all element." );
- }
- NodeList propElems = sequenceElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, "element" );
- for ( int j = 0; j < propElems.getLength(); j++ )
- {
- Element propElem = (Element) propElems.item( j );
- QName propName = getQualifiedAttribute( new XsdElement( propElem, rpDocXsdElem.getSchemaElement() ), "ref" );
- if ( propName == null )
- {
- throw new InvalidWsrfWsdlException(
- "All element defs within the resource property document def must have a 'ref' attribute that points at a global element def." );
- }
- propNames.add( propName );
- }
- return (QName[]) propNames.toArray( new QName[0] );
- }
-
- private static XsdElement getXsdElementElementRecursively( Element xsdSchemaElem, QName xsdElemName, URL baseUrl )
- throws InvalidWsrfWsdlException
- {
- XsdElement xsdElementElem = getXsdElementElement( xsdSchemaElem, xsdElemName );
- if ( xsdElementElem == null )
- {
- String[] schemaLocations = findImportsAndIncludes( xsdSchemaElem, xsdElemName.getNamespaceURI() );
- for ( int j = 0; j < schemaLocations.length; j++ )
- {
- String location = schemaLocations[j];
- URL schemaUrl = null;
- Document schemaDoc = null;
- try
- {
- schemaUrl = new URL( baseUrl, location );
- schemaDoc = JaxpUtils.loadDocument( schemaUrl.openStream() );
- }
- catch ( Exception e )
- {
- throw new InvalidWsrfWsdlException( "Failed to load schema at location " + location );
- }
- xsdElementElem =
- getXsdElementElementRecursively( schemaDoc.getDocumentElement(), xsdElemName, schemaUrl );
- if ( xsdElementElem != null )
- {
- break;
- }
- }
- }
- return xsdElementElem;
- }
-
- private static QName getQualifiedAttribute( XsdElement xsdElem, String attribName )
- throws InvalidWsrfWsdlException
- {
- String value = xsdElem.getElement().getAttribute( attribName );
- if ( "".equals( value ) )
- {
- return null;
- }
- PrefixResolver prefixResolver = new PrefixResolverDefault( xsdElem.getSchemaElement() );
- QName propName = null;
- try
- {
- propName = toQName( value, prefixResolver );
- }
- catch ( PrefixResolutionException pre )
- {
- throw new InvalidWsrfWsdlException(
- "Unable to resolve prefix '" + pre.getPrefix() + "' in xsd:element '" + attribName +
- "' attribute value." );
- }
- catch ( InvalidValueException ive )
- {
- throw new InvalidWsrfWsdlException(
- "Value for xsd:element 'ref' attribute must be qualified via a namespace prefix." );
- }
- return propName;
- }
-
- private static QName toQName( String value, PrefixResolver prefixResolver ) throws InvalidValueException,
- PrefixResolutionException
- {
- StringTokenizer tokenizer = new StringTokenizer( value, ":" );
- if ( tokenizer.countTokens() != 2 )
- {
- throw new InvalidValueException();
- }
- String prefix = tokenizer.nextToken();
- String localName = tokenizer.nextToken();
- // TODO: write our own prefix resolver to eliminate dep on Xalan
- String namespace = prefixResolver.getNamespaceForPrefix( prefix );
- if ( namespace == null )
- {
- throw new PrefixResolutionException( prefix );
- }
- return new QName( namespace, localName, prefix );
- }
-
- private static String[] findImportsAndIncludes( Element schemaElem, String namespaceURI )
- {
- List elems = new ArrayList();
- NodeList imports = schemaElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD,
- XmlConstants.XSD_ATTRIB_IMPORT );
- for ( int i = 0; i < imports.getLength(); i++ )
- {
- Element importNode = (Element) imports.item( i );
- Attr attributeNode = importNode.getAttributeNode( "namespace" );
- if ( attributeNode != null )
- {
- if ( namespaceURI.equals( attributeNode.getValue() ) )
- {
- elems.add( importNode );
- }
- }
- }
- NodeList includes = schemaElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD,
- XmlConstants.XSD_ATTRIB_INCLUDE );
- for ( int i = 0; i < includes.getLength(); i++ )
- {
- elems.add( includes.item( i ) );
- }
- String[] locations = new String[elems.size()];
- for ( int i = 0; i < elems.size(); i++ )
- {
- Element element = (Element) elems.get( i );
- Attr attributeNode = element.getAttributeNode( "schemaLocation" );
- if ( attributeNode != null )
- {
- locations[i] = attributeNode.getValue();
- }
- }
- return locations;
- }
-
- private static XsdElement getXsdElementElement( Element schemaElem,
- QName name )
- {
- NodeList children = schemaElem.getChildNodes();
- for ( int i = 0; i < children.getLength(); i++ )
- {
- Node child = children.item( i );
- if ( child instanceof Element && child.getLocalName().equals( "element" ) )
- {
- Element elementElem = (Element) child;
- if ( String.valueOf( elementElem.getAttribute( "name" ) ).equals( name.getLocalPart() ) )
- {
- return new XsdElement( elementElem, schemaElem );
- }
- }
- }
- return null;
- }
-
- private static Element getComplexTypeByName( Element schemaElem,
- String name )
- {
- NodeList children = schemaElem.getChildNodes();
- for ( int i = 0; i < children.getLength(); i++ )
- {
- Node child = children.item( i );
- if ( child instanceof Element && child.getLocalName().equals( "complexType" ) )
- {
- Element elementElem = (Element) child;
- if ( String.valueOf( elementElem.getAttribute( "name" ) ).equals( name ) )
- {
- return elementElem;
- }
- }
- }
- return null;
- }
-
- public static QName getResourcePropertiesDocumentName( PortType portType )
- {
- Map extAttribs = portType.getExtensionAttributes();
- QName rpDocDefQName = (QName) extAttribs.get(
- org.apache.ws.resource.properties.v2004_11.ResourcePropertiesConstants.RESOURCE_PROPERTIES_PORTTYPE_ATTRIB );
- if ( rpDocDefQName == null )
- {
- rpDocDefQName =
- (QName) extAttribs.get(
- org.apache.ws.resource.properties.v2004_06.ResourcePropertiesConstants.RESOURCE_PROPERTIES_PORTTYPE_ATTRIB );
- }
- return rpDocDefQName;
- }
-
- public static QName getMetadataDescriptorName( PortType portType )
- {
- Map extAttribs = portType.getExtensionAttributes();
- return (QName) extAttribs.get( new QName(
- "http://docs.oasis-open.org/wsrf/2004/10/wsrf-WSResourceMetadataDescriptor-1.0-draft-01.xsd",
- "metadataDescriptor", "wsrmd" ) );
- }
-
- public static String getMetadataDescriptorLocation( PortType portType )
- throws org.apache.ws.resource.InvalidWsrfWsdlException
- {
- Map extAttribs = portType.getExtensionAttributes();
- final QName METADATA_DESCRIPTOR_PORTTYPE_ATTRIB =
- new QName(
- "http://docs.oasis-open.org/wsrf/2004/10/wsrf-WSResourceMetadataDescriptor-1.0-draft-01.xsd",
- "metadataDescriptorLocation", "wsrmd" );
- QName qValue = ( (QName) extAttribs.get( METADATA_DESCRIPTOR_PORTTYPE_ATTRIB ) );
- if ( qValue == null )
- {
- return null;
- }
- String value = qValue.getLocalPart();
- StringTokenizer tokenizer = new StringTokenizer( value );
- if ( tokenizer.countTokens() != 2 )
- {
- throw new org.apache.ws.resource.InvalidWsrfWsdlException( METADATA_DESCRIPTOR_PORTTYPE_ATTRIB +
- " attribute on portType must be of the format \"namespaceURI locationURL\"" );
- }
- tokenizer.nextToken();
- return tokenizer.nextToken();
- }
-
- /**
- *
- * @param def a JWSDL definition
- *
- * @return array of DOM elements, representing any xsd:schema elements within the specified definition's types section
- */
- public static Element[] getSchemaElements( Definition def )
- {
- List schemaElems = new ArrayList();
- if ( def.getTypes() != null )
- {
- List extElems = def.getTypes().getExtensibilityElements();
- for ( int i = 0; i < extElems.size(); i++ )
- {
- ExtensibilityElement extElem = (ExtensibilityElement) extElems.get( i );
- if ( extElem instanceof UnknownExtensibilityElement )
- {
- UnknownExtensibilityElement unknownExtElem = (UnknownExtensibilityElement) extElem;
- Element elem = unknownExtElem.getElement();
- if ( elem.getNamespaceURI().equals( XmlConstants.NSURI_SCHEMA_XSD )
- && elem.getLocalName().equals( XmlConstants.XSD_SCHEMA.getLocalPart() ) )
- {
- schemaElems.add( elem );
- }
- }
- }
- }
- return (Element[]) schemaElems.toArray( new Element[0] );
- }
-
- private static class XsdElement
- {
- private Element m_elem;
- private Element m_schemaElem;
-
- public XsdElement( Element elem, Element schemaElem )
- {
- m_elem = elem;
- m_schemaElem = schemaElem;
- }
-
- public Element getElement()
- {
- return m_elem;
- }
-
- public Element getSchemaElement()
- {
- return m_schemaElem;
- }
- }
-
- private static class PrefixResolutionException extends Exception
- {
- private String m_prefix;
-
- public PrefixResolutionException( String prefix )
- {
- super();
- m_prefix = prefix;
- }
-
- public String getPrefix()
- {
- return m_prefix;
- }
- }
-
- private static class InvalidValueException extends Exception
- {
- }
+ return false;
+ }
+ if ( !isInheritedOperation( specOp, specPortType ) )
+ {
+ foundSome = true;
+ }
+ }
+
+ return true;
+ }
+
+ private static Element getComplexTypeByName( Element schemaElem,
+ String name )
+ {
+ NodeList children = schemaElem.getChildNodes( );
+ for ( int i = 0; i < children.getLength( ); i++ )
+ {
+ Node child = children.item( i );
+ if ( child instanceof Element && child.getLocalName( ).equals( "complexType" ) )
+ {
+ Element elementElem = (Element) child;
+ if ( String.valueOf( elementElem.getAttribute( "name" ) ).equals( name ) )
+ {
+ return elementElem;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private static boolean isInheritedOperation( Operation specOp,
+ PortType specPortType )
+ {
+ return !specOp.getInput( ).getMessage( ).getQName( ).getNamespaceURI( ).equals( specPortType.getQName( )
+ .getNamespaceURI( ) );
+ }
+
+ private static QName getQualifiedAttribute( XsdElement xsdElem,
+ String attribName )
+ throws InvalidWsrfWsdlException
+ {
+ String value = xsdElem.getElement( ).getAttribute( attribName );
+ if ( "".equals( value ) )
+ {
+ return null;
+ }
+
+ PrefixResolver prefixResolver = new PrefixResolverDefault( xsdElem.getSchemaElement( ) );
+ QName propName = null;
+ try
+ {
+ propName = toQName( value, prefixResolver );
+ }
+ catch ( PrefixResolutionException pre )
+ {
+ throw new InvalidWsrfWsdlException( "Unable to resolve prefix '" + pre.getPrefix( )
+ + "' in xsd:element '" + attribName + "' attribute value." );
+ }
+ catch ( InvalidValueException ive )
+ {
+ throw new InvalidWsrfWsdlException( "Value for xsd:element 'ref' attribute must be qualified via a namespace prefix." );
+ }
+
+ return propName;
+ }
+
+ private static XsdElement getXsdElementElement( Element schemaElem,
+ QName name )
+ {
+ NodeList children = schemaElem.getChildNodes( );
+ for ( int i = 0; i < children.getLength( ); i++ )
+ {
+ Node child = children.item( i );
+ if ( child instanceof Element && child.getLocalName( ).equals( "element" ) )
+ {
+ Element elementElem = (Element) child;
+ if ( String.valueOf( elementElem.getAttribute( "name" ) ).equals( name.getLocalPart( ) ) )
+ {
+ return new XsdElement( elementElem, schemaElem );
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private static XsdElement getXsdElementElementRecursively( Element xsdSchemaElem,
+ QName xsdElemName,
+ URL baseUrl )
+ throws InvalidWsrfWsdlException
+ {
+ XsdElement xsdElementElem = getXsdElementElement( xsdSchemaElem, xsdElemName );
+ if ( xsdElementElem == null )
+ {
+ String[] schemaLocations = findImportsAndIncludes( xsdSchemaElem,
+ xsdElemName.getNamespaceURI( ) );
+ for ( int j = 0; j < schemaLocations.length; j++ )
+ {
+ String location = schemaLocations[j];
+ URL schemaUrl = null;
+ Document schemaDoc = null;
+ try
+ {
+ schemaUrl = new URL( baseUrl, location );
+ schemaDoc = JaxpUtils.loadDocument( schemaUrl.openStream( ) );
+ }
+ catch ( Exception e )
+ {
+ throw new InvalidWsrfWsdlException( "Failed to load schema at location " + location );
+ }
+
+ xsdElementElem =
+ getXsdElementElementRecursively( schemaDoc.getDocumentElement( ),
+ xsdElemName,
+ schemaUrl );
+ if ( xsdElementElem != null )
+ {
+ break;
+ }
+ }
+ }
+
+ return xsdElementElem;
+ }
+
+ private static String[] findImportsAndIncludes( Element schemaElem,
+ String namespaceURI )
+ {
+ List elems = new ArrayList( );
+ NodeList imports =
+ schemaElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, XmlConstants.XSD_ATTRIB_IMPORT );
+ for ( int i = 0; i < imports.getLength( ); i++ )
+ {
+ Element importNode = (Element) imports.item( i );
+ Attr attributeNode = importNode.getAttributeNode( "namespace" );
+ if ( attributeNode != null )
+ {
+ if ( namespaceURI.equals( attributeNode.getValue( ) ) )
+ {
+ elems.add( importNode );
+ }
+ }
+ }
+
+ NodeList includes =
+ schemaElem.getElementsByTagNameNS( XmlConstants.NSURI_SCHEMA_XSD, XmlConstants.XSD_ATTRIB_INCLUDE );
+ for ( int i = 0; i < includes.getLength( ); i++ )
+ {
+ elems.add( includes.item( i ) );
+ }
+
+ String[] locations = new String[elems.size( )];
+ for ( int i = 0; i < elems.size( ); i++ )
+ {
+ Element element = (Element) elems.get( i );
+ Attr attributeNode = element.getAttributeNode( "schemaLocation" );
+ if ( attributeNode != null )
+ {
+ locations[i] = attributeNode.getValue( );
+ }
+ }
+
+ return locations;
+ }
+
+ private static QName toQName( String value,
+ PrefixResolver prefixResolver )
+ throws InvalidValueException,
+ PrefixResolutionException
+ {
+ StringTokenizer tokenizer = new StringTokenizer( value, ":" );
+ if ( tokenizer.countTokens( ) != 2 )
+ {
+ throw new InvalidValueException( );
+ }
+
+ String prefix = tokenizer.nextToken( );
+ String localName = tokenizer.nextToken( );
+
+ // TODO: write our own prefix resolver to eliminate dep on Xalan
+ String namespace = prefixResolver.getNamespaceForPrefix( prefix );
+ if ( namespace == null )
+ {
+ throw new PrefixResolutionException( prefix );
+ }
+
+ return new QName( namespace, localName, prefix );
+ }
+
+ private static class InvalidValueException
+ extends Exception
+ {
+ }
+
+ private static class PrefixResolutionException
+ extends Exception
+ {
+ private String m_prefix;
+
+ /**
+ * Creates a new {@link PrefixResolutionException} object.
+ *
+ * @param prefix DOCUMENT_ME
+ */
+ public PrefixResolutionException( String prefix )
+ {
+ super( );
+ m_prefix = prefix;
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public String getPrefix( )
+ {
+ return m_prefix;
+ }
+ }
+
+ private static class XsdElement
+ {
+ private Element m_elem;
+ private Element m_schemaElem;
+
+ /**
+ * Creates a new {@link XsdElement} object.
+ *
+ * @param elem DOCUMENT_ME
+ * @param schemaElem DOCUMENT_ME
+ */
+ public XsdElement( Element elem,
+ Element schemaElem )
+ {
+ m_elem = elem;
+ m_schemaElem = schemaElem;
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public Element getElement( )
+ {
+ return m_elem;
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public Element getSchemaElement( )
+ {
+ return m_schemaElem;
+ }
+ }
}
Modified: webservices/wsrf/trunk/src/java/org/apache/ws/util/XmlBeanNameUtils.java
URL: http://svn.apache.org/viewcvs/webservices/wsrf/trunk/src/java/org/apache/ws/util/XmlBeanNameUtils.java?rev=227033&r1=227032&r2=227033&view=diff
==============================================================================
--- webservices/wsrf/trunk/src/java/org/apache/ws/util/XmlBeanNameUtils.java (original)
+++ webservices/wsrf/trunk/src/java/org/apache/ws/util/XmlBeanNameUtils.java Tue Aug 2 09:28:49 2005
@@ -1,81 +1,78 @@
-/*=============================================================================*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *=============================================================================*/
-package org.apache.ws.util;
-
-import org.apache.xmlbeans.impl.common.NameUtil;
-
-import javax.xml.namespace.QName;
-
-/**
- * A set of utility methods for obtaining the names of the Java classes associated with
- * a particular qualified element name.
- *
- * @author Ian Springer
- */
-public abstract class XmlBeanNameUtils
-{
-
- /**
- * DOCUMENT_ME
- *
- * @param propsDocElemQName DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- */
- public static String getElementXmlBeanClassName( QName propsDocElemQName )
- {
- return getDocumentElementXmlBeanClassName( propsDocElemQName ) + "."
- + getElementXmlBeanUnqualifiedClassName( propsDocElemQName );
- }
-
- /**
- * DOCUMENT_ME
- *
- * @param propsDocElemQName DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- */
- public static String getElementXmlBeanUnqualifiedClassName( QName propsDocElemQName )
- {
- String props_xml_bean_class_name = NameUtil.getClassNameFromQName( propsDocElemQName );
- return props_xml_bean_class_name.substring( props_xml_bean_class_name.lastIndexOf( '.' ) + 1 );
- }
-
- /**
- * DOCUMENT_ME
- *
- * @param propsDocElemQName DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- */
- public static String getDocumentElementXmlBeanClassName( QName propsDocElemQName )
- {
- return NameUtil.getClassNameFromQName( propsDocElemQName ) + "Document";
- }
-
- /**
- * DOCUMENT_ME
- *
- * @param propsDocElemQName DOCUMENT_ME
- *
- * @return DOCUMENT_ME
- */
- public static String getDocumentElementXmlBeanFactoryClassName( QName propsDocElemQName )
- {
- return getDocumentElementXmlBeanClassName( propsDocElemQName ) + "$Factory";
- }
-
-}
+/*=============================================================================*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.util;
+
+import org.apache.xmlbeans.impl.common.NameUtil;
+import javax.xml.namespace.QName;
+
+/**
+ * A set of utility methods for obtaining the names of the Java classes associated with
+ * a particular qualified element name.
+ *
+ * @author Ian Springer
+ */
+public abstract class XmlBeanNameUtils
+{
+ /**
+ * DOCUMENT_ME
+ *
+ * @param propsDocElemQName DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static String getDocumentElementXmlBeanClassName( QName propsDocElemQName )
+ {
+ return NameUtil.getClassNameFromQName( propsDocElemQName ) + "Document";
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param propsDocElemQName DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static String getDocumentElementXmlBeanFactoryClassName( QName propsDocElemQName )
+ {
+ return getDocumentElementXmlBeanClassName( propsDocElemQName ) + "$Factory";
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param propsDocElemQName DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static String getElementXmlBeanClassName( QName propsDocElemQName )
+ {
+ return getDocumentElementXmlBeanClassName( propsDocElemQName ) + "."
+ + getElementXmlBeanUnqualifiedClassName( propsDocElemQName );
+ }
+
+ /**
+ * DOCUMENT_ME
+ *
+ * @param propsDocElemQName DOCUMENT_ME
+ *
+ * @return DOCUMENT_ME
+ */
+ public static String getElementXmlBeanUnqualifiedClassName( QName propsDocElemQName )
+ {
+ String props_xml_bean_class_name = NameUtil.getClassNameFromQName( propsDocElemQName );
+ return props_xml_bean_class_name.substring( props_xml_bean_class_name.lastIndexOf( '.' ) + 1 );
+ }
+}
\ No newline at end of file