1 package org.codehaus.xfire.java.message;
2
3 import java.util.ArrayList;
4 import java.util.Calendar;
5 import java.util.Date;
6 import java.util.Iterator;
7 import java.util.List;
8
9 import org.codehaus.xfire.util.DateUtils;
10 import org.dom4j.Element;
11
12 /***
13 * Reads literal encoded messages.
14 *
15 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
16 */
17 public class LiteralReader
18 implements MessageReader
19 {
20 private Element root;
21
22 public LiteralReader( Element root )
23 {
24 this.root = root;
25 }
26
27 /***
28 * @see org.codehaus.xfire.java.message.MessageReader#getValue()
29 */
30 public String getValue()
31 {
32 return root.getText();
33 }
34
35 /***
36 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsInt()
37 */
38 public int getValueAsInt()
39 {
40 return Integer.parseInt( getValue() );
41 }
42
43 /***
44 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsDate()
45 */
46 public Date getValueAsDate()
47 {
48 return DateUtils.parseDate( getValue() );
49 }
50
51 /***
52 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsDateTime()
53 */
54 public Date getValueAsDateTime()
55 {
56 return DateUtils.parseDateTime( getValue() );
57 }
58
59 public Element getElement()
60 {
61 return root;
62 }
63
64 /***
65 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsCalendar()
66 */
67 public Calendar getValueAsCalendar()
68 {
69 Calendar calendar = Calendar.getInstance();
70 calendar.setTime( DateUtils.parseDateTime(getValue()) );
71 return calendar;
72 }
73
74 /***
75 * @see org.codehaus.xfire.java.message.MessageReader#getReader(java.lang.String)
76 */
77 public MessageReader getReader(String name)
78 {
79 Element child = getElement().element( name );
80
81 return new LiteralReader( child );
82 }
83
84 /***
85 * @see org.codehaus.xfire.java.message.MessageReader#getReaders()
86 */
87 public List getReaders()
88 {
89 List readers = new ArrayList();
90
91 for ( Iterator itr = getElement().elementIterator(); itr.hasNext(); )
92 {
93 readers.add( new LiteralReader( (Element) itr.next() ) );
94 }
95
96 return readers;
97 }
98
99 /***
100 * @see org.codehaus.xfire.java.message.MessageReader#getReaders(java.lang.String)
101 */
102 public List getReaders(String name)
103 {
104 List readers = new ArrayList();
105
106 for ( Iterator itr = getElement().elementIterator( name ); itr.hasNext(); )
107 {
108 readers.add( new LiteralReader( (Element) itr.next() ) );
109 }
110
111 return readers;
112 }
113
114 /***
115 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsLong()
116 */
117 public long getValueAsLong()
118 {
119 return Long.parseLong( getValue() );
120 }
121
122 /***
123 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsDouble()
124 */
125 public double getValueAsDouble()
126 {
127 return Double.parseDouble( getValue() );
128 }
129
130 /***
131 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsFloat()
132 */
133 public float getValueAsFloat()
134 {
135 return Float.parseFloat( getValue() );
136 }
137
138 /***
139 * @see org.codehaus.xfire.java.message.MessageReader#getValueAsBoolean()
140 */
141 public boolean getValueAsBoolean()
142 {
143 return Boolean.valueOf( getValue() ).booleanValue();
144 }
145 }