private void assertToken(JsonToken expected, JsonToken actual) throws MetadataParseException { if(expected != actual) { throw new MetadataParseException("Unable to parse entity metadata, expected token: " + expected + " but got token: " + actual); } }
@Override public String serializeEntity(Entity entity) throws MetadataParseException { StringWriter writer = new StringWriter(); try { try (JsonGenerator generator = factory.createGenerator(writer)) { serializeEntity(entity, generator); } } catch(IOException e) { throw new MetadataParseException("Unable to serialize entity", e); } return writer.toString(); }
public static IndexDefinition fromHeader(String header) throws MetadataParseException { String[] definitionSections = header.split("/"); if(definitionSections.length == 4) { try { String indexName = definitionSections[0]; String headerDescriptor = definitionSections[1]; String valueDescriptor = definitionSections[2]; int indexType = Integer.parseInt(definitionSections[3]); return new IndexDefinition(indexName, headerDescriptor, valueDescriptor, indexType); } catch(NumberFormatException e) { throw new MetadataParseException("Unable to get index type for heade: " + header); } } else { throw new MetadataParseException("Unable to parse index metadata section"); } }
@Override public Entity deserializeEntity(String serializedEntity) throws MetadataParseException { if(StringUtils.stringNotEmpty(serializedEntity)) { try { JsonParser parser = factory.createParser(serializedEntity); return deserializeEntity(parser); } catch(IOException e) { throw new MetadataParseException("Unable to parse entity", e); } } throw new MetadataParseException("Unable to parse entity metadata, empty content"); }
@Override public Entity deserializeEntity(InputStream stream) throws MetadataParseException { try { JsonParser parser = factory.createParser(stream); return deserializeEntity(parser); } catch(IOException e) { throw new MetadataParseException("Unable to parse entity", e); } }
public Entity deserializeEntity(JsonParser parser) throws MetadataParseException { try { Entity entity = new SimpleEntity(); entity = handleProperties(parser, entity); parser.nextToken(); return entity; } catch(IOException e) { throw new MetadataParseException("Unable to parse entity", e); } }
throw new MetadataParseException("Unable to serialize simple entity: " + e.getClass().getName() + ", " + e.getMessage());
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(); } }