You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2017/03/13 15:28:59 UTC
[36/48] polygene-java git commit: Favor Initializable over
ServiceActivation
Favor Initializable over ServiceActivation
POLYGENE-231
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/37792b2f
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/37792b2f
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/37792b2f
Branch: refs/heads/serialization-3.0
Commit: 37792b2fbdfc429750dfb15b09ec6ecaf859161d
Parents: 0e089cf
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Mar 13 15:04:55 2017 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Mar 13 16:27:47 2017 +0100
----------------------------------------------------------------------
.../DefaultSerializationAssembler.java | 4 +-
.../javaxjson/JavaxJsonAdapters.java | 296 +++++++++++++++-
.../JavaxJsonSerializationService.java | 347 -------------------
.../JavaxJsonSerializationAssembler.java | 2 +-
.../javaxxml/JavaxXmlAdapters.java | 165 ++++++++-
.../JavaxXmlSerializationAssembler.java | 2 +-
.../javaxxml/JavaxXmlSerializationService.java | 214 ------------
.../javaxxml/JavaxXmlAdaptersTest.java | 2 +-
.../msgpack/MessagePackAdapters.java | 207 ++++++++++-
.../MessagePackSerializationAssembler.java | 2 +-
.../MessagePackSerializationService.java | 256 --------------
11 files changed, 671 insertions(+), 826 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/serialization/DefaultSerializationAssembler.java
----------------------------------------------------------------------
diff --git a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/serialization/DefaultSerializationAssembler.java b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/serialization/DefaultSerializationAssembler.java
index a4bcc0c..4a6f4b8 100644
--- a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/serialization/DefaultSerializationAssembler.java
+++ b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/serialization/DefaultSerializationAssembler.java
@@ -23,7 +23,7 @@ import org.apache.polygene.api.serialization.Serializer;
import org.apache.polygene.bootstrap.Assembler;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.serialization.javaxjson.JavaxJsonSerializationService;
+import org.apache.polygene.serialization.javaxjson.JavaxJsonSerialization;
import org.apache.polygene.spi.serialization.JsonDeserializer;
import org.apache.polygene.spi.serialization.JsonSerialization;
import org.apache.polygene.spi.serialization.JsonSerializer;
@@ -34,7 +34,7 @@ public class DefaultSerializationAssembler
@Override
public void assemble( ModuleAssembly module ) throws AssemblyException
{
- module.services( JavaxJsonSerializationService.class )
+ module.services( JavaxJsonSerialization.class )
.withTypes( Serialization.class, Serializer.class, Deserializer.class,
JsonSerialization.class, JsonSerializer.class, JsonDeserializer.class )
.taggedWith( Serialization.Format.JSON );
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonAdapters.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonAdapters.java b/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonAdapters.java
index a46accd..a6c7933 100644
--- a/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonAdapters.java
+++ b/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonAdapters.java
@@ -19,10 +19,24 @@ package org.apache.polygene.serialization.javaxjson;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import javax.json.Json;
+import javax.json.JsonNumber;
+import javax.json.JsonString;
+import javax.json.JsonValue;
+import org.apache.polygene.api.injection.scope.This;
+import org.apache.polygene.api.injection.scope.Uses;
+import org.apache.polygene.api.mixin.Initializable;
import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.serialization.Converters;
+import org.apache.polygene.api.serialization.SerializationException;
+import org.apache.polygene.api.service.ServiceDescriptor;
import org.apache.polygene.api.type.ValueType;
+import org.apache.polygene.spi.serialization.BuiltInConverters;
import static org.apache.polygene.api.type.HasTypesCollectors.closestType;
+import static org.apache.polygene.serialization.javaxjson.JavaxJsonSettings.orDefault;
@Mixins( JavaxJsonAdapters.Mixin.class )
public interface JavaxJsonAdapters
@@ -36,10 +50,30 @@ public interface JavaxJsonAdapters
return adapterFor( ValueType.of( type ) );
}
- class Mixin implements JavaxJsonAdapters
+ class Mixin implements JavaxJsonAdapters, Initializable
{
private final Map<ValueType, JavaxJsonAdapter<?>> adapters = new LinkedHashMap<>();
+ @Uses
+ private ServiceDescriptor descriptor;
+
+ @This
+ private BuiltInConverters builtInConverters;
+
+ @This
+ private Converters converters;
+
+ @Override
+ public void initialize()
+ {
+ JavaxJsonSettings settings = orDefault( descriptor.metaInfo( JavaxJsonSettings.class ) );
+ settings.getConverters()
+ .forEach( ( type, converter ) -> converters.registerConverter( type, converter ) );
+ builtInConverters.registerBuiltInConverters( converters );
+ settings.getAdapters().forEach( adapters::put );
+ registerBaseJavaxJsonAdapters();
+ }
+
@Override
public void registerAdapter( ValueType valueType, JavaxJsonAdapter<?> adapter )
{
@@ -60,5 +94,265 @@ public interface JavaxJsonAdapters
{
return (JavaxJsonAdapter<T>) adapter;
}
+
+ private void registerBaseJavaxJsonAdapters()
+ {
+ // Primitive Value types
+ adapters.put( ValueType.STRING, new StringAdapter() );
+ adapters.put( ValueType.CHARACTER, new CharacterAdapter() );
+ adapters.put( ValueType.BOOLEAN, new BooleanAdapter() );
+ adapters.put( ValueType.INTEGER, new IntegerAdapter() );
+ adapters.put( ValueType.LONG, new LongAdapter() );
+ adapters.put( ValueType.SHORT, new ShortAdapter() );
+ adapters.put( ValueType.BYTE, new ByteAdapter() );
+ adapters.put( ValueType.FLOAT, new FloatAdapter() );
+ adapters.put( ValueType.DOUBLE, new DoubleAdapter() );
+ }
+
+ private static abstract class ToJsonStringAdapter<T> implements JavaxJsonAdapter<T>
+ {
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return JavaxJson.toJsonString( object );
+ }
+ }
+
+ private static class StringAdapter extends ToJsonStringAdapter<String>
+ {
+ @Override
+ public Class<String> type() { return String.class; }
+
+ @Override
+ public String deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ return JavaxJson.asString( json );
+ }
+ }
+
+ private static class CharacterAdapter extends ToJsonStringAdapter<Character>
+ {
+ @Override
+ public Class<Character> type() { return Character.class; }
+
+ @Override
+ public Character deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ String string = JavaxJson.asString( json );
+ return string.isEmpty() ? null : string.charAt( 0 );
+ }
+ }
+
+ private static class BooleanAdapter implements JavaxJsonAdapter<Boolean>
+ {
+ @Override
+ public Class<Boolean> type() { return Boolean.class; }
+
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return type().cast( object ) ? JsonValue.TRUE : JsonValue.FALSE;
+ }
+
+ @Override
+ public Boolean deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ switch( json.getValueType() )
+ {
+ case TRUE:
+ return true;
+ case FALSE:
+ return false;
+ case NULL:
+ return null;
+ case NUMBER:
+ return ( (JsonNumber) json ).doubleValue() > 0;
+ case STRING:
+ return Boolean.valueOf( ( (JsonString) json ).getString() );
+ default:
+ throw new SerializationException( "Don't know how to deserialize Boolean from " + json );
+ }
+ }
+ }
+
+ private static class IntegerAdapter implements JavaxJsonAdapter<Integer>
+ {
+ @Override
+ public Class<Integer> type() { return Integer.class; }
+
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
+ .getJsonNumber( "value" );
+ }
+
+ @Override
+ public Integer deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ switch( json.getValueType() )
+ {
+ case NULL:
+ return null;
+ case NUMBER:
+ return ( (JsonNumber) json ).intValueExact();
+ case STRING:
+ String string = ( (JsonString) json ).getString();
+ return string.isEmpty() ? 0 : Integer.parseInt( string );
+ default:
+ throw new SerializationException( "Don't know how to deserialize Integer from " + json );
+ }
+ }
+ }
+
+ private static class LongAdapter implements JavaxJsonAdapter<Long>
+ {
+ @Override
+ public Class<Long> type() { return Long.class; }
+
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return Json.createObjectBuilder().add( "value", type().cast( object ) ).build().getJsonNumber(
+ "value" );
+ }
+
+ @Override
+ public Long deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ switch( json.getValueType() )
+ {
+ case NULL:
+ return null;
+ case NUMBER:
+ return ( (JsonNumber) json ).longValueExact();
+ case STRING:
+ String string = ( (JsonString) json ).getString();
+ return string.isEmpty() ? 0L : Long.parseLong( string );
+ default:
+ throw new SerializationException( "Don't know how to deserialize Long from " + json );
+ }
+ }
+ }
+
+ private static class ShortAdapter implements JavaxJsonAdapter<Short>
+ {
+ @Override
+ public Class<Short> type() { return Short.class; }
+
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
+ .getJsonNumber( "value" );
+ }
+
+ @Override
+ public Short deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ switch( json.getValueType() )
+ {
+ case NULL:
+ return null;
+ case NUMBER:
+ return (short) ( (JsonNumber) json ).intValueExact();
+ case STRING:
+ String string = ( (JsonString) json ).getString();
+ return string.isEmpty() ? 0 : Short.parseShort( string );
+ default:
+ throw new SerializationException( "Don't know how to deserialize Short from " + json );
+ }
+ }
+ }
+
+ private static class ByteAdapter implements JavaxJsonAdapter<Byte>
+ {
+ @Override
+ public Class<Byte> type() { return Byte.class; }
+
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
+ .getJsonNumber( "value" );
+ }
+
+ @Override
+ public Byte deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ switch( json.getValueType() )
+ {
+ case NULL:
+ return null;
+ case NUMBER:
+ return (byte) ( (JsonNumber) json ).intValueExact();
+ case STRING:
+ String string = ( (JsonString) json ).getString();
+ return string.isEmpty() ? 0 : Byte.parseByte( string );
+ default:
+ throw new SerializationException( "Don't know how to deserialize Byte from " + json );
+ }
+ }
+ }
+
+ private static class FloatAdapter implements JavaxJsonAdapter<Float>
+ {
+ @Override
+ public Class<Float> type() { return Float.class; }
+
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
+ .getJsonNumber( "value" );
+ }
+
+ @Override
+ public Float deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ switch( json.getValueType() )
+ {
+ case NULL:
+ return null;
+ case NUMBER:
+ return (float) ( (JsonNumber) json ).doubleValue();
+ case STRING:
+ String string = ( (JsonString) json ).getString();
+ return string.isEmpty() ? 0F : Float.parseFloat( string );
+ default:
+ throw new SerializationException( "Don't know how to deserialize Float from " + json );
+ }
+ }
+ }
+
+ private static class DoubleAdapter implements JavaxJsonAdapter<Double>
+ {
+ @Override
+ public Class<Double> type() { return Double.class; }
+
+ @Override
+ public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
+ {
+ return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
+ .getJsonNumber( "value" );
+ }
+
+ @Override
+ public Double deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
+ {
+ switch( json.getValueType() )
+ {
+ case NULL:
+ return null;
+ case NUMBER:
+ return ( (JsonNumber) json ).doubleValue();
+ case STRING:
+ String string = ( (JsonString) json ).getString();
+ return string.isEmpty() ? 0D : Double.parseDouble( string );
+ default:
+ throw new SerializationException( "Don't know how to deserialize Double from " + json );
+ }
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationService.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationService.java b/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationService.java
deleted file mode 100644
index 1968b92..0000000
--- a/core/spi/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationService.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.polygene.serialization.javaxjson;
-
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import javax.json.Json;
-import javax.json.JsonNumber;
-import javax.json.JsonString;
-import javax.json.JsonValue;
-import org.apache.polygene.api.injection.scope.This;
-import org.apache.polygene.api.injection.scope.Uses;
-import org.apache.polygene.api.mixin.Mixins;
-import org.apache.polygene.api.serialization.Converters;
-import org.apache.polygene.api.serialization.SerializationException;
-import org.apache.polygene.api.service.ServiceActivation;
-import org.apache.polygene.api.service.ServiceDescriptor;
-import org.apache.polygene.api.type.ValueType;
-import org.apache.polygene.spi.serialization.BuiltInConverters;
-
-// TODO Move into JavaxJsonSerialization
-// TODO Do the same on XML & MessagePack
-@Mixins( JavaxJsonSerializationService.Activation.class )
-public interface JavaxJsonSerializationService extends JavaxJsonSerialization, ServiceActivation
-{
- class Activation implements ServiceActivation
- {
- @Uses
- private ServiceDescriptor descriptor;
-
- @This
- private BuiltInConverters builtInConverters;
-
- @This
- private Converters converters;
-
- @This
- private JavaxJsonAdapters adapters;
-
- private boolean registrationDone = false;
-
- @Override
- public void activateService()
- {
- if( !registrationDone )
- {
- applySettings();
- registerBuiltInConverters();
- registerBaseJavaxJsonAdapters();
- registrationDone = true;
- }
- }
-
- @Override
- public void passivateService() {}
-
- private void applySettings()
- {
- JavaxJsonSettings settings
- = JavaxJsonSettings.orDefault( descriptor.metaInfo( JavaxJsonSettings.class ) );
- settings.getConverters()
- .forEach( ( type, converter ) -> converters.registerConverter( type, converter ) );
- settings.getAdapters()
- .forEach( ( type, adapter ) -> adapters.registerAdapter( type, adapter ) );
- }
-
- private void registerBuiltInConverters()
- {
- builtInConverters.registerBuiltInConverters( converters );
- }
-
- private void registerBaseJavaxJsonAdapters()
- {
- // Primitive Value types
- adapters.registerAdapter( ValueType.STRING, new StringAdapter() );
- adapters.registerAdapter( ValueType.CHARACTER, new CharacterAdapter() );
- adapters.registerAdapter( ValueType.BOOLEAN, new BooleanAdapter() );
- adapters.registerAdapter( ValueType.INTEGER, new IntegerAdapter() );
- adapters.registerAdapter( ValueType.LONG, new LongAdapter() );
- adapters.registerAdapter( ValueType.SHORT, new ShortAdapter() );
- adapters.registerAdapter( ValueType.BYTE, new ByteAdapter() );
- adapters.registerAdapter( ValueType.FLOAT, new FloatAdapter() );
- adapters.registerAdapter( ValueType.DOUBLE, new DoubleAdapter() );
- }
-
- private static abstract class ToJsonStringAdapter<T> implements JavaxJsonAdapter<T>
- {
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return JavaxJson.toJsonString( object );
- }
- }
-
- private static class StringAdapter extends ToJsonStringAdapter<String>
- {
- @Override
- public Class<String> type() { return String.class; }
-
- @Override
- public String deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- return JavaxJson.asString( json );
- }
- }
-
- private static class CharacterAdapter extends ToJsonStringAdapter<Character>
- {
- @Override
- public Class<Character> type() { return Character.class; }
-
- @Override
- public Character deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- String string = JavaxJson.asString( json );
- return string.isEmpty() ? null : string.charAt( 0 );
- }
- }
-
- private static class BooleanAdapter implements JavaxJsonAdapter<Boolean>
- {
- @Override
- public Class<Boolean> type() { return Boolean.class; }
-
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return type().cast( object ) ? JsonValue.TRUE : JsonValue.FALSE;
- }
-
- @Override
- public Boolean deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- switch( json.getValueType() )
- {
- case TRUE:
- return true;
- case FALSE:
- return false;
- case NULL:
- return null;
- case NUMBER:
- return ( (JsonNumber) json ).doubleValue() > 0;
- case STRING:
- return Boolean.valueOf( ( (JsonString) json ).getString() );
- default:
- throw new SerializationException( "Don't know how to deserialize Boolean from " + json );
- }
- }
- }
-
- private static class IntegerAdapter implements JavaxJsonAdapter<Integer>
- {
- @Override
- public Class<Integer> type() { return Integer.class; }
-
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
- .getJsonNumber( "value" );
- }
-
- @Override
- public Integer deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- switch( json.getValueType() )
- {
- case NULL:
- return null;
- case NUMBER:
- return ( (JsonNumber) json ).intValueExact();
- case STRING:
- String string = ( (JsonString) json ).getString();
- return string.isEmpty() ? 0 : Integer.parseInt( string );
- default:
- throw new SerializationException( "Don't know how to deserialize Integer from " + json );
- }
- }
- }
-
- private static class LongAdapter implements JavaxJsonAdapter<Long>
- {
- @Override
- public Class<Long> type() { return Long.class; }
-
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return Json.createObjectBuilder().add( "value", type().cast( object ) ).build().getJsonNumber(
- "value" );
- }
-
- @Override
- public Long deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- switch( json.getValueType() )
- {
- case NULL:
- return null;
- case NUMBER:
- return ( (JsonNumber) json ).longValueExact();
- case STRING:
- String string = ( (JsonString) json ).getString();
- return string.isEmpty() ? 0L : Long.parseLong( string );
- default:
- throw new SerializationException( "Don't know how to deserialize Long from " + json );
- }
- }
- }
-
- private static class ShortAdapter implements JavaxJsonAdapter<Short>
- {
- @Override
- public Class<Short> type() { return Short.class; }
-
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
- .getJsonNumber( "value" );
- }
-
- @Override
- public Short deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- switch( json.getValueType() )
- {
- case NULL:
- return null;
- case NUMBER:
- return (short) ( (JsonNumber) json ).intValueExact();
- case STRING:
- String string = ( (JsonString) json ).getString();
- return string.isEmpty() ? 0 : Short.parseShort( string );
- default:
- throw new SerializationException( "Don't know how to deserialize Short from " + json );
- }
- }
- }
-
- private static class ByteAdapter implements JavaxJsonAdapter<Byte>
- {
- @Override
- public Class<Byte> type() { return Byte.class; }
-
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
- .getJsonNumber( "value" );
- }
-
- @Override
- public Byte deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- switch( json.getValueType() )
- {
- case NULL:
- return null;
- case NUMBER:
- return (byte) ( (JsonNumber) json ).intValueExact();
- case STRING:
- String string = ( (JsonString) json ).getString();
- return string.isEmpty() ? 0 : Byte.parseByte( string );
- default:
- throw new SerializationException( "Don't know how to deserialize Byte from " + json );
- }
- }
- }
-
- private static class FloatAdapter implements JavaxJsonAdapter<Float>
- {
- @Override
- public Class<Float> type() { return Float.class; }
-
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
- .getJsonNumber( "value" );
- }
-
- @Override
- public Float deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- switch( json.getValueType() )
- {
- case NULL:
- return null;
- case NUMBER:
- return (float) ( (JsonNumber) json ).doubleValue();
- case STRING:
- String string = ( (JsonString) json ).getString();
- return string.isEmpty() ? 0F : Float.parseFloat( string );
- default:
- throw new SerializationException( "Don't know how to deserialize Float from " + json );
- }
- }
- }
-
- private static class DoubleAdapter implements JavaxJsonAdapter<Double>
- {
- @Override
- public Class<Double> type() { return Double.class; }
-
- @Override
- public JsonValue serialize( Object object, Function<Object, JsonValue> serialize )
- {
- return Json.createObjectBuilder().add( "value", type().cast( object ) ).build()
- .getJsonNumber( "value" );
- }
-
- @Override
- public Double deserialize( JsonValue json, BiFunction<JsonValue, ValueType, Object> deserialize )
- {
- switch( json.getValueType() )
- {
- case NULL:
- return null;
- case NUMBER:
- return ( (JsonNumber) json ).doubleValue();
- case STRING:
- String string = ( (JsonString) json ).getString();
- return string.isEmpty() ? 0D : Double.parseDouble( string );
- default:
- throw new SerializationException( "Don't know how to deserialize Double from " + json );
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationAssembler.java b/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationAssembler.java
index 4a041dd..16e2029 100644
--- a/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationAssembler.java
+++ b/extensions/serialization-javaxjson/src/main/java/org/apache/polygene/serialization/javaxjson/JavaxJsonSerializationAssembler.java
@@ -40,7 +40,7 @@ public class JavaxJsonSerializationAssembler extends Assemblers.VisibilityIdenti
@Override
public void assemble( ModuleAssembly module )
{
- ServiceDeclaration declaration = module.services( JavaxJsonSerializationService.class )
+ ServiceDeclaration declaration = module.services( JavaxJsonSerialization.class )
.withTypes( Serialization.class,
Serializer.class, Deserializer.class,
JsonSerialization.class,
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdapters.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdapters.java b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdapters.java
index 273789d..716be65 100644
--- a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdapters.java
+++ b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdapters.java
@@ -19,10 +19,21 @@ package org.apache.polygene.serialization.javaxxml;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import org.apache.polygene.api.injection.scope.This;
+import org.apache.polygene.api.injection.scope.Uses;
+import org.apache.polygene.api.mixin.Initializable;
import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.serialization.Converters;
+import org.apache.polygene.api.service.ServiceDescriptor;
import org.apache.polygene.api.type.ValueType;
+import org.apache.polygene.spi.serialization.BuiltInConverters;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
import static org.apache.polygene.api.type.HasTypesCollectors.closestType;
+import static org.apache.polygene.serialization.javaxxml.JavaxXmlSettings.orDefault;
@Mixins( JavaxXmlAdapters.Mixin.class )
public interface JavaxXmlAdapters
@@ -36,10 +47,30 @@ public interface JavaxXmlAdapters
return adapterFor( ValueType.of( type ) );
}
- class Mixin implements JavaxXmlAdapters
+ class Mixin implements JavaxXmlAdapters, Initializable
{
private Map<ValueType, JavaxXmlAdapter<?>> adapters = new LinkedHashMap<>();
+ @Uses
+ private ServiceDescriptor descriptor;
+
+ @This
+ private BuiltInConverters builtInConverters;
+
+ @This
+ private Converters converters;
+
+ @Override
+ public void initialize() throws Exception
+ {
+ JavaxXmlSettings settings = orDefault( descriptor.metaInfo( JavaxXmlSettings.class ) );
+ settings.getConverters()
+ .forEach( ( type, converter ) -> converters.registerConverter( type, converter ) );
+ builtInConverters.registerBuiltInConverters( converters );
+ settings.getAdapters().forEach( adapters::put );
+ registerBaseJavaxXmlAdapters();
+ }
+
@Override
public void registerAdapter( final ValueType valueType, final JavaxXmlAdapter<?> adapter )
{
@@ -60,5 +91,137 @@ public interface JavaxXmlAdapters
{
return (JavaxXmlAdapter<T>) adapter;
}
+
+ private void registerBaseJavaxXmlAdapters()
+ {
+ // Primitive Value types
+ adapters.put( ValueType.STRING, new StringAdapter() );
+ adapters.put( ValueType.CHARACTER, new CharacterAdapter() );
+ adapters.put( ValueType.BOOLEAN, new BooleanAdapter() );
+ adapters.put( ValueType.INTEGER, new IntegerAdapter() );
+ adapters.put( ValueType.LONG, new LongAdapter() );
+ adapters.put( ValueType.SHORT, new ShortAdapter() );
+ adapters.put( ValueType.BYTE, new ByteAdapter() );
+ adapters.put( ValueType.FLOAT, new FloatAdapter() );
+ adapters.put( ValueType.DOUBLE, new DoubleAdapter() );
+ }
+
+ private static abstract class ToStringTextNodeAdapter<T> implements JavaxXmlAdapter<T>
+ {
+ @Override
+ public Node serialize( Document document, Object object, Function<Object, Node> serialize )
+ {
+ return document.createTextNode( object.toString() );
+ }
+ }
+
+ private static class StringAdapter extends ToStringTextNodeAdapter<String>
+ {
+ @Override
+ public Class<String> type() { return String.class; }
+
+ @Override
+ public String deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return node.getNodeValue();
+ }
+ }
+
+ private static class CharacterAdapter extends ToStringTextNodeAdapter<Character>
+ {
+ @Override
+ public Class<Character> type() { return Character.class; }
+
+ @Override
+ public Character deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ String string = node.getNodeValue();
+ return string.isEmpty() ? null : string.charAt( 0 );
+ }
+ }
+
+ private static class BooleanAdapter extends ToStringTextNodeAdapter<Boolean>
+ {
+ @Override
+ public Class<Boolean> type() { return Boolean.class; }
+
+ @Override
+ public Boolean deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return Boolean.valueOf( node.getNodeValue() );
+ }
+ }
+
+ private static class IntegerAdapter extends ToStringTextNodeAdapter<Integer>
+ {
+ @Override
+ public Class<Integer> type() { return Integer.class; }
+
+ @Override
+ public Integer deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return Integer.valueOf( node.getNodeValue() );
+ }
+ }
+
+ private static class LongAdapter extends ToStringTextNodeAdapter<Long>
+ {
+ @Override
+ public Class<Long> type() { return Long.class; }
+
+ @Override
+ public Long deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return Long.valueOf( node.getNodeValue() );
+ }
+ }
+
+ private static class ShortAdapter extends ToStringTextNodeAdapter<Short>
+ {
+ @Override
+ public Class<Short> type() { return Short.class; }
+
+ @Override
+ public Short deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return Short.valueOf( node.getNodeValue() );
+ }
+ }
+
+ private static class ByteAdapter extends ToStringTextNodeAdapter<Byte>
+ {
+ @Override
+ public Class<Byte> type() { return Byte.class; }
+
+ @Override
+ public Byte deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return Byte.valueOf( node.getNodeValue() );
+ }
+ }
+
+ private static class FloatAdapter extends ToStringTextNodeAdapter<Float>
+ {
+ @Override
+ public Class<Float> type() { return Float.class; }
+
+ @Override
+ public Float deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return Float.valueOf( node.getNodeValue() );
+ }
+ }
+
+ private static class DoubleAdapter extends ToStringTextNodeAdapter<Double>
+ {
+ @Override
+ public Class<Double> type() { return Double.class; }
+
+ @Override
+ public Double deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
+ {
+ return Double.valueOf( node.getNodeValue() );
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationAssembler.java b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationAssembler.java
index 63ed345..a543dce 100644
--- a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationAssembler.java
+++ b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationAssembler.java
@@ -40,7 +40,7 @@ public class JavaxXmlSerializationAssembler extends Assemblers.VisibilityIdentit
@Override
public void assemble( ModuleAssembly module )
{
- ServiceDeclaration declaration = module.services( JavaxXmlSerializationService.class )
+ ServiceDeclaration declaration = module.services( JavaxXmlSerialization.class )
.withTypes( Serialization.class,
Serializer.class, Deserializer.class,
XmlSerialization.class,
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationService.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationService.java b/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationService.java
deleted file mode 100644
index 4ff2e1c..0000000
--- a/extensions/serialization-javaxxml/src/main/java/org/apache/polygene/serialization/javaxxml/JavaxXmlSerializationService.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.polygene.serialization.javaxxml;
-
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import org.apache.polygene.api.injection.scope.This;
-import org.apache.polygene.api.injection.scope.Uses;
-import org.apache.polygene.api.mixin.Mixins;
-import org.apache.polygene.api.serialization.Converters;
-import org.apache.polygene.api.service.ServiceActivation;
-import org.apache.polygene.api.service.ServiceDescriptor;
-import org.apache.polygene.api.type.ValueType;
-import org.apache.polygene.spi.serialization.BuiltInConverters;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-@Mixins( JavaxXmlSerializationService.Activation.class )
-public interface JavaxXmlSerializationService extends JavaxXmlSerialization, ServiceActivation
-{
- class Activation implements ServiceActivation
- {
- @Uses
- private ServiceDescriptor descriptor;
-
- @This
- private BuiltInConverters builtInConverters;
-
- @This
- private Converters converters;
-
- @This
- private JavaxXmlAdapters adapters;
-
- private boolean registrationDone = false;
-
- @Override
- public void activateService()
- {
- if( !registrationDone )
- {
- applySettings();
- registerBuiltInConverters();
- registerBaseJavaxXmlAdapters();
- registrationDone = true;
- }
- }
-
- @Override
- public void passivateService() {}
-
- private void applySettings()
- {
- JavaxXmlSettings settings
- = JavaxXmlSettings.orDefault( descriptor.metaInfo( JavaxXmlSettings.class ) );
- settings.getConverters()
- .forEach( ( type, converter ) -> converters.registerConverter( type, converter ) );
- settings.getAdapters()
- .forEach( ( type, adapter ) -> adapters.registerAdapter( type, adapter ) );
- }
-
- private void registerBuiltInConverters()
- {
- builtInConverters.registerBuiltInConverters( converters );
- }
-
- private void registerBaseJavaxXmlAdapters()
- {
- // Primitive Value types
- adapters.registerAdapter( ValueType.STRING, new StringAdapter() );
- adapters.registerAdapter( ValueType.CHARACTER, new CharacterAdapter() );
- adapters.registerAdapter( ValueType.BOOLEAN, new BooleanAdapter() );
- adapters.registerAdapter( ValueType.INTEGER, new IntegerAdapter() );
- adapters.registerAdapter( ValueType.LONG, new LongAdapter() );
- adapters.registerAdapter( ValueType.SHORT, new ShortAdapter() );
- adapters.registerAdapter( ValueType.BYTE, new ByteAdapter() );
- adapters.registerAdapter( ValueType.FLOAT, new FloatAdapter() );
- adapters.registerAdapter( ValueType.DOUBLE, new DoubleAdapter() );
- }
-
- private static abstract class ToStringTextNodeAdapter<T> implements JavaxXmlAdapter<T>
- {
- @Override
- public Node serialize( Document document, Object object, Function<Object, Node> serialize )
- {
- return document.createTextNode( object.toString() );
- }
- }
-
- private static class StringAdapter extends ToStringTextNodeAdapter<String>
- {
- @Override
- public Class<String> type() { return String.class; }
-
- @Override
- public String deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return node.getNodeValue();
- }
- }
-
- private static class CharacterAdapter extends ToStringTextNodeAdapter<Character>
- {
- @Override
- public Class<Character> type() { return Character.class; }
-
- @Override
- public Character deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- String string = node.getNodeValue();
- return string.isEmpty() ? null : string.charAt( 0 );
- }
- }
-
- private static class BooleanAdapter extends ToStringTextNodeAdapter<Boolean>
- {
- @Override
- public Class<Boolean> type() { return Boolean.class; }
-
- @Override
- public Boolean deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return Boolean.valueOf( node.getNodeValue() );
- }
- }
-
- private static class IntegerAdapter extends ToStringTextNodeAdapter<Integer>
- {
- @Override
- public Class<Integer> type() { return Integer.class; }
-
- @Override
- public Integer deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return Integer.valueOf( node.getNodeValue() );
- }
- }
-
- private static class LongAdapter extends ToStringTextNodeAdapter<Long>
- {
- @Override
- public Class<Long> type() { return Long.class; }
-
- @Override
- public Long deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return Long.valueOf( node.getNodeValue() );
- }
- }
-
- private static class ShortAdapter extends ToStringTextNodeAdapter<Short>
- {
- @Override
- public Class<Short> type() { return Short.class; }
-
- @Override
- public Short deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return Short.valueOf( node.getNodeValue() );
- }
- }
-
- private static class ByteAdapter extends ToStringTextNodeAdapter<Byte>
- {
- @Override
- public Class<Byte> type() { return Byte.class; }
-
- @Override
- public Byte deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return Byte.valueOf( node.getNodeValue() );
- }
- }
-
- private static class FloatAdapter extends ToStringTextNodeAdapter<Float>
- {
- @Override
- public Class<Float> type() { return Float.class; }
-
- @Override
- public Float deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return Float.valueOf( node.getNodeValue() );
- }
- }
-
- private static class DoubleAdapter extends ToStringTextNodeAdapter<Double>
- {
- @Override
- public Class<Double> type() { return Double.class; }
-
- @Override
- public Double deserialize( Node node, BiFunction<Node, ValueType, Object> deserialize )
- {
- return Double.valueOf( node.getNodeValue() );
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-javaxxml/src/test/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdaptersTest.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-javaxxml/src/test/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdaptersTest.java b/extensions/serialization-javaxxml/src/test/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdaptersTest.java
index 16a2fb3..bf37395 100644
--- a/extensions/serialization-javaxxml/src/test/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdaptersTest.java
+++ b/extensions/serialization-javaxxml/src/test/java/org/apache/polygene/serialization/javaxxml/JavaxXmlAdaptersTest.java
@@ -18,7 +18,7 @@ public class JavaxXmlAdaptersTest extends AbstractPolygeneTest
public void assemble( ModuleAssembly module )
{
new JavaxXmlSerializationAssembler().assemble( module );
- module.services( JavaxXmlSerializationService.class )
+ module.services( JavaxXmlSerialization.class )
.withTypes( JavaxXmlAdapters.class );
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapters.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapters.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapters.java
index 892b389..f87b9cd 100644
--- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapters.java
+++ b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapters.java
@@ -19,10 +19,21 @@ package org.apache.polygene.serialization.msgpack;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import org.apache.polygene.api.injection.scope.This;
+import org.apache.polygene.api.injection.scope.Uses;
+import org.apache.polygene.api.mixin.Initializable;
import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.serialization.Converters;
+import org.apache.polygene.api.service.ServiceDescriptor;
import org.apache.polygene.api.type.ValueType;
+import org.apache.polygene.spi.serialization.BuiltInConverters;
+import org.msgpack.value.Value;
+import org.msgpack.value.ValueFactory;
import static org.apache.polygene.api.type.HasTypesCollectors.closestType;
+import static org.apache.polygene.serialization.msgpack.MessagePackSettings.orDefault;
@Mixins( MessagePackAdapters.Mixin.class )
public interface MessagePackAdapters
@@ -36,10 +47,30 @@ public interface MessagePackAdapters
return adapterFor( ValueType.of( type ) );
}
- class Mixin implements MessagePackAdapters
+ class Mixin implements MessagePackAdapters, Initializable
{
private Map<ValueType, MessagePackAdapter<?>> adapters = new LinkedHashMap<>();
+ @Uses
+ private ServiceDescriptor descriptor;
+
+ @This
+ private BuiltInConverters builtInConverters;
+
+ @This
+ private Converters converters;
+
+ @Override
+ public void initialize()
+ {
+ MessagePackSettings settings = orDefault( descriptor.metaInfo( MessagePackSettings.class ) );
+ settings.getConverters()
+ .forEach( ( type, converter ) -> converters.registerConverter( type, converter ) );
+ builtInConverters.registerBuiltInConverters( converters );
+ settings.getAdapters().forEach( adapters::put );
+ registerBaseMessagePackAdapters();
+ }
+
@Override
public void registerAdapter( ValueType valueType, MessagePackAdapter<?> adapter )
{
@@ -60,5 +91,179 @@ public interface MessagePackAdapters
{
return (MessagePackAdapter<T>) adapter;
}
+
+ private void registerBaseMessagePackAdapters()
+ {
+ // Primitive Value types
+ adapters.put( ValueType.STRING, new StringAdapter() );
+ adapters.put( ValueType.CHARACTER, new CharacterAdapter() );
+ adapters.put( ValueType.BOOLEAN, new BooleanAdapter() );
+ adapters.put( ValueType.INTEGER, new IntegerAdapter() );
+ adapters.put( ValueType.LONG, new LongAdapter() );
+ adapters.put( ValueType.SHORT, new ShortAdapter() );
+ adapters.put( ValueType.BYTE, new ByteAdapter() );
+ adapters.put( ValueType.FLOAT, new FloatAdapter() );
+ adapters.put( ValueType.DOUBLE, new DoubleAdapter() );
+ }
+
+ private static abstract class ToStringAdapter<T> implements MessagePackAdapter<T>
+ {
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newString( object.toString() );
+ }
+ }
+
+ private static class StringAdapter extends ToStringAdapter<String>
+ {
+ @Override
+ public Class<String> type() { return String.class; }
+
+ @Override
+ public String deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asStringValue().asString();
+ }
+ }
+
+ private static class CharacterAdapter extends ToStringAdapter<Character>
+ {
+ @Override
+ public Class<Character> type() { return Character.class; }
+
+ @Override
+ public Character deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ String string = value.asStringValue().asString();
+ return string.isEmpty() ? null : string.charAt( 0 );
+ }
+ }
+
+ private static class BooleanAdapter implements MessagePackAdapter<Boolean>
+ {
+ @Override
+ public Class<Boolean> type() { return Boolean.class; }
+
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newBoolean( (Boolean) object );
+ }
+
+ @Override
+ public Boolean deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asBooleanValue().getBoolean();
+ }
+ }
+
+ private static class IntegerAdapter implements MessagePackAdapter<Integer>
+ {
+ @Override
+ public Class<Integer> type() { return Integer.class; }
+
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newInteger( (Integer) object );
+ }
+
+ @Override
+ public Integer deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asIntegerValue().asInt();
+ }
+ }
+
+ private static class LongAdapter implements MessagePackAdapter<Long>
+ {
+ @Override
+ public Class<Long> type() { return Long.class; }
+
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newInteger( (Long) object );
+ }
+
+ @Override
+ public Long deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asIntegerValue().asLong();
+ }
+ }
+
+ private static class ShortAdapter implements MessagePackAdapter<Short>
+ {
+ @Override
+ public Class<Short> type() { return Short.class; }
+
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newInteger( (Short) object );
+ }
+
+ @Override
+ public Short deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asIntegerValue().asShort();
+ }
+ }
+
+ private static class ByteAdapter implements MessagePackAdapter<Byte>
+ {
+ @Override
+ public Class<Byte> type() { return Byte.class; }
+
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newInteger( (Byte) object );
+ }
+
+ @Override
+ public Byte deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asIntegerValue().asByte();
+ }
+ }
+
+ private static class FloatAdapter implements MessagePackAdapter<Float>
+ {
+ @Override
+ public Class<Float> type() { return Float.class; }
+
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newFloat( (Float) object );
+ }
+
+ @Override
+ public Float deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asFloatValue().toFloat();
+ }
+ }
+
+ private static class DoubleAdapter implements MessagePackAdapter<Double>
+ {
+ @Override
+ public Class<Double> type() { return Double.class; }
+
+ @Override
+ public Value serialize( Object object, Function<Object, Value> serialize )
+ {
+ return ValueFactory.newFloat( (Double) object );
+ }
+
+ @Override
+ public Double deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
+ {
+ return value.asFloatValue().toDouble();
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationAssembler.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationAssembler.java
index 63536cc..1a576ce 100644
--- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationAssembler.java
+++ b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationAssembler.java
@@ -37,7 +37,7 @@ public class MessagePackSerializationAssembler extends Assemblers.VisibilityIden
@Override
public void assemble( ModuleAssembly module )
{
- ServiceDeclaration declaration = module.services( MessagePackSerializationService.class )
+ ServiceDeclaration declaration = module.services( MessagePackSerialization.class )
.withTypes( Serialization.class, Serializer.class, Deserializer.class )
.visibleIn( visibility() );
if( hasIdentity() )
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/37792b2f/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationService.java
----------------------------------------------------------------------
diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationService.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationService.java
deleted file mode 100644
index 43afb3e..0000000
--- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationService.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.polygene.serialization.msgpack;
-
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import org.apache.polygene.api.injection.scope.This;
-import org.apache.polygene.api.injection.scope.Uses;
-import org.apache.polygene.api.mixin.Mixins;
-import org.apache.polygene.api.serialization.Converters;
-import org.apache.polygene.api.service.ServiceActivation;
-import org.apache.polygene.api.service.ServiceDescriptor;
-import org.apache.polygene.api.type.ValueType;
-import org.apache.polygene.spi.serialization.BuiltInConverters;
-import org.msgpack.value.Value;
-import org.msgpack.value.ValueFactory;
-
-@Mixins( MessagePackSerializationService.Activation.class )
-public interface MessagePackSerializationService extends MessagePackSerialization, ServiceActivation
-{
- class Activation implements ServiceActivation
- {
- @Uses
- private ServiceDescriptor descriptor;
-
- @This
- private BuiltInConverters builtInConverters;
-
- @This
- private Converters converters;
-
- @This
- private MessagePackAdapters adapters;
-
- private boolean registrationDone = false;
-
- @Override
- public void activateService()
- {
- if( !registrationDone )
- {
- applySettings();
- registerBuiltInConverters();
- registerBaseMessagePackAdapters();
- registrationDone = true;
- }
- }
-
- @Override
- public void passivateService() {}
-
- private void applySettings()
- {
- MessagePackSettings settings
- = MessagePackSettings.orDefault( descriptor.metaInfo( MessagePackSettings.class ) );
- settings.getConverters()
- .forEach( ( type, converter ) -> converters.registerConverter( type, converter ) );
- settings.getAdapters()
- .forEach( ( type, adapter ) -> adapters.registerAdapter( type, adapter ) );
- }
-
- private void registerBuiltInConverters()
- {
- builtInConverters.registerBuiltInConverters( converters );
- }
-
- private void registerBaseMessagePackAdapters()
- {
- // Primitive Value types
- adapters.registerAdapter( ValueType.STRING, new StringAdapter() );
- adapters.registerAdapter( ValueType.CHARACTER, new CharacterAdapter() );
- adapters.registerAdapter( ValueType.BOOLEAN, new BooleanAdapter() );
- adapters.registerAdapter( ValueType.INTEGER, new IntegerAdapter() );
- adapters.registerAdapter( ValueType.LONG, new LongAdapter() );
- adapters.registerAdapter( ValueType.SHORT, new ShortAdapter() );
- adapters.registerAdapter( ValueType.BYTE, new ByteAdapter() );
- adapters.registerAdapter( ValueType.FLOAT, new FloatAdapter() );
- adapters.registerAdapter( ValueType.DOUBLE, new DoubleAdapter() );
- }
-
- private static abstract class ToStringAdapter<T> implements MessagePackAdapter<T>
- {
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newString( object.toString() );
- }
- }
-
- private static class StringAdapter extends ToStringAdapter<String>
- {
- @Override
- public Class<String> type() { return String.class; }
-
- @Override
- public String deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asStringValue().asString();
- }
- }
-
- private static class CharacterAdapter extends ToStringAdapter<Character>
- {
- @Override
- public Class<Character> type() { return Character.class; }
-
- @Override
- public Character deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- String string = value.asStringValue().asString();
- return string.isEmpty() ? null : string.charAt( 0 );
- }
- }
-
- private static class BooleanAdapter implements MessagePackAdapter<Boolean>
- {
- @Override
- public Class<Boolean> type() { return Boolean.class; }
-
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newBoolean( (Boolean) object );
- }
-
- @Override
- public Boolean deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asBooleanValue().getBoolean();
- }
- }
-
- private static class IntegerAdapter implements MessagePackAdapter<Integer>
- {
- @Override
- public Class<Integer> type() { return Integer.class; }
-
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newInteger( (Integer) object );
- }
-
- @Override
- public Integer deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asIntegerValue().asInt();
- }
- }
-
- private static class LongAdapter implements MessagePackAdapter<Long>
- {
- @Override
- public Class<Long> type() { return Long.class; }
-
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newInteger( (Long) object );
- }
-
- @Override
- public Long deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asIntegerValue().asLong();
- }
- }
-
- private static class ShortAdapter implements MessagePackAdapter<Short>
- {
- @Override
- public Class<Short> type() { return Short.class; }
-
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newInteger( (Short) object );
- }
-
- @Override
- public Short deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asIntegerValue().asShort();
- }
- }
-
- private static class ByteAdapter implements MessagePackAdapter<Byte>
- {
- @Override
- public Class<Byte> type() { return Byte.class; }
-
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newInteger( (Byte) object );
- }
-
- @Override
- public Byte deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asIntegerValue().asByte();
- }
- }
-
- private static class FloatAdapter implements MessagePackAdapter<Float>
- {
- @Override
- public Class<Float> type() { return Float.class; }
-
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newFloat( (Float) object );
- }
-
- @Override
- public Float deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asFloatValue().toFloat();
- }
- }
-
- private static class DoubleAdapter implements MessagePackAdapter<Double>
- {
- @Override
- public Class<Double> type() { return Double.class; }
-
- @Override
- public Value serialize( Object object, Function<Object, Value> serialize )
- {
- return ValueFactory.newFloat( (Double) object );
- }
-
- @Override
- public Double deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize )
- {
- return value.asFloatValue().toDouble();
- }
- }
- }
-}