diff options
Diffstat (limited to 'bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1204.java')
-rw-r--r-- | bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1204.java | 302 |
1 files changed, 0 insertions, 302 deletions
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1204.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1204.java deleted file mode 100644 index 5bf480deb..000000000 --- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1204.java +++ /dev/null @@ -1,302 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002-2005 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 - Initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.wsi.internal.core.profile.validator.impl.envelope; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import javax.wsdl.Binding; -import javax.wsdl.BindingOperation; -import javax.wsdl.Message; -import javax.wsdl.Part; -import javax.wsdl.Types; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.UnknownExtensibilityElement; -import javax.xml.namespace.QName; - -import org.eclipse.wst.wsi.internal.core.WSIConstants; -import org.eclipse.wst.wsi.internal.core.WSIException; -import org.eclipse.wst.wsi.internal.core.analyzer.AssertionFailException; -import org.eclipse.wst.wsi.internal.core.analyzer.AssertionNotApplicableException; -import org.eclipse.wst.wsi.internal.core.analyzer.AssertionPassException; -import org.eclipse.wst.wsi.internal.core.log.MessageEntry; -import org.eclipse.wst.wsi.internal.core.profile.TestAssertion; -import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext; -import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcess; -import org.eclipse.wst.wsi.internal.core.profile.validator.impl.BaseMessageValidator; -import org.eclipse.wst.wsi.internal.core.report.AssertionResult; -import org.eclipse.wst.wsi.internal.core.util.HTTPUtils; -import org.eclipse.wst.wsi.internal.core.util.OperationSignature; -import org.eclipse.wst.wsi.internal.core.util.TypesRegistry; -import org.eclipse.wst.wsi.internal.core.xml.XMLUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; - - -/** - * BP1204. - * The serialized array form in the message does not contain the - * soapenc:arrayType attribute. - * - */ -public class BP1204 extends AssertionProcess -{ - private final BaseMessageValidator validator; - - /** - * @param BaseMessageValidator - */ - public BP1204(BaseMessageValidator impl) - { - super(impl); - this.validator = impl; - } - - /** - * @see org.eclipse.wst.wsi.test.profile.validator.impl.BaseValidatorImpl.AssertionProcess#validate(TestAssertion, EntryContext) - */ - public AssertionResult validate( - TestAssertion testAssertion, - EntryContext entryContext) - throws WSIException - { - try - { - - if (this.validator.isOneWayResponse(entryContext)) - throw new AssertionNotApplicableException(); - - // Parse message - Document doc = - XMLUtils.parseXML(entryContext.getMessageEntry().getMessage()); - - if (this.validator.isFault(doc)) - { - throw new AssertionPassException(); - } - - // Parse request message - Document docRequest = - XMLUtils.parseXML(entryContext.getRequest().getMessage()); - - // get SOAPAction - String headers = entryContext.getRequest().getHTTPHeaders(); - String action = null; - if (headers != null) - action = (String) HTTPUtils.getHttpHeaderTokens(headers, ":").get("SOAPAction".toUpperCase()); - - Binding binding = validator.analyzerContext.getCandidateInfo().getBindings()[0]; - TypesRegistry registry = - new TypesRegistry( - this.validator.getWSDLDocument().getDefinitions(), - validator); - OperationSignature.OperationMatch match = - OperationSignature.matchOperation( - docRequest, - action, - binding, - registry); - - if (match == null) - throw new AssertionPassException(); - - BindingOperation bindingOperation = match.getOperation(); - - Message operationMessage = null; - if (MessageEntry - .TYPE_REQUEST - .equals(entryContext.getMessageEntry().getType()) - && (bindingOperation.getOperation().getInput() != null)) - { - operationMessage = - bindingOperation.getOperation().getInput().getMessage(); - } - else - { - if (MessageEntry - .TYPE_RESPONSE - .equals(entryContext.getMessageEntry().getType()) - && (bindingOperation.getOperation().getOutput() != null)) - { - operationMessage = - bindingOperation.getOperation().getOutput().getMessage(); - } - } - - if (operationMessage == null) - throw new AssertionPassException(); - - boolean isContainArray = false; - - Collection parts = operationMessage.getParts().values(); - for (Iterator iter = parts.iterator(); iter.hasNext();) - { - Part part = (Part) iter.next(); - - QName type = null; - - if (part.getTypeName() == null) - { - type = registry.getType(part.getElementName()); - } - else - { - type = part.getTypeName(); - } - - isContainArray = - registry.isExtendsArray(type) - || registry.isUsesWSDLArrayType(type) - || isArrayType(type); - if (isContainArray) - break; - } - - if (isContainArray) - { - // Gets body - NodeList soapBodyList = - doc.getElementsByTagNameNS( - WSIConstants.NS_URI_SOAP, - XMLUtils.SOAP_ELEM_BODY); - if (soapBodyList.getLength() == 0 || soapBodyList.getLength() > 1) - { - throw new AssertionFailException(); - } - - Element soapBodyElem = (Element) soapBodyList.item(0); - - NodeList soapBodyCildrenList = - soapBodyElem.getElementsByTagNameNS("*", "*"); - for (int indexChild = 0; - indexChild < soapBodyCildrenList.getLength(); - indexChild++) - { - Element elem = (Element) soapBodyCildrenList.item(indexChild); - if (elem - .hasAttributeNS( - WSIConstants.NS_URI_SOAP_ENCODING, - WSIConstants.ATTR_ARRAY_TYPE)) - { - throw new AssertionFailException(); - } - } - - throw new AssertionPassException(); - } - else - { - throw new AssertionPassException(); - } - - } - catch (AssertionNotApplicableException e) - { - result = AssertionResult.RESULT_NOT_APPLICABLE; - } - catch (AssertionFailException e) - { - result = AssertionResult.RESULT_FAILED; - failureDetail = - this.validator.createFailureDetail( - entryContext.getMessageEntry().getMessage(), - entryContext); - } - catch (AssertionPassException e) - { - result = AssertionResult.RESULT_PASSED; - } - catch (Exception e) - { - result = AssertionResult.RESULT_NOT_APPLICABLE; - } - - // Return assertion result - return validator.createAssertionResult(testAssertion, result, failureDetail); - } - - /** - * Checks whether type uses an array or not. - * @param type - * @return boolean - */ - private boolean isArrayType(QName type) - { - boolean arrayType = false; - - Element typeElement = getTypeElement(type); - if (typeElement != null) - { - NodeList list = - typeElement.getElementsByTagNameNS( - WSIConstants.NS_URI_XSD, - "sequence"); - if (list.getLength() > 0) - arrayType = true; - } - - return arrayType; - } - - /** - * Gets XML element defining the type. - * @param type - * @return Element - */ - private Element getTypeElement(QName type) - { - Types[] allTypes = validator.analyzerContext.getCandidateInfo().getTypes(); - for (int i = 0; allTypes != null && i < allTypes.length; i++) - { - Element typesElement = null; - if (allTypes[i] != null) - { - typesElement = allTypes[i].getDocumentationElement(); - if (typesElement == null) - { - List extList = allTypes[i].getExtensibilityElements(); - for (Iterator iter = extList.iterator(); iter.hasNext();) - { - ExtensibilityElement extElem = (ExtensibilityElement) iter.next(); - - if (extElem - .getElementType() - .equals(new QName(WSIConstants.NS_URI_XSD, "schema"))) - { - typesElement = - ((UnknownExtensibilityElement) extElem).getElement(); - break; - } - } - } - if (typesElement != null) - { - NodeList complexTypesList = - typesElement.getElementsByTagNameNS( - WSIConstants.NS_URI_XSD, - "complexType"); - for (int j = 0; j < complexTypesList.getLength(); j++) - { - Element typeElem = (Element) complexTypesList.item(j); - if (type.getLocalPart().equals(typeElem.getAttribute("name"))) - { - return typeElem; - } - } - - } - } - } - return null; - } -}
\ No newline at end of file |