Sat, 19 Jan 2013 22:35:43 +0530
8006557: JDK8/Lambda build clashes on Map.replace()
Reviewed-by: jlaskey
1.1 --- a/src/jdk/nashorn/internal/runtime/ScriptObject.java Sat Jan 19 09:14:43 2013 +0530 1.2 +++ b/src/jdk/nashorn/internal/runtime/ScriptObject.java Sat Jan 19 22:35:43 2013 +0530 1.3 @@ -87,7 +87,7 @@ 1.4 */ 1.5 1.6 1.7 -public abstract class ScriptObject extends PropertyListenerManager implements PropertyAccess, Map<Object, Object> { 1.8 +public abstract class ScriptObject extends PropertyListenerManager implements PropertyAccess { 1.9 1.10 /** Search fall back routine name for "no such method" */ 1.11 static final String NO_SUCH_METHOD_NAME = "__noSuchMethod__"; 1.12 @@ -1414,7 +1414,7 @@ 1.13 return (flags & IS_SCOPE) != 0; 1.14 } 1.15 1.16 - @Override 1.17 + // java.util.Map-like methods to help ScriptObjectMirror implementation 1.18 public void clear() { 1.19 final boolean strict = getContext()._strict; 1.20 final Iterator<String> iter = propertyIterator(); 1.21 @@ -1423,12 +1423,10 @@ 1.22 } 1.23 } 1.24 1.25 - @Override 1.26 public boolean containsKey(final Object key) { 1.27 return has(key); 1.28 } 1.29 1.30 - @Override 1.31 public boolean containsValue(final Object value) { 1.32 final Iterator<Object> iter = valueIterator(); 1.33 while (iter.hasNext()) { 1.34 @@ -1439,7 +1437,6 @@ 1.35 return false; 1.36 } 1.37 1.38 - @Override 1.39 public Set<Map.Entry<Object, Object>> entrySet() { 1.40 final Iterator<String> iter = propertyIterator(); 1.41 final Set<Map.Entry<Object, Object>> entries = new HashSet<>(); 1.42 @@ -1450,12 +1447,10 @@ 1.43 return Collections.unmodifiableSet(entries); 1.44 } 1.45 1.46 - @Override 1.47 public boolean isEmpty() { 1.48 return !propertyIterator().hasNext(); 1.49 } 1.50 1.51 - @Override 1.52 public Set<Object> keySet() { 1.53 final Iterator<String> iter = propertyIterator(); 1.54 final Set<Object> keySet = new HashSet<>(); 1.55 @@ -1465,14 +1460,12 @@ 1.56 return Collections.unmodifiableSet(keySet); 1.57 } 1.58 1.59 - @Override 1.60 public Object put(final Object key, final Object value) { 1.61 final Object oldValue = get(key); 1.62 set(key, value, getContext()._strict); 1.63 return oldValue; 1.64 } 1.65 1.66 - @Override 1.67 public void putAll(final Map<?, ?> otherMap) { 1.68 final boolean strict = getContext()._strict; 1.69 for (final Map.Entry<?, ?> entry : otherMap.entrySet()) { 1.70 @@ -1480,14 +1473,12 @@ 1.71 } 1.72 } 1.73 1.74 - @Override 1.75 public Object remove(final Object key) { 1.76 final Object oldValue = get(key); 1.77 delete(key, getContext()._strict); 1.78 return oldValue; 1.79 } 1.80 1.81 - @Override 1.82 public int size() { 1.83 int n = 0; 1.84 for (final Iterator<String> iter = propertyIterator(); iter.hasNext(); iter.next()) { 1.85 @@ -1496,7 +1487,6 @@ 1.86 return n; 1.87 } 1.88 1.89 - @Override 1.90 public Collection<Object> values() { 1.91 final List<Object> values = new ArrayList<>(size()); 1.92 final Iterator<Object> iter = valueIterator();
2.1 --- a/test/src/jdk/nashorn/internal/runtime/ContextTest.java Sat Jan 19 09:14:43 2013 +0530 2.2 +++ b/test/src/jdk/nashorn/internal/runtime/ContextTest.java Sat Jan 19 22:35:43 2013 +0530 2.3 @@ -49,13 +49,13 @@ 2.4 assertTrue(32.0 == ((Number)(eval(cx, "<evalTest>", code))).doubleValue()); 2.5 2.6 code = "obj = { js: 'nashorn' }; obj.js"; 2.7 - assertEquals("nashorn", eval(cx, "<evalTest2>", code)); 2.8 + assertEquals(eval(cx, "<evalTest2>", code), "nashorn"); 2.9 } finally { 2.10 Context.setGlobal(oldGlobal); 2.11 } 2.12 } 2.13 2.14 - // basic check for JS reflection access 2.15 + // basic check for JS reflection access - java.util.Map-like access on ScriptObject 2.16 @Test 2.17 public void reflectionTest() { 2.18 final Options options = new Options(""); 2.19 @@ -70,12 +70,11 @@ 2.20 2.21 final Object obj = cx.getGlobal().get("obj"); 2.22 2.23 - assertTrue(obj instanceof Map); 2.24 + assertTrue(obj instanceof ScriptObject); 2.25 2.26 - @SuppressWarnings("unchecked") 2.27 - final Map<Object, Object> map = (Map<Object, Object>)obj; 2.28 + final ScriptObject sobj = (ScriptObject)obj; 2.29 int count = 0; 2.30 - for (final Map.Entry<?, ?> ex : map.entrySet()) { 2.31 + for (final Map.Entry<?, ?> ex : sobj.entrySet()) { 2.32 final Object key = ex.getKey(); 2.33 if (key.equals("x")) { 2.34 assertTrue(ex.getValue() instanceof Number); 2.35 @@ -89,13 +88,13 @@ 2.36 count++; 2.37 } 2.38 } 2.39 - assertEquals(2, count); 2.40 - assertEquals(2, map.size()); 2.41 + assertEquals(count, 2); 2.42 + assertEquals(sobj.size(), 2); 2.43 2.44 // add property 2.45 - map.put("zee", "hello"); 2.46 - assertEquals("hello", map.get("zee")); 2.47 - assertEquals(3, map.size()); 2.48 + sobj.put("zee", "hello"); 2.49 + assertEquals(sobj.get("zee"), "hello"); 2.50 + assertEquals(sobj.size(), 3); 2.51 2.52 } finally { 2.53 Context.setGlobal(oldGlobal);