@Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { String name = reader.getAttribute(Constants.ATTRIBUTE_RESULT_NAME); List<Placement> placements = new ArrayList<Placement>(); while (reader.hasMoreChildren()) { reader.moveDown(); PlacementXML placementXML = (PlacementXML) context.convertAnother(null, PlacementXML.class); placements.add(placementXML.getPlacement()); reader.moveUp(); } return new ResultXML(name, placements); }
@Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { String players = reader.getAttribute(Constants.ATTRIBUTE_BOARD_PLAYERS); int numberOfPlayers = new Integer(players).intValue(); List<Placement> currentPlacements = new ArrayList<Placement>(); while (reader.hasMoreChildren()) { reader.moveDown(); PlacementXML placementXML = (PlacementXML) context.convertAnother(null, PlacementXML.class); currentPlacements.add(placementXML.getPlacement()); reader.moveUp(); } return new BoardXML(numberOfPlayers, currentPlacements); }
@Override public void marshal( Object source, HierarchicalStreamWriter writer, MarshallingContext context) { PlacementXML placementXML = (PlacementXML) source; Placement placement = placementXML.getPlacement(); writer.addAttribute( Constants.ATTRIBUTE_PLACEMENT_C0, placement.getTile().getColor0().toString()); writer.addAttribute( Constants.ATTRIBUTE_PLACEMENT_D0, "" + placement.getCoordinate0().getDistance()); writer.addAttribute( Constants.ATTRIBUTE_PLACEMENT_A0, "" + placement.getCoordinate0().getAngle()); writer.addAttribute( Constants.ATTRIBUTE_PLACEMENT_C1, placement.getTile().getColor1().toString()); writer.addAttribute( Constants.ATTRIBUTE_PLACEMENT_D1, "" + placement.getCoordinate1().getDistance()); writer.addAttribute( Constants.ATTRIBUTE_PLACEMENT_A1, "" + placement.getCoordinate1().getAngle()); }