View Javadoc

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 }