]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/src/org/simantics/databoard/Databoard.java
Initial support for concurrency in databoard, bindings and serializers
[simantics/platform.git] / bundles / org.simantics.databoard / src / org / simantics / databoard / Databoard.java
index ef4b0732d356cfa332489f5e30e6635d5e83ba24..195e87a1706e328e9f18aee185d9aefb2950f01d 100644 (file)
@@ -51,11 +51,11 @@ import org.simantics.databoard.binding.reflection.BindingProvider;
 import org.simantics.databoard.binding.reflection.BindingRequest;
 import org.simantics.databoard.binding.reflection.ClassBindingFactory;
 import org.simantics.databoard.binding.reflection.VoidBinding;
-import org.simantics.databoard.serialization.DefaultSerializerFactory;
+import org.simantics.databoard.serialization.DefaultConcurrentSerializerFactory;
 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.Datatype;
 import org.simantics.databoard.util.Bean;
 import org.simantics.databoard.util.DataValueUtil;
@@ -89,7 +89,8 @@ public class Databoard {
     public final ClassBindingFactory            classBindingFactory = new ClassBindingFactory( bindingRepository, defaultBindingFactory );
 
     /** Serializer Factory */
-    public final SerializerFactory              serializationFactory = new DefaultSerializerFactory( serializerRepository );
+    //public final SerializerFactory            serializationFactory = new DefaultSerializerFactory( serializerRepository );
+    public final SerializerScheme           serializationFactory = new DefaultConcurrentSerializerFactory();
 
     /** Adapter Factory */
        public final AdapterFactory              adapterFactory = new AdapterFactory();
@@ -153,6 +154,7 @@ public class Databoard {
                        BindingRequest br = new BindingRequest( Datatype.class ); 
                        Binding datatypeBinding = getBinding( br );
                        typeClassFactory.getRepository().put(datatypeBinding.type(), br);
+                       bindingRepository.put(br, datatypeBinding);
                } catch (ClassNotFoundException e) {
                } catch (InstantiationException e) {
                } catch (IllegalAccessException e) {
@@ -482,7 +484,7 @@ public class Databoard {
         * @throws SerializerConstructionException
         */
        public Serializer getSerializer(Binding binding) throws SerializerConstructionException {
-               return serializationFactory.construct(binding);
+               return serializationFactory.getSerializer(binding);
        }
 
        /**
@@ -493,11 +495,7 @@ public class Databoard {
         * @throws RuntimeSerializerConstructionException
         */
        public Serializer getSerializerUnchecked(Binding binding) throws RuntimeSerializerConstructionException {
-               try {
-                       return serializationFactory.construct(binding);
-               } catch (SerializerConstructionException e) {
-                       throw new RuntimeSerializerConstructionException(e);
-               }
+               return serializationFactory.getSerializerUnchecked(binding);
        }
 
        /**
@@ -510,7 +508,7 @@ public class Databoard {
        public 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 );
                }
@@ -526,9 +524,7 @@ public class Databoard {
        public 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) );
                }