@Override public void setPropertyValue( QualifiedName stateName, Object newValue ) { try { JsonValue jsonValue = serialization.toJson( ALL_TYPE_INFO, newValue ); if( stateCloneWithProperty( stateName.name(), jsonValue ) ) { markUpdated(); } } catch( SerializationException e ) { throw new EntityStoreException( "Unable to set property " + stateName + " value " + newValue, e ); } }
@Override public JsonObject addProperty( MigrationContext context, JsonObject state, String name, Object defaultValue ) throws JsonException { JsonObject valueState = state.getJsonObject( JSONKeys.VALUE ); if( !valueState.containsKey( name ) ) { valueState = jsonFactories.cloneBuilder( valueState ) .add( name, serialization.toJson( defaultValue ) ) .build(); JsonObject migratedState = jsonFactories.cloneBuilderExclude( state, JSONKeys.VALUE ) .add( JSONKeys.VALUE, valueState ) .build(); context.markAsChanged(); for( MigrationEvents migrationEvent : migrationEvents ) { migrationEvent.propertyAdded( state.getString( JSONKeys.IDENTITY ), name, defaultValue ); } return migratedState; } else { context.addFailure( "Add property " + name + ", default:" + defaultValue ); return state; } }
@Override public void setPropertyValue( QualifiedName stateName, Object newValue ) { try { JsonValue jsonValue = serialization.toJson( ALL_TYPE_INFO, newValue ); if( stateCloneWithProperty( stateName.name(), jsonValue ) ) { markUpdated(); } } catch( SerializationException e ) { throw new EntityStoreException( "Unable to set property " + stateName + " value " + newValue, e ); } }
JsonValue jsonValue = jsonSerialization.toJson( value ); valueBuilder.add( persistentProperty.qualifiedName().name(), jsonValue ); } );
JsonValue jsonValue = jsonSerialization.toJson( value ); valueBuilder.add( persistentProperty.qualifiedName().name(), jsonValue ); } );
@Test public void serializeMapWithStringKeysAsJsonObject() { Map<String, String> map = new HashMap<>(); map.put( "foo", "bar" ); map.put( "baz", "bazar" ); JsonValue json = jsonSerialization.toJson( map ); assertThat( json.getValueType(), is( JsonValue.ValueType.OBJECT ) ); JsonObject jsonObject = (JsonObject) json; assertThat( jsonObject.getString( "foo" ), equalTo( "bar" ) ); assertThat( jsonObject.getString( "baz" ), equalTo( "bazar" ) ); MapType mapType = MapType.of( ValueType.STRING, ValueType.STRING ); Map<String, String> map2 = jsonSerialization.fromJson( module, mapType, json ); assertThat( map2, equalTo( map ) ); }
@Test public void valueCompositeJsonEquality() { // START SNIPPET: json-serialization try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork() ) { Some valueInstance = buildSomeValue( moduleInstance, uow, "42" ); // Serialize using injected service JsonValue serializedJson = jsonSerialization.toJson( valueInstance ); System.out.println( serializedJson.toString() ); // Deserialize using Module API Some valueFromSerializedState = moduleInstance.newValueFromSerializedState( Some.class, serializedJson.toString() ); assertThat( "Deserialized Value equality", valueInstance, equalTo( valueFromSerializedState ) ); // END SNIPPET: json-serialization // value.toString() JsonValue valueJsonWithoutTypeInfo = jsonSerialization.toJson( Serializer.Options.NO_TYPE_INFO, valueFromSerializedState ); JsonObject valueToStringJson = jsonFactories.readerFactory() .createReader( new StringReader( valueFromSerializedState.toString() ) ) .readObject(); assertThat( "value.toString() JSON equality", valueJsonWithoutTypeInfo, equalTo( valueToStringJson ) ); // START SNIPPET: json-serialization } // END SNIPPET: json-serialization } }
@Test public void serializeMapWithMixedKeysAsJsonArrayOfEntryObjects() { Map<Object, String> map = new LinkedHashMap<>(); map.put( "foo", "bar" ); map.put( newSomeValue( "baz" ), "bazar" ); JsonValue json = jsonSerialization.toJson( map ); assertThat( json.getValueType(), is( JsonValue.ValueType.ARRAY ) ); JsonArray jsonArray = (JsonArray) json; JsonObject fooEntry = jsonArray.getJsonObject( 0 ); JsonObject bazEntry = jsonArray.getJsonObject( 1 ); assertThat( fooEntry.getString( "key" ), equalTo( "foo" ) ); assertThat( fooEntry.getString( "value" ), equalTo( "bar" ) ); assertThat( bazEntry.getJsonObject( "key" ).getString( "foo" ), equalTo( "baz" ) ); assertThat( bazEntry.getString( "value" ), equalTo( "bazar" ) ); }
@Test public void serializeMapWithComplexKeyToJsonArrayOfEntryObjects() { Map<SomeValue, String> map = new LinkedHashMap<>(); map.put( newSomeValue( "foo" ), "bar" ); map.put( newSomeValue( "baz" ), "bazar" ); JsonValue json = jsonSerialization.toJson( map ); assertThat( json.getValueType(), is( JsonValue.ValueType.ARRAY ) ); JsonArray jsonArray = (JsonArray) json; JsonObject fooEntry = jsonArray.getJsonObject( 0 ); JsonObject bazEntry = jsonArray.getJsonObject( 1 ); assertThat( fooEntry.getJsonObject( "key" ).getString( "foo" ), equalTo( "foo" ) ); assertThat( fooEntry.getString( "value" ), equalTo( "bar" ) ); assertThat( bazEntry.getJsonObject( "key" ).getString( "foo" ), equalTo( "baz" ) ); assertThat( bazEntry.getString( "value" ), equalTo( "bazar" ) ); MapType mapType = MapType.of( ValueCompositeType.of( api.valueDescriptorFor( map.keySet().iterator().next() ) ), ValueType.STRING ); Map<SomeValue, String> map2 = jsonSerialization.fromJson( module, mapType, json ); assertThat( map2, equalTo( map ) ); }