MarshallingContext ctx) {\r
/*Fuel f = (Fuel)o;\r
w.setValue(f.getURI().toString());*/\r
- ctx.convertAnother(((Fuel)o).getURI());\r
+ ctx.convertAnother(FuelResolver.getURI((Fuel)o));\r
}\r
\r
@Override\r
text = a.getExactValue() + " " + a.getUnit();\r
else\r
text = a.doubleValue(a.getUnit()) + " " + a.getUnit();\r
- w.setValue(text);\r
+ w.setValue(fix(text));\r
}\r
\r
public Object unmarshal(HierarchicalStreamReader r, UnmarshallingContext c) {\r
String text = r.getValue();\r
- return Amount.valueOf(text);\r
+ return Amount.valueOf(unfix(text));\r
+ }\r
+ \r
+ private String fix(String s){\r
+ return s.replace("\u00B3", "^3");\r
+ }\r
+ \r
+ private String unfix(String s){\r
+ return s.replace("^3", "\u00B3");\r
}\r
\r
public boolean canConvert(Class c) {\r
\r
\r
}\r
-\r
\r
@SuppressWarnings("deprecation")\r
private static XStream getXStream(){\r
return xstream;\r
}\r
\r
+ @SuppressWarnings("deprecation")\r
+ private static XStream getFuelXStream(){\r
+ XStream xstream = new XStream();\r
+ xstream.setMode(XStream.XPATH_ABSOLUTE_REFERENCES);\r
+ xstream.registerConverter(new AmountConverter());\r
+ xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20); \r
+ return xstream;\r
+ }\r
+ \r
+ public static void writeFuel(Fuel f, OutputStream os) throws IOException{\r
+ ObjectOutputStream out = getFuelXStream().createObjectOutputStream(os);\r
+ out.writeObject(f);\r
+ out.close();\r
+ os.flush();\r
+ }\r
+ \r
+ public static Fuel readFuel(InputStream is) throws IOException{\r
+ ObjectInputStream in = getFuelXStream().createObjectInputStream(is);\r
+ Fuel f;\r
+ try {\r
+ f = (Fuel)in.readObject();\r
+ } catch (ClassNotFoundException e) {\r
+ throw new IOException("Class not found", e);\r
+ }\r
+ return f;\r
+ }\r
+ \r
public static void writeMotor(Motor m, OutputStream os) throws IOException{\r
ObjectOutputStream out = getXStream().createObjectOutputStream(os);\r
out.writeObject(m);\r