Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1130 b791c1057 -> 6007f52be
TINKERPOP-1130 Added configuration filter for Compatibilities Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6007f52b Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6007f52b Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6007f52b Branch: refs/heads/TINKERPOP-1130 Commit: 6007f52be9ee0a21f0c69b7911b14b75bf851869 Parents: b791c10 Author: Stephen Mallette <[email protected]> Authored: Thu Dec 29 14:05:20 2016 -0500 Committer: Stephen Mallette <[email protected]> Committed: Thu Dec 29 14:05:20 2016 -0500 ---------------------------------------------------------------------- .../gremlin/structure/io/Compatibilities.java | 11 +++++++++++ .../gremlin/structure/io/Compatibility.java | 2 ++ .../tinkerpop/gremlin/structure/io/Model.java | 12 ++++++------ .../io/graphson/GraphSONCompatibility.java | 7 +++++-- .../structure/io/gryo/GryoCompatibility.java | 5 +++++ .../gremlin/structure/io/CompatibilitiesTest.java | 17 +++++++++++++++++ 6 files changed, 46 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6007f52b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibilities.java ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibilities.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibilities.java index 5b66cd1..267823c 100644 --- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibilities.java +++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibilities.java @@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.structure.io; import java.util.Arrays; import java.util.List; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -49,6 +50,8 @@ public class Compatibilities { */ private String ioVersionAfter = "0.0"; + private String configuredAs = ".*"; + private Compatibilities(final Class<? extends Enum<? extends Compatibility>> c) { this.compatibility = c; } @@ -103,14 +106,22 @@ public class Compatibilities { return before(end).after(start); } + public Compatibilities configuredAs(final String regex) { + this.configuredAs = regex; + return this; + } + public List<Compatibility> match() { final Compatibility[] enumArray = (Compatibility[]) compatibility.getEnumConstants(); final List<Compatibility> enums = Arrays.asList(enumArray); + final Pattern pattern = Pattern.compile(configuredAs); + return enums.stream() .filter(c -> beforeRelease(c, releaseVersionBefore)) .filter(c -> afterRelease(c, releaseVersionAfter)) .filter(c -> beforeIo(c, ioVersionBefore)) .filter(c -> afterIo(c, ioVersionAfter)) + .filter(c -> pattern.matcher(c.getConfiguration()).matches()) .collect(Collectors.toList()); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6007f52b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibility.java ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibility.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibility.java index 8dce869..dda5fb3 100644 --- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibility.java +++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Compatibility.java @@ -39,4 +39,6 @@ public interface Compatibility { * Gets the version of the IO type (i.e. GraphSON 2.0) */ public String getVersion(); + + public String getConfiguration(); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6007f52b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java index 2640e6c..ef918e9 100644 --- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java +++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java @@ -211,7 +211,7 @@ public class Model { addExtendedEntry(new Byte("1"), "Byte", "", UNTYPED_GRAPHSON_ONLY.toArray(new Compatibility[UNTYPED_GRAPHSON_ONLY.size()])); addEntry("Extended", () -> java.nio.ByteBuffer.wrap("some bytes for you".getBytes()), "ByteBuffer", "", new HashMap<Compatibility, String>() {{ - put(GryoCompatibility.V1D0_3_2_3, "ByteBuffer was added to Gryo 1.0 as of 3.2.4. It was not supported in 3.2.3."); + put(GryoCompatibility.V1D0_3_2_3, "ByteBuffer was added to Gryo 1.0 as of 3.2.4. It was not supported in earlier versions."); }}, GraphSONCompatibility.V1D0_3_2_3, GraphSONCompatibility.V1D0_3_3_0, GraphSONCompatibility.V2D0_NO_TYPE_3_2_3, GraphSONCompatibility.V2D0_NO_TYPE_3_3_0, GryoCompatibility.V1D0_3_2_3); @@ -220,10 +220,10 @@ public class Model { try { addEntry("Extended", InetAddress.getByName("localhost"), "InetAddress", "", new HashMap<Compatibility, String>() {{ - put(GryoCompatibility.V1D0_3_2_3, "InetAddress was added to Gryo 1.0 as of 3.2.4. It was not supported in 3.2.3."); + put(GryoCompatibility.V1D0_3_2_3, "InetAddress was added to Gryo 1.0 as of 3.2.4. It was not supported in earlier versions."); }}, - GraphSONCompatibility.V1D0_3_2_3, GraphSONCompatibility.V1D0_3_3_0, GraphSONCompatibility.V2D0_NO_TYPE_3_2_3, GraphSONCompatibility.V2D0_NO_TYPE_3_3_0, - GryoCompatibility.V1D0_3_2_3); + GraphSONCompatibility.V1D0_3_2_3, GraphSONCompatibility.V1D0_3_3_0, GraphSONCompatibility.V2D0_NO_TYPE_3_2_3, + GraphSONCompatibility.V2D0_NO_TYPE_3_3_0, GryoCompatibility.V1D0_3_2_3); } catch (Exception ex) { throw new RuntimeException(ex); } @@ -332,7 +332,7 @@ public class Model { final List<Compatibility> incompatibilityList = Compatibilities.with(GryoCompatibility.class) .before("3.0") .match(); - incompatibilityList.addAll(Arrays.asList(GraphSONCompatibility.V2D0_PARTIAL_3_2_3, GraphSONCompatibility.V2D0_PARTIAL_3_2_4, GraphSONCompatibility.V2D0_PARTIAL_3_3_0)); + incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*partial.*").match()); final Compatibility[] incompatibilities = new Compatibility[incompatibilityList.size()]; incompatibilityList.toArray(incompatibilities); addEntry("RequestMessage", obj, title, description, @@ -343,7 +343,7 @@ public class Model { final List<Compatibility> incompatibilityList = Compatibilities.with(GryoCompatibility.class) .before("3.0") .match(); - incompatibilityList.addAll(Arrays.asList(GraphSONCompatibility.V2D0_PARTIAL_3_2_3, GraphSONCompatibility.V2D0_PARTIAL_3_2_4, GraphSONCompatibility.V2D0_PARTIAL_3_3_0)); + incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*partial.*").match()); final Compatibility[] incompatibilities = new Compatibility[incompatibilityList.size()]; incompatibilityList.toArray(incompatibilities); addEntry("ResponseMessage", obj, title, description, http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6007f52b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONCompatibility.java ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONCompatibility.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONCompatibility.java index f267bcc..522988a 100644 --- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONCompatibility.java +++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONCompatibility.java @@ -50,8 +50,6 @@ public enum GraphSONCompatibility implements Compatibility { this.graphSONVersion = graphSONVersion; } - - public byte[] readFromResource(final String resource) throws IOException { final String testResource = "_" + tinkerpopVersion.replace(".", "_") + SEP + resource + "-" + configuration + ".json"; return IOUtils.toByteArray(getClass().getResourceAsStream(testResource)); @@ -68,6 +66,11 @@ public enum GraphSONCompatibility implements Compatibility { } @Override + public String getConfiguration() { + return configuration; + } + + @Override public String toString() { return tinkerpopVersion + "-" + configuration; } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6007f52b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoCompatibility.java ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoCompatibility.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoCompatibility.java index 013779a..b1283f8 100644 --- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoCompatibility.java +++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoCompatibility.java @@ -100,6 +100,11 @@ public enum GryoCompatibility implements Compatibility { } @Override + public String getConfiguration() { + return configuration; + } + + @Override public String toString() { return tinkerpopVersion + "-" + configuration; } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6007f52b/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/CompatibilitiesTest.java ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/CompatibilitiesTest.java b/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/CompatibilitiesTest.java index 2e82e22..c181410 100644 --- a/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/CompatibilitiesTest.java +++ b/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/CompatibilitiesTest.java @@ -18,6 +18,7 @@ */ package org.apache.tinkerpop.gremlin.structure.io; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONCompatibility; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoCompatibility; import org.junit.Test; @@ -73,4 +74,20 @@ public class CompatibilitiesTest { .match(); assertThat(compatibilityList, containsInAnyOrder(GryoCompatibility.V3D0_3_3_0)); } + + @Test + public void shouldFindGraphSONWithConfigurationPartial() { + final List<Compatibility> compatibilityList = Compatibilities.with(GraphSONCompatibility.class) + .configuredAs(".*partial.*").match(); + assertThat(compatibilityList, containsInAnyOrder(GraphSONCompatibility.V2D0_PARTIAL_3_2_3, + GraphSONCompatibility.V2D0_PARTIAL_3_2_4, GraphSONCompatibility.V2D0_PARTIAL_3_3_0)); + } + + @Test + public void shouldFindGraphSONAfterVersion3_2_3WithConfigurationPartial() { + final List<Compatibility> compatibilityList = Compatibilities.with(GraphSONCompatibility.class) + .afterRelease("3.2.4") + .configuredAs(".*partial.*").match(); + assertThat(compatibilityList, containsInAnyOrder(GraphSONCompatibility.V2D0_PARTIAL_3_3_0)); + } }
