Author: jkaputin
Date: Wed Nov 28 10:47:47 2007
New Revision: 599089
URL: http://svn.apache.org/viewvc?rev=599089&view=rev
Log:
WODEN-74
Fixed qname resolution validation for interface
fault reference.
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/Messages.properties
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/Messages.properties
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/Messages.properties?rev=599089&r1=599088&r2=599089&view=diff
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/Messages.properties
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/Messages.properties
Wed Nov 28 10:47:47 2007
@@ -268,8 +268,9 @@
MessageLabel-1024.ref = 2.5.1
MessageLabel-1024.assertion = The value of this property MUST match the name
of a placeholder message defined by the message exchange pattern.
-QName-0002 =
-QName-0002.assertion = Furthermore, all QName references, whether to the same
of to difference namespace MUST resolve to components (see 2.1.9 QName
resolution).
+QName-resolution-1064 = The QName ''{0}'' referred to in a ''{1}'' could not
be resolved to a ''{2}''.
+QName-resolution-1064.ref = 2.17
+QName-resolution-1064.assertion = A Description component MUST NOT have such
broken references.
# For each Service component in the {services} property of a Description
component, the {name} property MUST be unique.
Service-1060 = A service with the name ''{0}'' has already been defined for
the description component. All services defined in the description component
must have unique names.
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java?rev=599089&r1=599088&r2=599089&view=diff
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
Wed Nov 28 10:47:47 2007
@@ -35,6 +35,7 @@
import org.apache.woden.wsdl20.xml.ImportElement;
import org.apache.woden.wsdl20.xml.InterfaceElement;
import org.apache.woden.wsdl20.xml.InterfaceFaultElement;
+import org.apache.woden.wsdl20.xml.InterfaceFaultReferenceElement;
import org.apache.woden.wsdl20.xml.InterfaceMessageReferenceElement;
import org.apache.woden.wsdl20.xml.InterfaceOperationElement;
import org.apache.woden.wsdl20.xml.TypesElement;
@@ -204,6 +205,9 @@
if(!validateInterfaceMessageReferences(descElement,
interfaceOperation.getInterfaceMessageReferenceElements(), errorReporter))
isValid = false;
+
+ if(!validateInterfaceFaultReferences(descElement,
interfaceOperation.getInterfaceFaultReferenceElements(), errorReporter))
+ isValid = false;
}
return isValid;
}
@@ -224,6 +228,30 @@
return isValid;
}
+ /**
+ * Validate the InterfaceFaultReference elements.
+ *
+ * @param descElement The root description element.
+ * @param faultReferences An array of interface fault reference elements.
+ * @param errorReporter An error reporter.
+ * @return True if the interface fault reference elements are all valid,
false otherwise.
+ * @throws WSDLException
+ */
+ protected boolean validateInterfaceFaultReferences(DescriptionElement
descElement, InterfaceFaultReferenceElement[] faultReferences, ErrorReporter
errorReporter) throws WSDLException
+ {
+ boolean isValid = true;
+
+ int numFaultReferences = faultReferences.length;
+ for(int k = 0; k < numFaultReferences; k++)
+ {
+ InterfaceFaultReferenceElement faultReference = faultReferences[k];
+
if(!testAssertionQNameResolution1064ForInterfaceFaultReference(faultReference,
errorReporter))
+ isValid = false;
+ }
+
+ return isValid;
+ }
+
/**
* Test assertion Description-1006. Tests whether the target namespace
* specified is an absolute IRI.
@@ -453,5 +481,32 @@
}
}
return true;
+ }
+
+ /**
+ * Test assertion QName-resolution-1064 for an InterfaceFaultReference
element. \
+ * A Description component must not contain broken QName references.
+ *
+ * @param faultReference The interface fault reference to check for a broken
reference.
+ * @param errorReporter An error reporter.
+ * @return True if the assertion passes, false otherwise.
+ * @throws WSDLException
+ */
+ protected boolean
testAssertionQNameResolution1064ForInterfaceFaultReference(InterfaceFaultReferenceElement
faultReference, ErrorReporter errorReporter) throws WSDLException
+ {
+ QName ref = faultReference.getRef();
+ if(ref != null)
+ {
+ InterfaceFaultElement fault =
faultReference.getInterfaceFaultElement();
+ if(fault == null)
+ {
+ errorReporter.reportError(new ErrorLocatorImpl(),
+ "QName-resolution-1064",
+ new Object[]{ref.toString(), "interface fault reference",
"interface fault"},
+ ErrorReporter.SEVERITY_ERROR);
+ return false;
+ }
+ }
+ return true;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]