431 final boolean globalChanged = (oldGlobal != global);
432 inGlobal(new Callable<Object>() {
433 @Override public Object call() {
434 for (final Map.Entry<? extends String, ? extends Object> entry : map.entrySet()) {
435 final Object value = entry.getValue();
436 final Object modValue = globalChanged? wrap(value, oldGlobal) : value;
437 final String key = entry.getKey();
438 checkKey(key);
439 sobj.set(key, unwrap(modValue, global), getCallSiteFlags());
440 }
441 return null;
442 }
443 });
444 }
445
446 @Override
447 public Object remove(final Object key) {
448 checkKey(key);
449 return inGlobal(new Callable<Object>() {
450 @Override public Object call() {
451 return wrap(sobj.remove(key, strict), global);
452 }
453 });
454 }
455
456 /**
457 * Delete a property from this object.
458 *
459 * @param key the property to be deleted
460 *
461 * @return if the delete was successful or not
462 */
463 public boolean delete(final Object key) {
464 return inGlobal(new Callable<Boolean>() {
465 @Override public Boolean call() {
466 return sobj.delete(unwrap(key, global), strict);
467 }
468 });
469 }
470
471 @Override
|
431 final boolean globalChanged = (oldGlobal != global);
432 inGlobal(new Callable<Object>() {
433 @Override public Object call() {
434 for (final Map.Entry<? extends String, ? extends Object> entry : map.entrySet()) {
435 final Object value = entry.getValue();
436 final Object modValue = globalChanged? wrap(value, oldGlobal) : value;
437 final String key = entry.getKey();
438 checkKey(key);
439 sobj.set(key, unwrap(modValue, global), getCallSiteFlags());
440 }
441 return null;
442 }
443 });
444 }
445
446 @Override
447 public Object remove(final Object key) {
448 checkKey(key);
449 return inGlobal(new Callable<Object>() {
450 @Override public Object call() {
451 return translateUndefined(wrap(sobj.remove(key, strict), global));
452 }
453 });
454 }
455
456 /**
457 * Delete a property from this object.
458 *
459 * @param key the property to be deleted
460 *
461 * @return if the delete was successful or not
462 */
463 public boolean delete(final Object key) {
464 return inGlobal(new Callable<Boolean>() {
465 @Override public Boolean call() {
466 return sobj.delete(unwrap(key, global), strict);
467 }
468 });
469 }
470
471 @Override
|