http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rdf/src/main/java/org/apache/polygene/library/rdf/entity/EntityStateSerializer.java ---------------------------------------------------------------------- diff --git a/libraries/rdf/src/main/java/org/apache/polygene/library/rdf/entity/EntityStateSerializer.java b/libraries/rdf/src/main/java/org/apache/polygene/library/rdf/entity/EntityStateSerializer.java index 7477179..0bd823b 100644 --- a/libraries/rdf/src/main/java/org/apache/polygene/library/rdf/entity/EntityStateSerializer.java +++ b/libraries/rdf/src/main/java/org/apache/polygene/library/rdf/entity/EntityStateSerializer.java @@ -27,17 +27,15 @@ import org.apache.polygene.api.entity.EntityDescriptor; import org.apache.polygene.api.entity.EntityReference; import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.property.PropertyDescriptor; -import org.apache.polygene.api.service.qualifier.Tagged; +import org.apache.polygene.api.serialization.Serializer; import org.apache.polygene.api.type.ValueCompositeType; import org.apache.polygene.api.type.ValueType; import org.apache.polygene.api.util.Classes; import org.apache.polygene.api.value.ValueComposite; -import org.apache.polygene.api.value.ValueSerialization; -import org.apache.polygene.api.value.ValueSerializer; -import org.apache.polygene.api.value.ValueSerializer.Options; import org.apache.polygene.library.rdf.Rdfs; import org.apache.polygene.spi.entity.EntityState; import org.apache.polygene.spi.entity.ManyAssociationState; +import org.apache.polygene.spi.serialization.JsonSerializer; import org.openrdf.model.BNode; import org.openrdf.model.Graph; import org.openrdf.model.Literal; @@ -52,10 +50,8 @@ import org.openrdf.model.impl.GraphImpl; */ public class EntityStateSerializer { - @Service - @Tagged( ValueSerialization.Formats.JSON ) - private ValueSerializer valueSerializer; + private JsonSerializer serializer; public URI createEntityURI( ValueFactory valueFactory, EntityReference reference ) { @@ -87,7 +83,8 @@ public class EntityStateSerializer graph.add( entityUri, Rdfs.TYPE, - values.createURI( Classes.toURI( entityState.entityDescriptor().types().findFirst().orElse( null ) ) ) ); + values.createURI( + Classes.toURI( entityState.entityDescriptor().types().findFirst().orElse( null ) ) ) ); serializeProperties( entityState, graph, @@ -108,29 +105,26 @@ public class EntityStateSerializer includeNonQueryable ); } - private void serializeProperties( final EntityState entityState, - final Graph graph, - final Resource subject, - final EntityDescriptor entityType, - final boolean includeNonQueryable - ) + private void serializeProperties( EntityState entityState, + Graph graph, Resource subject, + EntityDescriptor entityType, + boolean includeNonQueryable ) { // Properties - entityType.state().properties().forEach( persistentProperty -> { - Object property = entityState.propertyValueOf( persistentProperty.qualifiedName() ); - if( property != null ) + entityType.state().properties().forEach( + persistentProperty -> { - serializeProperty( persistentProperty, property, subject, graph, includeNonQueryable ); - } - } ); + Object property = entityState.propertyValueOf( persistentProperty.qualifiedName() ); + if( property != null ) + { + serializeProperty( persistentProperty, property, subject, graph, includeNonQueryable ); + } + } ); } - private void serializeProperty( PropertyDescriptor persistentProperty, - Object property, - Resource subject, - Graph graph, - boolean includeNonQueryable - ) + private void serializeProperty( PropertyDescriptor persistentProperty, Object property, + Resource subject, Graph graph, + boolean includeNonQueryable ) { if( !( includeNonQueryable || persistentProperty.queryable() ) ) { @@ -152,7 +146,7 @@ public class EntityStateSerializer } else { - String stringProperty = valueSerializer.serialize( new Options().withoutTypeInfo(), property ); + String stringProperty = serializer.serialize( Serializer.Options.NO_TYPE_INFO, property ); final Literal object = valueFactory.createLiteral( stringProperty ); graph.add( subject, predicate, object ); } @@ -170,29 +164,44 @@ public class EntityStateSerializer BNode collection = valueFactory.createBNode(); graph.add( subject, predicate, collection ); - ( (ValueCompositeType) valueType ).properties().forEach( persistentProperty -> { - Object propertyValue = PolygeneAPI.FUNCTION_COMPOSITE_INSTANCE_OF - .apply( value ) - .state() - .propertyFor( persistentProperty.accessor() ) - .get(); - - if( propertyValue != null ) + ( (ValueCompositeType) valueType ).properties().forEach( + persistentProperty -> { - ValueType type = persistentProperty.valueType(); - if( type instanceof ValueCompositeType ) - { - URI pred = valueFactory.createURI( baseUri, persistentProperty.qualifiedName().name() ); - serializeValueComposite( collection, pred, (ValueComposite) propertyValue, type, graph, - baseUri + persistentProperty.qualifiedName().name() + "/", - includeNonQueryable ); - } - else + Object propertyValue + = PolygeneAPI.FUNCTION_COMPOSITE_INSTANCE_OF + .apply( value ) + .state() + .propertyFor( persistentProperty.accessor() ) + .get(); + + if( propertyValue != null ) { - serializeProperty( persistentProperty, propertyValue, collection, graph, includeNonQueryable ); + ValueType type = persistentProperty + .valueType(); + if( type instanceof ValueCompositeType ) + { + URI pred = valueFactory.createURI( baseUri, + persistentProperty + .qualifiedName() + .name() ); + serializeValueComposite( collection, pred, + (ValueComposite) propertyValue, + type, graph, + baseUri + + persistentProperty + .qualifiedName() + .name() + "/", + includeNonQueryable ); + } + else + { + serializeProperty( persistentProperty, + propertyValue, + collection, graph, + includeNonQueryable ); + } } - } - } ); + } ); } private void serializeAssociations( final EntityState entityState, @@ -204,15 +213,30 @@ public class EntityStateSerializer ValueFactory values = graph.getValueFactory(); // Associations - associations.filter( type -> includeNonQueryable || type.queryable() ).forEach( associationType -> { - EntityReference associatedId = entityState.associationValueOf( associationType.qualifiedName() ); - if( associatedId != null ) + associations.filter( type -> includeNonQueryable || type.queryable() ).forEach( + associationType -> { - URI assocURI = values.createURI( associationType.qualifiedName().toURI() ); - URI assocEntityURI = values.createURI( associatedId.toURI() ); - graph.add( entityUri, assocURI, assocEntityURI ); - } - } ); + EntityReference associatedId + = entityState + .associationValueOf( + associationType + .qualifiedName() ); + if( associatedId != null ) + { + URI assocURI = values + .createURI( + associationType + .qualifiedName() + .toURI() ); + URI assocEntityURI + = values.createURI( + associatedId + .toURI() ); + graph.add( entityUri, + assocURI, + assocEntityURI ); + } + } ); } private void serializeManyAssociations( final EntityState entityState, @@ -225,17 +249,37 @@ public class EntityStateSerializer ValueFactory values = graph.getValueFactory(); // Many-Associations - associations.filter( type -> includeNonQueryable || type.queryable() ).forEach( associationType -> { - BNode collection = values.createBNode(); - graph.add( entityUri, values.createURI( associationType.qualifiedName().toURI() ), collection ); - graph.add( collection, Rdfs.TYPE, Rdfs.SEQ ); - - ManyAssociationState associatedIds = entityState.manyAssociationValueOf( associationType.qualifiedName() ); - for( EntityReference associatedId : associatedIds ) + associations.filter( type -> includeNonQueryable || type.queryable() ).forEach( + associationType -> { - URI assocEntityURI = values.createURI( associatedId.toURI() ); - graph.add( collection, Rdfs.LIST_ITEM, assocEntityURI ); - } - } ); + BNode collection = values + .createBNode(); + graph.add( entityUri, values + .createURI( + associationType + .qualifiedName() + .toURI() ), + collection ); + graph.add( collection, + Rdfs.TYPE, + Rdfs.SEQ ); + + ManyAssociationState + associatedIds + = entityState + .manyAssociationValueOf( + associationType + .qualifiedName() ); + for( EntityReference associatedId : associatedIds ) + { + URI assocEntityURI + = values.createURI( + associatedId + .toURI() ); + graph.add( collection, + Rdfs.LIST_ITEM, + assocEntityURI ); + } + } ); } }
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java ---------------------------------------------------------------------- diff --git a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java index 0ef8475..fb5b0c3 100644 --- a/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java +++ b/libraries/rdf/src/test/java/org/apache/polygene/library/rdf/entity/EntitySerializerTest.java @@ -22,17 +22,12 @@ package org.apache.polygene.library.rdf.entity; import java.io.PrintWriter; import java.time.Instant; -import org.apache.polygene.api.identity.StringIdentity; -import org.apache.polygene.api.time.SystemTime; -import org.apache.polygene.test.AbstractPolygeneTest; -import org.junit.Before; -import org.junit.Test; -import org.openrdf.model.Statement; -import org.openrdf.rio.RDFHandlerException; import org.apache.polygene.api.entity.EntityBuilder; import org.apache.polygene.api.entity.EntityReference; +import org.apache.polygene.api.identity.StringIdentity; import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Uses; +import org.apache.polygene.api.time.SystemTime; import org.apache.polygene.api.unitofwork.UnitOfWork; import org.apache.polygene.api.unitofwork.UnitOfWorkCompletionException; import org.apache.polygene.api.usecase.Usecase; @@ -46,8 +41,12 @@ import org.apache.polygene.library.rdf.serializer.RdfXmlSerializer; import org.apache.polygene.spi.entity.EntityState; import org.apache.polygene.spi.entitystore.EntityStore; import org.apache.polygene.spi.entitystore.EntityStoreUnitOfWork; +import org.apache.polygene.test.AbstractPolygeneTest; import org.apache.polygene.test.EntityTestAssembler; -import org.apache.polygene.valueserialization.orgjson.OrgJsonValueSerializationAssembler; +import org.junit.Before; +import org.junit.Test; +import org.openrdf.model.Statement; +import org.openrdf.rio.RDFHandlerException; /** * JAVADOC @@ -64,7 +63,6 @@ public class EntitySerializerTest throws AssemblyException { new EntityTestAssembler().assemble( module ); - new OrgJsonValueSerializationAssembler().assemble( module ); module.entities( TestEntity.class ); module.values( TestValue.class, Test2Value.class ); http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/build.gradle ---------------------------------------------------------------------- diff --git a/libraries/rest-client/build.gradle b/libraries/rest-client/build.gradle index 33cb81f..68de79a 100644 --- a/libraries/rest-client/build.gradle +++ b/libraries/rest-client/build.gradle @@ -31,7 +31,6 @@ dependencies { testCompile polygene.core.testsupport testCompile polygene.library( 'rest-server' ) - testCompile polygene.extension( 'valueserialization-orgjson' ) testRuntime libraries.logback } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/requestwriter/ValueCompositeRequestWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/requestwriter/ValueCompositeRequestWriter.java b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/requestwriter/ValueCompositeRequestWriter.java index 90ad77a..8a77d40 100644 --- a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/requestwriter/ValueCompositeRequestWriter.java +++ b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/requestwriter/ValueCompositeRequestWriter.java @@ -26,11 +26,11 @@ import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.property.StateHolder; import org.apache.polygene.api.service.qualifier.Tagged; +import org.apache.polygene.api.serialization.Serialization; +import org.apache.polygene.api.serialization.SerializationException; +import org.apache.polygene.api.serialization.Serializer; import org.apache.polygene.api.value.ValueComposite; import org.apache.polygene.api.value.ValueDescriptor; -import org.apache.polygene.api.value.ValueSerialization; -import org.apache.polygene.api.value.ValueSerializationException; -import org.apache.polygene.api.value.ValueSerializer; import org.apache.polygene.library.rest.client.spi.RequestWriter; import org.apache.polygene.spi.PolygeneSPI; import org.restlet.Request; @@ -38,7 +38,6 @@ import org.restlet.data.CharacterSet; import org.restlet.data.MediaType; import org.restlet.data.Method; import org.restlet.data.Reference; -import org.restlet.engine.io.WriterOutputStream; import org.restlet.representation.WriterRepresentation; import org.restlet.resource.ResourceException; @@ -52,8 +51,8 @@ public class ValueCompositeRequestWriter private PolygeneSPI spi; @Service - @Tagged( ValueSerialization.Formats.JSON ) - private ValueSerializer valueSerializer; + @Tagged( Serialization.Formats.JSON ) + private Serializer serializer; @Override public boolean writeRequest(Object requestObject, Request request) throws ResourceException @@ -80,11 +79,11 @@ public class ValueCompositeRequestWriter } else { - param = valueSerializer.serialize( value ); + param = serializer.serialize( value ); } ref.addQueryParameter( propertyDescriptor.qualifiedName().name(), param ); } - catch( ValueSerializationException e ) + catch( SerializationException e ) { throw new ResourceException( e ); } @@ -99,7 +98,7 @@ public class ValueCompositeRequestWriter throws IOException { setCharacterSet( CharacterSet.UTF_8 ); - valueSerializer.serialize( valueObject, new WriterOutputStream( writer, CharacterSet.UTF_8 ) ); + serializer.serialize( writer, valueObject ); } }); } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/DefaultResponseReader.java ---------------------------------------------------------------------- diff --git a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/DefaultResponseReader.java b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/DefaultResponseReader.java index 6d3111b..ff8060b 100644 --- a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/DefaultResponseReader.java +++ b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/DefaultResponseReader.java @@ -20,10 +20,11 @@ package org.apache.polygene.library.rest.client.responsereader; -import java.io.IOException; -import org.json.JSONException; -import org.json.JSONTokener; +import org.apache.polygene.api.injection.scope.Service; +import org.apache.polygene.api.injection.scope.Structure; +import org.apache.polygene.api.structure.ModuleDescriptor; import org.apache.polygene.library.rest.client.spi.ResponseReader; +import org.apache.polygene.spi.serialization.JsonDeserializer; import org.restlet.Response; import org.restlet.data.MediaType; import org.restlet.resource.ResourceException; @@ -32,34 +33,31 @@ import org.restlet.resource.ResourceException; * ResponseReader for simple types from JSON */ public class DefaultResponseReader - implements ResponseReader + implements ResponseReader { + @Structure + private ModuleDescriptor module; + + @Service + private JsonDeserializer jsonDeserializer; + @Override - public Object readResponse(Response response, Class<?> resultType) throws ResourceException - { - if (MediaType.APPLICATION_JSON.equals(response.getEntity().getMediaType())) - if (resultType.equals(String.class)) - { - try + public Object readResponse( Response response, Class<?> resultType ) throws ResourceException + { + if( MediaType.APPLICATION_JSON.equals( response.getEntity().getMediaType() ) ) + { + if( resultType.equals( String.class ) || Number.class.isAssignableFrom( resultType ) ) { - return response.getEntity().getText(); - } catch (IOException e) - { - throw new ResourceException(e); + try + { + return jsonDeserializer.deserialize( module, resultType, response.getEntityAsText() ); + } + catch( Exception e ) + { + throw new ResourceException( e ); + } } - } else if (Number.class.isAssignableFrom(resultType)) - { - try - { - Number value = (Number) new JSONTokener(response.getEntityAsText()).nextValue(); - if (resultType.equals(Integer.class)) - return Integer.valueOf(value.intValue()); - } catch (JSONException e) - { - throw new ResourceException(e); - } - } - - return null; - } + } + return null; + } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/JSONResponseReader.java ---------------------------------------------------------------------- diff --git a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/JSONResponseReader.java b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/JSONResponseReader.java index 7b8d6a0..335c26b 100644 --- a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/JSONResponseReader.java +++ b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/JSONResponseReader.java @@ -20,18 +20,19 @@ package org.apache.polygene.library.rest.client.responsereader; -import java.util.Iterator; +import java.io.IOException; +import javax.json.Json; +import javax.json.JsonException; +import javax.json.JsonObject; +import javax.json.JsonString; +import javax.json.JsonValue; import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Structure; -import org.apache.polygene.api.service.qualifier.Tagged; import org.apache.polygene.api.structure.ModuleDescriptor; import org.apache.polygene.api.type.ValueCompositeType; import org.apache.polygene.api.value.ValueComposite; -import org.apache.polygene.api.value.ValueDeserializer; -import org.apache.polygene.api.value.ValueSerialization; import org.apache.polygene.library.rest.client.spi.ResponseReader; -import org.json.JSONException; -import org.json.JSONObject; +import org.apache.polygene.spi.serialization.JsonDeserializer; import org.restlet.Response; import org.restlet.data.Form; import org.restlet.data.MediaType; @@ -41,47 +42,50 @@ import org.restlet.resource.ResourceException; * JAVADOC */ public class JSONResponseReader - implements ResponseReader + implements ResponseReader { - @Structure - private ModuleDescriptor module; + @Structure + private ModuleDescriptor module; - @Service - @Tagged( ValueSerialization.Formats.JSON ) - private ValueDeserializer valueDeserializer; + @Service + private JsonDeserializer jsonDeserializer; @Override - public Object readResponse( Response response, Class<?> resultType ) - { - if (response.getEntity().getMediaType().equals( MediaType.APPLICATION_JSON)) - { - if (ValueComposite.class.isAssignableFrom( resultType )) - { - String jsonValue = response.getEntityAsText(); - ValueCompositeType valueType = module.valueDescriptor( resultType.getName() ).valueType(); - return valueDeserializer.deserialize( module, valueType, jsonValue ); - } - else if (resultType.equals(Form.class)) - { - try + public Object readResponse( Response response, Class<?> resultType ) + { + if( response.getEntity().getMediaType().equals( MediaType.APPLICATION_JSON ) ) + { + if( ValueComposite.class.isAssignableFrom( resultType ) ) { - String jsonValue = response.getEntityAsText(); - JSONObject jsonObject = new JSONObject(jsonValue); - Iterator<?> keys = jsonObject.keys(); - Form form = new Form(); - while (keys.hasNext()) - { - Object key = keys.next(); - form.set(key.toString(), jsonObject.get(key.toString()).toString()); - } - return form; - } catch (JSONException e) - { - throw new ResourceException(e); + String jsonValue = response.getEntityAsText(); + ValueCompositeType valueType = module.valueDescriptor( resultType.getName() ).valueType(); + return jsonDeserializer.deserialize( module, valueType, jsonValue ); } - } - } + else if( resultType.equals( Form.class ) ) + { + try + { + JsonObject jsonObject = Json.createReader( response.getEntity().getReader() ).readObject(); + Form form = new Form(); + jsonObject.entrySet().forEach( + entry -> + { - return null; - } + String key = entry.getKey(); + JsonValue value = entry.getValue(); + String valueString = value.getValueType() == JsonValue.ValueType.STRING + ? ( (JsonString) value ).getString() + : value.toString(); + form.set( key, valueString ); + } ); + return form; + } + catch( IOException | JsonException e ) + { + throw new ResourceException( e ); + } + } + } + return null; + } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/TableResponseReader.java ---------------------------------------------------------------------- diff --git a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/TableResponseReader.java b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/TableResponseReader.java index 4c8ac66..55019a3 100644 --- a/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/TableResponseReader.java +++ b/libraries/rest-client/src/main/java/org/apache/polygene/library/rest/client/responsereader/TableResponseReader.java @@ -22,15 +22,19 @@ package org.apache.polygene.library.rest.client.responsereader; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeParseException; +import java.util.List; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonObject; +import javax.json.JsonString; +import javax.json.JsonValue; +import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.structure.Module; import org.apache.polygene.library.rest.client.spi.ResponseReader; import org.apache.polygene.library.rest.common.table.Table; import org.apache.polygene.library.rest.common.table.TableBuilder; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; +import org.apache.polygene.spi.serialization.JsonDeserializer; import org.restlet.Response; import org.restlet.data.MediaType; import org.restlet.data.Status; @@ -40,74 +44,75 @@ import org.restlet.resource.ResourceException; * JAVADOC */ public class TableResponseReader - implements ResponseReader + implements ResponseReader { - @Structure - Module module; + @Structure + private Module module; - @Override - public Object readResponse( Response response, Class<?> resultType ) throws ResourceException - { - if (response.getEntity().getMediaType().equals( MediaType.APPLICATION_JSON) && Table.class.isAssignableFrom( resultType )) - { - String jsonValue = response.getEntityAsText(); - try - { - JSONObject jsonObject = new JSONObject(jsonValue); - - JSONObject table = jsonObject.getJSONObject( "table" ); - TableBuilder builder = new TableBuilder(module); + @Service + private JsonDeserializer jsonDeserializer; - JSONArray cols = table.getJSONArray( "cols" ); - for (int i = 0; i < cols.length(); i++) + @Override + public Object readResponse( Response response, Class<?> resultType ) throws ResourceException + { + if( response.getEntity().getMediaType().equals( MediaType.APPLICATION_JSON ) + && Table.class.isAssignableFrom( resultType ) ) + { + try { - JSONObject col = cols.getJSONObject( i ); - builder.column( col.optString( "id" ), col.getString( "label" ), col.getString( "type" )); - } + JsonObject jsonObject = Json.createReader( response.getEntity().getReader() ).readObject(); + JsonObject table = jsonObject.getJsonObject( "table" ); - JSONArray rows = table.getJSONArray( "rows" ); - for (int i = 0; i < rows.length(); i++) - { - builder.row(); - JSONObject row = rows.getJSONObject( i ); - JSONArray cells = row.getJSONArray( "c" ); - for (int j = 0; j < cells.length(); j++) - { - JSONObject cell = cells.getJSONObject( j ); - Object value = cell.opt( "v" ); - String formatted = cell.optString("f"); + TableBuilder builder = new TableBuilder( module ); - if (cols.getJSONObject( j ).getString( "type" ).equals("datetime") && value != null) - value = ZonedDateTime.parse( value.toString() ); - else if (cols.getJSONObject( j ).getString( "type" ).equals("date") && value != null) - try - { - value = DateTimeFormatter.ofPattern( "yyyy-MM-dd").parse( value.toString() ); - } catch (DateTimeParseException e) - { - throw new ResourceException(e); - } - else if (cols.getJSONObject( j ).getString( "type" ).equals("timeofday") && value != null) - try - { - value = DateTimeFormatter.ofPattern( "HH:mm:ss").parse( value.toString() ); - } catch (DateTimeParseException e) - { - throw new ResourceException(e); - } + JsonArray cols = table.getJsonArray( "cols" ); + cols.getValuesAs( JsonObject.class ).forEach( + col -> builder.column( col.getString( "id", null ), + col.getString( "label" ), + col.getString( "type" ) ) ); - builder.cell( value, formatted ); - } - builder.endRow(); + table.getJsonArray( "rows" ).getValuesAs( JsonObject.class ).forEach( + row -> + { + builder.row(); + List<JsonObject> cells = row.getJsonArray( "c" ).getValuesAs( JsonObject.class ); + for( int idx = 0; idx < cells.size(); idx++ ) + { + JsonObject cell = cells.get( idx ); + JsonValue jsonValue = cell.get( "v" ); + String formatted = cell.getString( "f", null ); + String type = cols.getJsonObject( idx ).getString( "type" ); + Object value; + switch( type ) + { + case "datetime": + value = ZonedDateTime.parse( ( (JsonString) jsonValue ).getString() ); + break; + case "date": + value = DateTimeFormatter.ofPattern( "yyyy-MM-dd" ) + .parse( ( (JsonString) jsonValue ).getString() ); + break; + case "timeofday": + value = DateTimeFormatter.ofPattern( "HH:mm:ss" ) + .parse( ( (JsonString) jsonValue ).getString() ); + break; + default: + value = jsonValue.getValueType() == JsonValue.ValueType.STRING + ? ( (JsonString) jsonValue ).getString() + : jsonValue.toString(); + } + builder.cell( value, formatted ); + } + builder.endRow(); + } + ); + return builder.newTable(); } - - return builder.newTable(); - } catch (JSONException e) - { - throw new ResourceException( Status.CLIENT_ERROR_UNPROCESSABLE_ENTITY, e); - } - } - - return null; - } + catch( Exception e ) + { + throw new ResourceException( Status.CLIENT_ERROR_UNPROCESSABLE_ENTITY, e ); + } + } + return null; + } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContextResourceClientFactoryTest.java ---------------------------------------------------------------------- diff --git a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContextResourceClientFactoryTest.java b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContextResourceClientFactoryTest.java index 771cbd6..e979d43 100644 --- a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContextResourceClientFactoryTest.java +++ b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContextResourceClientFactoryTest.java @@ -26,14 +26,12 @@ import org.apache.polygene.api.common.Optional; import org.apache.polygene.api.common.UseDefaults; import org.apache.polygene.api.composite.TransientComposite; import org.apache.polygene.api.constraint.Name; -import org.apache.polygene.api.entity.EntityComposite; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.injection.scope.Uses; import org.apache.polygene.api.property.Property; import org.apache.polygene.api.structure.Application; import org.apache.polygene.api.structure.ApplicationDescriptor; import org.apache.polygene.api.structure.Module; -import org.apache.polygene.api.type.HasTypes; import org.apache.polygene.api.unitofwork.ConcurrentEntityModificationException; import org.apache.polygene.api.unitofwork.UnitOfWorkCallback; import org.apache.polygene.api.unitofwork.UnitOfWorkCompletionException; @@ -72,7 +70,6 @@ import org.apache.polygene.library.rest.server.restlet.NullCommandResult; import org.apache.polygene.library.rest.server.spi.CommandResult; import org.apache.polygene.test.AbstractPolygeneTest; import org.apache.polygene.test.util.FreePortFinder; -import org.apache.polygene.valueserialization.orgjson.OrgJsonValueSerializationAssembler; import org.hamcrest.CoreMatchers; import org.junit.After; import org.junit.Assert; @@ -112,7 +109,6 @@ public class ContextResourceClientFactoryTest throws AssemblyException { // General setup of client and server - new OrgJsonValueSerializationAssembler().assemble( module ); new ClientAssembler().assemble( module ); new ValueAssembler().assemble( module ); new RestServerAssembler().assemble( module ); @@ -568,12 +564,12 @@ public class ContextResourceClientFactoryTest public TestResult queryWithValue( TestQuery query ) { - return vbf.newValueFromSerializedState( TestResult.class, "{'xyz':'"+query.abc().get()+"'}" ); + return vbf.newValueFromSerializedState( TestResult.class, "{\"xyz\":\""+query.abc().get()+"\"}" ); } public TestResult queryWithoutValue() { - return vbf.newValueFromSerializedState( TestResult.class, "{'xyz':'bar'}" ); + return vbf.newValueFromSerializedState( TestResult.class, "{\"xyz\":\"bar\"}" ); } public String queryWithStringResult( TestQuery query ) @@ -609,7 +605,7 @@ public class ContextResourceClientFactoryTest public void beforeCompletion() throws UnitOfWorkCompletionException { - throw new ConcurrentEntityModificationException( Collections.<EntityComposite, HasTypes>emptyMap(), + throw new ConcurrentEntityModificationException( Collections.emptyMap(), UsecaseBuilder.newUsecase( "Testing" ) ); } @@ -642,7 +638,7 @@ public class ContextResourceClientFactoryTest public TestResult queryWithValue( TestQuery query ) { - return module.newValueFromSerializedState( TestResult.class, "{'xyz':'bar'}" ); + return module.newValueFromSerializedState( TestResult.class, "{\"xyz\":\"bar\"}" ); } // Test interaction constraints @@ -650,7 +646,7 @@ public class ContextResourceClientFactoryTest @Requires( File.class ) public TestResult queryWithRoleRequirement( TestQuery query ) { - return module.newValueFromSerializedState( TestResult.class, "{'xyz':'bar'}" ); + return module.newValueFromSerializedState( TestResult.class, "{\"xyz\":\"bar\"}" ); } @Requires( File.class ) @@ -697,7 +693,7 @@ public class ContextResourceClientFactoryTest public TestResult genericQuery( TestQuery query ) { - return module.newValueFromSerializedState( TestResult.class, "{'xyz':'bar'}" ); + return module.newValueFromSerializedState( TestResult.class, "{\"xyz\":\"bar\"}" ); } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContinuousIntegrationTest.java ---------------------------------------------------------------------- diff --git a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContinuousIntegrationTest.java b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContinuousIntegrationTest.java index 69d460e..9d66d36 100644 --- a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContinuousIntegrationTest.java +++ b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/ContinuousIntegrationTest.java @@ -19,13 +19,6 @@ */ package org.apache.polygene.library.rest.client; -import org.apache.polygene.test.AbstractPolygeneTest; -import org.apache.polygene.test.util.FreePortFinder; -import org.hamcrest.CoreMatchers; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; import org.apache.polygene.api.common.Optional; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.property.Property; @@ -53,7 +46,13 @@ import org.apache.polygene.library.rest.server.api.ContextRestlet; import org.apache.polygene.library.rest.server.assembler.RestServerAssembler; import org.apache.polygene.library.rest.server.restlet.NullCommandResult; import org.apache.polygene.library.rest.server.spi.CommandResult; -import org.apache.polygene.valueserialization.orgjson.OrgJsonValueSerializationAssembler; +import org.apache.polygene.test.AbstractPolygeneTest; +import org.apache.polygene.test.util.FreePortFinder; +import org.hamcrest.CoreMatchers; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; import org.restlet.Client; import org.restlet.Request; import org.restlet.Response; @@ -89,7 +88,6 @@ public class ContinuousIntegrationTest throws AssemblyException { // General setup of client and server - new OrgJsonValueSerializationAssembler().assemble( module ); new ClientAssembler().assemble( module ); new ValueAssembler().assemble( module ); new RestServerAssembler().assemble( module ); @@ -434,12 +432,12 @@ public class ContinuousIntegrationTest public BuildResult buildStatus( BuildSpec build ) { String buildNo = build.buildNo().get(); // or lookup by tag - return module.newValueFromSerializedState( BuildResult.class, "{ 'buildNo':'" + buildNo + "', 'testsPassed': 37, 'testsFailed': 1}" ); + return module.newValueFromSerializedState( BuildResult.class, "{ \"buildNo\":\"" + buildNo + "\", \"testsPassed\": 37, \"testsFailed\": 1}" ); } public ServerStatus serverStatus() { - return module.newValueFromSerializedState( ServerStatus.class, "{'currentStatus':'Idle', 'availableAgents': 2 }" ); + return module.newValueFromSerializedState( ServerStatus.class, "{\"currentStatus\":\"Idle\", \"availableAgents\": 2 }" ); } public void tagBuild( TagBuildCommand command ) http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java ---------------------------------------------------------------------- diff --git a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java index a5344d8..bb241df 100644 --- a/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java +++ b/libraries/rest-client/src/test/java/org/apache/polygene/library/rest/client/RssReaderTest.java @@ -27,8 +27,6 @@ import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; -import org.junit.BeforeClass; -import org.junit.Test; import org.apache.polygene.bootstrap.AssemblyException; import org.apache.polygene.bootstrap.ModuleAssembly; import org.apache.polygene.library.rest.client.api.ContextResourceClient; @@ -40,7 +38,8 @@ import org.apache.polygene.library.rest.client.spi.ResponseReader; import org.apache.polygene.library.rest.client.spi.ResultHandler; import org.apache.polygene.library.rest.common.ValueAssembler; import org.apache.polygene.test.AbstractPolygeneTest; -import org.apache.polygene.valueserialization.orgjson.OrgJsonValueSerializationAssembler; +import org.junit.BeforeClass; +import org.junit.Test; import org.restlet.Client; import org.restlet.Response; import org.restlet.data.Protocol; @@ -75,7 +74,6 @@ public class RssReaderTest throws AssemblyException { // General setup of client - new OrgJsonValueSerializationAssembler().assemble( module ); new ClientAssembler().assemble( module ); new ValueAssembler().assemble( module ); } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-common/src/main/java/org/apache/polygene/library/rest/common/Resource.java ---------------------------------------------------------------------- diff --git a/libraries/rest-common/src/main/java/org/apache/polygene/library/rest/common/Resource.java b/libraries/rest-common/src/main/java/org/apache/polygene/library/rest/common/Resource.java index 454a961..d9d17d7 100644 --- a/libraries/rest-common/src/main/java/org/apache/polygene/library/rest/common/Resource.java +++ b/libraries/rest-common/src/main/java/org/apache/polygene/library/rest/common/Resource.java @@ -55,7 +55,7 @@ public interface Resource Link resource(String relation); @Optional - Property<ValueComposite> index(); + Property<Object> index(); abstract class Mixin implements Resource http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java index d66a8a8..532ed8d 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/api/ContextResource.java @@ -428,7 +428,7 @@ public class ContextResource if( index != null && index instanceof ValueComposite ) { - builder.prototype().index().set( (ValueComposite) index ); + builder.prototype().index().set( index ); } } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java index b4736af..48c32b0 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/requestreader/DefaultRequestReader.java @@ -41,14 +41,14 @@ import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.property.PropertyDescriptor; import org.apache.polygene.api.service.qualifier.Tagged; +import org.apache.polygene.api.serialization.Deserializer; +import org.apache.polygene.api.serialization.Serialization; +import org.apache.polygene.api.serialization.SerializationException; import org.apache.polygene.api.structure.ModuleDescriptor; import org.apache.polygene.api.unitofwork.UnitOfWorkFactory; import org.apache.polygene.api.value.ValueBuilder; import org.apache.polygene.api.value.ValueBuilderFactory; import org.apache.polygene.api.value.ValueComposite; -import org.apache.polygene.api.value.ValueDeserializer; -import org.apache.polygene.api.value.ValueSerialization; -import org.apache.polygene.api.value.ValueSerializationException; import org.apache.polygene.library.rest.server.spi.RequestReader; import org.restlet.Request; import org.restlet.Response; @@ -86,8 +86,8 @@ public class DefaultRequestReader private ValueBuilderFactory vbf; @Service - @Tagged( ValueSerialization.Formats.JSON ) - private ValueDeserializer valueDeserializer; + @Tagged( Serialization.Formats.JSON ) + private Deserializer deserializer; @Override @SuppressWarnings( "unchecked" ) @@ -303,9 +303,9 @@ public class DefaultRequestReader { try { - return valueDeserializer.deserialize( module, propertyDescriptor.valueType(), value ); + return deserializer.deserialize( module, propertyDescriptor.valueType(), value ); } - catch( ValueSerializationException e ) + catch( SerializationException e ) { throw new IllegalArgumentException( "Query parameter has invalid JSON format", e ); } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/AbstractResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/AbstractResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/AbstractResponseWriter.java index 7a8458e..358d81d 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/AbstractResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/AbstractResponseWriter.java @@ -20,7 +20,6 @@ package org.apache.polygene.library.rest.server.restlet.responsewriter; -import java.util.Arrays; import java.util.Collections; import java.util.List; import org.apache.polygene.library.rest.server.spi.ResponseWriter; @@ -36,7 +35,7 @@ import org.restlet.representation.Variant; public abstract class AbstractResponseWriter implements ResponseWriter { - protected static List<Language> ENGLISH = Arrays.asList( Language.ENGLISH ); + protected static List<Language> ENGLISH = Collections.singletonList( Language.ENGLISH ); protected Variant getVariant( Request request, List<Language> possibleLanguages, http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/DefaultResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/DefaultResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/DefaultResponseWriter.java index 8e480bf..1091612 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/DefaultResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/DefaultResponseWriter.java @@ -20,7 +20,7 @@ package org.apache.polygene.library.rest.server.restlet.responsewriter; -import java.util.Arrays; +import java.util.Collections; import java.util.List; import org.restlet.Response; import org.restlet.data.MediaType; @@ -33,7 +33,7 @@ import org.restlet.resource.ResourceException; public class DefaultResponseWriter extends AbstractResponseWriter { - private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.APPLICATION_JSON ); + private static final List<MediaType> supportedMediaTypes = Collections.singletonList( MediaType.APPLICATION_JSON ); @Override public boolean writeResponse( final Object result, final Response response ) http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/FormResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/FormResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/FormResponseWriter.java index 233a80b..f59d166 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/FormResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/FormResponseWriter.java @@ -29,8 +29,10 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.json.JSONException; -import org.json.JSONObject; +import javax.json.Json; +import javax.json.JsonException; +import javax.json.JsonObjectBuilder; +import javax.json.JsonValue; import org.apache.polygene.api.injection.scope.Service; import org.restlet.Response; import org.restlet.data.Form; @@ -47,7 +49,8 @@ import org.restlet.resource.ResourceException; public class FormResponseWriter extends AbstractResponseWriter { - private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, MediaType.APPLICATION_JSON ); + private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, + MediaType.APPLICATION_JSON ); @Service private Configuration cfg; @@ -61,7 +64,7 @@ public class FormResponseWriter MediaType type = getVariant( response.getRequest(), ENGLISH, supportedMediaTypes ).getMediaType(); if( MediaType.APPLICATION_JSON.equals( type ) ) { - JSONObject json = new JSONObject(); + JsonObjectBuilder builder = Json.createObjectBuilder(); Form form = (Form) result; try { @@ -70,21 +73,21 @@ public class FormResponseWriter String value = parameter.getValue(); if( value == null ) { - json.put( parameter.getName(), JSONObject.NULL ); + builder.add( parameter.getName(), JsonValue.NULL ); } else { - json.put( parameter.getName(), value ); + builder.add( parameter.getName(), value ); } } } - catch( JSONException e ) + catch( JsonException e ) { e.printStackTrace(); } - StringRepresentation representation - = new StringRepresentation( json.toString(), MediaType.APPLICATION_JSON ); + StringRepresentation representation = new StringRepresentation( builder.build().toString(), + MediaType.APPLICATION_JSON ); response.setEntity( representation ); return true; http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/JSONResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/JSONResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/JSONResponseWriter.java index 86fc8d6..6b9af86 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/JSONResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/JSONResponseWriter.java @@ -22,7 +22,7 @@ package org.apache.polygene.library.rest.server.restlet.responsewriter; import java.util.Arrays; import java.util.List; -import org.json.JSONObject; +import javax.json.JsonObject; import org.restlet.Response; import org.restlet.data.MediaType; import org.restlet.representation.StringRepresentation; @@ -33,28 +33,28 @@ import org.restlet.resource.ResourceException; */ public class JSONResponseWriter extends AbstractResponseWriter { - private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, MediaType.APPLICATION_JSON ); + private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, + MediaType.APPLICATION_JSON ); @Override - public boolean writeResponse( final Object result, final Response response ) - throws ResourceException + public boolean writeResponse( Object result, Response response ) throws ResourceException { - if( result instanceof JSONObject ) + if( result instanceof JsonObject ) { MediaType type = getVariant( response.getRequest(), ENGLISH, supportedMediaTypes ).getMediaType(); if( MediaType.APPLICATION_JSON.equals( type ) ) { - JSONObject json = (JSONObject) result; - StringRepresentation representation - = new StringRepresentation( json.toString(), MediaType.APPLICATION_JSON ); + JsonObject json = (JsonObject) result; + StringRepresentation representation = new StringRepresentation( json.toString(), + MediaType.APPLICATION_JSON ); response.setEntity( representation ); return true; } else if( MediaType.TEXT_HTML.equals( type ) ) { - JSONObject json = (JSONObject) result; - StringRepresentation representation - = new StringRepresentation( json.toString(), MediaType.TEXT_HTML ); + JsonObject json = (JsonObject) result; + StringRepresentation representation = new StringRepresentation( json.toString(), + MediaType.TEXT_HTML ); response.setEntity( representation ); return true; } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/LinksResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/LinksResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/LinksResponseWriter.java index dea6f15..dcac1db 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/LinksResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/LinksResponseWriter.java @@ -25,6 +25,7 @@ import freemarker.template.TemplateException; import java.io.IOException; import java.io.Writer; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -46,7 +47,7 @@ import org.restlet.resource.ResourceException; public class LinksResponseWriter extends AbstractResponseWriter { - private static final List<MediaType> supportedLinkMediaTypes = Arrays.asList( MediaType.APPLICATION_JSON ); + private static final List<MediaType> supportedLinkMediaTypes = Collections.singletonList( MediaType.APPLICATION_JSON ); private static final List<MediaType> supportedLinksMediaTypes = Arrays.asList( MediaType.TEXT_HTML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_ATOM ); @Service http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/TableResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/TableResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/TableResponseWriter.java index a2ec82b..bbe758c 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/TableResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/TableResponseWriter.java @@ -28,13 +28,18 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.json.Json; +import javax.json.JsonArrayBuilder; +import javax.json.JsonException; +import javax.json.JsonObjectBuilder; import org.apache.polygene.api.injection.scope.Service; +import org.apache.polygene.api.injection.scope.Structure; +import org.apache.polygene.api.structure.ModuleDescriptor; import org.apache.polygene.library.rest.common.table.Cell; import org.apache.polygene.library.rest.common.table.Column; import org.apache.polygene.library.rest.common.table.Row; import org.apache.polygene.library.rest.common.table.Table; -import org.json.JSONException; -import org.json.JSONWriter; +import org.apache.polygene.spi.serialization.JsonSerializer; import org.restlet.Response; import org.restlet.data.CharacterSet; import org.restlet.data.MediaType; @@ -47,7 +52,14 @@ import org.restlet.resource.ResourceException; */ public class TableResponseWriter extends AbstractResponseWriter { - private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, MediaType.APPLICATION_JSON ); + private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, + MediaType.APPLICATION_JSON ); + + @Structure + private ModuleDescriptor module; + + @Service + private JsonSerializer jsonSerializer; @Service private Configuration cfg; @@ -61,7 +73,6 @@ public class TableResponseWriter extends AbstractResponseWriter MediaType type = getVariant( response.getRequest(), ENGLISH, supportedMediaTypes ).getMediaType(); if( MediaType.APPLICATION_JSON.equals( type ) ) { - response.setEntity( new WriterRepresentation( MediaType.APPLICATION_JSON ) { @Override @@ -70,11 +81,12 @@ public class TableResponseWriter extends AbstractResponseWriter { try { - JSONWriter json = new JSONWriter( writer ); + JsonObjectBuilder builder = Json.createObjectBuilder(); Table tableValue = (Table) result; // Parse parameters - String tqx = response.getRequest().getResourceRef().getQueryAsForm().getFirstValue( "tqx" ); + String tqx = response.getRequest().getResourceRef().getQueryAsForm() + .getFirstValue( "tqx" ); String reqId = null; if( tqx != null ) { @@ -92,77 +104,71 @@ public class TableResponseWriter extends AbstractResponseWriter } } - json.object().key( "version" ).value( "0.6" ); + builder.add( "version", "0.6" ); if( reqId != null ) { - json.key( "reqId" ).value( reqId ); + builder.add( "reqId", reqId ); } - json.key( "status" ).value( "ok" ); - json.key( "table" ).object(); + builder.add( "status", "ok" ); + + JsonObjectBuilder tableBuilder = Json.createObjectBuilder(); + JsonArrayBuilder colsBuilder = Json.createArrayBuilder(); List<Column> columnList = tableValue.cols().get(); - json.key( "cols" ).array(); for( Column columnValue : columnList ) { - json.object(). - key( "id" ).value( columnValue.id().get() ). - key( "label" ).value( columnValue.label().get() ). - key( "type" ).value( columnValue.columnType().get() ). - endObject(); + colsBuilder.add( Json.createObjectBuilder() + .add( "id", columnValue.id().get() ) + .add( "label", columnValue.label().get() ) + .add( "type", columnValue.columnType().get() ) + .build() ); } - json.endArray(); + tableBuilder.add( "cols", colsBuilder.build() ); - json.key( "rows" ).array(); + JsonArrayBuilder rowsBuilder = Json.createArrayBuilder(); for( Row rowValue : tableValue.rows().get() ) { - json.object(); - json.key( "c" ).array(); + JsonArrayBuilder cellsBuilder = Json.createArrayBuilder(); int idx = 0; for( Cell cellValue : rowValue.c().get() ) { - json.object(); Object value = cellValue.v().get(); - if( columnList.get( idx ) - .columnType() - .get() - .equals( Table.DATETIME ) && value != null ) + if( columnList.get( idx ).columnType().get().equals( Table.DATETIME ) + && value != null ) { value = value.toString(); } - else if( columnList.get( idx ) - .columnType() - .get() - .equals( Table.DATE ) && value != null ) + else if( columnList.get( idx ).columnType().get().equals( Table.DATE ) + && value != null ) { value = value.toString(); } - else if( columnList.get( idx ) - .columnType() - .get() - .equals( Table.TIME_OF_DAY ) && value != null ) + else if( columnList.get( idx ).columnType().get().equals( Table.TIME_OF_DAY ) + && value != null ) { value = value.toString(); } + JsonObjectBuilder cellBuilder = Json.createObjectBuilder(); if( value != null ) { - json.key( "v" ).value( value ); + cellBuilder.add( "v", jsonSerializer.toJson( value ) ); } if( cellValue.f().get() != null ) { - json.key( "f" ).value( cellValue.f().get() ); + cellBuilder.add( "f", cellValue.f().get() ); } - json.endObject(); - + cellsBuilder.add( cellBuilder.build() ); idx++; } - json.endArray(); - json.endObject(); + JsonObjectBuilder rowBuilder = Json.createObjectBuilder(); + rowBuilder.add( "c", cellsBuilder.build() ); + rowsBuilder.add( rowBuilder.build() ); } - json.endArray(); - json.endObject(); - json.endObject(); + tableBuilder.add( "rows", rowsBuilder.build() ); + builder.add( "table", tableBuilder.build() ); + writer.write( builder.build().toString() ); } - catch( JSONException e ) + catch( JsonException e ) { throw new IOException( e ); } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueCompositeResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueCompositeResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueCompositeResponseWriter.java index 9978b29..a50e9ca 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueCompositeResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueCompositeResponseWriter.java @@ -32,9 +32,9 @@ import java.util.List; import java.util.Map; import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.service.qualifier.Tagged; +import org.apache.polygene.api.serialization.Serialization; +import org.apache.polygene.api.serialization.Serializer; import org.apache.polygene.api.value.ValueComposite; -import org.apache.polygene.api.value.ValueSerialization; -import org.apache.polygene.api.value.ValueSerializer; import org.restlet.Response; import org.restlet.data.MediaType; import org.restlet.representation.Representation; @@ -53,8 +53,8 @@ public class ValueCompositeResponseWriter extends AbstractResponseWriter private Configuration cfg; @Service - @Tagged( ValueSerialization.Formats.JSON ) - private ValueSerializer valueSerializer; + @Tagged( Serialization.Formats.JSON ) + private Serializer serializer; @Override public boolean writeResponse( final Object result, final Response response ) @@ -65,7 +65,7 @@ public class ValueCompositeResponseWriter extends AbstractResponseWriter MediaType type = getVariant( response.getRequest(), ENGLISH, supportedMediaTypes ).getMediaType(); if( MediaType.APPLICATION_JSON.equals( type ) ) { - StringRepresentation representation = new StringRepresentation( valueSerializer.serialize( result ), + StringRepresentation representation = new StringRepresentation( serializer.serialize( result ), MediaType.APPLICATION_JSON ); response.setEntity( representation ); return true; http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueDescriptorResponseWriter.java ---------------------------------------------------------------------- diff --git a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueDescriptorResponseWriter.java b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueDescriptorResponseWriter.java index 5bf1d1b..c5296c1 100644 --- a/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueDescriptorResponseWriter.java +++ b/libraries/rest-server/src/main/java/org/apache/polygene/library/rest/server/restlet/responsewriter/ValueDescriptorResponseWriter.java @@ -28,12 +28,14 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.json.Json; +import javax.json.JsonException; +import javax.json.JsonObjectBuilder; +import javax.json.JsonValue; import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.structure.ModuleDescriptor; import org.apache.polygene.api.value.ValueDescriptor; -import org.json.JSONException; -import org.json.JSONObject; import org.restlet.Response; import org.restlet.data.MediaType; import org.restlet.representation.Representation; @@ -46,7 +48,8 @@ import org.restlet.resource.ResourceException; */ public class ValueDescriptorResponseWriter extends AbstractResponseWriter { - private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, MediaType.APPLICATION_JSON ); + private static final List<MediaType> supportedMediaTypes = Arrays.asList( MediaType.TEXT_HTML, + MediaType.APPLICATION_JSON ); @Structure private ModuleDescriptor module; @@ -63,28 +66,33 @@ public class ValueDescriptorResponseWriter extends AbstractResponseWriter MediaType type = getVariant( response.getRequest(), ENGLISH, supportedMediaTypes ).getMediaType(); if( MediaType.APPLICATION_JSON.equals( type ) ) { - JSONObject json = new JSONObject(); ValueDescriptor vd = (ValueDescriptor) result; - vd.state().properties().forEach( propertyDescriptor -> { - try + JsonObjectBuilder builder = Json.createObjectBuilder(); + vd.state().properties().forEach( + propertyDescriptor -> { - Object o = propertyDescriptor.initialValue( module ); - if( o == null ) + try { - json.put( propertyDescriptor.qualifiedName().name(), JSONObject.NULL ); + Object o = propertyDescriptor.initialValue( module ); + if( o == null ) + { + builder.add( propertyDescriptor.qualifiedName().name(), + JsonValue.NULL ); + } + else + { + builder.add( propertyDescriptor.qualifiedName().name(), + o.toString() ); + } } - else + catch( JsonException e ) { - json.put( propertyDescriptor.qualifiedName().name(), o.toString() ); + throw new RestResponseException( "Unable to serialize " + vd, + e ); } - } - catch( JSONException e ) - { - throw new RestResponseException( "Unable to serialize " + vd, e); - } - } ); - StringRepresentation representation - = new StringRepresentation( json.toString(), MediaType.APPLICATION_JSON ); + } ); + StringRepresentation representation = new StringRepresentation( builder.build().toString(), + MediaType.APPLICATION_JSON ); response.setEntity( representation ); return true; } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest/build.gradle ---------------------------------------------------------------------- diff --git a/libraries/rest/build.gradle b/libraries/rest/build.gradle index 27d8532..93815a5 100644 --- a/libraries/rest/build.gradle +++ b/libraries/rest/build.gradle @@ -35,7 +35,6 @@ dependencies { testCompile polygene.core.testsupport testCompile polygene.library( 'http' ) - testCompile polygene.extension( 'valueserialization-orgjson' ) testCompile libraries.http_client testRuntime libraries.logback http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java ---------------------------------------------------------------------- diff --git a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java index b0eb71e..0b07b3e 100644 --- a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java +++ b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntitiesResource.java @@ -22,6 +22,7 @@ package org.apache.polygene.library.rest.admin; import java.io.IOException; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; import java.util.Arrays; @@ -31,7 +32,7 @@ import java.util.stream.Stream; import org.apache.polygene.api.entity.EntityComposite; import org.apache.polygene.api.entity.EntityReference; import org.apache.polygene.api.injection.scope.Service; -import org.apache.polygene.api.value.ValueSerialization; +import org.apache.polygene.api.serialization.Serialization; import org.apache.polygene.spi.query.EntityFinder; import org.apache.polygene.spi.query.EntityFinderException; import org.restlet.data.CharacterSet; @@ -64,7 +65,7 @@ public class EntitiesResource @Service private EntityFinder entityFinder; @Service - private ValueSerialization valueSerialization; + private Serialization stateSerialization; public EntitiesResource() { @@ -117,7 +118,7 @@ public class EntitiesResource public void write( OutputStream outputStream ) throws IOException { - valueSerialization.serialize( query, outputStream ); + stateSerialization.serialize( new OutputStreamWriter( outputStream ), query ); } }; } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java ---------------------------------------------------------------------- diff --git a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java index cbdb34d..9eb3c17 100644 --- a/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java +++ b/libraries/rest/src/main/java/org/apache/polygene/library/rest/admin/EntityResource.java @@ -38,12 +38,11 @@ import org.apache.polygene.api.identity.StringIdentity; import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.injection.scope.Uses; +import org.apache.polygene.api.serialization.SerializationException; import org.apache.polygene.api.structure.ModuleDescriptor; import org.apache.polygene.api.time.SystemTime; import org.apache.polygene.api.usecase.Usecase; import org.apache.polygene.api.usecase.UsecaseBuilder; -import org.apache.polygene.api.value.ValueSerialization; -import org.apache.polygene.api.value.ValueSerializationException; import org.apache.polygene.library.rdf.entity.EntityStateSerializer; import org.apache.polygene.library.rdf.serializer.RdfXmlSerializer; import org.apache.polygene.spi.entity.EntityState; @@ -54,6 +53,7 @@ import org.apache.polygene.spi.entitystore.EntityNotFoundException; import org.apache.polygene.spi.entitystore.EntityStore; import org.apache.polygene.spi.entitystore.EntityStoreUnitOfWork; import org.apache.polygene.spi.entitystore.helpers.JSONEntityState; +import org.apache.polygene.spi.serialization.JsonSerialization; import org.openrdf.model.Statement; import org.openrdf.rio.RDFHandlerException; import org.restlet.data.CharacterSet; @@ -79,7 +79,7 @@ public class EntityResource private EntityStore entityStore; @Service - private ValueSerialization valueSerialization; + private JsonSerialization serialization; @Structure private ModuleDescriptor module; @@ -231,7 +231,7 @@ public class EntityResource + "type=\"text\" " + ( persistentProperty.isImmutable() ? "readonly=\"true\" " : "" ) + "name=\"" + persistentProperty.qualifiedName() + "\" " - + "value=\"" + ( value == null ? "" : valueSerialization.serialize( value ) ) + + "value=\"" + ( value == null ? "" : serialization.serialize( value ) ) + "\"/></td></tr>" ); } ); out.println( "</table></fieldset>\n" ); @@ -308,6 +308,7 @@ public class EntityResource private Representation representJson( EntityState entityState ) { + // TODO This guy needs to represent an Entity as JSON if( entityState instanceof JSONEntityState ) { JSONEntityState jsonState = (JSONEntityState) entityState; @@ -377,7 +378,7 @@ public class EntityResource { entity.setPropertyValue( persistentProperty.qualifiedName(), - valueSerialization.deserialize( module, persistentProperty.valueType(), formValue ) ); + serialization.deserialize( module, persistentProperty.valueType(), formValue ) ); } } } ); @@ -503,7 +504,7 @@ public class EntityResource } } ); } - catch( ValueSerializationException | IllegalArgumentException e ) + catch( SerializationException | IllegalArgumentException e ) { throw new ResourceException( Status.SERVER_ERROR_INTERNAL, e ); } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RDFAssembler.java ---------------------------------------------------------------------- diff --git a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RDFAssembler.java b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RDFAssembler.java index f028d77..654f0d1 100644 --- a/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RDFAssembler.java +++ b/libraries/rest/src/test/java/org/apache/polygene/library/rest/admin/RDFAssembler.java @@ -26,7 +26,6 @@ import org.apache.polygene.bootstrap.AssemblyException; import org.apache.polygene.bootstrap.ModuleAssembly; import org.apache.polygene.library.rdf.entity.EntityStateSerializer; import org.apache.polygene.library.rdf.entity.EntityTypeSerializer; -import org.apache.polygene.valueserialization.orgjson.OrgJsonValueSerializationAssembler; /** * JAVADOC @@ -37,7 +36,6 @@ class RDFAssembler public void assemble( ModuleAssembly module ) throws AssemblyException { - new OrgJsonValueSerializationAssembler().assemble( module ); module.objects( EntityStateSerializer.class ).visibleIn( Visibility.application ); module.objects( EntityTypeSerializer.class ).visibleIn( Visibility.application ); } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/restlet/build.gradle ---------------------------------------------------------------------- diff --git a/libraries/restlet/build.gradle b/libraries/restlet/build.gradle index 35cd1d9..8285584 100644 --- a/libraries/restlet/build.gradle +++ b/libraries/restlet/build.gradle @@ -28,7 +28,6 @@ jar { manifest { name = "Apache Polygene⢠Library - Restlet" } } dependencies { compile polygene.core.bootstrap - compile polygene.extension( 'valueserialization-jackson' ) compile polygene.extension( 'indexing-rdf' ) compile polygene.extension( 'entitystore-file' ) compile libraries.restlet http://git-wip-us.apache.org/repos/asf/polygene-java/blob/e4cca11e/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java ---------------------------------------------------------------------- diff --git a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java index 3979194..815691a 100644 --- a/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java +++ b/libraries/restlet/src/main/java/org/apache/polygene/library/restlet/assembly/RestletCrudConnectivityAssembler.java @@ -38,7 +38,6 @@ import org.apache.polygene.library.restlet.resource.EntryPointResource; import org.apache.polygene.library.restlet.resource.ResourceBuilder; import org.apache.polygene.library.restlet.serialization.FormRepresentation; import org.apache.polygene.library.restlet.serialization.JsonRepresentation; -import org.apache.polygene.valueserialization.jackson.JacksonValueSerializationAssembler; public class RestletCrudConnectivityAssembler implements Assembler @@ -65,6 +64,5 @@ public class RestletCrudConnectivityAssembler PolygeneEntityRestlet.class ) .visibleIn( Visibility.layer ); module.services( ResourceBuilder.class ).visibleIn( Visibility.layer ); - new JacksonValueSerializationAssembler().assemble( module ); } }
