package org.simantics.g3d.property;\r
\r
import java.lang.reflect.Method;\r
+import java.lang.reflect.ParameterizedType;\r
+import java.lang.reflect.Type;\r
import java.util.HashMap;\r
import java.util.Map;\r
\r
Map<String,Object> map = (Map<String, Object>)getter.invoke(obj);\r
return map.get(key);\r
}\r
+ \r
@SuppressWarnings("unchecked")\r
@Override\r
public void setValue(Object obj, Object value) throws Exception {\r
map.put(key, value);\r
setter.invoke(obj,map);\r
}\r
+ \r
+ @Override\r
+ public Class<?> getValueType() {\r
+ // The return type of the getter should be a java.util.Map.\r
+ Type[] typeArguments = ((ParameterizedType)getter.getGenericReturnType()).getActualTypeArguments();\r
+ return (Class<?>) typeArguments[1];\r
+ }\r
}\r