METAMODEL-231: Fixed Fixes #88
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/4f4cefdb Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/4f4cefdb Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/4f4cefdb Branch: refs/heads/5.x Commit: 4f4cefdbbe890291def12107b1b20ca6a5b96141 Parents: 63262e9 Author: Tomasz Guzialek <[email protected]> Authored: Sat Jan 30 12:31:44 2016 +0100 Committer: Kasper Sørensen <[email protected]> Committed: Sat Jan 30 12:31:44 2016 +0100 ---------------------------------------------------------------------- CHANGES.md | 1 + .../java/org/apache/metamodel/neo4j/Neo4jDataContext.java | 4 +++- .../org/apache/metamodel/neo4j/Neo4jDataContextTest.java | 10 ++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/4f4cefdb/CHANGES.md ---------------------------------------------------------------------- diff --git a/CHANGES.md b/CHANGES.md index 773a57d..13f1694 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,7 @@ * [METAMODEL-227] - Fix for respecting CSV escape character also when no quote character is set. * [METAMODEL-183] - MongoDB module split into three: common, Mongo2 and Mongo3 to allow use of either old or new MongoDB API. + * [METAMODEL-231] - Fixed a bug causing the Neo4j to represent the same table multiple times within a schema. ### Apache MetaModel 4.5.0 http://git-wip-us.apache.org/repos/asf/metamodel/blob/4f4cefdb/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java ---------------------------------------------------------------------- diff --git a/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java b/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java index 568ad71..cb0b2ac 100644 --- a/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java +++ b/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java @@ -19,7 +19,9 @@ package org.apache.metamodel.neo4j; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import org.apache.http.HttpHost; import org.apache.http.client.methods.HttpGet; @@ -170,7 +172,7 @@ public class Neo4jDataContext extends QueryPostprocessDataContext implements Dat } } - List<String> relationshipPropertiesPerLabel = new ArrayList<String>(); + Set<String> relationshipPropertiesPerLabel = new LinkedHashSet<String>(); for (JSONObject node : nodesPerLabel) { Integer nodeId = (Integer) node.getJSONObject("metadata").get("id"); List<JSONObject> relationshipsPerNode = getOutgoingRelationshipsPerNode(nodeId); http://git-wip-us.apache.org/repos/asf/metamodel/blob/4f4cefdb/neo4j/src/test/java/org/apache/metamodel/neo4j/Neo4jDataContextTest.java ---------------------------------------------------------------------- diff --git a/neo4j/src/test/java/org/apache/metamodel/neo4j/Neo4jDataContextTest.java b/neo4j/src/test/java/org/apache/metamodel/neo4j/Neo4jDataContextTest.java index d4e3774..1246ce2 100644 --- a/neo4j/src/test/java/org/apache/metamodel/neo4j/Neo4jDataContextTest.java +++ b/neo4j/src/test/java/org/apache/metamodel/neo4j/Neo4jDataContextTest.java @@ -100,12 +100,22 @@ public class Neo4jDataContextTest extends Neo4jTestCase { requestWrapper.executeCypherQuery("CREATE (n:JUnitPerson { name: 'Tomasz', age: 26})"); requestWrapper.executeCypherQuery("CREATE (n:JUnitPerson { name: 'Philomeena', age: 18})"); requestWrapper.executeCypherQuery("CREATE (n:JUnitBook { title: 'Introduction to algorithms'})"); + requestWrapper.executeCypherQuery("CREATE (n:JUnitBook { title: 'Rich Dad Poor Dad'})"); requestWrapper.executeCypherQuery("MATCH (a:JUnitPerson),(b:JUnitBook)" + "WHERE a.name = 'Tomasz' AND b.title = 'Introduction to algorithms'" + "CREATE (a)-[r:HAS_READ { rating : 5 }]->(b)"); requestWrapper.executeCypherQuery("MATCH (a:JUnitPerson),(b:JUnitBook)" + "WHERE a.name = 'Philomeena' AND b.title = 'Introduction to algorithms'" + "CREATE (a)-[r:HAS_BROWSED]->(b)"); + requestWrapper.executeCypherQuery("MATCH (a:JUnitPerson),(b:JUnitBook)" + + "WHERE a.name = 'Philomeena' AND b.title = 'Introduction to algorithms'" + + "CREATE (a)-[r:HAS_BROWSED]->(b)"); + requestWrapper.executeCypherQuery("MATCH (a:JUnitPerson),(b:JUnitBook)" + + "WHERE a.name = 'Tomasz' AND b.title = 'Rich Dad Poor Dad'" + + "CREATE (a)-[r:HAS_READ { rating : 4 }]->(b)"); + requestWrapper.executeCypherQuery("MATCH (a:JUnitPerson),(b:JUnitBook)" + + "WHERE a.name = 'Philomeena' AND b.title = 'Rich Dad Poor Dad'" + + "CREATE (a)-[r:HAS_READ { rating : 2 }]->(b)"); Neo4jDataContext strategy = new Neo4jDataContext(getHostname(), getPort(), getUsername(), getPassword()); Schema schema = strategy.getSchemaByName(strategy.getDefaultSchemaName());
