*
* Contributors:
* VTT Technical Research Centre of Finland - initial API and implementation
+ * Semantum Oy - gitlab #313
*******************************************************************************/
package org.simantics.databoard;
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;
public static final ClassBindingFactory classBindingFactory;
/** Serializer Factory */
- public static final SerializerFactory serializationFactory;
+ public static final SerializerScheme serializationFactory;
/** Adapter Factory */
public static final AdapterFactory adapterFactory;
* @throws SerializerConstructionException
*/
public static Serializer getSerializer(Binding binding) throws SerializerConstructionException {
- return serializationFactory.construct(binding);
+ return serializationFactory.getSerializer(binding);
}
/**
* @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);
}
/**
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 );
}
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) );
}
databoard.initialize();
- DATATYPE = getBindingUnchecked(Datatype.class);
+ 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);
}
}