@@ -124,42 +124,64 @@ private void writeMockJavaClasses(Path sourceDir) throws Exception {
124124 Files .createDirectories (concurrent );
125125 Files .createDirectories (io );
126126
127+ // java.util.Map
128+ Files .write (util .resolve ("Map.java" ), ("package java.util;\n " +
129+ "public interface Map<K,V> {\n " +
130+ " V get(Object key);\n " +
131+ " V put(K key, V value);\n " +
132+ " V remove(Object key);\n " +
133+ "}\n " ).getBytes (StandardCharsets .UTF_8 ));
134+
127135 // java.util.HashMap (needed for generated native stubs)
128- Files .write (util .resolve (\" HashMap .java \" ), (\" package java .util ;\\ n \" +
129- \"public class HashMap<K,V> {\\ n\" +
130- \" public static class Entry<K,V> {\\ n\" +
131- \" public K key;\\ n\" +
132- \" public V value;\\ n\" +
133- \" public int hash;\\ n\" +
134- \" public int origKeyHash;\\ n\" +
135- \" public Entry<K,V> next;\\ n\" +
136- \" public Entry(K key, V value, int hash, Entry<K,V> next) {\\ n\" +
137- \" this.key = key;\\ n\" +
138- \" this.value = value;\\ n\" +
139- \" this.hash = hash;\\ n\" +
140- \" this.origKeyHash = hash;\\ n\" +
141- \" this.next = next;\\ n\" +
142- \" }\\ n\" +
143- \" }\\ n\" +
144- \" private Entry head;\\ n\" +
145- \" private int size = 0;\\ n\" +
146- \" public HashMap() {}\\ n\" +
147- \" public V put(K key, V value) {\\ n\" +
148- \" for (Entry e = head; e != null; e = e.next) {\\ n\" +
149- \" if (e.key == key) { V old = (V)e.value; e.value = value; return old; }\\ n\" +
150- \" }\\ n\" +
151- \" head = new Entry(key, value, key == null ? 0 : key.hashCode(), head);\\ n\" +
152- \" size++;\\ n\" +
153- \" return null;\\ n\" +
154- \" }\\ n\" +
155- \" public V get(Object key) {\\ n\" +
156- \" for (Entry e = head; e != null; e = e.next) {\\ n\" +
157- \" if (e.key == key) return (V)e.value;\\ n\" +
158- \" }\\ n\" +
159- \" return null;\\ n\" +
160- \" }\\ n\" +
161- \" public int size() { return size; }\\ n\" +
162- \" }\\ n\" ).getBytes(StandardCharsets.UTF_8));
136+ Files .write (util .resolve ("HashMap.java" ), ("package java.util;\n " +
137+ "public class HashMap<K,V> implements Map<K,V> {\n " +
138+ " public static class Entry<K,V> {\n " +
139+ " public K key;\n " +
140+ " public V value;\n " +
141+ " public int hash;\n " +
142+ " public int origKeyHash;\n " +
143+ " public Entry<K,V> next;\n " +
144+ " public Entry(K key, V value, int hash, Entry<K,V> next) {\n " +
145+ " this.key = key;\n " +
146+ " this.value = value;\n " +
147+ " this.hash = hash;\n " +
148+ " this.origKeyHash = hash;\n " +
149+ " this.next = next;\n " +
150+ " }\n " +
151+ " }\n " +
152+ " private Entry head;\n " +
153+ " private int size = 0;\n " +
154+ " public HashMap() {}\n " +
155+ " public V get(Object key) {\n " +
156+ " for (Entry e = head; e != null; e = e.next) {\n " +
157+ " if (e.key == key) return (V)e.value;\n " +
158+ " }\n " +
159+ " return null;\n " +
160+ " }\n " +
161+ " public V put(K key, V value) {\n " +
162+ " for (Entry e = head; e != null; e = e.next) {\n " +
163+ " if (e.key == key) { V old = (V)e.value; e.value = value; return old; }\n " +
164+ " }\n " +
165+ " head = new Entry(key, value, key == null ? 0 : key.hashCode(), head);\n " +
166+ " size++;\n " +
167+ " return null;\n " +
168+ " }\n " +
169+ " public V remove(Object key) {\n " +
170+ " Entry prev = null;\n " +
171+ " Entry e = head;\n " +
172+ " while (e != null) {\n " +
173+ " if (e.key == key) {\n " +
174+ " if (prev == null) head = e.next; else prev.next = e.next;\n " +
175+ " size--;\n " +
176+ " return (V)e.value;\n " +
177+ " }\n " +
178+ " prev = e;\n " +
179+ " e = e.next;\n " +
180+ " }\n " +
181+ " return null;\n " +
182+ " }\n " +
183+ " public int size() { return size; }\n " +
184+ "}\n " ).getBytes (StandardCharsets .UTF_8 ));
163185 // java.lang.Object
164186 Files .write (lang .resolve ("Object.java" ), ("package java.lang;\n " +
165187 "public class Object {\n " +
0 commit comments