private void handleValues(JsonParser parser, String field, boolean isCollection, Entity entity) throws IOException, MetadataParseException { JsonToken token = parser.getCurrentToken(); while(token != JsonToken.END_ARRAY && token != JsonToken.FIELD_NAME && token != JsonToken.END_OBJECT) { if(token.isNumeric()) { long value = parser.getLongValue(); entity.addProperty(field, isCollection, value); } else if(token == JsonToken.VALUE_TRUE || token == JsonToken.VALUE_FALSE) { entity.addProperty(field, parser.getBooleanValue()); } else if(token == JsonToken.START_OBJECT) { EmbeddedEntity embeddedEntity = new EmbeddedEntity(); if(handleProperties(parser, embeddedEntity) != null) { entity.addEntity(field, embeddedEntity); } } else if(token == JsonToken.VALUE_STRING) { String value = parser.getText(); if(SimpleEntity.DOCUMENT_ID.equals(field)) { entity.setInternalId(value); } else { entity.addProperty(field, isCollection, value); } } else if(token != JsonToken.VALUE_NULL) { throw new MetadataParseException("Unexpected token in entity: " + token); } token = parser.nextToken(); } }
@Test public void testPersistMultiValue() throws Exception { DBSession session = sessionFactory.createSession(); EntityBag bag = session.createOrGetBag("testbag"); try { Entity entity = new SimpleEntity(); entity.addProperty("field1", "value1"); entity.addProperty("field1", "value2"); entity.addProperty("field1", "value3"); entity.addProperty("number", 100L); entity.addProperty("number", 500L); bag.addEntity(entity); String entityId = entity.getInternalId(); entity = bag.getEntity(entityId); Property property = entity.getProperty("field1"); Assert.assertNotNull(property); assertEquals("The object should be multivalue", true, property.isMultiValue()); assertEquals("There should be three properties", 3, property.getValues().size()); assertEquals("Unexpected value", "value1", property.getValues().get(0).getValue()); assertEquals("Unexpected value", "value2", property.getValues().get(1).getValue()); assertEquals("Unexpected value", "value3", property.getValues().get(2).getValue()); property = entity.getProperty("number"); assertEquals("The object should be multivalue", true, property.isMultiValue()); assertEquals("There should be three properties", 2, property.getValues().size()); assertEquals("Unexpected value", 100L, property.getValues().get(0).getValue()); assertEquals("Unexpected value", 500L, property.getValues().get(1).getValue()); } finally { JasDBMain.shutdown(); } }
assertNotNull(entity1); assertEquals(entity1Id, entity1.getInternalId()); entity1.addProperty("testProperty", "My value for entity 1"); bag.updateEntity(entity1); assertNotNull(entity2); assertEquals(entity2Id, entity2.getInternalId()); entity2.addProperty("someProp", "Value 1 smaller"); bag.updateEntity(entity2);