Skip to content

Commit

Permalink
Removes generics causing problems in the ResultSet. Fixes hazelcast#1…
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom Bujok committed Oct 10, 2017
1 parent 93016e6 commit 80d0b10
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 24 deletions.
6 changes: 6 additions & 0 deletions hazelcast/pom.xml
Expand Up @@ -484,5 +484,11 @@
<version>2.1.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Expand Up @@ -24,12 +24,12 @@
import java.util.List;
import java.util.Map;

public class ResultSet<K, V> extends AbstractSet<Map.Entry<K, V>> {
public class ResultSet extends AbstractSet<Map.Entry> {

private final List<Map.Entry<K, V>> entries;
private final List<Map.Entry> entries;
private final IterationType iterationType;

public ResultSet(List<Map.Entry<K, V>> entries, IterationType iterationType) {
public ResultSet(List<Map.Entry> entries, IterationType iterationType) {
this.entries = entries;
this.iterationType = iterationType;
}
Expand All @@ -56,7 +56,7 @@ public int size() {

private class ResultIterator implements Iterator {

private final Iterator<Map.Entry<K, V>> iterator = entries.iterator();
private final Iterator<Map.Entry> iterator = entries.iterator();

@Override
public boolean hasNext() {
Expand Down
23 changes: 23 additions & 0 deletions hazelcast/src/test/java/com/hazelcast/map/BasicMapTest.java
Expand Up @@ -16,6 +16,7 @@

package com.hazelcast.map;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.hazelcast.config.Config;
import com.hazelcast.core.EntryAdapter;
import com.hazelcast.core.EntryEvent;
Expand All @@ -24,6 +25,7 @@
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.core.MapEvent;
import com.hazelcast.query.PagingPredicate;
import com.hazelcast.query.Predicate;
import com.hazelcast.test.AssertTask;
import com.hazelcast.test.HazelcastParallelClassRunner;
Expand Down Expand Up @@ -57,6 +59,7 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
Expand Down Expand Up @@ -1190,6 +1193,26 @@ public void testIfWeCarryRecordVersionInfoToReplicas() {
}
}

@Test
public void github_11489() throws Exception {
HazelcastInstance hz = createHazelcastInstance();
IMap test = hz.getMap("test");
for (int i = 0; i < 1000; i++) {
test.put(i, i);
}

PagingPredicate pagingPredicate = new PagingPredicate(new Predicate() {
@Override
public boolean apply(Map.Entry mapEntry) {
return true;
}
}, 1000);

ObjectMapper objectMapper = new ObjectMapper();
String result = objectMapper.writeValueAsString(test.values(pagingPredicate));
assertNotNull(result);
}

@Test
public void testNullChecks() {
final IMap<String, String> map = getInstance().getMap("testNullChecks");
Expand Down
Expand Up @@ -42,71 +42,71 @@ public class ResultSetTest {

@Test
public void testSize_whenEmpty() {
List<Map.Entry<Object, Object>> emptyList = Collections.emptyList();
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(emptyList, IterationType.KEY);
List<Map.Entry> emptyList = Collections.emptyList();
ResultSet resultSet = new ResultSet(emptyList, IterationType.KEY);
assertEquals(0, resultSet.size());
}

@Test
public void testSize_whenNull() {
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(null, IterationType.KEY);
ResultSet resultSet = new ResultSet(null, IterationType.KEY);
assertEquals(0, resultSet.size());
}

@Test
public void testSize_whenNotEmpty() {
List<Map.Entry<Object, Object>> entries = new ArrayList<Map.Entry<Object, Object>>();
entries.add(new MapEntrySimple<Object, Object>(null, null));
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(entries, IterationType.KEY);
List<Map.Entry> entries = new ArrayList<Map.Entry>();
entries.add(new MapEntrySimple(null, null));
ResultSet resultSet = new ResultSet(entries, IterationType.KEY);
assertEquals(1, resultSet.size());
}

@Test
public void testIterator_whenEmpty() {
List<Map.Entry<Object, Object>> emptyList = Collections.emptyList();
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(emptyList, IterationType.KEY);
List<Map.Entry> emptyList = Collections.emptyList();
ResultSet resultSet = new ResultSet(emptyList, IterationType.KEY);
Iterator iterator = resultSet.iterator();
assertFalse(iterator.hasNext());
}

@Test
public void testIterator_whenNull() {
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(null, IterationType.KEY);
ResultSet resultSet = new ResultSet(null, IterationType.KEY);
Iterator iterator = resultSet.iterator();
assertFalse(iterator.hasNext());
}

@Test
public void testIterator_whenNotEmpty_IterationType_Key() {
List<Map.Entry<Object, Object>> entries = new ArrayList<Map.Entry<Object, Object>>();
MapEntrySimple<Object, Object> entry = new MapEntrySimple<Object, Object>("key", "value");
List<Map.Entry> entries = new ArrayList<Map.Entry>();
MapEntrySimple entry = new MapEntrySimple("key", "value");
entries.add(entry);
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(entries, IterationType.KEY);
ResultSet resultSet = new ResultSet(entries, IterationType.KEY);
Iterator iterator = resultSet.iterator();
assertTrue(iterator.hasNext());
assertEquals("key", iterator.next());
}

@Test
public void testIterator_whenNotEmpty_IterationType_Value() {
List<Map.Entry<Object, Object>> entries = new ArrayList<Map.Entry<Object, Object>>();
MapEntrySimple<Object, Object> entry = new MapEntrySimple<Object, Object>("key", "value");
List<Map.Entry> entries = new ArrayList<Map.Entry>();
MapEntrySimple entry = new MapEntrySimple("key", "value");
entries.add(entry);
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(entries, IterationType.VALUE);
ResultSet resultSet = new ResultSet(entries, IterationType.VALUE);
Iterator iterator = resultSet.iterator();
assertTrue(iterator.hasNext());
assertEquals("value", iterator.next());
}

@Test
public void testIterator_whenNotEmpty_IterationType_Entry() {
List<Map.Entry<Object, Object>> entries = new ArrayList<Map.Entry<Object, Object>>();
MapEntrySimple<Object, Object> entry = new MapEntrySimple<Object, Object>("key", "value");
List<Map.Entry> entries = new ArrayList<Map.Entry>();
MapEntrySimple entry = new MapEntrySimple("key", "value");
entries.add(entry);
ResultSet<Object, Object> resultSet = new ResultSet<Object, Object>(entries, IterationType.ENTRY);
Iterator<Map.Entry<Object, Object>> iterator = resultSet.iterator();
ResultSet resultSet = new ResultSet(entries, IterationType.ENTRY);
Iterator<Map.Entry> iterator = resultSet.iterator();
assertTrue(iterator.hasNext());
Map.Entry<Object, Object> entryFromIterator = iterator.next();
Map.Entry entryFromIterator = iterator.next();
assertEquals("key", entryFromIterator.getKey());
assertEquals("value", entryFromIterator.getValue());
}
Expand Down

0 comments on commit 80d0b10

Please sign in to comment.