Message unmarshallMessage(Node node) throws RepositoryException, Node2BeanException { Map<String, Object> map = Node2MapUtil.node2map(node); long timestamp = ((Long) map.get(AdmincentralNodeTypes.SystemMessage.TIMESTAMP)).longValue(); final Message message = new Message(timestamp); message.setId(node.getName()); message.setSender(node.getProperty(AdmincentralNodeTypes.SystemMessage.SENDER).getString()); message.setMessage(node.getProperty(AdmincentralNodeTypes.SystemMessage.MESSAGE).getString()); message.setSubject(node.getProperty(AdmincentralNodeTypes.SystemMessage.SUBJECT).getString()); message.setType(MessageType.valueOf(node.getProperty(AdmincentralNodeTypes.SystemMessage.MESSAGETYPE).getString())); message.setCleared(node.getProperty(AdmincentralNodeTypes.SystemMessage.CLEARED).getBoolean()); if (node.hasProperty(AdmincentralNodeTypes.SystemMessage.VIEW)) { message.setView(node.getProperty(AdmincentralNodeTypes.SystemMessage.VIEW).getString()); } // remove all attributes that are already explicitly treated - see above. map.remove(AdmincentralNodeTypes.SystemMessage.TIMESTAMP); map.remove(AdmincentralNodeTypes.SystemMessage.SENDER); map.remove(AdmincentralNodeTypes.SystemMessage.SUBJECT); map.remove(AdmincentralNodeTypes.SystemMessage.MESSAGETYPE); map.remove(AdmincentralNodeTypes.SystemMessage.VIEW); map.remove(AdmincentralNodeTypes.SystemMessage.CLEARED); final Iterator<String> propertyNames = map.keySet().iterator(); while (propertyNames.hasNext()) { final String propertyName = propertyNames.next(); message.addProperty(propertyName, map.get(propertyName)); } return message; }
@Test public void testReadPrimitives() throws Exception { // GIVEN node.setProperty(STRING, STRING_VALUE); node.setProperty(LONG, LONG_VALUE); node.setProperty(DOUBLE, DOUBLE_VALUE); node.setProperty(BOOLEAN, BOOLEAN_VALUE); node.setProperty(DATE, DATE_VALUE); // WHEN map = Node2MapUtil.node2map(node); // THEN assertEquals(STRING_VALUE, (String) map.get(STRING)); long longValue = ((Long) map.get(LONG)).longValue(); assertEquals(LONG_VALUE, longValue); double doubleValue = ((Double) map.get(DOUBLE)).doubleValue(); assertEquals(DOUBLE_VALUE, doubleValue, 0.0001); boolean boolValue = ((Boolean) map.get(BOOLEAN)).booleanValue(); assertEquals(BOOLEAN_VALUE, boolValue); Calendar cal = Calendar.getInstance(); cal.setTime((Date) map.get(DATE)); assertEquals(DATE_VALUE, cal); }
@Test public void testReadSubnodes() throws Exception { // GIVEN Node nested = node.addNode(MAP); nested.setProperty(STRING, STRING_VALUE); nested.setProperty(LONG, LONG_VALUE); nested.setProperty(DOUBLE, DOUBLE_VALUE); nested.setProperty(BOOLEAN, BOOLEAN_VALUE); nested.setProperty(DATE, DATE_VALUE); // WHEN map = Node2MapUtil.node2map(node); // THEN map = (Map<String, Object>) map.get(MAP); assertNotNull(map); // check the values in the nested map assertEquals(STRING_VALUE, (String) map.get(STRING)); long longValue = ((Long) map.get(LONG)).longValue(); assertEquals(LONG_VALUE, longValue); double doubleValue = ((Double) map.get(DOUBLE)).doubleValue(); assertEquals(DOUBLE_VALUE, doubleValue, 0.0001); boolean boolValue = ((Boolean) map.get(BOOLEAN)).booleanValue(); assertEquals(BOOLEAN_VALUE, boolValue); Calendar cal = Calendar.getInstance(); cal.setTime((Date) map.get(DATE)); assertEquals(DATE_VALUE, cal); }