Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java')
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java267
1 files changed, 0 insertions, 267 deletions
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java
deleted file mode 100644
index e28c5b84e..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java
+++ /dev/null
@@ -1,267 +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.HashSet;
-
-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.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.xml.XMLUtils;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-
-
-/**
- * BP1600
- *
- * <context>For a candidate envelope</context>
- * <assertionDescription>The envelope conforms to the structure specified in SOAP 1.1 Section 4.</assertionDescription>
- */
-public class BP1600 extends AssertionProcess
-{
- private final BaseMessageValidator validator;
-
- /**
- * @param BaseMessageValidator
- */
- public BP1600(BaseMessageValidator impl)
- {
- super(impl);
- this.validator = impl;
- }
-
- public AssertionResult validate(
- TestAssertion testAssertion,
- EntryContext entryContext)
- throws WSIException
- {
- try
- {
- // Getting a message document
- Document doc = entryContext.getMessageEntryDocument();
-
- // If the message is empty or invalid, the assertion failed
- if (doc == null)
- {
- if (this.validator.isOneWayResponse(entryContext))
- throw new AssertionNotApplicableException();
- else
- throw new AssertionFailException("The log message is empty or invalid.");
- }
- // SOAP 1.1 specifications, Section 4.
- // http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383494
-
- // The namespace identifier for the elements and attributes defined
- // in this section is "http://schemas.xmlsoap.org/soap/envelope/".
-
- // o The Envelope is the top element of the XML document representing the message.
-
- // Rule 1. Envelope
- // o The element name is "Envelope".
- // o The element MUST be present in a SOAP message
- // o The element MAY contain namespace declarations as well as additional attributes.
- // If present, such additional attributes MUST be namespace-qualified. Similarly,
- // the element MAY contain additional sub elements. If present these elements
- // MUST be namespace-qualified and MUST follow the SOAP Body element.
-
- // Getting the top element
- Element element = doc.getDocumentElement();
-
- // Assuming that the top element should be soap:Envelope
- // If not, the assertion failed
- if (!element.getLocalName().equals(XMLUtils.SOAP_ELEM_ENVELOPE)
- || !isSOAPNamespace(element.getNamespaceURI()))
- throw new AssertionFailException("The top element is not soap:Envelope");
-
- // Collecting all the namespace declarations
- Collection envelopeNamespaces = collectNamespaces(element.getAttributes());
- envelopeNamespaces.add(WSIConstants.NS_URI_XMLNS);
-
- // Getting an attribute that is not in any of the namespaces
- Attr notValidAttr = getNotValidAttr(
- element.getAttributes(),
- envelopeNamespaces);
-
- // If found one, the assertion failed
- if (notValidAttr != null)
- throw new AssertionFailException("The attribute "
- + notValidAttr.getNodeName() + " is not namespace-qualified");
-
-
- // Rule 2. Header
- // o The element name is "Header".
- // o The element MAY be present in a SOAP message. If present, the element
- // MUST be the first immediate child element of a SOAP Envelope element.
- // o The element MAY contain a set of header entries each being an immediate
- // child element of the SOAP Header element. All immediate child elements
- // of the SOAP Header element MUST be namespace-qualified.
-
- // Getting the first sub element of the envelope
- element = XMLUtils.getFirstChild(element);
-
- // If the child is soap:Header
- if (element != null
- && element.getLocalName().equals(XMLUtils.SOAP_ELEM_HEADER)
- && isSOAPNamespace(element.getNamespaceURI()))
- {
-
- // Going through all the Header entries
- Element headerEntry = XMLUtils.getFirstChild(element);
- while (headerEntry != null)
- {
- // Collecting all the namespaces for the current entry
- Collection headerEntryNamespaces = collectNamespaces(
- headerEntry.getAttributes());
-
- // If the entry is not in the namespaces, the assertion failed
- if (!envelopeNamespaces.contains(headerEntry.getNamespaceURI())
- && !headerEntryNamespaces.contains(headerEntry.getNamespaceURI()))
- throw new AssertionFailException("The header entry "
- + headerEntry.getNodeName() + " is not namespace-qualified");
-
- // Getting the next Header entry
- headerEntry = XMLUtils.getNextSibling(headerEntry);
- }
-
- // Getting the next sub element of the envelope
- element = XMLUtils.getNextSibling(element);
- }
-
-
- // Rule 3. Body
- // o The element name is "Body".
- // o The element MUST be present in a SOAP message and MUST be an immediate
- // child element of a SOAP Envelope element. It MUST directly follow the
- // SOAP Header element if present. Otherwise it MUST be the first immediate
- // child element of the SOAP Envelope element.
- // o The element MAY contain a set of body entries each being an immediate
- // child element of the SOAP Body element. Immediate child elements of the
- // SOAP Body element MAY be namespace-qualified. SOAP defines the SOAP Fault
- // element, which is used to indicate error messages.
-
- // if the SOAP Body element is not presented, the assertion failed
- if (element == null
- || !element.getLocalName().equals(XMLUtils.SOAP_ELEM_BODY)
- || !isSOAPNamespace(element.getNamespaceURI()))
- throw new AssertionFailException("The soap:Body element is not presented "
- + "or follows an additional sub element of soap:Envelope");
-
- // Processing all other sub elements of the envelope
- element = XMLUtils.getNextSibling(element);
- while (element != null)
- {
- // Checking for the SOAP Header element
- if (element.getLocalName().equals(XMLUtils.SOAP_ELEM_HEADER)
- && isSOAPNamespace(element.getNamespaceURI()))
- throw new AssertionFailException(
- "The soap:Header element cannot follow the soap:Body element");
-
- // Collecting all the namespaces for the current element
- Collection elementNamespaces = collectNamespaces(
- element.getAttributes());
-
- // If the element is not in the namespaces, the assertion failed
- if (!envelopeNamespaces.contains(element.getNamespaceURI())
- && !elementNamespaces.contains(element.getNamespaceURI()))
- throw new AssertionFailException("The sub envelope element "
- + element.getNodeName() + " is not namespace-qualified");
-
- // Getting the next sub element of the envelope
- element = XMLUtils.getNextSibling(element);
- }
- }
- catch (AssertionFailException afe)
- {
- result = AssertionResult.RESULT_FAILED;
- failureDetail = validator.createFailureDetail(
- afe.getMessage(), entryContext);
- }
-
- catch (AssertionNotApplicableException anae)
- {
- result = AssertionResult.RESULT_NOT_APPLICABLE;
- }
- // Return assertion result
- return validator.createAssertionResult(
- testAssertion, result, failureDetail);
- }
-
- /**
- * Collects all the namespace declarations from attributes collection
- * @param attrs an attributes collection
- * @return a collection of namespaces
- */
- private Collection collectNamespaces(NamedNodeMap attrs)
- {
- Collection ns = new HashSet();
- if (attrs != null)
- {
- for(int i = 0; i < attrs.getLength(); i++)
- {
- Attr attr = (Attr) attrs.item(i);
- if (attr.getNamespaceURI() != null
- && attr.getNamespaceURI().equals(WSIConstants.NS_URI_XMLNS))
- ns.add(attr.getValue());
- }
- }
-
- return ns;
- }
-
- /**
- * Retrieves an attribute that is not in namespaces
- * @param attrs an attributes collection
- * @param ns a namespaces collection
- * @return an attribtue that is not in any of the namespaces specified
- */
- private Attr getNotValidAttr(NamedNodeMap attrs, Collection ns)
- {
- Attr ret = null;
- if (attrs != null)
- {
- for(int i = 0; i < attrs.getLength(); i++)
- {
- Attr attr = (Attr) attrs.item(i);
- if (attr.getNamespaceURI() == null
- || !ns.contains(attr.getNamespaceURI()))
- {
- ret = attr;
- break;
- }
- }
- }
- return ret;
- }
-
- /**
- * Qualifies whether a namespace is the SOAP namespace
- * "http://schemas.xmlsoap.org/soap/envelope/"
- * @param ns a namespace to be qualified
- * @return true if the namespace is qualified, false otherwise
- */
- private boolean isSOAPNamespace(String ns)
- {
- if (ns == null)
- return false;
-
- return ns.equals(WSIConstants.NS_URI_SOAP);
- }
-} \ No newline at end of file

Back to the top