1 package org.simantics.databoard.tests;
\r
3 import java.io.IOException;
\r
5 import org.simantics.databoard.Bindings;
\r
6 import org.simantics.databoard.Datatypes;
\r
7 import org.simantics.databoard.binding.Binding;
\r
8 import org.simantics.databoard.binding.LongBinding;
\r
9 import org.simantics.databoard.binding.error.BindingConstructionException;
\r
10 import org.simantics.databoard.binding.error.BindingException;
\r
11 import org.simantics.databoard.binding.reflection.BindingRequest;
\r
12 import org.simantics.databoard.binding.reflection.BindingProvider;
\r
13 import org.simantics.databoard.binding.reflection.ClassBindingFactory;
\r
14 import org.simantics.databoard.serialization.Serializer;
\r
15 import org.simantics.databoard.serialization.SerializerConstructionException;
\r
17 public class Jotakin18 {
\r
19 public static class MyLongBindingFactory implements BindingProvider {
\r
21 MyLongBinding myLongBinding = new MyLongBinding();
\r
23 public Binding provideBinding(ClassBindingFactory master, BindingRequest request) throws BindingConstructionException {
\r
24 if (MyLong.class.isAssignableFrom( request.getClazz() )) {
\r
25 return myLongBinding;
\r
33 public static class MyLongBinding extends LongBinding {
\r
35 public MyLongBinding() {
\r
36 super(Datatypes.LONG);
\r
40 public Object create(long value) throws BindingException {
\r
41 MyLong x = new MyLong();
\r
47 public Object create(Long value) throws BindingException {
\r
48 MyLong x = new MyLong();
\r
54 public Object create(Number value) throws BindingException {
\r
55 MyLong x = new MyLong();
\r
56 x.setValue(value.longValue());
\r
61 public Object create(String value) throws BindingException {
\r
62 MyLong x = new MyLong();
\r
63 x.setValue(Long.valueOf(value));
\r
68 public Long getValue(Object o) throws BindingException {
\r
69 MyLong x = (MyLong) o;
\r
70 return x.getValue();
\r
74 public long getValue_(Object o) throws BindingException {
\r
75 MyLong x = (MyLong) o;
\r
76 return x.getValue();
\r
80 public void setValue(Object obj, Number value) throws BindingException {
\r
81 throw new BindingException("Resource is immutable");
\r
85 public void setValue(Object obj, long value) throws BindingException {
\r
86 throw new BindingException("Resource is immutable");
\r
90 public boolean isImmutable() {
\r
95 public boolean isInstance(Object obj) {
\r
96 return obj instanceof MyLong;
\r
100 public static class XXX {
\r
106 public long getY() {
\r
109 public void setY(long y) {
\r
114 public static class MyLong {
\r
115 private long value;
\r
116 public long getValue() {
\r
119 public void setValue(long value) {
\r
120 this.value = value;
\r
124 public static void main(String[] args) throws SerializerConstructionException, BindingConstructionException, IOException {
\r
126 Bindings.databoard.addBindingFactory( new MyLongBindingFactory() );
\r
129 x.x = new MyLong();
\r
131 Binding b = Bindings.databoard.getBinding(XXX.class);
\r
132 Serializer s = Bindings.getSerializer(b);
\r
134 byte[] data = s.serialize(x);
\r
135 s.deserialize(data);
\r