http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackPlainValueSerializationTest.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackPlainValueSerializationTest.java b/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackPlainValueSerializationTest.java new file mode 100644 index 0000000..2a0d1b4 --- /dev/null +++ b/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackPlainValueSerializationTest.java @@ -0,0 +1,43 @@ +/* + * 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.messagepack; + +import java.util.Base64; +import org.apache.polygene.bootstrap.ModuleAssembly; +import org.apache.polygene.serialization.messagepack.assembly.MessagePackSerializationAssembler; +import org.apache.polygene.test.serialization.AbstractPlainValueSerializationTest; +import org.msgpack.core.MessagePack; + +public class MessagePackPlainValueSerializationTest extends AbstractPlainValueSerializationTest +{ + @Override + public void assemble( ModuleAssembly module ) + { + new MessagePackSerializationAssembler().withMessagePackSettings( withTestSettings( new MessagePackSettings() ) ) + .assemble( module ); + } + + @Override + protected String getSingleStringRawState( String state ) throws Exception + { + return MessagePack.newDefaultUnpacker( Base64.getDecoder().decode( state ) ) + .unpackValue().asStringValue().asString(); + } +}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackValueCompositeSerializationTest.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackValueCompositeSerializationTest.java b/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackValueCompositeSerializationTest.java new file mode 100644 index 0000000..b1491f8 --- /dev/null +++ b/extensions/serialization-messagepack/src/test/java/org/apache/polygene/serialization/messagepack/MessagePackValueCompositeSerializationTest.java @@ -0,0 +1,36 @@ +/* + * 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.messagepack; + +import org.apache.polygene.bootstrap.ModuleAssembly; +import org.apache.polygene.serialization.messagepack.assembly.MessagePackSerializationAssembler; +import org.apache.polygene.test.serialization.AbstractValueCompositeSerializationTest; + +public class MessagePackValueCompositeSerializationTest extends AbstractValueCompositeSerializationTest +{ + // START SNIPPET: assembly + @Override + public void assemble( ModuleAssembly module ) + { + new MessagePackSerializationAssembler().assemble( module ); + // END SNIPPET: assembly + super.assemble( module ); + // START SNIPPET: assembly + } + // END SNIPPET: assembly +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/build.gradle b/extensions/serialization-msgpack/build.gradle deleted file mode 100644 index 6f51948..0000000 --- a/extensions/serialization-msgpack/build.gradle +++ /dev/null @@ -1,36 +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. - */ - -apply plugin: 'polygene-extension' - -description = "Apache Polygene⢠MessagePack Serialization Extension" - -jar { manifest { name = "Apache Polygene⢠Extension - Serialization - MessagePack" } } - -dependencies { - api polygene.core.bootstrap - api libraries.msgpack - - implementation libraries.commons_lang - - runtimeOnly polygene.core.runtime - - testImplementation polygene.core.testsupport - - testRuntimeOnly libraries.logback -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/dev-status.xml ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/dev-status.xml b/extensions/serialization-msgpack/dev-status.xml deleted file mode 100644 index 8086fb0..0000000 --- a/extensions/serialization-msgpack/dev-status.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - ~ 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. - ~ - ~ - --> -<module xmlns="http://polygene.apache.org/schemas/2008/dev-status/1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://polygene.apache.org/schemas/2008/dev-status/1 - http://polygene.apache.org/schemas/2008/dev-status/1/dev-status.xsd"> - <status> - <!--none,early,beta,stable,mature--> - <codebase>early</codebase> - - <!-- none, brief, good, complete --> - <documentation>none</documentation> - - <!-- none, some, good, complete --> - <unittests>some</unittests> - </status> - <licenses> - <license>ALv2</license> - </licenses> -</module> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/docs/serialization-msgpack.txt ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/docs/serialization-msgpack.txt b/extensions/serialization-msgpack/src/docs/serialization-msgpack.txt deleted file mode 100644 index 3ae0fa4..0000000 --- a/extensions/serialization-msgpack/src/docs/serialization-msgpack.txt +++ /dev/null @@ -1,43 +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. -/////////////////////////////////////////////////////////////// - -[[extension-serialization-msgpack,MessagePack serialization]] -= MessagePack serialization = - -[devstatus] --------------- -source=extensions/serialization-msgpack/dev-status.xml --------------- - -`Serialization` service backed by http://msgpack.org/[MessagePack] that produce and consume binary payloads. -See <<core-api-serialization>> and <<core-spi-serialization>>. - -include::../../build/docs/buildinfo/artifact.txt[] - -// TODO Include sample model and its output from test code & resources - -== Assembly == - -Assembly is done using the provided Assembler: - -[snippet,java] ----- -source=extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackValueCompositeSerializationTest.java -tag=assembly ----- \ No newline at end of file http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapter.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapter.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapter.java deleted file mode 100644 index 5ca8a60..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapter.java +++ /dev/null @@ -1,57 +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.io.IOException; -import java.util.function.BiFunction; -import java.util.function.Function; -import org.apache.polygene.api.type.ValueType; -import org.msgpack.value.Value; - -/** - * Adapter for MessagePack (de)serialization. - * - * @param <T> the adapted type - */ -public interface MessagePackAdapter<T> -{ - /** - * @return the adapted type - */ - Class<T> type(); - - /** - * Serialize. - * - * @param object Object to serialize, never null - * @param serialize Serialization function for nested structure serialization - * @return MessagePack Value - */ - Value serialize( Object object, Function<Object, Value> serialize ) - throws IOException; - - /** - * Deserialize. - * - * @param value MessagePack value - * @param deserialize Deserialization function for nested structure deserialization - * @return Deserialized object - */ - T deserialize( Value value, BiFunction<Value, ValueType, Object> deserialize ) - throws IOException; -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/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 deleted file mode 100644 index f87b9cd..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackAdapters.java +++ /dev/null @@ -1,269 +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.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 -{ - void registerAdapter( ValueType valueType, MessagePackAdapter<?> adapter ); - - <T> MessagePackAdapter<T> adapterFor( ValueType valueType ); - - default <T> MessagePackAdapter<T> adapterFor( Class<T> type ) - { - return adapterFor( ValueType.of( type ) ); - } - - 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 ) - { - adapters.put( valueType, adapter ); - } - - @Override - public <T> MessagePackAdapter<T> adapterFor( final ValueType valueType ) - { - return castAdapter( adapters.keySet().stream() - .collect( closestType( valueType ) ) - .map( adapters::get ) - .orElse( null ) ); - } - - @SuppressWarnings( "unchecked" ) - private <T> MessagePackAdapter<T> castAdapter( MessagePackAdapter<?> adapter ) - { - 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/b7f30354/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackDeserializer.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackDeserializer.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackDeserializer.java deleted file mode 100644 index 9afe450..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackDeserializer.java +++ /dev/null @@ -1,313 +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.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Array; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.function.Function; -import java.util.stream.Stream; -import org.apache.polygene.api.association.AssociationDescriptor; -import org.apache.polygene.api.entity.EntityReference; -import org.apache.polygene.api.injection.scope.This; -import org.apache.polygene.api.mixin.Mixins; -import org.apache.polygene.api.property.PropertyDescriptor; -import org.apache.polygene.api.serialization.Converter; -import org.apache.polygene.api.serialization.Converters; -import org.apache.polygene.api.serialization.Deserializer; -import org.apache.polygene.api.serialization.SerializationException; -import org.apache.polygene.api.structure.ModuleDescriptor; -import org.apache.polygene.api.type.ArrayType; -import org.apache.polygene.api.type.CollectionType; -import org.apache.polygene.api.type.EnumType; -import org.apache.polygene.api.type.MapType; -import org.apache.polygene.api.type.ValueCompositeType; -import org.apache.polygene.api.type.ValueType; -import org.apache.polygene.api.value.ValueBuilder; -import org.apache.polygene.api.value.ValueDescriptor; -import org.apache.polygene.spi.serialization.AbstractBinaryDeserializer; -import org.msgpack.core.MessagePack; -import org.msgpack.core.MessageUnpacker; -import org.msgpack.value.ArrayValue; -import org.msgpack.value.ImmutableValue; -import org.msgpack.value.MapValue; -import org.msgpack.value.Value; - -import static java.util.Collections.unmodifiableList; -import static java.util.Collections.unmodifiableMap; -import static java.util.Collections.unmodifiableSet; -import static org.apache.polygene.api.util.Collectors.toMap; - -@Mixins( MessagePackDeserializer.Mixin.class ) -public interface MessagePackDeserializer extends Deserializer -{ - class Mixin extends AbstractBinaryDeserializer - { - @This - private Converters converters; - - @This - private MessagePackAdapters adapters; - - @Override - public <T> T deserialize( ModuleDescriptor module, ValueType valueType, InputStream state ) - { - MessageUnpacker unpacker = MessagePack.newDefaultUnpacker( state ); - try - { - if( !unpacker.hasNext() ) - { - return null; - } - ImmutableValue value = unpacker.unpackValue(); - return doDeserialize( module, valueType, value ); - } - catch( IOException e ) - { - throw new SerializationException( "Unable to deserialize " + valueType ); - } - } - - @SuppressWarnings( "unchecked" ) - private <T> T doDeserialize( ModuleDescriptor module, ValueType valueType, Value value ) - { - try - { - if( value == null || value.isNilValue() ) - { - return null; - } - Converter<Object> converter = converters.converterFor( valueType ); - if( converter != null ) - { - return (T) converter.fromString( doDeserialize( module, ValueType.STRING, value ).toString() ); - } - MessagePackAdapter<?> adapter = adapters.adapterFor( valueType ); - if( adapter != null ) - { - return (T) adapter.deserialize( value, ( val, type ) -> doDeserialize( module, valueType, val ) ); - } - if( EnumType.class.isAssignableFrom( valueType.getClass() ) ) - { - return (T) Enum.valueOf( (Class) valueType.primaryType(), value.asStringValue().asString() ); - } - if( ArrayType.class.isAssignableFrom( valueType.getClass() ) ) - { - return (T) deserializeArray( module, (ArrayType) valueType, value ); - } - if( CollectionType.class.isAssignableFrom( valueType.getClass() ) ) - { - return (T) deserializeCollection( module, (CollectionType) valueType, value.asArrayValue() ); - } - if( MapType.class.isAssignableFrom( valueType.getClass() ) ) - { - return (T) deserializeMap( module, (MapType) valueType, value.asMapValue() ); - } - if( ValueCompositeType.class.isAssignableFrom( valueType.getClass() ) ) - { - return (T) deserializeValueComposite( module, (ValueCompositeType) valueType, value.asMapValue() ); - } - return (T) doGuessDeserialize( module, valueType, value ); - } - catch( IOException | ClassNotFoundException ex ) - { - throw new SerializationException( "Unable to deserialize " + valueType + " from: " + value ); - } - } - - private Object deserializeArray( ModuleDescriptor module, ArrayType arrayType, Value value ) throws IOException - { - if( arrayType.isArrayOfPrimitiveBytes() ) - { - return value.asBinaryValue().asByteArray(); - } - CollectionType collectionType = CollectionType.listOf( arrayType.collectedType() ); - List collection = (List) deserializeCollection( module, collectionType, value.asArrayValue() ); - Object array = Array.newInstance( arrayType.collectedType().primaryType(), collection.size() ); - for( int idx = 0; idx < collection.size(); idx++ ) - { - Array.set( array, idx, collection.get( idx ) ); - } - return array; - } - - private Collection<?> deserializeCollection( ModuleDescriptor module, CollectionType collectionType, - ArrayValue value ) throws IOException - { - Collection<?> collection = collectionType.isSet() ? new LinkedHashSet( value.size() ) - : new ArrayList( value.size() ); - for( Value element : value.list() ) - { - collection.add( doDeserialize( module, collectionType.collectedType(), element ) ); - } - return collection; - } - - private Map<Object, Object> deserializeMap( ModuleDescriptor module, MapType mapType, MapValue value ) - throws IOException - { - Map<Object, Object> map = new LinkedHashMap<>( value.size() ); - for( Map.Entry<Value, Value> entry : value.entrySet() ) - { - Object key = doDeserialize( module, mapType.keyType(), entry.getKey() ); - Object val = doDeserialize( module, mapType.valueType(), entry.getValue() ); - map.put( key, val ); - } - return map; - } - - private Object deserializeValueComposite( ModuleDescriptor module, ValueCompositeType valueType, - MapValue value ) throws IOException - { - Map<String, Value> namedValues = value.map().entrySet().stream().map( - entry -> - { - String key = doDeserialize( module, ValueType.STRING, entry.getKey() ); - return new AbstractMap.SimpleImmutableEntry<>( key, entry.getValue() ); - } - ).collect( toMap( HashMap::new ) ); - - String typeInfo = null; - if( namedValues.containsKey( "_type" ) ) - { - typeInfo = doDeserialize( module, ValueType.STRING, namedValues.get( "_type" ) ); - } - if( typeInfo != null ) - { - ValueDescriptor descriptor = module.valueDescriptor( typeInfo ); - if( descriptor == null ) - { - throw new SerializationException( - "_type: " + typeInfo + " could not be resolved while deserializing " + value ); - } - valueType = descriptor.valueType(); - } - - ValueBuilder builder = module.instance().newValueBuilderWithState( - valueType.primaryType(), - propertyFunction( module, namedValues ), - associationFunction( module, namedValues ), - manyAssociationFunction( module, namedValues ), - namedAssociationFunction( module, namedValues ) ); - return builder.newInstance(); - } - - private Function<PropertyDescriptor, Object> propertyFunction( ModuleDescriptor module, - Map<String, Value> namedValues ) - { - return property -> - { - Value value = namedValues.get( property.qualifiedName().name() ); - if( value != null ) - { - Object propertyValue = doDeserialize( module, property.valueType(), value ); - if( property.isImmutable() ) - { - if( propertyValue instanceof Set ) - { - return unmodifiableSet( (Set<?>) propertyValue ); - } - else if( propertyValue instanceof List ) - { - return unmodifiableList( (List<?>) propertyValue ); - } - else if( propertyValue instanceof Map ) - { - return unmodifiableMap( (Map<?, ?>) propertyValue ); - } - } - return propertyValue; - } - return property.resolveInitialValue( module ); - }; - } - - private Function<AssociationDescriptor, EntityReference> associationFunction( ModuleDescriptor module, - Map<String, Value> namedValues ) - { - return association -> doDeserialize( module, ValueType.ENTITY_REFERENCE, - namedValues.get( association.qualifiedName().name() ) ); - } - - private Function<AssociationDescriptor, Stream<EntityReference>> manyAssociationFunction( - ModuleDescriptor module, Map<String, Value> namedValues ) - { - return association -> - { - List list = doDeserialize( module, ENTITY_REF_LIST_VALUE_TYPE, - namedValues.get( association.qualifiedName().name() ) ); - return list == null ? Stream.empty() : list.stream(); - }; - } - - private Function<AssociationDescriptor, Stream<Map.Entry<String, EntityReference>>> namedAssociationFunction( - ModuleDescriptor module, Map<String, Value> namedValues ) - { - return association -> - { - Map map = doDeserialize( module, ENTITY_REF_MAP_VALUE_TYPE, - namedValues.get( association.qualifiedName().name() ) ); - return map == null ? Stream.empty() : map.entrySet().stream(); - }; - } - - private Object doGuessDeserialize( ModuleDescriptor module, ValueType valueType, Value value ) - throws IOException, ClassNotFoundException - { - switch( value.getValueType() ) - { - case BINARY: - return deserializeJava( value.asBinaryValue().asByteArray() ); - case MAP: - MapValue mapValue = value.asMapValue(); - Optional<String> typeInfo = mapValue - .entrySet().stream() - .filter( entry -> entry.getKey().isStringValue() ) - .map( entry -> - { - String key = doDeserialize( module, ValueType.STRING, entry.getKey() ); - return new AbstractMap.SimpleImmutableEntry<>( key, entry.getValue() ); - } ) - .filter( entry -> "_type".equals( entry.getKey() ) ) - .findFirst() - .map( entry -> doDeserialize( module, ValueType.STRING, entry.getValue() ) ); - if( typeInfo.isPresent() ) - { - ValueDescriptor valueDescriptor = module.valueDescriptor( typeInfo.get() ); - if( valueDescriptor != null ) - { - return deserializeValueComposite( module, valueDescriptor.valueType(), mapValue ); - } - } - default: - throw new SerializationException( "Don't know how to deserialize " + valueType + " from " + value - + " (" + value.getValueType() + ")" ); - } - } - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerialization.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerialization.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerialization.java deleted file mode 100644 index d24d597..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerialization.java +++ /dev/null @@ -1,22 +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; - -public interface MessagePackSerialization extends MessagePackSerializer, MessagePackDeserializer -{ -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/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 deleted file mode 100644 index 1a576ce..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializationAssembler.java +++ /dev/null @@ -1,52 +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 org.apache.polygene.api.serialization.Deserializer; -import org.apache.polygene.api.serialization.Serialization; -import org.apache.polygene.api.serialization.Serializer; -import org.apache.polygene.bootstrap.Assemblers; -import org.apache.polygene.bootstrap.ModuleAssembly; -import org.apache.polygene.bootstrap.ServiceDeclaration; - -public class MessagePackSerializationAssembler extends Assemblers.VisibilityIdentity<MessagePackSerializationAssembler> -{ - private MessagePackSettings settings; - - public MessagePackSerializationAssembler withMessagePackSettings( MessagePackSettings settings ) - { - this.settings = settings; - return this; - } - - @Override - public void assemble( ModuleAssembly module ) - { - ServiceDeclaration declaration = module.services( MessagePackSerialization.class ) - .withTypes( Serialization.class, Serializer.class, Deserializer.class ) - .visibleIn( visibility() ); - if( hasIdentity() ) - { - declaration.identifiedBy( identity() ); - } - if( settings != null ) - { - declaration.setMetaInfo( settings ); - } - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializer.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializer.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializer.java deleted file mode 100644 index cdbbf5a..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSerializer.java +++ /dev/null @@ -1,202 +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.io.IOException; -import java.io.OutputStream; -import java.util.Map; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; -import org.apache.polygene.api.PolygeneAPI; -import org.apache.polygene.api.association.AssociationStateHolder; -import org.apache.polygene.api.common.Optional; -import org.apache.polygene.api.composite.CompositeInstance; -import org.apache.polygene.api.injection.scope.This; -import org.apache.polygene.api.mixin.Mixins; -import org.apache.polygene.api.serialization.Converter; -import org.apache.polygene.api.serialization.Converters; -import org.apache.polygene.api.serialization.SerializationException; -import org.apache.polygene.api.serialization.Serializer; -import org.apache.polygene.api.type.ArrayType; -import org.apache.polygene.api.type.EnumType; -import org.apache.polygene.api.type.MapType; -import org.apache.polygene.api.type.ValueCompositeType; -import org.apache.polygene.api.util.ArrayIterable; -import org.apache.polygene.api.value.ValueComposite; -import org.apache.polygene.api.value.ValueDescriptor; -import org.apache.polygene.spi.serialization.AbstractBinarySerializer; -import org.msgpack.core.MessagePack; -import org.msgpack.core.MessagePacker; -import org.msgpack.value.ArrayValue; -import org.msgpack.value.MapValue; -import org.msgpack.value.Value; -import org.msgpack.value.ValueFactory; - -import static java.util.stream.Collectors.toList; -import static org.apache.polygene.api.util.Collectors.toMap; - -@Mixins( MessagePackSerializer.Mixin.class ) -public interface MessagePackSerializer extends Serializer -{ - class Mixin extends AbstractBinarySerializer - { - @This - private Converters converters; - - @This - private MessagePackAdapters adapters; - - @Override - public void serialize( Options options, OutputStream output, @Optional Object object ) - { - MessagePacker packer = MessagePack.newDefaultPacker( output ); - Value value = doSerialize( options, object, true ); - try - { - packer.packValue( value ); - packer.flush(); - } - catch( IOException ex ) - { - throw new SerializationException( "Unable to serialize " + object, ex ); - } - } - - private Value doSerialize( Options options, Object object, boolean root ) - { - try - { - if( object == null ) - { - return ValueFactory.newNil(); - } - Class<?> objectClass = object.getClass(); - Converter<Object> converter = converters.converterFor( objectClass ); - if( converter != null ) - { - return doSerialize( options, converter.toString( object ), false ); - } - MessagePackAdapter<?> adapter = adapters.adapterFor( objectClass ); - if( adapter != null ) - { - return adapter.serialize( object, obj -> doSerialize( options, obj, false ) ); - } - if( EnumType.isEnum( objectClass ) ) - { - return ValueFactory.newString( object.toString() ); - } - if( ValueCompositeType.isValueComposite( objectClass ) ) - { - return serializeValueComposite( options, object, root ); - } - if( MapType.isMap( objectClass ) ) - { - return serializeMap( options, (Map<?, ?>) object ); - } - if( ArrayType.isArray( objectClass ) ) - { - return serializeArray( options, object ); - } - if( Iterable.class.isAssignableFrom( objectClass ) ) - { - return serializeIterable( options, (Iterable<?>) object ); - } - if( Stream.class.isAssignableFrom( objectClass ) ) - { - return serializeStream( options, (Stream<?>) object ); - } - // Fallback to Java Serialization - return ValueFactory.newBinary( serializeJava( object ) ); - } - catch( IOException ex ) - { - throw new SerializationException( "Unable to serialize " + object, ex ); - } - } - - private MapValue serializeValueComposite( Options options, Object composite, boolean root ) - { - CompositeInstance instance = PolygeneAPI.FUNCTION_COMPOSITE_INSTANCE_OF.apply( (ValueComposite) composite ); - ValueDescriptor descriptor = (ValueDescriptor) instance.descriptor(); - AssociationStateHolder state = (AssociationStateHolder) instance.state(); - ValueCompositeType valueType = descriptor.valueType(); - - ValueFactory.MapBuilder builder = ValueFactory.newMapBuilder(); - valueType.properties().forEach( - property -> builder.put( - ValueFactory.newString( property.qualifiedName().name() ), - doSerialize( options, state.propertyFor( property.accessor() ).get(), false ) ) ); - valueType.associations().forEach( - association -> builder.put( - ValueFactory.newString( association.qualifiedName().name() ), - doSerialize( options, state.associationFor( association.accessor() ).reference(), false ) ) ); - valueType.manyAssociations().forEach( - association -> builder.put( - ValueFactory.newString( association.qualifiedName().name() ), - doSerialize( options, - state.manyAssociationFor( association.accessor() ).references().collect( toList() ), - false ) ) ); - valueType.namedAssociations().forEach( - association -> builder.put( - ValueFactory.newString( association.qualifiedName().name() ), - doSerialize( options, - state.namedAssociationFor( association.accessor() ).references().collect( toMap() ), - false ) ) ); - - if( !root && options.includeTypeInfo() ) - { - builder.put( ValueFactory.newString( "_type" ), - ValueFactory.newString( valueType.primaryType().getName() ) ); - } - return builder.build(); - } - - private MapValue serializeMap( Options options, Map<?, ?> map ) - { - ValueFactory.MapBuilder builder = ValueFactory.newMapBuilder(); - map.forEach( ( key, value ) -> builder.put( doSerialize( options, key, false ), - doSerialize( options, value, false ) ) ); - return builder.build(); - } - - private Value serializeArray( Options options, Object object ) - { - ArrayType valueType = ArrayType.of( object.getClass() ); - if( valueType.isArrayOfPrimitiveBytes() ) - { - return ValueFactory.newBinary( (byte[]) object ); - } - if( valueType.isArrayOfPrimitives() ) - { - return serializeIterable( options, new ArrayIterable( object ) ); - } - return serializeStream( options, Stream.of( (Object[]) object ) ); - } - - private ArrayValue serializeIterable( Options options, Iterable<?> iterable ) - { - return serializeStream( options, StreamSupport.stream( iterable.spliterator(), false ) ); - } - - private ArrayValue serializeStream( Options options, Stream<?> stream ) - { - return ValueFactory.newArray( stream.map( element -> doSerialize( options, element, false ) ) - .collect( toList() ) ); - } - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSettings.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSettings.java b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSettings.java deleted file mode 100644 index e3fbf26..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/MessagePackSettings.java +++ /dev/null @@ -1,45 +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.LinkedHashMap; -import java.util.Map; -import org.apache.polygene.api.type.ValueType; -import org.apache.polygene.spi.serialization.SerializationSettings; - -public class MessagePackSettings extends SerializationSettings<MessagePackSettings> -{ - public static final MessagePackSettings DEFAULT = new MessagePackSettings(); - - public static MessagePackSettings orDefault( MessagePackSettings settings ) - { - return settings != null ? settings : DEFAULT; - } - - private Map<ValueType, MessagePackAdapter<?>> adapters; - - public MessagePackSettings() - { - adapters = new LinkedHashMap<>(); - } - - public Map<ValueType, MessagePackAdapter<?>> getAdapters() - { - return adapters; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/package.html ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/package.html b/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/package.html deleted file mode 100644 index 16c905a..0000000 --- a/extensions/serialization-msgpack/src/main/java/org/apache/polygene/serialization/msgpack/package.html +++ /dev/null @@ -1,24 +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. - ~ - ~ - --> -<html> - <body> - <h2>MessagePack Serialization.</h2> - </body> -</html> http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackCollectionSerializationTest.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackCollectionSerializationTest.java b/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackCollectionSerializationTest.java deleted file mode 100644 index 6ade37f..0000000 --- a/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackCollectionSerializationTest.java +++ /dev/null @@ -1,31 +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 org.apache.polygene.bootstrap.ModuleAssembly; -import org.apache.polygene.test.serialization.AbstractCollectionSerializationTest; - -public class MessagePackCollectionSerializationTest extends AbstractCollectionSerializationTest -{ - @Override - public void assemble( ModuleAssembly module ) - { - new MessagePackSerializationAssembler().assemble( module ); - super.assemble( module ); - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackPlainValueSerializationTest.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackPlainValueSerializationTest.java b/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackPlainValueSerializationTest.java deleted file mode 100644 index 6714527..0000000 --- a/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackPlainValueSerializationTest.java +++ /dev/null @@ -1,42 +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.Base64; -import org.apache.polygene.bootstrap.ModuleAssembly; -import org.apache.polygene.test.serialization.AbstractPlainValueSerializationTest; -import org.msgpack.core.MessagePack; - -public class MessagePackPlainValueSerializationTest extends AbstractPlainValueSerializationTest -{ - @Override - public void assemble( ModuleAssembly module ) - { - new MessagePackSerializationAssembler().withMessagePackSettings( withTestSettings( new MessagePackSettings() ) ) - .assemble( module ); - } - - @Override - protected String getSingleStringRawState( String state ) throws Exception - { - return MessagePack.newDefaultUnpacker( Base64.getDecoder().decode( state ) ) - .unpackValue().asStringValue().asString(); - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackValueCompositeSerializationTest.java ---------------------------------------------------------------------- diff --git a/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackValueCompositeSerializationTest.java b/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackValueCompositeSerializationTest.java deleted file mode 100644 index dd9291e..0000000 --- a/extensions/serialization-msgpack/src/test/java/org/apache/polygene/serialization/msgpack/MessagePackValueCompositeSerializationTest.java +++ /dev/null @@ -1,35 +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 org.apache.polygene.bootstrap.ModuleAssembly; -import org.apache.polygene.test.serialization.AbstractValueCompositeSerializationTest; - -public class MessagePackValueCompositeSerializationTest extends AbstractValueCompositeSerializationTest -{ - // START SNIPPET: assembly - @Override - public void assemble( ModuleAssembly module ) - { - new MessagePackSerializationAssembler().assemble( module ); - // END SNIPPET: assembly - super.assemble( module ); - // START SNIPPET: assembly - } - // END SNIPPET: assembly -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/manual/src/docs/userguide/extensions.txt ---------------------------------------------------------------------- diff --git a/manual/src/docs/userguide/extensions.txt b/manual/src/docs/userguide/extensions.txt index 42f216e..433bd47 100644 --- a/manual/src/docs/userguide/extensions.txt +++ b/manual/src/docs/userguide/extensions.txt @@ -53,7 +53,7 @@ include::../../../../extensions/serialization-javaxxml/src/docs/serialization-ja :leveloffset: 2 -include::../../../../extensions/serialization-msgpack/src/docs/serialization-msgpack.txt[] +include::../../../../extensions/serialization-messagepack/src/docs/serialization-messagepack.txt[] :leveloffset: 2 @@ -140,4 +140,3 @@ include::../../../../extensions/migration/src/docs/migration.txt[] include::../../../../extensions/reindexer/src/docs/reindexer.txt[] :leveloffset: 2 - http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/settings.gradle ---------------------------------------------------------------------- diff --git a/settings.gradle b/settings.gradle index e0b6b7d..d63bdb6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -78,7 +78,7 @@ include 'core:api', 'extensions:reindexer', 'extensions:serialization-javaxjson', 'extensions:serialization-javaxxml', - 'extensions:serialization-msgpack', + 'extensions:serialization-messagepack', 'tools:model-detail', 'tools:envisage', // 'tools:generator-polygene', http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/tools/generator-polygene/app/index.js ---------------------------------------------------------------------- diff --git a/tools/generator-polygene/app/index.js b/tools/generator-polygene/app/index.js index d801187..93b753f 100644 --- a/tools/generator-polygene/app/index.js +++ b/tools/generator-polygene/app/index.js @@ -151,10 +151,11 @@ module.exports = generators.Base.extend( name: 'serialization', choices: [ 'JavaxJson', - 'JavaxXml' + 'JavaxXml', + 'MessagePack' ], message: 'Which serialization system do you want to use?', - default: polygene.serialization ? polygene.serialization : "Jackson" + default: polygene.serialization ? polygene.serialization : "JavaxJson" }, { type: 'list', @@ -385,4 +386,4 @@ function assignFunctions(polygene) { current.imported = imported; }; -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/b7f30354/tools/generator-polygene/test/generator_test.js ---------------------------------------------------------------------- diff --git a/tools/generator-polygene/test/generator_test.js b/tools/generator-polygene/test/generator_test.js index 0d0b938..e9ddd17 100644 --- a/tools/generator-polygene/test/generator_test.js +++ b/tools/generator-polygene/test/generator_test.js @@ -39,7 +39,8 @@ var cachings = [ var serializations = [ 'JavaxJson', - 'JavaxXml' + 'JavaxXml', + 'MessagePack' ]; var metricses = [ @@ -124,4 +125,4 @@ function test(entityStore, indexing, serialization, caching, metrics, features) function buildAndVerify(dir) { assert.file(['gradlew', 'settings.gradle', 'build.gradle']); assert(shell.exec(path.join(dir, 'gradlew') + ' build').code == 0); -} \ No newline at end of file +}
