src/jdk/nashorn/api/scripting/ScriptObjectMirror.java
Print this page
rev 1199 : 8072595: nashorn should not use obj.getClass() for null checks
Reviewed-by: hannesw, attila
*** 37,46 ****
--- 37,47 ----
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Callable;
import javax.script.Bindings;
import jdk.nashorn.internal.objects.Global;
import jdk.nashorn.internal.runtime.ConsString;
*** 178,188 ****
* @param functionName function name
* @param args arguments
* @return return value of function
*/
public Object callMember(final String functionName, final Object... args) {
! functionName.getClass(); // null check
final Global oldGlobal = Context.getGlobal();
final boolean globalChanged = (oldGlobal != global);
try {
if (globalChanged) {
--- 179,189 ----
* @param functionName function name
* @param args arguments
* @return return value of function
*/
public Object callMember(final String functionName, final Object... args) {
! Objects.requireNonNull(functionName);
final Global oldGlobal = Context.getGlobal();
final boolean globalChanged = (oldGlobal != global);
try {
if (globalChanged) {
*** 211,221 ****
}
}
@Override
public Object getMember(final String name) {
! name.getClass();
return inGlobal(new Callable<Object>() {
@Override public Object call() {
return wrap(sobj.get(name), global);
}
});
--- 212,222 ----
}
}
@Override
public Object getMember(final String name) {
! Objects.requireNonNull(name);
return inGlobal(new Callable<Object>() {
@Override public Object call() {
return wrap(sobj.get(name), global);
}
});
*** 230,240 ****
});
}
@Override
public boolean hasMember(final String name) {
! name.getClass();
return inGlobal(new Callable<Boolean>() {
@Override public Boolean call() {
return sobj.has(name);
}
});
--- 231,241 ----
});
}
@Override
public boolean hasMember(final String name) {
! Objects.requireNonNull(name);
return inGlobal(new Callable<Boolean>() {
@Override public Boolean call() {
return sobj.has(name);
}
});
*** 249,265 ****
});
}
@Override
public void removeMember(final String name) {
! name.getClass();
remove(name);
}
@Override
public void setMember(final String name, final Object value) {
! name.getClass();
put(name, value);
}
@Override
public void setSlot(final int index, final Object value) {
--- 250,266 ----
});
}
@Override
public void removeMember(final String name) {
! Objects.requireNonNull(name);
remove(name);
}
@Override
public void setMember(final String name, final Object value) {
! Objects.requireNonNull(name);
put(name, value);
}
@Override
public void setSlot(final int index, final Object value) {
*** 423,435 ****
});
}
@Override
public void putAll(final Map<? extends String, ? extends Object> map) {
! if (map == null) {
! throw new NullPointerException("map is null");
! }
final ScriptObject oldGlobal = Context.getGlobal();
final boolean globalChanged = (oldGlobal != global);
inGlobal(new Callable<Object>() {
@Override public Object call() {
for (final Map.Entry<? extends String, ? extends Object> entry : map.entrySet()) {
--- 424,434 ----
});
}
@Override
public void putAll(final Map<? extends String, ? extends Object> map) {
! Objects.requireNonNull(map, "map is null");
final ScriptObject oldGlobal = Context.getGlobal();
final boolean globalChanged = (oldGlobal != global);
inGlobal(new Callable<Object>() {
@Override public Object call() {
for (final Map.Entry<? extends String, ? extends Object> entry : map.entrySet()) {
*** 802,814 ****
* @throws NullPointerException if key is null
* @throws ClassCastException if key is not a String
* @throws IllegalArgumentException if key is empty string
*/
private static void checkKey(final Object key) {
! if (key == null) {
! throw new NullPointerException("key can not be null");
! } else if (!(key instanceof String)) {
throw new ClassCastException("key should be a String. It is " + key.getClass().getName() + " instead.");
} else if (((String)key).length() == 0) {
throw new IllegalArgumentException("key can not be empty");
}
}
--- 801,813 ----
* @throws NullPointerException if key is null
* @throws ClassCastException if key is not a String
* @throws IllegalArgumentException if key is empty string
*/
private static void checkKey(final Object key) {
! Objects.requireNonNull(key, "key can not be null");
!
! if (!(key instanceof String)) {
throw new ClassCastException("key should be a String. It is " + key.getClass().getName() + " instead.");
} else if (((String)key).length() == 0) {
throw new IllegalArgumentException("key can not be empty");
}
}