001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)WrapperParser.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package com.sun.jbi.wsdl11wrapper;
030:
031: import java.util.List;
032: import javax.wsdl.Message;
033: import javax.wsdl.Definition;
034: import javax.xml.namespace.QName;
035: import org.w3c.dom.Element;
036: import org.w3c.dom.Document;
037: import org.w3c.dom.NodeList;
038:
039: /**
040: * Assist in processing normalized messages with JBI WSDL 1.1 wrappers
041: *
042: * Usage sequence: for each normalized message to process call parse() before using the
043: * get() accessors to obtain details regarding the normalized message.
044: *
045: * e.g. along the lines of
046: * parse(normalizedMsg, wsdlDef)
047: * getPartElement(partName1)
048: * getPartElement(partName2)
049: *
050: * The same instance should not be used by multiple threads concurrently as it is
051: * not guaranteed to be thread safe - and maintains state
052: *
053: * The re-use of the same instance however is encouraged.
054: *
055: * @author aegloff
056: */
057: public interface WrapperParser {
058:
059: /**
060: * Parse a normalized message document in JBI WSDL 1.1 wrapper format
061: * @param wrappedDoc the wrapped normalized message document
062: * @param wsdlDefinition the full wsdl definition, including the definition for the normalized message
063: * @throws WrapperProcessingException if there is an issue parsing the normalized message,
064: * e.g. if the normalized message could not be found in the WSDL
065: */
066: void parse(Document wrappedDoc, Definition wsdlDefinition)
067: throws WrapperProcessingException;
068:
069: /**
070: * Parse a normalized message document in JBI WSDL 1.1 wrapper format
071: * @param wrappedDoc the wrapped normalized message document
072: * @param wsdlMessageDefinition the wsdl message definition for the normalized message
073: * @throws WrapperProcessingException if there is an issue parsing the normalized message,
074: * e.g. if the normalized message does not match the WSDL description
075: */
076: void parse(Document wrappedDoc, Message wsdlMessageDefinition)
077: throws WrapperProcessingException;
078:
079: /**
080: * Note that the spec mandates that all parts present in the WSDL message definition
081: * have to appear in the wrapped normalized message - as such this method has limited usefulness
082: *
083: * @param partName the name of the part to check
084: * @return true if the parsed document contains an entry for the given part - even if the part payload itself is empty.
085: * false if the part is not present
086: */
087: boolean hasPart(String partName);
088:
089: /**
090: * Returns only the first Element inside the part wrapper
091: * Legally, the jbi:part may contain multiple Elements, or text - but
092: * in many cases the WSDL will limit this to one element.
093: *
094: * (a jbi:part element may legally contain multiple Elements, or text)
095: * @param partName the name of the part
096: * @return the first Element in the normalized message part, null if no element is present
097: * @throws WrapperProcessingException if the part could not be returned
098: */
099: /*
100: Element getPartElement(String partName) throws WrapperProcessingException;
101: */
102: /**
103: * Returns all nodes inside the part wrapper
104: * (a jbi:part element may legally contain multiple Elements, or a text node)
105: * @param partName the name of the part
106: * @return all Nodes in the normalized message part
107: * @throws WrapperProcessingException if the part could not be returned
108: */
109: NodeList getPartNodes(String partName)
110: throws WrapperProcessingException;
111:
112: /**
113: * Returns the part, including the <jbi:part> part wrapper element around
114: * the part 'payload'
115: *
116: * (a jbi:part element may legally contain multiple Elements, or text)
117: * @param partName the name of the part
118: * @return the wrapped normalized message part
119: * @throws WrapperProcessingException if the part could not be returned
120: */
121: Element getWrappedPart(String partName)
122: throws WrapperProcessingException;
123:
124: /**
125: * @return the number of parts in the normalized message
126: */
127: int getNoOfParts();
128:
129: /**
130: * @return the names of the parts in the normalized message
131: */
132: String[] getPartNames();
133:
134: /**
135: * Get the message type of the message wrapper in the wrapped document.
136: * @return the message type as QName
137: */
138: QName getMessageType() throws WrapperProcessingException;
139:
140: /**
141: * Get the optional message "name" defined in the wrapped document.
142: * This is the logical name defined in the operation binding, not the type name.
143: * @return the message name
144: */
145: String getMessageName() throws WrapperProcessingException;
146:
147: }
|