X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fproperty%2FMethodWithMapValueProvider.java;h=8fad88979690dbf266f796982b52c314bd4d1221;hb=refs%2Fchanges%2F15%2F3615%2F1;hp=eeae0dc89499dab28966d6083af0b74f977cfb5d;hpb=488e24d71d14e60c7da3272e2428a0b23b57c87c;p=simantics%2F3d.git diff --git a/org.simantics.g3d/src/org/simantics/g3d/property/MethodWithMapValueProvider.java b/org.simantics.g3d/src/org/simantics/g3d/property/MethodWithMapValueProvider.java index eeae0dc8..8fad8897 100644 --- a/org.simantics.g3d/src/org/simantics/g3d/property/MethodWithMapValueProvider.java +++ b/org.simantics.g3d/src/org/simantics/g3d/property/MethodWithMapValueProvider.java @@ -12,6 +12,8 @@ package org.simantics.g3d.property; import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; @@ -33,6 +35,7 @@ public class MethodWithMapValueProvider implements ValueProvider { Map map = (Map)getter.invoke(obj); return map.get(key); } + @SuppressWarnings("unchecked") @Override public void setValue(Object obj, Object value) throws Exception { @@ -41,4 +44,11 @@ public class MethodWithMapValueProvider implements ValueProvider { map.put(key, value); setter.invoke(obj,map); } + + @Override + public Class getValueType() { + // The return type of the getter should be a java.util.Map. + Type[] typeArguments = ((ParameterizedType)getter.getGenericReturnType()).getActualTypeArguments(); + return (Class) typeArguments[1]; + } }