Author: lmandel
Date: Tue Dec 6 13:07:53 2005
New Revision: 354553
URL: http://svn.apache.org/viewcvs?rev=354553&view=rev
Log:
Updates for NPE.
Modified:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
incubator/woden/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
incubator/woden/java/test/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidatorTest.java
Modified:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java?rev=354553&r1=354552&r2=354553&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
(original)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
Tue Dec 6 13:07:53 2005
@@ -180,6 +180,10 @@
*/
public XmlSchemaElement getElementDeclaration(QName qname)
{
+ // Can't resolve the element if the QName is null.
+ if(qname == null)
+ return null;
+
XmlSchemaElement xmlSchemaElement = null;
List schemas = getReferenceableSchemaDefs(qname.getNamespaceURI());
if(schemas != null)
Modified:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java?rev=354553&r1=354552&r2=354553&view=diff
==============================================================================
---
incubator/woden/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
(original)
+++
incubator/woden/java/src/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidator.java
Tue Dec 6 13:07:53 2005
@@ -37,6 +37,8 @@
import org.apache.woden.wsdl20.xml.InterfaceMessageReferenceElement;
import org.apache.woden.wsdl20.xml.InterfaceOperationElement;
import org.apache.woden.wsdl20.xml.TypesElement;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaElement;
import org.apache.ws.commons.schema.XmlSchemaObjectTable;
/**
@@ -102,6 +104,11 @@
protected boolean validateTypes(TypesElement types, ErrorReporter
errorReporter) throws WSDLException
{
boolean isValid = true;
+
+ // If there is no types element all types assertions are true.
+ if(types == null)
+ return true;
+
// Test imported schema assertions.
ImportedSchema[] importedSchemas = types.getImportedSchemas();
int numImportedSchemas = importedSchemas.length;
@@ -180,8 +187,16 @@
InterfaceMessageReferenceElement messageReference =
messageReferences[k];
if(!testAssertionSchema0020(descElement, messageReference,
errorReporter))
isValid = false;
- if(!testAssertionSchema0016(descElement,
messageReference.getElementName().getNamespaceURI(), errorReporter))
- isValid = false;
+
+ // Only call the namespace assertion if the referenced element
name is not null.
+ QName elementName = messageReference.getElementName();
+ if(elementName != null)
+ {
+ if(!testAssertionSchema0016(descElement,
elementName.getNamespaceURI(), errorReporter))
+ isValid = false;
+
+ }
+
}
// FaultReferenceElement[] faultReferences =
interfaceOperation.getFaultReferenceElements();
@@ -250,7 +265,14 @@
*/
protected boolean testAssertionSchema0017(ImportedSchema schema,
ErrorReporter errorReporter) throws WSDLException
{
- String targetNS = schema.getSchemaDefinition().getTargetNamespace();
+ XmlSchema schemaDef = schema.getSchemaDefinition();
+ // The assertion is true if the schema definition is not available.
+ // Problems locating the schema will be reported elseware and are
+ // not part of this assertion.
+ if(schemaDef == null)
+ return true;
+
+ String targetNS = schemaDef.getTargetNamespace();
if(targetNS == null || targetNS.equals(""))
{
errorReporter.reportError(new ErrorLocatorImpl(), "Schema-0017", new
Object[]{schema.getSchemaLocation()}, ErrorReporter.SEVERITY_ERROR);
@@ -270,7 +292,14 @@
*/
protected boolean testAssertionSchema0052(ImportedSchema schema,
ErrorReporter errorReporter) throws WSDLException
{
- String importedSchemaTargetNS =
schema.getSchemaDefinition().getTargetNamespace();
+ XmlSchema schemaDef = schema.getSchemaDefinition();
+ // The assertion is true if the schema definition is not available.
+ // Problems locating the schema will be reported elseware and are
+ // not part of this assertion.
+ if(schemaDef == null)
+ return true;
+
+ String importedSchemaTargetNS = schemaDef.getTargetNamespace();
String specifiedTargetNS = schema.getNamespace().toString();
if(specifiedTargetNS != null &&
!specifiedTargetNS.equals(importedSchemaTargetNS))
{
@@ -450,7 +479,9 @@
*/
protected boolean testAssertionSchema0020(DescriptionElement descElement,
InterfaceMessageReferenceElement messageReference, ErrorReporter errorReporter)
throws WSDLException
{
- if(messageReference.getElement() == null)
+ XmlSchemaElement element = messageReference.getElement();
+ String contentModel = messageReference.getMessageContentModel();
+ if(element == null && (contentModel == null ||
!contentModel.equals(Constants.NMTOKEN_NONE)))
{
QName elementName = messageReference.getElementName();
if(descElement.toComponent().getTypeDefinition(elementName) != null)
@@ -499,7 +530,8 @@
*/
protected boolean testAssertionSchema0016(DescriptionElement descElement,
String namespace, ErrorReporter errorReporter) throws WSDLException
{
- if(!namespace.equals(Constants.TYPE_XSD_2001))
+ // If the namespace is null it can't be checked.
+ if(namespace != null && !namespace.equals(Constants.TYPE_XSD_2001))
{
TypesElement types = descElement.getTypesElement();
if(types == null)
Modified:
incubator/woden/java/test/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidatorTest.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/test/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidatorTest.java?rev=354553&r1=354552&r2=354553&view=diff
==============================================================================
---
incubator/woden/java/test/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidatorTest.java
(original)
+++
incubator/woden/java/test/org/apache/woden/internal/wsdl20/validation/WSDLDocumentValidatorTest.java
Tue Dec 6 13:07:53 2005
@@ -35,7 +35,9 @@
import org.apache.woden.internal.schema.InlinedSchemaImpl;
import org.apache.woden.internal.wsdl20.Constants;
import org.apache.woden.internal.wsdl20.DescriptionImpl;
+import org.apache.woden.internal.wsdl20.ElementDeclarationImpl;
import org.apache.woden.internal.wsdl20.InterfaceImpl;
+import org.apache.woden.internal.wsdl20.InterfaceMessageReferenceImpl;
import org.apache.woden.schema.ImportedSchema;
import org.apache.woden.schema.InlinedSchema;
import org.apache.woden.wsdl20.xml.DescriptionElement;
@@ -155,6 +157,28 @@
*/
public void testTestAssertionSchema0052()
{
+ // Test that no error is reported for an imported schema that has
+ // a null schema. This error should be caught elseware.
+ handler.reset();
+ try
+ {
+ ImportedSchemaImpl importedSchema = new ImportedSchemaImpl();
+ importedSchema.setNamespace(new URI("http://www.sample.org"));
+
+ if(!val.testAssertionSchema0052(importedSchema, reporter))
+ {
+ fail("The testAssertionSchema0052 method returned false for a
null schema.");
+ }
+ }
+ catch(URISyntaxException e)
+ {
+ fail("There was a problem setting the namespace of the imported
schema: " + e);
+ }
+ catch(WSDLException e)
+ {
+ fail("There was a problem running the test assertion method " + e);
+ }
+
// Test that no error is reported for an imported schema that has
// the same target namespace as the imported element.
handler.reset();
@@ -290,16 +314,36 @@
*/
public void testTestAssertionSchema0017()
{
+ // Test that no error is reported for an imported schema that has
+ // a null schema. This error should be caught elseware.
+ handler.reset();
+ try
+ {
+ ImportedSchemaImpl importedSchema = new ImportedSchemaImpl();
+ importedSchema.setNamespace(new URI("http://www.sample.org"));
+
+ if(!val.testAssertionSchema0017(importedSchema, reporter))
+ {
+ fail("The testAssertionSchema0017 method returned false for a
null schema.");
+ }
+ }
+ catch(URISyntaxException e)
+ {
+ fail("There was a problem setting the namespace of the imported
schema: " + e);
+ }
+ catch(WSDLException e)
+ {
+ fail("There was a problem running the test assertion method " + e);
+ }
+
// Test that no error is reported for an imported schema that has
// defined a target namespace.
handler.reset();
try
{
ImportedSchemaImpl importedSchema = new ImportedSchemaImpl();
-
importedSchema.setNamespace(new URI("http://www.sample.org"));
-
XmlSchema schema = new XmlSchema("http://www.sample.org", null);
importedSchema.setSchemaDefinition(schema);
if(!val.testAssertionSchema0017(importedSchema, reporter))
@@ -939,6 +983,31 @@
{
fail("An error occurred while creating the sample types section.");
}
+
+ // Test that true is returned when the element content is #none
+ handler.reset();
+ try
+ {
+ DescriptionElement descElem = new DescriptionImpl();
+ descElem.setTypesElement(types);
+ InterfaceElement interfaceElem = descElem.createInterfaceElement();
+ InterfaceOperationElement interfaceOperation =
descElem.createInterfaceOperationElement();
+ InterfaceMessageReferenceImpl messageRef = new
InterfaceMessageReferenceImpl();
+ messageRef.setMessageContentModel(Constants.NMTOKEN_NONE);
+ messageRef.setElementDeclaration(new ElementDeclarationImpl());
+ interfaceOperation.addMessageReferenceElement(messageRef);
+ interfaceElem.addInterfaceOperationElement(interfaceOperation);
+ descElem.addInterfaceElement(interfaceElem);
+
+ if(!val.testAssertionSchema0020(descElem, messageRef, reporter))
+ {
+ fail("The testAssertionSchema0020 method returned false for an
message reference that has an element set to #none.");
+ }
+ }
+ catch(WSDLException e)
+ {
+ fail("There was a problem running the test assertion method " + e);
+ }
// Test that an interface message reference with a reference to an
element
// does not return an error.
@@ -1166,7 +1235,24 @@
{
fail("An error occurred while creating the sample types section.");
}
-
+
+ // Test that a null namespace returns true.
+ handler.reset();
+ try
+ {
+ DescriptionElement descElem = new DescriptionImpl();
+ descElem.setTypesElement(types);
+
+ if(!val.testAssertionSchema0016(descElem, null, reporter))
+ {
+ fail("The testAssertionSchema0016 method returned false for a null
namespace.");
+ }
+ }
+ catch(WSDLException e)
+ {
+ fail("There was a problem running the test assertion method " + e);
+ }
+
// Test that a reference to a namespace that is defined inline
// does not return an error.
handler.reset();
@@ -1241,6 +1327,25 @@
catch(WSDLException e)
{
fail("There was a problem running the test assertion method " + e);
+ }
+ }
+
+ /**
+ * Test the validateTypes method.
+ */
+ public void testValidateTypes()
+ {
+ // Test that the method returns true when the type is null.
+ try
+ {
+ if(!val.validateTypes(null, reporter))
+ {
+ fail("The validateTypes method returned false for a null types
element.");
+ }
+ }
+ catch(WSDLException e)
+ {
+ fail("There was a problem running the test assertion method " +
e);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]