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%2F29%2F3629%2F1;hp=7e9859a5ca8bb78f4a859ec88a4ea81e6bc672dd;hpb=289aaab900078ef56efc8779e4b15830e472149e;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 7e9859a5..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; @@ -29,9 +31,12 @@ public class MethodWithMapValueProvider implements ValueProvider { @Override public Object getValue(Object obj) throws Exception{ + @SuppressWarnings("unchecked") Map map = (Map)getter.invoke(obj); return map.get(key); } + + @SuppressWarnings("unchecked") @Override public void setValue(Object obj, Object value) throws Exception { Map map = new HashMap(); @@ -39,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]; + } }