1 package com.thoughtworks.xstream.converters.javabean; 2 3 import com.thoughtworks.acceptance.StandardObject; 4 import com.thoughtworks.xstream.XStream; 5 import junit.framework.TestCase; 6 7 public class JavaBeanConverterTest extends TestCase { 8 9 public static class World extends StandardObject { 10 int anInt = 1; 11 12 Integer anInteger = new Integer (2); 13 14 char anChar = 'a'; 15 16 Character anCharacter = new Character ('w'); 17 18 boolean anBool = true; 19 20 Boolean anBoolean = new Boolean (false); 21 22 byte aByte = 4; 23 24 Byte aByteClass = new Byte ("5"); 25 26 short aShort = 6; 27 28 Short aShortClass = new Short ("7"); 29 30 float aFloat = 8f; 31 32 Float aFloatClass = new Float ("9"); 33 34 long aLong = 10; 35 36 Long aLongClass = new Long ("11"); 37 38 String anString = new String ("XStream programming!"); 39 40 public byte getAByte() { 41 return aByte; 42 } 43 44 public void setAByte(byte byte1) { 45 aByte = byte1; 46 } 47 48 public Byte getAByteClass() { 49 return aByteClass; 50 } 51 52 public void setAByteClass(Byte byteClass) { 53 aByteClass = byteClass; 54 } 55 56 public float getAFloat() { 57 return aFloat; 58 } 59 60 public void setAFloat(float float1) { 61 aFloat = float1; 62 } 63 64 public Float getAFloatClass() { 65 return aFloatClass; 66 } 67 68 public void setAFloatClass(Float floatClass) { 69 aFloatClass = floatClass; 70 } 71 72 public long getALong() { 73 return aLong; 74 } 75 76 public void setALong(long long1) { 77 aLong = long1; 78 } 79 80 public Long getALongClass() { 81 return aLongClass; 82 } 83 84 public void setALongClass(Long longClass) { 85 aLongClass = longClass; 86 } 87 88 public boolean isAnBool() { 89 return anBool; 90 } 91 92 public void setAnBool(boolean anBool) { 93 this.anBool = anBool; 94 } 95 96 public Boolean getAnBoolean() { 97 return anBoolean; 98 } 99 100 public void setAnBoolean(Boolean anBoolean) { 101 this.anBoolean = anBoolean; 102 } 103 104 public char getAnChar() { 105 return anChar; 106 } 107 108 public void setAnChar(char anChar) { 109 this.anChar = anChar; 110 } 111 112 public Character getAnCharacter() { 113 return anCharacter; 114 } 115 116 public void setAnCharacter(Character anCharacter) { 117 this.anCharacter = anCharacter; 118 } 119 120 public int getAnInt() { 121 return anInt; 122 } 123 124 public void setAnInt(int anInt) { 125 this.anInt = anInt; 126 } 127 128 public Integer getAnInteger() { 129 return anInteger; 130 } 131 132 public void setAnInteger(Integer anInteger) { 133 this.anInteger = anInteger; 134 } 135 136 public String getAnString() { 137 return anString; 138 } 139 140 public void setAnString(String anString) { 141 this.anString = anString; 142 } 143 144 public short getAShort() { 145 return aShort; 146 } 147 148 public void setAShort(short short1) { 149 aShort = short1; 150 } 151 152 public Short getAShortClass() { 153 return aShortClass; 154 } 155 156 public void setAShortClass(Short shortClass) { 157 aShortClass = shortClass; 158 } 159 } 160 161 public void testSerializesAllPrimitiveFieldsInACustomObject() { 162 World world = new World(); 163 164 XStream xstream = new XStream(); 165 xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20); 166 xstream.alias("world", World.class); 167 168 169 String expected = 170 "<world>\n" + 171 " <AByte>4</AByte>\n" + 172 " <AByteClass>5</AByteClass>\n" + 173 " <AFloat>8.0</AFloat>\n" + 174 " <AFloatClass>9.0</AFloatClass>\n" + 175 " <ALong>10</ALong>\n" + 176 " <ALongClass>11</ALongClass>\n" + 177 " <AShort>6</AShort>\n" + 178 " <AShortClass>7</AShortClass>\n" + 179 " <anBool>true</anBool>\n" + 180 " <anBoolean>false</anBoolean>\n" + 181 " <anChar>a</anChar>\n" + 182 " <anCharacter>w</anCharacter>\n" + 183 " <anInt>1</anInt>\n" + 184 " <anInteger>2</anInteger>\n" + 185 " <anString>XStream programming!</anString>\n" + 186 "</world>"; 187 188 String result = xstream.toXML(world); 189 190 assertEquals(expected, result); 191 } 192 193 197 public static class TypesOfFields extends StandardObject { 198 String normal = "normal"; 199 200 transient String trans = "transient"; 201 202 final String fin = "final"; 203 204 static String stat = "stat"; 205 206 public static String getStat() { 207 return stat; 208 } 209 210 public static void setStat(String stat) { 211 TypesOfFields.stat = stat; 212 } 213 214 public String getFin() { 215 return fin; 216 } 217 218 public String getNormal() { 219 return normal; 220 } 221 222 public void setNormal(String normal) { 223 this.normal = normal; 224 } 225 226 public String getTrans() { 227 return trans; 228 } 229 230 public void setTrans(String trans) { 231 this.trans = trans; 232 } 233 234 235 } 236 237 public void testDoesNotSerializeTransientOrStaticFields() { 238 TypesOfFields fields = new TypesOfFields(); 239 String expected = "" + 240 "<types>\n" + 241 " <normal>normal</normal>\n" + 242 " <trans>transient</trans>\n" + 243 "</types>"; 244 245 246 XStream xstream = new XStream(); 247 xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20); 248 xstream.alias("types", TypesOfFields.class); 249 250 String xml = xstream.toXML(fields); 251 assertEquals(expected, xml); 252 253 } 254 255 } | Popular Tags |