1 package org.codehaus.xfire.service;
2
3 import java.util.Iterator;
4
5 import javax.xml.namespace.QName;
6
7
8 /***
9 * Represents the description of a service operation message.
10 * <p/>
11 * Messages are created using the {@link OperationInfo#createMessage} method.
12 *
13 * @author <a href="mailto:poutsma@mac.com">Arjen Poutsma</a>
14 */
15 public class MessageInfo
16 extends MessagePartContainer
17 implements Visitable
18 {
19 private QName name;
20
21 /***
22 * Initializes a new instance of the <code>MessageInfo</code> class with the given qualified name and operation.
23 *
24 * @param name the name.
25 * @param operation the operation.
26 */
27 MessageInfo(QName name, OperationInfo operation)
28 {
29 super(operation);
30 this.name = name;
31 }
32
33 /***
34 * Returns the qualified name of the message info.
35 *
36 * @return the name.
37 */
38 public QName getName()
39 {
40 return name;
41 }
42
43 /***
44 * Sets the qualified name of the message info.
45 *
46 * @param name the qualified name.
47 */
48 public void setName(QName name)
49 {
50 this.name = name;
51 }
52
53 /***
54 * Acceps the given visitor. Iterates over all message part infos.
55 *
56 * @param visitor the visitor.
57 */
58 public void accept(Visitor visitor)
59 {
60 visitor.startMessage(this);
61 for (Iterator iterator = getMessageHeaders().iterator(); iterator.hasNext();)
62 {
63 MessageHeaderInfo messageHeaderInfo = (MessageHeaderInfo) iterator.next();
64 messageHeaderInfo.accept(visitor);
65 }
66 for (Iterator iterator = getMessageParts().iterator(); iterator.hasNext();)
67 {
68 MessagePartInfo messagePartInfo = (MessagePartInfo) iterator.next();
69 messagePartInfo.accept(visitor);
70 }
71 visitor.endMessage(this);
72 }
73 }