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,10 +37,11 @@
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,11 +179,11 @@
* @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
+ Objects.requireNonNull(functionName);
final Global oldGlobal = Context.getGlobal();
final boolean globalChanged = (oldGlobal != global);
try {
if (globalChanged) {
@@ -211,11 +212,11 @@
}
}
@Override
public Object getMember(final String name) {
- name.getClass();
+ Objects.requireNonNull(name);
return inGlobal(new Callable<Object>() {
@Override public Object call() {
return wrap(sobj.get(name), global);
}
});
@@ -230,11 +231,11 @@
});
}
@Override
public boolean hasMember(final String name) {
- name.getClass();
+ Objects.requireNonNull(name);
return inGlobal(new Callable<Boolean>() {
@Override public Boolean call() {
return sobj.has(name);
}
});
@@ -249,17 +250,17 @@
});
}
@Override
public void removeMember(final String name) {
- name.getClass();
+ Objects.requireNonNull(name);
remove(name);
}
@Override
public void setMember(final String name, final Object value) {
- name.getClass();
+ Objects.requireNonNull(name);
put(name, value);
}
@Override
public void setSlot(final int index, final Object value) {
@@ -423,13 +424,11 @@
});
}
@Override
public void putAll(final Map<? extends String, ? extends Object> map) {
- if (map == null) {
- throw new NullPointerException("map is null");
- }
+ 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,13 +801,13 @@
* @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)) {
+ 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");
}
}