X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2FBindings.java;h=b1f53d0b611bb542197cdf7bb299b60a3438149b;hp=266391fa98eb340bcdff6e47b956e5777ccb31a8;hb=95bce3521a3c97f463c3d533a36a606c7ae6f0aa;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/Bindings.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/Bindings.java index 266391fa9..b1f53d0b6 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/Bindings.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/Bindings.java @@ -8,6 +8,7 @@ * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation + * Semantum Oy - gitlab #313 *******************************************************************************/ package org.simantics.databoard; @@ -71,7 +72,7 @@ import org.simantics.databoard.binding.reflection.VoidBinding; import org.simantics.databoard.serialization.RuntimeSerializerConstructionException; import org.simantics.databoard.serialization.Serializer; import org.simantics.databoard.serialization.SerializerConstructionException; -import org.simantics.databoard.serialization.SerializerFactory; +import org.simantics.databoard.serialization.SerializerScheme; import org.simantics.databoard.type.ArrayType; import org.simantics.databoard.type.Datatype; import org.simantics.databoard.util.DataValueUtil; @@ -112,7 +113,7 @@ public class Bindings { public static final ClassBindingFactory classBindingFactory; /** Serializer Factory */ - public static final SerializerFactory serializationFactory; + public static final SerializerScheme serializationFactory; /** Adapter Factory */ public static final AdapterFactory adapterFactory; @@ -134,7 +135,8 @@ public class Bindings { public static final VariantBinding STR_VARIANT; // java.lang.String ( as variant ) public static final Binding VOID; // void ( as {} ) - public static final Binding BEAN; // Bean ( as variant ) + public static final Binding BEAN; // Bean ( as variant ) + public static final Binding DATATYPE; // org.simantics.databoard.type.Datatype public static final ArrayBinding BOOLEAN_ARRAY; // boolean[] public static final ArrayBinding BYTE_ARRAY; // byte[] @@ -499,7 +501,7 @@ public class Bindings { * @throws SerializerConstructionException */ public static Serializer getSerializer(Binding binding) throws SerializerConstructionException { - return serializationFactory.construct(binding); + return serializationFactory.getSerializer(binding); } /** @@ -510,11 +512,7 @@ public class Bindings { * @throws RuntimeSerializerConstructionException */ public static Serializer getSerializerUnchecked(Binding binding) throws RuntimeSerializerConstructionException { - try { - return serializationFactory.construct(binding); - } catch (SerializerConstructionException e) { - throw new RuntimeSerializerConstructionException(e); - } + return serializationFactory.getSerializerUnchecked(binding); } /** @@ -527,7 +525,7 @@ public class Bindings { public static Serializer getSerializer(Class clazz) throws SerializerConstructionException { try { Binding binding = getBinding(clazz); - return serializationFactory.construct(binding); + return serializationFactory.getSerializer(binding); } catch (BindingConstructionException e) { throw new SerializerConstructionException( e ); } @@ -543,9 +541,7 @@ public class Bindings { public static Serializer getSerializerUnchecked(Class clazz) throws RuntimeSerializerConstructionException { try { Binding binding = getBinding(clazz); - return serializationFactory.construct(binding); - } catch (SerializerConstructionException e) { - throw new RuntimeSerializerConstructionException(e); + return serializationFactory.getSerializerUnchecked(binding); } catch (BindingConstructionException e) { throw new RuntimeSerializerConstructionException( new SerializerConstructionException(e) ); } @@ -890,7 +886,16 @@ public class Bindings { OBJECT = databoard.OBJECT; databoard.initialize(); + + DATATYPE = getBindingUnchecked(Datatype.class); + /** + * {@link Datatype} class has annotations but it can be considered a "class + * request" as it is a fundamental building block of Databoard and it has a + * fixed structure. Therefore {@link BindingRepository#classMap} is allowed + * to contain a cached Datatype.class -> Binding mapping. + */ + bindingRepository.registerClassMapping(Datatype.class, DATATYPE); } - + }