import com.billkuker.rocketry.motorsim.fuel.FuelResolver;\r
import com.billkuker.rocketry.motorsim.fuel.FuelResolver.FuelNotFound;\r
import com.thoughtworks.xstream.XStream;\r
+import com.thoughtworks.xstream.converters.ConversionException;\r
import com.thoughtworks.xstream.converters.Converter;\r
import com.thoughtworks.xstream.converters.MarshallingContext;\r
import com.thoughtworks.xstream.converters.UnmarshallingContext;\r
@Override\r
public void marshal(Object o, HierarchicalStreamWriter w,\r
MarshallingContext ctx) {\r
- Fuel f = (Fuel)o;\r
- w.setValue(f.getURI().toString());\r
+ /*Fuel f = (Fuel)o;\r
+ w.setValue(f.getURI().toString());*/\r
+ ctx.convertAnother(((Fuel)o).getURI());\r
}\r
\r
@Override\r
public Object unmarshal(HierarchicalStreamReader r,\r
UnmarshallingContext ctx) {\r
- String text = r.getValue();\r
+ Object o = ctx.currentObject();\r
+ Object uri = null;\r
+ Class<?> c = ctx.getRequiredType();\r
+ try { \r
+ uri = ctx.convertAnother(o, URI.class);\r
+ } catch ( ConversionException e ){\r
+ e.printStackTrace();\r
+ }\r
+ if ( uri != null && uri instanceof URI ){\r
+ try {\r
+ return FuelResolver.getFuel((URI)uri);\r
+ } catch (FuelNotFound e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
try {\r
- URI u = new URI(text);\r
- return FuelResolver.getFuel(u);\r
- } catch (URISyntaxException e) {\r
- throw new Error("Bad Fuel URI: " + text, e);\r
+ return FuelResolver.getFuel(new URI("motorsim:" + c.getSimpleName()));\r
} catch (FuelNotFound e) {\r
- throw new Error("Can't find fuel: " + text, e);\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ } catch (URISyntaxException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
}\r
+ return null;\r
}\r
\r
}\r