X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fscratch%2Forg%2Fsimantics%2Fdataboard%2Ftests%2FJotakin18.java;fp=bundles%2Forg.simantics.databoard%2Fscratch%2Forg%2Fsimantics%2Fdataboard%2Ftests%2FJotakin18.java;h=20502f0dbc14d6ae2330055a1f6cbec093a3711e;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/scratch/org/simantics/databoard/tests/Jotakin18.java b/bundles/org.simantics.databoard/scratch/org/simantics/databoard/tests/Jotakin18.java new file mode 100644 index 000000000..20502f0db --- /dev/null +++ b/bundles/org.simantics.databoard/scratch/org/simantics/databoard/tests/Jotakin18.java @@ -0,0 +1,139 @@ +package org.simantics.databoard.tests; + +import java.io.IOException; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.Datatypes; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.LongBinding; +import org.simantics.databoard.binding.error.BindingConstructionException; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.binding.reflection.BindingRequest; +import org.simantics.databoard.binding.reflection.BindingProvider; +import org.simantics.databoard.binding.reflection.ClassBindingFactory; +import org.simantics.databoard.serialization.Serializer; +import org.simantics.databoard.serialization.SerializerConstructionException; + +public class Jotakin18 { + + public static class MyLongBindingFactory implements BindingProvider { + + MyLongBinding myLongBinding = new MyLongBinding(); + + public Binding provideBinding(ClassBindingFactory master, BindingRequest request) throws BindingConstructionException { + if (MyLong.class.isAssignableFrom( request.getClazz() )) { + return myLongBinding; + } + + return null; + } + + } + + public static class MyLongBinding extends LongBinding { + + public MyLongBinding() { + super(Datatypes.LONG); + } + + @Override + public Object create(long value) throws BindingException { + MyLong x = new MyLong(); + x.setValue(value); + return x; + } + + @Override + public Object create(Long value) throws BindingException { + MyLong x = new MyLong(); + x.setValue(value); + return x; + } + + @Override + public Object create(Number value) throws BindingException { + MyLong x = new MyLong(); + x.setValue(value.longValue()); + return x; + } + + @Override + public Object create(String value) throws BindingException { + MyLong x = new MyLong(); + x.setValue(Long.valueOf(value)); + return x; + } + + @Override + public Long getValue(Object o) throws BindingException { + MyLong x = (MyLong) o; + return x.getValue(); + } + + @Override + public long getValue_(Object o) throws BindingException { + MyLong x = (MyLong) o; + return x.getValue(); + } + + @Override + public void setValue(Object obj, Number value) throws BindingException { + throw new BindingException("Resource is immutable"); + } + + @Override + public void setValue(Object obj, long value) throws BindingException { + throw new BindingException("Resource is immutable"); + } + + @Override + public boolean isImmutable() { + return true; + } + + @Override + public boolean isInstance(Object obj) { + return obj instanceof MyLong; + } + } + + public static class XXX { + + public MyLong x; + public long z; + private long y; + + public long getY() { + return y; + } + public void setY(long y) { + this.y = y; + } + } + + public static class MyLong { + private long value; + public long getValue() { + return value; + } + public void setValue(long value) { + this.value = value; + } + } + + public static void main(String[] args) throws SerializerConstructionException, BindingConstructionException, IOException { + + Bindings.databoard.addBindingFactory( new MyLongBindingFactory() ); + + XXX x = new XXX(); + x.x = new MyLong(); + + Binding b = Bindings.databoard.getBinding(XXX.class); + Serializer s = Bindings.getSerializer(b); + + byte[] data = s.serialize(x); + s.deserialize(data); + + } + +}