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"); } }