1 package org.codehaus.xfire.java.message;
2
3 import java.util.Calendar;
4 import java.util.Date;
5 import java.util.List;
6
7 import org.codehaus.xfire.util.DateUtils;
8 import org.codehaus.xfire.util.NamespaceHelper;
9 import org.dom4j.Element;
10 import org.dom4j.Namespace;
11 import org.dom4j.QName;
12
13 /***
14 * LiteralWriter
15 *
16 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
17 */
18 public class LiteralWriter
19 implements MessageWriter
20 {
21 private Element element;
22
23 private Namespace namespace;
24
25 private static Calendar calendar = Calendar.getInstance();
26
27 public LiteralWriter( Element element )
28 {
29 this.element = element;
30 this.namespace = element.getNamespace();
31 }
32
33 /***
34 * @see org.codehaus.xfire.java.message.MessageWriter#writeValue(java.lang.Object)
35 */
36 public void writeValue(Object value)
37 {
38 if ( value != null )
39 getElement().setText( value.toString() );
40 }
41
42 /***
43 * @see org.codehaus.xfire.java.message.MessageWriter#getWriter(java.lang.String)
44 */
45 public MessageWriter getWriter(String name)
46 {
47 Element child = element.addElement( new QName( name, namespace ) );
48
49 return new LiteralWriter( child );
50 }
51
52 public String getNamespace()
53 {
54 return namespace.getURI();
55 }
56
57 public void setNamespace(String namespace)
58 {
59 this.namespace = NamespaceHelper.getNamespace( getElement(), namespace );
60 }
61
62 /***
63 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsCalendar(java.util.Calendar)
64 */
65 public void writeValueAsCalendar(Calendar calendar)
66 {
67 DateUtils.formatDateTime( calendar.getTime() );
68 }
69
70 /***
71 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsInt(java.lang.Integer)
72 */
73 public void writeValueAsInt(Integer i)
74 {
75 writeValue( i.toString() );
76 }
77
78 /***
79 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsDate(java.util.Date)
80 */
81 public void writeValueAsDateTime(Date date)
82 {
83 writeValue( DateUtils.formatDateTime(date) );
84 }
85
86 /***
87 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsDate(java.util.Date)
88 */
89 public void writeValueAsDate(Date date)
90 {
91 DateUtils.formatDate( calendar.getTime() );
92 }
93
94 /***
95 * @see org.codehaus.xfire.java.message.MessageWriter#getElement()
96 */
97 public Element getElement()
98 {
99 return element;
100 }
101
102 /***
103 * @see org.codehaus.xfire.java.message.MessageWriter#getWriters()
104 */
105 public List getWriters()
106 {
107 return null;
108 }
109
110 /***
111 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsDouble(java.lang.Double)
112 */
113 public void writeValueAsDouble(Double d)
114 {
115 writeValue( d.toString() );
116 }
117
118 /***
119 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsLong(java.lang.Long)
120 */
121 public void writeValueAsLong(Long l)
122 {
123 writeValue( l.toString() );
124 }
125
126 /***
127 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsFloat(java.lang.Float)
128 */
129 public void writeValueAsFloat(Float f)
130 {
131 writeValue( f.toString() );
132 }
133
134 /***
135 * @see org.codehaus.xfire.java.message.MessageWriter#writeValueAsBoolean(boolean)
136 */
137 public void writeValueAsBoolean(boolean b)
138 {
139 writeValue( Boolean.toString(b) );
140 }
141
142 }