diff --git a/java/server/src/main/java/org/softwareheritage/graph/AllowedEdges.java b/java/server/src/main/java/org/softwareheritage/graph/AllowedEdges.java --- a/java/server/src/main/java/org/softwareheritage/graph/AllowedEdges.java +++ b/java/server/src/main/java/org/softwareheritage/graph/AllowedEdges.java @@ -21,6 +21,8 @@ * dimension is source, second dimension is destination) */ boolean[][] allowed; + /** When no edge restriction is enforced, bypass the type check code logic */ + boolean bypass; /** * Constructor. @@ -38,6 +40,7 @@ return; } if (edgesFmt.equals("*")) { + this.bypass = true; for (int i = 0; i < nbNodeTypes; i++) { for (int j = 0; j < nbNodeTypes; j++) { allowed[i][j] = true; @@ -73,9 +76,12 @@ * @return true if allowed and false otherwise */ public boolean isAllowed(long srcNodeId, long dstNodeId) { + if (bypass) { + return true; + } Node.Type srcType = graph.getNodeType(srcNodeId); Node.Type dstType = graph.getNodeType(dstNodeId); - return isAllowed(srcType, dstType); + return allowed[srcType.ordinal()][dstType.ordinal()]; } /** @@ -85,6 +91,9 @@ * @see AllowedEdges#isAllowed(long, long) */ public boolean isAllowed(Node.Type srcType, Node.Type dstType) { + if (bypass) { + return true; + } return allowed[srcType.ordinal()][dstType.ordinal()]; } }