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 }