public static MapType of( Class<?> keyType, Class<?> valueType ) { return of( ValueType.of( keyType ), ValueType.of( valueType ) ); }
public static MapType of( Class<?> mapType, Class<?> keyType, Class<?> valueType ) { return of( mapType, ValueType.of( keyType ), ValueType.of( valueType ) ); }
public static MapType of( Class<?> keyType, Class<?> valueType ) { return of( ValueType.of( keyType ), ValueType.of( valueType ) ); }
public static MapType of( Class<?> mapType, Class<?> keyType, Class<?> valueType ) { return of( mapType, ValueType.of( keyType ), ValueType.of( valueType ) ); }
@Test public void givenEnumMapWhenSerializingAndDeserializingExpectEquals() { EnumMap<SomeEnum, Number> enumMap = new EnumMap<>( SomeEnum.class ); for( SomeEnum value : SomeEnum.values() ) { enumMap.put( value, 23 ); } String output = serialization.serialize( enumMap ); System.out.println( output ); MapType valueType = MapType.of( EnumType.of( SomeEnum.class ), ValueType.of( Integer.class ) ); Map<SomeEnum, Number> value = serialization.deserialize( module, valueType, output ); assertEquals( enumMap, value ); }
@Test public void givenEnumMapWhenSerializingAndDeserializingExpectEquals() { EnumMap<SomeEnum, Number> enumMap = new EnumMap<>( SomeEnum.class ); for( SomeEnum value : SomeEnum.values() ) { enumMap.put( value, 23 ); } String output = serialization.serialize( enumMap ); System.out.println( output ); MapType valueType = MapType.of( EnumType.of( SomeEnum.class ), ValueType.of( Integer.class ) ); Map<SomeEnum, Number> value = serialization.deserialize( module, valueType, output ); assertEquals( enumMap, value ); }
@Test public void givenMapOfStringByteAndNullElementWhenSerializingAndDeserializingExpectEquals() throws Exception { String output = serialization.serialize( stringByteMap() ); System.out.println( output ); MapType mapType = MapType.of( ValueType.STRING, ValueType.BYTE ); Map<String, Byte> value = serialization.deserialize( module, mapType, output ); assertEquals( stringByteMap(), value ); }
@Test public void givenMapOfStringByteAndNullElementWhenSerializingAndDeserializingExpectEquals() throws Exception { String output = serialization.serialize( stringByteMap() ); System.out.println( output ); MapType mapType = MapType.of( ValueType.STRING, ValueType.BYTE ); Map<String, Byte> value = serialization.deserialize( module, mapType, output ); assertEquals( stringByteMap(), value ); }
@Test public void givenMapOfStringListStringAndNullElementWhenSerializingAndDeserializingExpectEquals() throws Exception { String output = serialization.serialize( stringMultiMap() ); System.out.println( output ); CollectionType collectionType = CollectionType.listOf( ValueType.STRING ); MapType mapType = MapType.of( ValueType.STRING, collectionType ); Map<String, List<String>> value = serialization.deserialize( module, mapType, output ); assertEquals( stringMultiMap(), value ); }
@Test public void givenListOfMapStringStringAndNullElementWhenSerializingAndDeserializingExpectEquals() throws Exception { String output = serialization.serialize( stringListOfMaps() ); System.out.println( output ); CollectionType collectionType = CollectionType.listOf( MapType.of( ValueType.STRING, ValueType.STRING ) ); List<Map<String, String>> value = serialization.deserialize( module, collectionType, output ); assertEquals( stringListOfMaps(), value ); }
@Test public void givenListOfMapStringStringAndNullElementWhenSerializingAndDeserializingExpectEquals() throws Exception { String output = serialization.serialize( stringListOfMaps() ); System.out.println( output ); CollectionType collectionType = CollectionType.listOf( MapType.of( ValueType.STRING, ValueType.STRING ) ); List<Map<String, String>> value = serialization.deserialize( module, collectionType, output ); assertEquals( stringListOfMaps(), value ); }
@Test public void givenMapOfStringListStringAndNullElementWhenSerializingAndDeserializingExpectEquals() throws Exception { String output = serialization.serialize( stringMultiMap() ); System.out.println( output ); CollectionType collectionType = CollectionType.listOf( ValueType.STRING ); MapType mapType = MapType.of( ValueType.STRING, collectionType ); Map<String, List<String>> value = serialization.deserialize( module, mapType, output ); assertEquals( stringMultiMap(), value ); }
@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 deserializeJsonArrayOfEntryObjectsAsMapWithStringKeys() { JsonObjectBuilder fooEntryBuilder = jsonFactories.builderFactory().createObjectBuilder(); fooEntryBuilder.add( "key", "foo" ); fooEntryBuilder.add( "value", "bar" ); JsonObject fooEntry = fooEntryBuilder.build(); JsonObjectBuilder bazEntryBuilder = jsonFactories.builderFactory().createObjectBuilder(); bazEntryBuilder.add( "key", "baz" ); bazEntryBuilder.add( "value", "bazar" ); JsonObject bazEntry = bazEntryBuilder.build(); JsonArrayBuilder arrayBuilder = jsonFactories.builderFactory().createArrayBuilder(); arrayBuilder.add( fooEntry ); arrayBuilder.add( bazEntry ); JsonArray jsonArray = arrayBuilder.build(); MapType mapType = MapType.of( ValueType.STRING, ValueType.STRING ); Map<String, String> map = jsonSerialization.fromJson( module, mapType, jsonArray ); assertThat( map.get( "foo" ), equalTo( "bar" ) ); assertThat( map.get( "baz" ), 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 ) ); }
JsonArray jsonArray = arrayBuilder.build(); MapType mapType = MapType.of( ValueType.OBJECT, ValueType.STRING ); try
@Test public void genericsAreResolvedOnValueCompositeProperties() { ValueDescriptor descriptor = module.typeLookup().lookupValueModel( SomeState.class ); assertThat( descriptor.state().findPropertyModelByName( "list" ).valueType(), equalTo( CollectionType.listOf( ValueType.STRING ) ) ); assertThat( descriptor.state().findPropertyModelByName( "map" ).valueType(), equalTo( MapType.of( ValueType.STRING, ValueType.INTEGER ) ) ); } }