Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java')
-rw-r--r--bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java673
1 files changed, 0 insertions, 673 deletions
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java
deleted file mode 100644
index 2a040515b..000000000
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java
+++ /dev/null
@@ -1,673 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.wst.wsdl.validation.internal.wsdl11;
-
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.Vector;
-
-import javax.wsdl.Binding;
-import javax.wsdl.BindingFault;
-import javax.wsdl.BindingInput;
-import javax.wsdl.BindingOperation;
-import javax.wsdl.BindingOutput;
-import javax.wsdl.Definition;
-import javax.wsdl.Fault;
-import javax.wsdl.Input;
-import javax.wsdl.Message;
-import javax.wsdl.Operation;
-import javax.wsdl.Output;
-import javax.wsdl.Part;
-import javax.wsdl.Port;
-import javax.wsdl.PortType;
-import javax.wsdl.Service;
-import javax.wsdl.Types;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.xml.namespace.QName;
-
-import org.apache.xerces.xs.XSModel;
-import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
-import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
-import org.eclipse.wst.wsdl.validation.internal.util.MessageGenerator;
-import org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd.SchemaAttributeTable;
-import org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd.XSDValidator;
-
-import com.ibm.wsdl.Constants;
-/**
- * Validate the elements defined in a WSDL 1.1 Document.
- */
-public class WSDL11BasicValidator implements IWSDL11Validator
-{
- private static String VALIDATOR_RESOURCE_BUNDLE_NAME = "validatewsdl";
-
- protected final String NAMESPACES_FEATURE_ID = "http://xml.org/sax/features/namespaces";
- protected final String VALIDATION_FEATURE_ID = "http://xml.org/sax/features/validation";
- protected final String SCHEMA_VALIDATION_FEATURE_ID = "http://apache.org/xml/features/validation/schema";
- protected final String SCHEMA_FULL_CHECKING_FEATURE_ID =
- "http://apache.org/xml/features/validation/schema-full-checking";
- protected final String CONTINUE_AFTER_FATAL_ERROR_ID = "http://apache.org/xml/features/continue-after-fatal-error";
- protected final String SOAP_ENCODING_URI = "http://schemas.xmlsoap.org/soap/encoding/";
-
- // Error and Warning Keys
- private final String _PORT_NAME_NOT_UNIQUE = "_PORT_NAME_NOT_UNIQUE";
- private final String _NO_BINDING_FOR_PORT = "_NO_BINDING_FOR_PORT";
- private final String _NO_ADDRESS_PORT = "_NO_ADDRESS_PORT";
- private final String _MORE_THEN_ONE_ADDRESS_PORT = "_MORE_THEN_ONE_ADDRESS_PORT"; //TODO should be _MORE_THAN_ONE_ADDRESS_PORT, not THEN
- private final String _PORTTYPE_UNDEFINED_FOR_BINDING = "_PORTTYPE_UNDEFINED_FOR_BINDING";
- private final String _OPERATION_UNDEFINED_FOR_PORTTYPE = "_OPERATION_UNDEFINED_FOR_PORTTYPE";
- private final String _OPERATION_NO_INPUT_OR_OUTPUT = "_OPERATION_NO_INPUT_OR_OUTPUT";
- private final String _INPUT_NAME_NOT_UNIQUE = "_INPUT_NAME_NOT_UNIQUE";
- private final String _MESSAGE_UNDEFINED_FOR_INPUT = "_MESSAGE_UNDEFINED_FOR_INPUT";
- private final String _OUTPUT_NAME_NOT_UNIQUE = "_OUTPUT_NAME_NOT_UNIQUE";
- private final String _MESSAGE_UNDEFINED_FOR_OUTPUT = "_MESSAGE_UNDEFINED_FOR_OUTPUT";
- private final String _MESSAGE_UNDEFINED_FOR_FAULT = "_MESSAGE_UNDEFINED_FOR_FAULT";
- private final String _PART_NO_ELEMENT_OR_TYPE = "_PART_NO_ELEMENT_OR_TYPE";
- private final String _PART_BOTH_ELEMENT_AND_TYPE = "_PART_BOTH_ELEMENT_AND_TYPE";
- private final String _PART_INVALID_ELEMENT = "_PART_INVALID_ELEMENT";
- private final String _PART_INVALID_TYPE = "_PART_INVALID_TYPE";
- private final String _WARN_SOAPENC_IMPORTED_PART = "_WARN_SOAPENC_IMPORTED_PART";
-
- private final int ELEMENT = 0;
- private final int TYPE = 1;
-
- private final String REQUEST = "Request";
- private final String RESPONSE = "Response";
- private final String QUOTE = "'";
- private final String EMPTY_STRING = "";
-
-
- //protected WSDL11ValidatorController validatorcontroller;
- protected MessageGenerator messagegenerator;
-
- public WSDL11BasicValidator()
- {
- ResourceBundle rb = ResourceBundle.getBundle(VALIDATOR_RESOURCE_BUNDLE_NAME, Locale.getDefault());
- messagegenerator = new MessageGenerator(rb);
- }
- /**
- * @see org.eclipse.wst.wsdl.validation.internal.wsdl11.IWSDL11Validator#validate(java.lang.Object, java.util.List, org.eclipse.wsdl.validate.wsdl11.IWSDL11ValidationInfo)
- */
- public void validate(Object element, List parents, IWSDL11ValidationInfo valInfo)
- {
- //this.validatorcontroller = validatorcontroller;
- //setDefaultResourceBundleIfNeeded(validatorcontroller);
- Definition wsdlDefinition = (Definition)element;
- validateTypes(wsdlDefinition, valInfo);
- validateServices(wsdlDefinition, valInfo);
- validateBindings(wsdlDefinition, valInfo);
- validatePortTypes(wsdlDefinition, valInfo);
- validateMessages(wsdlDefinition, valInfo);
-
- }
-
- /**
- * Takes a list of ExtensibilityElements and checks if there's a validator
- * associated with each element and if so calls the validator.
- *
- * @param parents The list of parents of the elements.
- * @param extensibilityElements The list of elements to validate.
- * @param validatorcontroller The validator controller.
- * @param wsdlDefinition The defnintions element for this document.
- */
- protected void validateExtensibilityElementList(
- List parents,
- List extensibilityElements,
- IWSDL11ValidationInfo valInfo)
- {
- ValidatorRegistry ver = ValidatorRegistry.getInstance();
- Iterator extElems = extensibilityElements.iterator();
- while (extElems.hasNext())
- {
- ExtensibilityElement element = (ExtensibilityElement)extElems.next();
- String namespace = element.getElementType().getNamespaceURI();
- IWSDL11Validator val = ver.queryValidatorRegistry(namespace);
- if (val != null)
- {
- val.validate(element, parents, valInfo);
- }
-// else
-// {
-// valInfo.addNamespaceWithNoValidator(namespace);
-// }
- }
- }
-
- /**
- * Ensure that the Types element is correct.
- *
- * @param wsdlDefinition The definitions element from the current document.
- */
-
- protected void validateTypes(Definition wsdlDefinition, IWSDL11ValidationInfo valInfo)
- {
- Types types = wsdlDefinition.getTypes();
- // ensure that types is defined
- if (types != null)
- {
- List parents = new Vector();
- parents.add(wsdlDefinition);
- parents.add(0, types);
- validateExtensibilityElementList(parents, types.getExtensibilityElements(), valInfo);
- parents.remove(0);
- }
- }
-
- /**
- * Validates all of the declared services for the definition.
- *
- * @param wsdlDefinition The WSDL definitions element.
- */
- protected void validateServices(Definition wsdlDefinition, IWSDL11ValidationInfo valInfo)
- {
- if (wsdlDefinition.getServices() == null)
- return;
- Object services[] = wsdlDefinition.getServices().values().toArray();
- List parents = new Vector();
- parents.add(wsdlDefinition);
- Hashtable allPorts = new Hashtable();
-
- //TODO: check that ports in other imported files don't conflict with ports in this one
- // // register all of the imported ports
- // Iterator imports = wsdlDefinition.getImports().values().iterator();
- // while(imports.hasNext())
- // {
- // Iterator impservices = ((Import)imports.next()).getDefinition().getServices().values().iterator();
- // while(impservices.hasNext())
- // {
- // Iterator impports = ((Service)impservices.next()).getPorts().values().iterator();
- // while(impports.hasNext())
- // {
- // Port tempP = (Port)impports.next();
- // allPorts.put(tempP.getName(),tempP);
- // }
- // }
- // }
- for (int i = 0; i < services.length; i++)
- {
- Service s = (Service)services[i];
- parents.add(0, s);
- Object ports[] = s.getPorts().values().toArray();
- for (int j = 0; j < ports.length; j++)
- {
- Port p = (Port)ports[j];
- parents.add(0, p);
- // a Port name must be unique within the entire WDSL document
- if (allPorts.contains(p.getName()))
- { String[] args = {p.getName()};
-
- valInfo.addError(messagegenerator.getString(_PORT_NAME_NOT_UNIQUE, QUOTE + args[0] + QUOTE),
- p, _PORT_NAME_NOT_UNIQUE, args);
- }
- else
- {
- allPorts.put(p.getName(), p);
-
- // get the binding for this port and see if the PortType for the binding
- // is defined
- if (p.getBinding() == null || p.getBinding().isUndefined())
- {
- String bindingName = EMPTY_STRING;
- if (p.getBinding() != null)
- {
- bindingName = p.getBinding().getQName().getLocalPart();
- }
- String args[] = {p.getName()};
- valInfo.addError(
- messagegenerator.getString(_NO_BINDING_FOR_PORT, QUOTE + args[0] + QUOTE, QUOTE + bindingName + QUOTE),
- p, _NO_BINDING_FOR_PORT, args);
- }
- else
- {
- // TODO: Check that the output of one port isn't the input of another and vice versa
- // extensibility elements the port
- // there can only be one and must be one extensibility element defined for a port
- List extelems = p.getExtensibilityElements();
- if (extelems.size() < 1)
- { String args[]= {p.getName()};
- valInfo.addError(messagegenerator.getString(_NO_ADDRESS_PORT, QUOTE + args[0] + QUOTE),
- p, _NO_ADDRESS_PORT, args);
- }
- else if (extelems.size() > 1)
- {
- for (int k = 1; k < extelems.size(); k++)
- {
- String[] args = {p.getName()};
- valInfo.addError(
- messagegenerator.getString(_MORE_THEN_ONE_ADDRESS_PORT, QUOTE + args[0] + QUOTE),
- extelems.get(k), _MORE_THEN_ONE_ADDRESS_PORT, args);
- }
- }
- validateExtensibilityElementList(parents, p.getExtensibilityElements(), valInfo);
- }
- }
-
- parents.remove(0);
- }
- // extensibility elements for the service
- validateExtensibilityElementList(parents, s.getExtensibilityElements(), valInfo);
- parents.remove(0);
- }
- }
-
- /**
- * Checks that the bindings refer to valid PortTypes and all of the operations
- // in a given binding refer to a defined operation within the corresponding
- // PortType.
- *
- * @param wsdlDefinition The WSDL definitions element.
- */
- protected void validateBindings(Definition wsdlDefinition, IWSDL11ValidationInfo valInfo)
- {
- if (wsdlDefinition.getBindings() == null)
- return;
- Object bindings[] = wsdlDefinition.getBindings().values().toArray();
- List parents = new Vector();
- parents.add(wsdlDefinition);
- for (int i = 0; i < bindings.length; i++)
- {
- Binding b = (Binding)bindings[i];
- parents.add(0, b);
- PortType portType = b.getPortType();
-
- if (portType == null)
- {
- continue;
- }
- // the PortType is not defined so don't bother checking the operations
- if (portType.isUndefined())
- { String[] args = {portType.getQName().getLocalPart(), b.getQName().getLocalPart()};
- valInfo.addError(
- messagegenerator.getString(
- _PORTTYPE_UNDEFINED_FOR_BINDING,
- QUOTE + args[0] + QUOTE,
- QUOTE + args[1] + QUOTE),
- b, _PORTTYPE_UNDEFINED_FOR_BINDING, args);
- }
- else
- {
- // the PortType is defined so now we have to check that the operations are defined
- Object bindingOperations[] = b.getBindingOperations().toArray();
-
- // check if the operation is defined for each BindingOperation
- for (int k = 0; k < bindingOperations.length; k++)
- {
- BindingOperation bo = (BindingOperation)bindingOperations[k];
- parents.add(0, bo);
- if (bo.getOperation() == null || bo.getOperation().isUndefined())
- {
- String[] args = {b.getQName().getLocalPart(), portType.getQName().getLocalPart()};
- valInfo.addError(
- messagegenerator.getString(
- _OPERATION_UNDEFINED_FOR_PORTTYPE,
- QUOTE + args[0] + QUOTE,
- QUOTE + args[1] + QUOTE),
- bo, _OPERATION_UNDEFINED_FOR_PORTTYPE, args);
- // nice idea to add suggestions to other elements to fix the error
- // but it doesn't work with multipe files like this
- //addValidationMessage(warningList,portType,portType.getQName().getLocalPart() + "Define an operation here to correspond with the operation in: " + bo.getName());
- }
- // take care of all the extensibility elements in the binding operation, binding inputs, outputs and faults
- else
- {
- BindingInput binput = bo.getBindingInput();
- if (binput != null)
- {
- parents.add(0, binput);
- // extensibility elements for binding operation input
- validateExtensibilityElementList(
- parents,
- bo.getBindingInput().getExtensibilityElements(),
- valInfo);
- parents.remove(0);
- }
- BindingOutput boutput = bo.getBindingOutput();
- if (boutput != null)
- {
- parents.add(0, boutput);
- // extensibility elements for binding operation output
- validateExtensibilityElementList(
- parents,
- bo.getBindingOutput().getExtensibilityElements(),
- valInfo);
- parents.remove(0);
- }
- // no input or output has been defined for the operation
- if (binput == null && boutput == null)
- { String[] args = { bo.getName() };
- valInfo.addError(
- messagegenerator.getString(_OPERATION_NO_INPUT_OR_OUTPUT, QUOTE + args[0] + QUOTE),
- bo, _OPERATION_NO_INPUT_OR_OUTPUT, args);
- }
- // extensibility elements for each binding operation fault
- Iterator faults = bo.getBindingFaults().values().iterator();
- while (faults.hasNext())
- {
- BindingFault bf = (BindingFault)faults.next();
- parents.add(0, bf);
- validateExtensibilityElementList(parents, bf.getExtensibilityElements(), valInfo);
- parents.remove(0);
- }
- }
- // extensibility elements for binding operation
- validateExtensibilityElementList(parents, bo.getExtensibilityElements(), valInfo);
- parents.remove(0);
- }
- }
- // extensibility elements for the binding
- validateExtensibilityElementList(parents, b.getExtensibilityElements(), valInfo);
- parents.remove(0);
- }
-
- }
-
- /**
- * Check that all of the PortTypes have valid messages associated with their
- // operation input, output and fault types.
- *
- * @param wsdlDefinition The WSDL definitions element.
- */
- protected void validatePortTypes(Definition wsdlDefinition, IWSDL11ValidationInfo valInfo)
- {
- if (wsdlDefinition.getPortTypes() == null)
- return;
- Object porttypes[] = wsdlDefinition.getPortTypes().values().toArray();
-
- for (int i = 0; i < porttypes.length; i++)
- {
- PortType p = (PortType)porttypes[i];
- Object operations[] = p.getOperations().toArray();
- List inAndOutNames = new Vector();
- for (int j = 0; j < operations.length; j++)
- {
- Operation o = (Operation)operations[j];
- if (o == null || o.isUndefined())
- {
- continue;
- }
-
- // check that the messages are defined for the input, output and faults
- Message m;
- Input input = o.getInput();
- if (input != null)
- {
- String inputName = input.getName();
- // if the name isn't defined it defaults to this
- if (inputName == null)
- {
- inputName = o.getName() + REQUEST;
- }
- if (inAndOutNames.contains(inputName))
- { String[] args = {inputName, p.getQName().getLocalPart() };
- valInfo.addError(
- messagegenerator.getString(
- _INPUT_NAME_NOT_UNIQUE,
- QUOTE + args[0] + QUOTE,
- QUOTE + args[1] + QUOTE),
- input, _INPUT_NAME_NOT_UNIQUE, args);
- }
- else
- {
- inAndOutNames.add(inputName);
- }
-
- m = input.getMessage();
- if (m != null && m.isUndefined())
- {
- String messName = EMPTY_STRING;
- QName messQName = m.getQName();
- if (messQName != null)
- {
- messName = messQName.getLocalPart();
- }
- String[] args = {messName};
- valInfo.addError(messagegenerator.getString(_MESSAGE_UNDEFINED_FOR_INPUT, QUOTE + args[0] + QUOTE),
- input, _MESSAGE_UNDEFINED_FOR_INPUT, args);
- }
- }
- Output output = o.getOutput();
- if (output != null)
- {
- String outputName = output.getName();
- // if the name isn't defined it defaults to this
- if (outputName == null)
- {
- outputName = o.getName() + RESPONSE;
- }
-
- if (inAndOutNames.contains(outputName))
- {
- String[] args = {outputName, p.getQName().getLocalPart()};
-
- valInfo.addError(
- messagegenerator.getString(
- _OUTPUT_NAME_NOT_UNIQUE,
- QUOTE + args[0] + QUOTE,
- QUOTE + args[1] + QUOTE),
- output, _OUTPUT_NAME_NOT_UNIQUE, args);
- }
- else
- {
- inAndOutNames.add(outputName);
- }
-
- m = output.getMessage();
- if (m != null && m.isUndefined())
- {
- String messName = EMPTY_STRING;
- QName messQName = m.getQName();
- if (messQName != null)
- {
- messName = messQName.getLocalPart();
- }
- String[] args = {messName};
- valInfo.addError(messagegenerator.getString(_MESSAGE_UNDEFINED_FOR_OUTPUT, QUOTE + args[0] + QUOTE),
- output, _MESSAGE_UNDEFINED_FOR_OUTPUT, args);
- }
- }
-
- Object faults[] = o.getFaults().values().toArray();
-
- //List faultNames = new Vector();
- for (int k = 0; k < faults.length; k++)
- {
- Fault f = (Fault)faults[k];
- m = f.getMessage();
- if (m != null && m.isUndefined())
- {
- String messName = EMPTY_STRING;
- QName messQName = m.getQName();
- if (messQName != null)
- {
- messName = messQName.getLocalPart();
- }
- String args[] = {messName};
- valInfo.addError(messagegenerator.getString(_MESSAGE_UNDEFINED_FOR_FAULT, QUOTE + args[0] + QUOTE),
- f, _MESSAGE_UNDEFINED_FOR_FAULT, args);
- }
- }
- }
- }
- }
-
- /**
- * Check that all the messages defined in the WSDL document are valid.
- *
- * @param wsdlDefinition The WSDL definitions element.
- */
- protected void validateMessages(Definition wsdlDefinition, IWSDL11ValidationInfo valInfo)
- {
- if (wsdlDefinition.getMessages() == null)
- return;
- Iterator messages = wsdlDefinition.getMessages().values().iterator();
-
- while (messages.hasNext())
- {
- Message m = (Message)messages.next();
- if (!m.isUndefined())
- {
- // if the message has a part (and it doesn't have to)
- // ensure each message part has either an element or a type
- if (!m.getParts().isEmpty())
- {
- Iterator parts = m.getParts().values().iterator();
- while (parts.hasNext())
- {
- Part p = (Part)parts.next();
- QName elementName = p.getElementName();
- QName typeName = p.getTypeName();
- Map extAtts = p.getExtensionAttributes();
- // TODO:This will have to be extended as parts can have extensibility elements
- //ensure the part has a type or an element defined
- if (elementName == null && typeName == null && (extAtts == null || extAtts.isEmpty()))
- { String[] args = { p.getName()};
- valInfo.addError(messagegenerator.getString(_PART_NO_ELEMENT_OR_TYPE, QUOTE + args[0] + QUOTE),
- p, _PART_NO_ELEMENT_OR_TYPE, args);
- }
- //here the part has both the element and type defined and it can only have one defined
- else if (elementName != null && typeName != null)
- { String[] args = {p.getName()};
- valInfo.addError(messagegenerator.getString(_PART_BOTH_ELEMENT_AND_TYPE, QUOTE + args[0] + QUOTE),
- p, _PART_BOTH_ELEMENT_AND_TYPE, args);
- }
- else if (elementName != null)
- {
- if (!checkPartConstituent(elementName.getNamespaceURI(),
- elementName.getLocalPart(),
- ELEMENT,
- p,
- valInfo))
- { String[] args = {p.getName(), elementName.getLocalPart()};
- valInfo.addError(
- messagegenerator.getString(
- _PART_INVALID_ELEMENT,
- QUOTE + args[0] + QUOTE,
- QUOTE + args[1] + QUOTE),
- p, _PART_INVALID_ELEMENT, args);
- }
- }
- else if (typeName != null)
- {
- // check that the type itself is defined properly
- if (!checkPartConstituent(typeName.getNamespaceURI(), typeName.getLocalPart(), TYPE, p, valInfo))
- { String[] args = {p.getName(), typeName.getLocalPart() };
- valInfo.addError(
- messagegenerator.getString(
- _PART_INVALID_TYPE,
- QUOTE + args[0] + QUOTE,
- QUOTE + args[1] + QUOTE),
- p, _PART_INVALID_TYPE, args);
- }
- }
- }
- }
- }
- }
- }
-
- /**
- * Checks whether the given name is defined in the namespace for the part. A part is an
- * ELEMENT or a TYPE.
- *
- * @param namespace The namespace to check.
- * @param name The name to check.
- * @param part The part to check, either ELEMENT or TYPE.
- * @param partObject The object representing the given part.
- * @return True if the part element of type is defined, false otherwise.
- */
- protected boolean checkPartConstituent(
- String namespace,
- String name,
- int part,
- Part partObject,
- IWSDL11ValidationInfo valInfo)
- {
-
- boolean partvalid = false;
- // First take care of the situation where it's from the schema namespace.
- // The 1999, 2000 and 2001 schema namespaces are all accepted.
- if (namespace.equals(Constants.NS_URI_XSD_2001)
- || namespace.equals(Constants.NS_URI_XSD_1999)
- || namespace.equals(Constants.NS_URI_XSD_2000))
- {
- SchemaAttributeTable xsdTable = new SchemaAttributeTable();
- if (xsdTable.containsSymbol(name))
- {
- partvalid = true;
- }
- }
- // check inline and imported schema
- else
- {
- XSModel[] schemas = valInfo.getSchemas();
- int numSchemas = schemas.length;
- //Iterator schemasIter = schemas.iterator();
- for (int i = 0; i < numSchemas; i++)
- {
- XSModel schema = schemas[i];
- if (schema != null)
- {
- if (part == ELEMENT && schema.getElementDeclaration(name, namespace) != null)
- {
- partvalid = true;
- break;
- }
- else if (part == TYPE && schema.getTypeDefinition(name, namespace) != null)
- {
- partvalid = true;
- break;
- }
- }
- }
- }
- // If the SOAP encoding namespace hasn't been explicitly imported do so
- // now.
- // Allow the SOAP encoding namespace to be automatically imported but mark
- // it as a warning.
- if (!partvalid && namespace.equals(SOAP_ENCODING_URI))
- {
- try
- {
- XSDValidator xsdVal = new XSDValidator();
- String soapEnc = valInfo.getURIResolver().resolve("", SOAP_ENCODING_URI, null).getPhysicalLocation();
- if(soapEnc != null)
- {
- xsdVal.validate(soapEnc, null, valInfo.getSchemaCache());
- // sanity check in case something goes wrong
- if (xsdVal.isValid())
- {
- XSModel xsModel = xsdVal.getXSModel();
-
- if (part == ELEMENT && xsModel.getElementDeclaration(name, namespace) != null)
- {
- partvalid = true;
- }
- else if (part == TYPE && xsModel.getTypeDefinition(name, namespace) != null)
- {
- partvalid = true;
- }
- valInfo.addWarning(messagegenerator.getString(_WARN_SOAPENC_IMPORTED_PART, QUOTE + name + QUOTE), partObject);
- }
- }
- }
- catch (Exception e)
- {
- LoggerFactory.getInstance().getLogger().log("An exception occurred while performing WSDL validation of a part with the SOAP encoding namespace.", ILogger.SEV_ERROR, e);
- }
- }
- return partvalid;
- }
-
-}

Back to the top