+
+ protected void doSetValue(String methodName, String newOption, Object value) {
+ if (isNew()) {
+ Objects.requireNonNull(newOption, "Value cannot be set as an option for " + getJsClassName() + ", use "
+ + methodName + "() after the object has been created");
+ getNewOptions().put(newOption, value);
+ } else {
+ Objects.requireNonNull(methodName, "Value cannot be set via a method for " + getJsClassName() + ", use "
+ + newOption + " before the object is created");
+ executeMethod(methodName, value);
+ }
+ }
+
+ public void set(String key, Object value) {
+ set(key, value, false);
+ }
+
+ public void set(String key, Object value, boolean silent) {
+ if (isNew()) {
+ getNewOptions().put(key, value);
+ } else {
+ executeMethod(getMethodName(), new Object[] { key, value, silent });
+ }
+ }
+
+ public Object get(String key) {
+ if (isNew()) {
+ return getNewOptions().get(key);
+ } else {
+ // TDO deal with reference if we are trying to get an object
+ return callMethod(getMethodName(), key);
+ }
+
+ }
+
+ public static String getJsClassName(Class<?> clss) {
+ if (AbstractOlObject.class.isAssignableFrom(clss)) {
+ // NB: would failed for renamed classes
+ return JS_PACKAGE + "." + clss.getSimpleName();
+ }
+ throw new IllegalArgumentException(clss + " is not an OpenLayers object");
+ }
+