From 24f633bfd6cd1165bf48aeaa731caaefe608f89a Mon Sep 17 00:00:00 2001 From: Guy Korland Date: Thu, 23 Jul 2020 16:29:58 +0300 Subject: [PATCH] Cleanups (#77) * Code cleanups * replace range check with catching IndexOutOfBoundsException --- .../graph_entities/GraphEntity.java | 2 +- .../redisgraph/graph_entities/Path.java | 1 - .../redisgraph/graph_entities/Property.java | 2 - .../impl/resultset/ResultSetImpl.java | 18 +++-- .../impl/resultset/ResultSetScalarTypes.java | 8 ++- .../redisgraph/RedisGraphAPITest.java | 68 +++++++++---------- .../redisgraph/graph_entities/PathTest.java | 3 - 7 files changed, 45 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/redislabs/redisgraph/graph_entities/GraphEntity.java b/src/main/java/com/redislabs/redisgraph/graph_entities/GraphEntity.java index 61b9dbe..e86e302 100644 --- a/src/main/java/com/redislabs/redisgraph/graph_entities/GraphEntity.java +++ b/src/main/java/com/redislabs/redisgraph/graph_entities/GraphEntity.java @@ -10,7 +10,7 @@ public abstract class GraphEntity { //members protected long id; - protected final Map propertyMap = new HashMap<>(); + protected final Map> propertyMap = new HashMap<>(); //setters & getters diff --git a/src/main/java/com/redislabs/redisgraph/graph_entities/Path.java b/src/main/java/com/redislabs/redisgraph/graph_entities/Path.java index fa86484..a77eaea 100644 --- a/src/main/java/com/redislabs/redisgraph/graph_entities/Path.java +++ b/src/main/java/com/redislabs/redisgraph/graph_entities/Path.java @@ -1,6 +1,5 @@ package com.redislabs.redisgraph.graph_entities; -import java.util.ArrayList; import java.util.List; import java.util.Objects; diff --git a/src/main/java/com/redislabs/redisgraph/graph_entities/Property.java b/src/main/java/com/redislabs/redisgraph/graph_entities/Property.java index 2f481d0..4be4a7a 100644 --- a/src/main/java/com/redislabs/redisgraph/graph_entities/Property.java +++ b/src/main/java/com/redislabs/redisgraph/graph_entities/Property.java @@ -1,7 +1,5 @@ package com.redislabs.redisgraph.graph_entities; -import com.redislabs.redisgraph.ResultSet; - import java.util.Objects; /** diff --git a/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java b/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java index 7b4a70b..b852c5b 100644 --- a/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java +++ b/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java @@ -29,13 +29,14 @@ public class ResultSetImpl implements ResultSet { /** * @param rawResponse the raw representation of response is at most 3 lists of objects. * The last list is the statistics list. - * @param redisGraph, the graph local cache + * @param redisGraph the graph connection + * @param cache the graph local cache */ public ResultSetImpl(List rawResponse, RedisGraph redisGraph, GraphCache cache) { this.redisGraph = redisGraph; this.cache = cache; - // If a run-time error occured, the last member of the rawResponse will be a JedisDataException. + // If a run-time error occurred, the last member of the rawResponse will be a JedisDataException. if (rawResponse.get(rawResponse.size()-1) instanceof JedisDataException) { throw new JRedisGraphRunTimeException((Throwable) rawResponse.get(rawResponse.size() - 1)); @@ -45,8 +46,8 @@ public ResultSetImpl(List rawResponse, RedisGraph redisGraph, GraphCache header = parseHeader(new ArrayList<>()); results = new ArrayList<>(); - statistics = rawResponse.size()> 0 ? parseStatistics(rawResponse.get(rawResponse.size() - 1)) : - parseStatistics(new ArrayList()); + statistics = rawResponse.isEmpty() ? parseStatistics(new ArrayList()) : + parseStatistics(rawResponse.get(rawResponse.size() - 1)) ; } else { @@ -85,15 +86,12 @@ private List parseResult(List> rawResultSet) { case COLUMN_RELATION: parsedRow.add(deserializeEdge(obj)); break; - case COLUMN_SCALAR: { + case COLUMN_SCALAR: parsedRow.add(deserializeScalar(obj)); break; - } - default: { + default: parsedRow.add(null); break; - } - } } @@ -203,7 +201,7 @@ private void deserializeGraphEntityProperties(GraphEntity entity, List rawProperty : rawProperties) { - Property property = new Property(); + Property property = new Property<>(); property.setName(cache.getPropertyName(((Long) rawProperty.get(0)).intValue(), redisGraph)); diff --git a/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetScalarTypes.java b/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetScalarTypes.java index e9c04e4..2f23ca8 100644 --- a/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetScalarTypes.java +++ b/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetScalarTypes.java @@ -14,12 +14,14 @@ enum ResultSetScalarTypes { VALUE_NODE, VALUE_PATH; - - static ResultSetScalarTypes[] values = values(); + private static final ResultSetScalarTypes[] values = values(); public static ResultSetScalarTypes getValue(int index) { - if (index < 0 || index > values.length) throw new JedisDataException("Unrecognized response type"); + try { return values[index]; + } catch(IndexOutOfBoundsException e) { + throw new JedisDataException("Unrecognized response type"); + } } } diff --git a/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java b/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java index e3e97ce..7d42997 100644 --- a/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java +++ b/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java @@ -203,17 +203,15 @@ public void testRecord(){ String place = "TLV"; int since = 2000; + Property nameProperty = new Property<>("name", name); + Property ageProperty = new Property<>("age", age); + Property doubleProperty = new Property<>("doubleValue", doubleValue); + Property trueBooleanProperty = new Property<>("boolValue", true); + Property falseBooleanProperty = new Property<>("boolValue", false); + Property nullProperty = new Property<>("nullValue", null); - - Property nameProperty = new Property("name", name); - Property ageProperty = new Property("age", age); - Property doubleProperty = new Property("doubleValue", doubleValue); - Property trueBooleanProperty = new Property("boolValue", true); - Property falseBooleanProperty = new Property("boolValue", false); - Property nullProperty = new Property("nullValue", null); - - Property placeProperty = new Property("place", place); - Property sinceProperty = new Property("since", since); + Property placeProperty = new Property<>("place", place); + Property sinceProperty = new Property<>("since", since); Node expectedNode = new Node(); expectedNode.setId(0); @@ -340,9 +338,9 @@ public void testMultiThread(){ mapToObj(i-> api.query("social", "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r, a.age")). collect(Collectors.toList()); - Property nameProperty = new Property("name", "roi"); - Property ageProperty = new Property("age", 32); - Property lastNameProperty =new Property("lastName", "a"); + Property nameProperty = new Property<>("name", "roi"); + Property ageProperty = new Property<>("age", 32); + Property lastNameProperty =new Property<>("lastName", "a"); Node expectedNode = new Node(); expectedNode.setId(0); @@ -423,9 +421,9 @@ public void testAdditionToProcedures(){ Assert.assertNotNull(api.query("social", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') CREATE (a)-[:knows]->(b)")); //expected objects init - Property nameProperty = new Property("name", "roi"); - Property ageProperty = new Property("age", 32); - Property lastNameProperty =new Property("lastName", "a"); + Property nameProperty = new Property<>("name", "roi"); + Property ageProperty = new Property<>("age", 32); + Property lastNameProperty =new Property<>("lastName", "a"); Node expectedNode = new Node(); expectedNode.setId(0); @@ -549,7 +547,7 @@ public void testMultiExec(){ Assert.assertEquals(1, schemaNames.size()); Assert.assertEquals("n", schemaNames.get(0)); - Property nameProperty = new Property("name", "a"); + Property nameProperty = new Property<>("name", "a"); Node expectedNode = new Node(); expectedNode.setId(0); @@ -596,15 +594,15 @@ public void testContextedAPI() { int since = 2000; - Property nameProperty = new Property("name", name); - Property ageProperty = new Property("age", age); - Property doubleProperty = new Property("doubleValue", doubleValue); - Property trueBooleanProperty = new Property("boolValue", true); - Property falseBooleanProperty = new Property("boolValue", false); - Property nullProperty = new Property("nullValue", null); + Property nameProperty = new Property<>("name", name); + Property ageProperty = new Property<>("age", age); + Property doubleProperty = new Property<>("doubleValue", doubleValue); + Property trueBooleanProperty = new Property<>("boolValue", true); + Property falseBooleanProperty = new Property<>("boolValue", false); + Property nullProperty = new Property<>("nullValue", null); - Property placeProperty = new Property("place", place); - Property sinceProperty = new Property("since", since); + Property placeProperty = new Property<>("place", place); + Property sinceProperty = new Property<>("since", since); Node expectedNode = new Node(); expectedNode.setId(0); @@ -737,9 +735,9 @@ public void testArraySupport() { Node expectedANode = new Node(); expectedANode.setId(0); expectedANode.addLabel("person"); - Property aNameProperty = new Property("name", "a"); - Property aAgeProperty = new Property("age", 32); - Property aListProperty = new Property("array", Arrays.asList(0L, 1L, 2L)); + Property aNameProperty = new Property<>("name", "a"); + Property aAgeProperty = new Property<>("age", 32); + Property> aListProperty = new Property<>("array", Arrays.asList(0L, 1L, 2L)); expectedANode.addProperty(aNameProperty); expectedANode.addProperty(aAgeProperty); expectedANode.addProperty(aListProperty); @@ -748,9 +746,9 @@ public void testArraySupport() { Node expectedBNode = new Node(); expectedBNode.setId(1); expectedBNode.addLabel("person"); - Property bNameProperty = new Property("name", "b"); - Property bAgeProperty = new Property("age", 30); - Property bListProperty = new Property("array", Arrays.asList(3L, 4L, 5L)); + Property bNameProperty = new Property<>("name", "b"); + Property bAgeProperty = new Property<>("age", 30); + Property> bListProperty = new Property<>("array", Arrays.asList(3L, 4L, 5L)); expectedBNode.addProperty(bNameProperty); expectedBNode.addProperty(bAgeProperty); expectedBNode.addProperty(bListProperty); @@ -783,7 +781,7 @@ public void testArraySupport() { Assert.assertEquals(Arrays.asList("x"), record.keys()); - List x = record.getValue("x"); + List x = record.getValue("x"); Assert.assertEquals(Arrays.asList(0L, 1L, 2L), x); // test collect @@ -928,18 +926,14 @@ record = resultSet.next(); // Test a query that produces 2 records, the first containing a path and the second containing a null value. resultSet = api.query("social", "MATCH (a) OPTIONAL MATCH p = (a)-[e]->(b) RETURN p"); Assert.assertEquals(2, resultSet.size()); + record = resultSet.next(); Assert.assertEquals(1, record.size()); - - Object path = record.getValue(0); Assert.assertNotNull(record.getValue(0)); record = resultSet.next(); Assert.assertEquals(1, record.size()); - - path = record.getValue(0); Assert.assertNull(record.getValue(0)); - } @Test diff --git a/src/test/java/com/redislabs/redisgraph/graph_entities/PathTest.java b/src/test/java/com/redislabs/redisgraph/graph_entities/PathTest.java index 74581b3..ee65e68 100644 --- a/src/test/java/com/redislabs/redisgraph/graph_entities/PathTest.java +++ b/src/test/java/com/redislabs/redisgraph/graph_entities/PathTest.java @@ -3,7 +3,6 @@ import nl.jqno.equalsverifier.EqualsVerifier; import org.junit.Test; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; @@ -28,12 +27,10 @@ private Edge buildEdge(int id, int src, int dst){ } private List buildNodeArray(int size) { - List nodes = new ArrayList<>(); return IntStream.range(0, size).mapToObj(i -> buildNode(i)).collect(Collectors.toList()); } private List buildEdgeArray(int size){ - List nodes = new ArrayList<>(); return IntStream.range(0, size).mapToObj(i -> buildEdge(i, i, i+1)).collect(Collectors.toList()); }