import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.databoard.binding.error.BindingConstructionException;
+import org.simantics.databoard.binding.reflection.BindingRequest;
import org.simantics.db.ReadGraph;
import org.simantics.db.Resource;
import org.simantics.db.exception.DatabaseException;
Class<? extends ValueAdapter> adapterClass = getterAnn.adapter();
IRangeAccessor<Range,Object> rangeAccessor = new GetSetValueAccessor<Range,Object>(getter, setter);
Resource valueType;
+ Binding valueBinding = null;
if (adapterClass == IdentityAdapter.class) {
- valueType = dataTypeOfClass(g, getter.getReturnType());
+ try {
+ valueBinding = Bindings.getBinding(BindingRequest.create(getter));
+ } catch (BindingConstructionException e) {
+ return null;
+ }
+ valueType = DataTypeUtils.dataTypeOfDatatype(g, valueBinding.type());
} else {
try{
ValueAdapter adapter = adapterClass.newInstance();
throw new RuntimeException(e);
}
}
- return new ValueRule<Resource,Range>(new RelatedValueAccessor(g.getResource(getterAnn.value()), valueType),
+ return new ValueRule<Resource,Range>(new RelatedValueAccessor(g.getResource(getterAnn.value()), valueType, valueBinding),
rangeAccessor);
}