001: /*
002: * The Apache Software License, Version 1.1
003: *
004: *
005: * Copyright (c) 2002 The Apache Software Foundation. All rights
006: * reserved.
007: *
008: * Redistribution and use in source and binary forms, with or without
009: * modification, are permitted provided that the following conditions
010: * are met:
011: *
012: * 1. Redistributions of source code must retain the above copyright
013: * notice, this list of conditions and the following disclaimer.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright
016: * notice, this list of conditions and the following disclaimer in
017: * the documentation and/or other materials provided with the
018: * distribution.
019: *
020: * 3. The end-user documentation included with the redistribution,
021: * if any, must include the following acknowledgment:
022: * "This product includes software developed by the
023: * Apache Software Foundation (http://www.apache.org/)."
024: * Alternately, this acknowledgment may appear in the software itself,
025: * if and wherever such third-party acknowledgments normally appear.
026: *
027: * 4. The names "WSIF" and "Apache Software Foundation" must
028: * not be used to endorse or promote products derived from this
029: * software without prior written permission. For written
030: * permission, please contact apache@apache.org.
031: *
032: * 5. Products derived from this software may not be called "Apache",
033: * nor may "Apache" appear in their name, without prior written
034: * permission of the Apache Software Foundation.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
040: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: * ====================================================================
049: *
050: * This software consists of voluntary contributions made by many
051: * individuals on behalf of the Apache Software Foundation and was
052: * originally based on software copyright (c) 2001, 2002, International
053: * Business Machines, Inc., http://www.apache.org. For more
054: * information on the Apache Software Foundation, please see
055: * <http://www.apache.org/>.
056: */
057:
058: package org.apache.wsif;
059:
060: import java.util.Iterator;
061: import java.util.Map;
062:
063: import javax.wsdl.Message;
064:
065: /**
066: * A WSIFMessage is a an interface representing a WSDL Message.
067: * <p>
068: * In WSDL, a Message describes the abstract type of the input
069: * or output to an operation. This is the corresponding WSIF
070: * class which represents in memory the actual input or output
071: * of an operation.
072: * <p>
073: * A WSIFMessage is a container for a set of named parts. The
074: * WSIFMessage interface separates the actual representation of
075: * the data from the abstract type defined by WSDL.
076: * <p>
077: * WSIFMessage implementations are free to represent the
078: * actual part data in any way that is convenient to them.
079: * This could be a simple HashMap as in the WSIFDefaultMessage
080: * implementation, or it could be something more complex, such
081: * as a stream or tree representation.
082: * <p>
083: * In addition to the containing parts, a WSIFMessage also has
084: * a message name. This can be used to distinguish between messages.
085: * <p>
086: * WSIFMessages are cloneable and serializable. If the parts set are
087: * not cloneable, the implementation should try to clone them using
088: * serialization. If the parts are not serializable either, then a
089: * CloneNotSupportedException will be thrown if cloning is attempted.
090: * <p>
091: * A WSIFMessage should be not created by directly instantiating
092: * a WSIFMessage, but should be created by calling one of the
093: * {@link WSIFOperation#createInputMessage()}, {@link WSIFOperation#createOutputMessage()},
094: * or {@link WSIFOperation#createFaultMessage()} methods.
095: * <p>
096: * An instance of a WSIFMessage should only be used for the purpose
097: * it was created for, for example, a WSIFMessage created by the
098: * {@link WSIFOperation#createInputMessage(String)} should not be used as an
099: * output message. A WSIFMessage should only be used once, it should
100: * not be reused in any subsequent WSIFOperation requests.
101: *
102: * @author Paul Fremantle
103: * @author Alekander Slominski
104: * @author Matthew J. Duftler
105: * @author Sanjiva Weerawarana
106: * @author Nirmal Mukhi
107: * @author Owen Burroughs <owenb@apache.org>
108: * @author Ant Elder <antelder@apache.org>
109: * @author Jeremy Hughes <hughesj@apache.org>
110: * @author Mark Whitlock <whitlock@apache.org>
111:
112: */
113: public interface WSIFMessage extends java.io.Serializable, Cloneable {
114: /**
115: * Get the name of this message.
116: */
117: public String getName();
118:
119: /**
120: * Set the name of this message.
121: */
122: public void setName(String name);
123:
124: /**
125: * Return list of part names.
126: * <p><b>NOTE:</b> part names are unordered.
127: */
128: public Iterator getPartNames();
129:
130: /**
131: * Create an iterator of the parts in this message.
132: * Supercedes void getParts(Map).
133: */
134: public Iterator getParts();
135:
136: /**
137: * This message parts will be replaced by sourceParts.
138: * @parameter sourceParts must be Map that has as key Strings with
139: * part names and values must be instances of WSIFPart.
140: */
141: public void setParts(Map sourceParts);
142:
143: /**
144: * Get the underlying WSDL model for this message.
145: * @return javax.wsdl.Message
146: */
147: public Message getMessageDefinition();
148:
149: /**
150: * Set the underlying WSDL model for this message.
151: * @param msgDefinition
152: */
153: public void setMessageDefinition(Message msgDef);
154:
155: public String getRepresentationStyle();
156:
157: public void setRepresentationStyle(String rStyle);
158:
159: public Object getObjectPart(String name) throws WSIFException;
160:
161: public Object getObjectPart(String name, Class sourceClass)
162: throws WSIFException;
163:
164: public void setObjectPart(String name, Object part)
165: throws WSIFException;
166:
167: public char getCharPart(String name) throws WSIFException;
168:
169: public byte getBytePart(String name) throws WSIFException;
170:
171: public short getShortPart(String name) throws WSIFException;
172:
173: public int getIntPart(String name) throws WSIFException;
174:
175: public long getLongPart(String name) throws WSIFException;
176:
177: public float getFloatPart(String name) throws WSIFException;
178:
179: public double getDoublePart(String name) throws WSIFException;
180:
181: public boolean getBooleanPart(String name) throws WSIFException;
182:
183: public void setCharPart(String name, char charPart);
184:
185: public void setBytePart(String name, byte bytePart);
186:
187: public void setShortPart(String name, short shortPart);
188:
189: public void setIntPart(String name, int intPart);
190:
191: public void setLongPart(String name, long longPart);
192:
193: public void setFloatPart(String name, float floatPart);
194:
195: public void setDoublePart(String name, double doublePart);
196:
197: public void setBooleanPart(String name, boolean booleanPart);
198:
199: public Object clone() throws CloneNotSupportedException;
200: }
|