@Override public void marshal( Object source, HierarchicalStreamWriter writer, MarshallingContext context) { BoardXML boardXML = (BoardXML) source; writer.startNode(Constants.TAG_BOARD); writer.addAttribute(Constants.ATTRIBUTE_BOARD_PLAYERS, "" + boardXML.getNumberOfPlayers()); for (Placement placement : boardXML.getCurrentPlacements()) { writer.startNode(Constants.TAG_PLACEMENT); context.convertAnother(new PlacementXML(placement)); writer.endNode(); } writer.endNode(); }
@Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { reader.moveDown(); BoardXML boardXML = (BoardXML) context.convertAnother(null, BoardXML.class); reader.moveUp(); reader.moveDown(); Score score = (Score) context.convertAnother(null, Score.class); reader.moveUp(); List<Tile> playerHand = parsePlayerHand(reader, context); TurnXML obj = new TurnXML( boardXML.getNumberOfPlayers(), boardXML.getCurrentPlacements(), playerHand, score); return obj; }