Author: jkaputin
Date: Sun Aug 12 09:24:45 2007
New Revision: 565085
URL: http://svn.apache.org/viewvc?view=rev&rev=565085
Log:
WODEN-174
Ensure a prefix defined in a TNS namespace declaration
is included in the QNames of any WSDL components
and schema ElementDeclarations and TypeDefinitions.
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceFaultImpl.java
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceImpl.java
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceOperationImpl.java
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/ServiceImpl.java
incubator/woden/trunk/java/test/org/apache/woden/internal/wsdl20/validation/WSDLComponentValidatorTest.java
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/InterfaceFaultReferenceTest.java
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/ServiceTest.java
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultElementTest.java
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultReferenceElementTest.java
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/NameAttributeTest.java
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
Sun Aug 12 09:24:45 2007
@@ -70,6 +70,7 @@
import org.apache.ws.commons.schema.XmlSchemaInclude;
import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
import org.apache.ws.commons.schema.XmlSchemaObjectTable;
+import org.apache.ws.commons.schema.utils.NamespacePrefixList;
/**
* Converts the xml representation of a WSDL document to the WSDL component
@@ -255,6 +256,7 @@
private void buildElementDeclarations(XmlSchema schemaDef, String
schemaTns, URI typeSystemURI) {
XmlSchemaObjectTable elementTable = schemaDef.getElements();
+ NamespacePrefixList prefixes = schemaDef.getNamespaceContext();
Iterator qnames = elementTable.getNames();
while (qnames.hasNext()) {
QName xseQN = (QName) qnames.next();
@@ -276,6 +278,13 @@
//so replace it with the including schema's tns.
edQN = new QName(schemaTns, xseQN.getLocalPart(),
xseQN.getPrefix());
}
+ if(edQN.getPrefix() == "" || edQN.getPrefix() == null) {
+ //if a prefix has been declared for this NS uri, include it in
the qname
+ String pfx = prefixes.getPrefix(edQN.getNamespaceURI());
+ if(pfx != null) {
+ edQN = new QName(edQN.getNamespaceURI(),
edQN.getLocalPart(), pfx);
+ }
+ }
if(schemaTns == null ||
schemaTns.equals(edQN.getNamespaceURI())) //TODO test with schema imports, may
be incorrect.
{
ElementDeclarationImpl ed = new ElementDeclarationImpl();
@@ -294,6 +303,7 @@
private void buildTypeDefinitions(XmlSchema schemaDef, String
schemaTns, URI typeSystemURI) {
XmlSchemaObjectTable typeTable = schemaDef.getSchemaTypes();
+ NamespacePrefixList prefixes = schemaDef.getNamespaceContext();
Iterator qnames = typeTable.getNames();
while (qnames.hasNext()) {
QName xstQN = (QName) qnames.next();
@@ -316,6 +326,13 @@
//this is how XmlSchema represents tns for chameleon
xs:includes,
//so replace it with the including schema's tns.
tdQN = new QName(schemaTns, xstQN.getLocalPart(),
xstQN.getPrefix());
+ }
+ if(tdQN.getPrefix() == "" || tdQN.getPrefix() == null) {
+ //if a prefix has been declared for this NS uri, include it in
the qname
+ String pfx = prefixes.getPrefix(tdQN.getNamespaceURI());
+ if(pfx != null) {
+ tdQN = new QName(tdQN.getNamespaceURI(),
tdQN.getLocalPart(), pfx);
+ }
}
if (schemaTns == null ||
schemaTns.equals(tdQN.getNamespaceURI()))
{
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
Sun Aug 12 09:24:45 2007
@@ -75,8 +75,8 @@
public QName getName() {
QName name = null;
if (fName != null) {
- String tns = DescriptionImpl.getTargetNamespace(this);
- name = new QName(tns, fName.toString());
+ String[] tns = DescriptionImpl.getTargetNamespaceAndPrefix(this);
+ name = new QName(tns[0], fName.toString(), tns[1]);
}
return name;
}
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
Sun Aug 12 09:24:45 2007
@@ -21,6 +21,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.Vector;
import javax.xml.namespace.QName;
@@ -612,30 +613,35 @@
* <i>xs:NCName</i>. The setter method for the attribute will take an
NCName object as
* the input parameter. However, to be useful, the getter method returns a
QName. The
* namespace within the QName has to be the targetNamespace of the
<code><description></code>
- * element. This method provides a way to retrieve the targetNamespace of
the
- * enclosing <code><description></code> element.
- * @param wElem instance of WSDLElement for which the targetNamespace is
required
- * @return the targetNamespace of the DescriptionElement that is the root
element of wElem
+ * element. This method provides a way to retrieve the targetNamespace and
any NS prefix
+ * of the enclosing <code><description></code> element.
+ * @param wElem instance of WSDLElement for which the targetNamespace is
required
+ * @return a String array containing the targetNamespace and prefix of the
DescriptionElement
+ * that is the root element of wElem
*/
- static String getTargetNamespace(WSDLElement wElem) {
- String namespace = "";
-
+ static String[] getTargetNamespaceAndPrefix(WSDLElement wElem) {
if (wElem instanceof NestedElement) {
WSDLElement parent = ((NestedElement) wElem).getParentElement();
- return getTargetNamespace(parent);
+ return getTargetNamespaceAndPrefix(parent);
}
- if (wElem instanceof DescriptionElement) {
- URI tns = ((DescriptionElement) wElem).getTargetNamespace();
- if (tns != null) {
- namespace = tns.toString();
+
+ //we have a description element
+ String[] namespace = new String[] {"",""};
+ URI tns = ((DescriptionElement) wElem).getTargetNamespace();
+ if (tns != null) {
+ namespace[0] = tns.toString();
+ Set nsDecls = ((DescriptionElement)
wElem).getNamespaces().entrySet();
+ if(nsDecls != null) {
+ Iterator i = nsDecls.iterator();
+ while(i.hasNext()) {
+ Map.Entry entry = (Map.Entry)i.next();
+ if(tns.equals(entry.getValue())) {
+ namespace[1] = (String)entry.getKey();
+ }
+ }
}
- return namespace;
}
-
- // We either have a null or a subclass of WSDLElement which isn't an
instance of
- // NestedElement or DescriptionElement - and there aren't any of those
- // Return ""
- return "";
+ return namespace;
}
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceFaultImpl.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceFaultImpl.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceFaultImpl.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceFaultImpl.java
Sun Aug 12 09:24:45 2007
@@ -58,8 +58,8 @@
{
QName name = null;
if (fName != null) {
- String tns = DescriptionImpl.getTargetNamespace(this);
- name = new QName(tns, fName.toString());
+ String[] tns = DescriptionImpl.getTargetNamespaceAndPrefix(this);
+ name = new QName(tns[0], fName.toString(), tns[1]);
}
return name;
}
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceImpl.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceImpl.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceImpl.java
Sun Aug 12 09:24:45 2007
@@ -79,8 +79,8 @@
{
QName name = null;
if (fName != null) {
- String tns = DescriptionImpl.getTargetNamespace(this);
- name = new QName(tns, fName.toString());
+ String[] tns = DescriptionImpl.getTargetNamespaceAndPrefix(this);
+ name = new QName(tns[0], fName.toString(), tns[1]);
}
return name;
}
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceOperationImpl.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceOperationImpl.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceOperationImpl.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/InterfaceOperationImpl.java
Sun Aug 12 09:24:45 2007
@@ -62,8 +62,8 @@
{
QName name = null;
if (fName != null) {
- String tns = DescriptionImpl.getTargetNamespace(this);
- name = new QName(tns, fName.toString());
+ String[] tns = DescriptionImpl.getTargetNamespaceAndPrefix(this);
+ name = new QName(tns[0], fName.toString(), tns[1]);
}
return name;
}
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/ServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/ServiceImpl.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/ServiceImpl.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/ServiceImpl.java
Sun Aug 12 09:24:45 2007
@@ -70,8 +70,8 @@
public QName getName() {
QName name = null;
if (fName != null) {
- String tns = DescriptionImpl.getTargetNamespace(this);
- name = new QName(tns, fName.toString());
+ String[] tns = DescriptionImpl.getTargetNamespaceAndPrefix(this);
+ name = new QName(tns[0], fName.toString(), tns[1]);
}
return name;
}
Modified:
incubator/woden/trunk/java/test/org/apache/woden/internal/wsdl20/validation/WSDLComponentValidatorTest.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/test/org/apache/woden/internal/wsdl20/validation/WSDLComponentValidatorTest.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/test/org/apache/woden/internal/wsdl20/validation/WSDLComponentValidatorTest.java
(original)
+++
incubator/woden/trunk/java/test/org/apache/woden/internal/wsdl20/validation/WSDLComponentValidatorTest.java
Sun Aug 12 09:24:45 2007
@@ -2099,7 +2099,7 @@
{
DescriptionImpl desc = new DescriptionImpl();
desc.setTargetNamespace(namespace1);
- ServiceImpl service = new ServiceImpl();
+ ServiceImpl service = (ServiceImpl)desc.addServiceElement();
service.setName(name1);
if(!val.testAssertionService1060(new Service[]{service}, reporter))
{
@@ -2116,11 +2116,11 @@
{
DescriptionImpl desc = new DescriptionImpl();
desc.setTargetNamespace(namespace1);
- ServiceImpl service = new ServiceImpl();
+ ServiceImpl service = (ServiceImpl)desc.addServiceElement();
service.setName(name1);
- ServiceImpl service2 = new ServiceImpl();
+ ServiceImpl service2 = (ServiceImpl)desc.addServiceElement();
service2.setName(name2);
- ServiceImpl service3 = new ServiceImpl();
+ ServiceImpl service3 = (ServiceImpl)desc.addServiceElement();
service3.setName(name3);
Service[] services = new Service[]{service, service2, service3};
@@ -2140,11 +2140,11 @@
{
DescriptionImpl desc = new DescriptionImpl();
desc.setTargetNamespace(namespace1);
- ServiceImpl service = new ServiceImpl();
+ ServiceImpl service = (ServiceImpl)desc.addServiceElement();
service.setName(name1);
- ServiceImpl service2 = new ServiceImpl();
+ ServiceImpl service2 = (ServiceImpl)desc.addServiceElement();
service2.setName(name2);
- ServiceImpl service3 = new ServiceImpl();
+ ServiceImpl service3 = (ServiceImpl)desc.addServiceElement();
service3.setName(name1);
Service[] services = new Service[]{service, service2, service3};
@@ -2165,11 +2165,11 @@
{
DescriptionImpl desc = new DescriptionImpl();
desc.setTargetNamespace(namespace1);
- ServiceImpl service = new ServiceImpl();
+ ServiceImpl service = (ServiceImpl)desc.addServiceElement();
service.setName(name1);
- ServiceImpl service2 = new ServiceImpl();
+ ServiceImpl service2 = (ServiceImpl)desc.addServiceElement();
service2.setName(name2);
- ServiceImpl service3 = new ServiceImpl();
+ ServiceImpl service3 = (ServiceImpl)desc.addServiceElement();
service3.setName(new NCName("name1"));
Service[] services = new Service[]{service, service2, service3};
Modified:
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/InterfaceFaultReferenceTest.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/test/org/apache/woden/wsdl20/InterfaceFaultReferenceTest.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/InterfaceFaultReferenceTest.java
(original)
+++
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/InterfaceFaultReferenceTest.java
Sun Aug 12 09:24:45 2007
@@ -22,10 +22,12 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.apache.woden.internal.wsdl20.DescriptionImpl;
import org.apache.woden.internal.wsdl20.InterfaceFaultReferenceImpl;
import org.apache.woden.internal.wsdl20.InterfaceImpl;
import org.apache.woden.types.NCName;
import org.apache.woden.wsdl20.enumeration.Direction;
+import org.apache.woden.wsdl20.xml.DescriptionElement;
import org.apache.woden.wsdl20.xml.InterfaceElement;
import org.apache.woden.wsdl20.xml.InterfaceFaultElement;
import org.apache.woden.wsdl20.xml.InterfaceFaultReferenceElement;
@@ -90,8 +92,9 @@
*/
public void testGetInterfaceFault()
{
- // Create the
InterfaceElement->InterfaceOperationElement->InterfaceFaultReference hierarchy
- InterfaceElement interfaceElement = new InterfaceImpl();
+ // Create the
DescriptionElement->InterfaceElement->InterfaceOperationElement->InterfaceFaultReference
hierarchy
+ DescriptionElement desc = new DescriptionImpl();
+ InterfaceElement interfaceElement = desc.addInterfaceElement();
InterfaceOperationElement interfaceOperationElement =
interfaceElement.addInterfaceOperationElement();
// Add an InterfaceFault to the InterfaceElement
Modified:
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/ServiceTest.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/test/org/apache/woden/wsdl20/ServiceTest.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
--- incubator/woden/trunk/java/test/org/apache/woden/wsdl20/ServiceTest.java
(original)
+++ incubator/woden/trunk/java/test/org/apache/woden/wsdl20/ServiceTest.java
Sun Aug 12 09:24:45 2007
@@ -50,7 +50,9 @@
protected void setUp() throws Exception
{
super.setUp();
- fEmptyService = new ServiceImpl();
+ DescriptionElement desc = new DescriptionImpl();
+ desc.addServiceElement();
+ fEmptyService = desc.toComponent().getServices()[0];
}
/*
Modified:
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultElementTest.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultElementTest.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultElementTest.java
(original)
+++
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultElementTest.java
Sun Aug 12 09:24:45 2007
@@ -22,6 +22,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.apache.woden.internal.wsdl20.DescriptionImpl;
import org.apache.woden.internal.wsdl20.InterfaceFaultImpl;
import org.apache.woden.types.NCName;
@@ -32,12 +33,17 @@
*/
public class InterfaceFaultElementTest extends TestCase {
- private InterfaceFaultElement fFault = new InterfaceFaultImpl();
+ private InterfaceFaultElement fFault;
public static Test suite()
{
return new TestSuite(InterfaceFaultElementTest.class);
}
+
+ public void setUp() {
+ DescriptionElement desc = new DescriptionImpl();
+ fFault = (desc.addInterfaceElement()).addInterfaceFaultElement();
+ }
/*
* Test that an (optional) ElementName QName can be successfully set
and retrieved
Modified:
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultReferenceElementTest.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultReferenceElementTest.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultReferenceElementTest.java
(original)
+++
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/InterfaceFaultReferenceElementTest.java
Sun Aug 12 09:24:45 2007
@@ -22,6 +22,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.apache.woden.internal.wsdl20.DescriptionImpl;
import org.apache.woden.internal.wsdl20.InterfaceFaultReferenceImpl;
import org.apache.woden.internal.wsdl20.InterfaceImpl;
import org.apache.woden.types.NCName;
@@ -99,8 +100,9 @@
*/
public void testGetInterfaceFaultElement()
{
- // Create the
InterfaceElement->InterfaceOperationElement->InterfaceFaultReference hierarchy
- InterfaceElement interfaceElement = new InterfaceImpl();
+ // Create the
DescriptionElement->InterfaceElement->InterfaceOperationElement->InterfaceFaultReference
hierarchy
+ DescriptionElement desc = new DescriptionImpl();
+ InterfaceElement interfaceElement = desc.addInterfaceElement();
InterfaceOperationElement interfaceOperationElement =
interfaceElement.addInterfaceOperationElement();
// Add an InterfaceFault to the InterfaceElement
Modified:
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/NameAttributeTest.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/NameAttributeTest.java?view=diff&rev=565085&r1=565084&r2=565085
==============================================================================
---
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/NameAttributeTest.java
(original)
+++
incubator/woden/trunk/java/test/org/apache/woden/wsdl20/xml/NameAttributeTest.java
Sun Aug 12 09:24:45 2007
@@ -20,6 +20,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.apache.woden.internal.wsdl20.DescriptionImpl;
import org.apache.woden.internal.wsdl20.InterfaceImpl;
import org.apache.woden.types.NCName;
@@ -40,7 +41,8 @@
* of the emptystring.
*/
public void testNamespaceOfGetNameReturnValue() {
- InterfaceElement ie = new InterfaceImpl();
+ DescriptionElement de = new DescriptionImpl();
+ InterfaceElement ie = de.addInterfaceElement();
ie.setName(new NCName("foo"));
String namespace = ie.getName().getNamespaceURI();
assertTrue("namespace value should be \"\" but is " + namespace,
namespace.equals(""));
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]