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));
+    }
 }

Reply via email to