Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1130 31a35e09d -> d4c06cd5d


TINKERPOP-1130 Removed incompatibility notes concept.

The incompability notes were kinda confusing and they weren't really doing 
anything to help make things more clear as to why something was incompatible.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d4c06cd5
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d4c06cd5
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d4c06cd5

Branch: refs/heads/TINKERPOP-1130
Commit: d4c06cd5d7b9cbcbf5b4d0ef2605e1ff8ae52c46
Parents: 31a35e0
Author: Stephen Mallette <[email protected]>
Authored: Tue Jan 3 09:54:46 2017 -0500
Committer: Stephen Mallette <[email protected]>
Committed: Tue Jan 3 09:54:46 2017 -0500

----------------------------------------------------------------------
 .../tinkerpop/gremlin/structure/io/Model.java   | 96 ++++++--------------
 .../structure/io/AbstractCompatibilityTest.java |  3 +-
 2 files changed, 27 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d4c06cd5/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 2c8d3a3..0d80b8e 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
@@ -102,17 +102,16 @@ public class Model {
                 .configuredAs(".*no-types").matchToArray();
 
         // IMPORTANT - the "title" or name of the Entry needs to be unique
-        addCoreEntry(File.class, "Class", new HashMap<Compatibility, String>() 
{{
-            put(GryoCompatibility.V1D0_3_2_3, "Serialization of Class in Gryo 
1.0 had a bug that prevented proper operation in versions prior to 3.2.4.");
-        }}, noTypeGraphSONPlusGryo3_2_3);
+
+        // Serialization of Class in Gryo 1.0 had a bug that prevented proper 
operation in versions prior to 3.2.4.
+        addCoreEntry(File.class, "Class", "", noTypeGraphSONPlusGryo3_2_3);
         addCoreEntry(new Date(1481750076295L), "Date");
         addCoreEntry(100.00d, "Double");
         addCoreEntry(100.00f, "Float", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         addCoreEntry(100, "Integer");
         addCoreEntry(100L, "Long", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
-        addCoreEntry(new java.sql.Timestamp(1481750076295L), "Timestamp", new 
HashMap<Compatibility, String>() {{
-            put(GryoCompatibility.V1D0_3_2_3, "Timestamp was added to Gryo 1.0 
as of 3.2.4. It was not supported in 3.2.3.");
-        }}, noTypeGraphSONPlusGryo3_2_3);
+        // Timestamp was added to Gryo 1.0 as of 3.2.4. It was not supported 
in 3.2.3.
+        addCoreEntry(new java.sql.Timestamp(1481750076295L), "Timestamp", "", 
noTypeGraphSONPlusGryo3_2_3);
         addCoreEntry(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786"), 
"UUID");
 
         // TODO: remove incompatibilities in Element on GraphSON 2.0
@@ -145,12 +144,10 @@ public class Model {
         metrics.addNested(new MutableMetrics(tm.getMetrics("3.0.0()")));
         addGraphProcessEntry(metrics, "Metrics", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         addGraphProcessEntry(P.gt(0), "P", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
-        addGraphProcessEntry(P.gt(0).and(P.lt(10)), "P and", "", new 
HashMap<Compatibility, String>() {{
-            put(GryoCompatibility.V1D0_3_2_3, "A bug in the the Gryo 
serialization of ConjunctiveP prevented its proper serialization in versions 
prior to 3.3.0 and 3.2.4.");
-        }}, noTypeGraphSONPlusGryo3_2_3);
-        addGraphProcessEntry(P.gt(0).or(P.within(-1, -10, -100)), "P or", "", 
new HashMap<Compatibility, String>() {{
-            put(GryoCompatibility.V1D0_3_2_3, "A bug in the the Gryo 
serialization of ConjunctiveP prevented its proper serialization in versions 
prior to 3.3.0 and 3.2.4.");
-        }}, noTypeGraphSONPlusGryo3_2_3);
+        // A bug in the the Gryo serialization of ConjunctiveP prevented its 
proper serialization in versions prior to 3.3.0 and 3.2.4.
+        addGraphProcessEntry(P.gt(0).and(P.lt(10)), "P and", "", 
noTypeGraphSONPlusGryo3_2_3);
+        // A bug in the the Gryo serialization of ConjunctiveP prevented its 
proper serialization in versions prior to 3.3.0 and 3.2.4.
+        addGraphProcessEntry(P.gt(0).or(P.within(-1, -10, -100)), "P or", "", 
noTypeGraphSONPlusGryo3_2_3);
         addGraphProcessEntry(Scope.local, "Scope", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         addGraphProcessEntry(T.label, "T", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         addGraphProcessEntry(createStaticTraversalMetrics(), 
"TraversalMetrics", "", Compatibilities.UNTYPED_GRAPHSON.matchToArray());
@@ -162,6 +159,8 @@ public class Model {
         final Map<String,Object> requestAliases = new HashMap<>();
         requestAliases.put("g", "social");
 
+        // RequestMessage is not testable prior to Gryo 3.0 as serialization 
was handled by an intermediate component
+        // (MessageSerializer) that doesn't fit the test model.
         RequestMessage requestMessage;
         requestMessage = RequestMessage.build("authentication").
                 
overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
@@ -188,6 +187,8 @@ public class Model {
                 add("gremlin", "social.V(x)", "bindings", requestBindings, 
"language", "gremlin-groovy", "aliases", requestAliases).create();
         addRequestMessageEntry(requestMessage, "Sessionless Eval Aliased", 
"The following `RequestMessage` is an example of a sessionless request for a 
script evaluation with an alias that binds the `TraversalSource` of \"g\" to 
\"social\".");
 
+        // ResponseMessage is not testable prior to Gryo 3.0 as serialization 
was handled by an intermediate component
+        // (MessageSerializer) that doesn't fit the test model
         ResponseMessage responseMessage = 
ResponseMessage.build(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).
                 
code(org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode.AUTHENTICATE).create();
         addResponseMessageEntry(responseMessage, "Authentication Challenge", 
"When authentication is enabled, an initial request to the server will result 
in an authentication challenge. The typical response message will appear as 
follows, but handling it could be different depending on the SASL 
implementation (e.g. multiple challenges maybe requested in some cases, but no 
in the default provided by Gremlin Server).");
@@ -199,17 +200,13 @@ public class Model {
         addExtendedEntry(new BigDecimal(new 
java.math.BigInteger("123456789987654321123456789987654321")), "BigDecimal", 
"", Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         addExtendedEntry(new 
BigInteger("123456789987654321123456789987654321"), "BigInteger", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         addExtendedEntry(new Byte("1"), "Byte", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
-        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 earlier versions.");
-                }}, noTypeGraphSONPlusGryo3_2_3);
+        // ByteBuffer was added to Gryo 1.0 as of 3.2.4. It was not supported 
in earlier versions.
+        addEntry("Extended", () -> java.nio.ByteBuffer.wrap("some bytes for 
you".getBytes()), "ByteBuffer", "", noTypeGraphSONPlusGryo3_2_3);
         addExtendedEntry("x".charAt(0), "Char", "", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         addExtendedEntry(Duration.ofDays(5), "Duration","The following example 
is a `Duration` of five days.", 
Compatibilities.UNTYPED_GRAPHSON.matchToArray());
         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 earlier versions.");
-                    }}, noTypeGraphSONPlusGryo3_2_3);
+            // InetAddress was added to Gryo 1.0 as of 3.2.4. It was not 
supported in earlier versions.
+            addEntry("Extended", InetAddress.getByName("localhost"), 
"InetAddress", "", noTypeGraphSONPlusGryo3_2_3);
         } catch (Exception ex) {
             throw new RuntimeException(ex);
         }
@@ -287,11 +284,7 @@ public class Model {
     }
 
     private void addCoreEntry(final Object obj, final String title, final 
String description, final Compatibility... incompatibleWith) {
-        addEntry("Core", obj, title, description, null, incompatibleWith);
-    }
-
-    private void addCoreEntry(final Object obj, final String title, final 
Map<Compatibility, String> incompatibilityNotes, final Compatibility... 
incompatibleWith) {
-        addEntry("Core", obj, title, "", incompatibilityNotes, 
incompatibleWith);
+        addEntry("Core", obj, title, description, incompatibleWith);
     }
 
     private void addGraphStructureEntry(final Object obj, final String title, 
final String description, final Compatibility... incompatibilities) {
@@ -307,11 +300,7 @@ public class Model {
     }
 
     private void addGraphProcessEntry(final Object obj, final String title, 
final String description, final Compatibility... incompatibleWith) {
-        addEntry("Graph Process", obj, title, description, null, 
incompatibleWith);
-    }
-
-    private void addGraphProcessEntry(final Object obj, final String title, 
final String description, final Map<Compatibility, String> 
incompatibilityNotes, final Compatibility... incompatibleWith) {
-        addEntry("Graph Process", obj, title, description, 
incompatibilityNotes, incompatibleWith);
+        addEntry("Graph Process", obj, title, description, incompatibleWith);
     }
 
     private void addRequestMessageEntry(final Object obj, final String title, 
final String description) {
@@ -324,8 +313,7 @@ public class Model {
 
         final Compatibility[] incompatibilities = new 
Compatibility[incompatibilityList.size()];
         incompatibilityList.toArray(incompatibilities);
-        addEntry("RequestMessage", obj, title, description,
-                createIncompatibilityMap("RequestMessage is not testable prior 
to Gryo 3.0 as serialization was handled by an intermediate component 
(MessageSerializer) that doesn't fit the test model.",  incompatibilities), 
incompatibilities);
+        addEntry("RequestMessage", obj, title, description, incompatibilities);
     }
 
     private void addResponseMessageEntry(final Object obj, final String title, 
final String description) {
@@ -342,8 +330,7 @@ public class Model {
 
         final Compatibility[] incompatibilities = new 
Compatibility[incompatibilityList.size()];
         incompatibilityList.toArray(incompatibilities);
-        addEntry("ResponseMessage", obj, title, description,
-                createIncompatibilityMap("ResponseMessage is not testable 
prior to Gryo 3.0 as serialization was handled by an intermediate component 
(MessageSerializer) that doesn't fit the test model.", incompatibilities), 
incompatibilities);
+        addEntry("ResponseMessage", obj, title, description, 
incompatibilities);
     }
 
     private void addExtendedEntry(final Object obj, final String title) {
@@ -365,42 +352,26 @@ public class Model {
     private void addEntry(final String group, final Supplier<?> maker, final 
String title, final String description, final Compatibility... 
incompatibleWith) {
         addEntry(group, null, title, description, 
Collections.unmodifiableList(ALL.stream()
                 .filter(c -> !Arrays.asList(incompatibleWith).contains(c))
-                .collect(Collectors.toList())), maker, null);
-    }
-
-    private void addEntry(final String group, final Supplier<?> maker, final 
String title, final String description,
-                          final Map<Compatibility, String> 
incompatibilityNotes, final Compatibility... incompatibleWith) {
-        addEntry(group, null, title, description, 
Collections.unmodifiableList(ALL.stream()
-                .filter(c -> !Arrays.asList(incompatibleWith).contains(c))
-                .collect(Collectors.toList())), maker, incompatibilityNotes);
-    }
-
-    private void addEntry(final String group, final Object obj, final String 
title, final String description,
-                          final Map<Compatibility, String> 
incompatibilityNotes,
-                          final Compatibility... incompatibleWith) {
-        addEntry(group, obj, title, description, 
Collections.unmodifiableList(ALL.stream()
-                .filter(c -> !Arrays.asList(incompatibleWith).contains(c))
-                .collect(Collectors.toList())), null, incompatibilityNotes);
+                .collect(Collectors.toList())), maker);
     }
 
     private void addEntry(final String group, final Object obj, final String 
title, final String description, final Compatibility... incompatibleWith) {
         addEntry(group, obj, title, description, 
Collections.unmodifiableList(ALL.stream()
                 .filter(c -> !Arrays.asList(incompatibleWith).contains(c))
-                .collect(Collectors.toList())), null, null);
+                .collect(Collectors.toList())), null);
     }
 
     private void addEntry(final String group, final Object obj, final String 
title, final String description,
                             final List<Compatibility> compatibleWith) {
-        addEntry(group, obj, title, description, compatibleWith, null, null);
+        addEntry(group, obj, title, description, compatibleWith, null);
     }
 
     private void addEntry(final String group, final Object obj, final String 
title, final String description,
-                          final List<Compatibility> compatibleWith, final 
Supplier<?> maker,
-                          final Map<Compatibility, String> 
incompatibilityNotes) {
+                          final List<Compatibility> compatibleWith, final 
Supplier<?> maker) {
         if (!entries.containsKey(group))
             entries.put(group, new ArrayList<>());
 
-        entries.get(group).add(new Entry(title, obj, description, 
compatibleWith, maker, incompatibilityNotes));
+        entries.get(group).add(new Entry(title, obj, description, 
compatibleWith, maker));
     }
 
     private Map<Compatibility, String> createIncompatibilityMap(final String 
msg, final Compatibility... incompatibilities) {
@@ -451,29 +422,14 @@ public class Model {
         private final String description;
         private final List<Compatibility> compatibleWith;
         private final Supplier<?> maker;
-        private final Map<Compatibility, String> incompatibilityNotes;
 
         public Entry(final String title, final Object object, final String 
description,
                      final List<Compatibility> compatibleWith, final 
Supplier<?> maker) {
-            this(title, object, description, compatibleWith, maker, 
Collections.emptyMap());
-        }
-
-        public Entry(final String title, final Object object, final String 
description,
-                     final List<Compatibility> compatibleWith, final 
Supplier<?> maker,
-                     final Map<Compatibility, String> incompatibilityNotes) {
             this.title = title;
             this.object = object;
             this.description = description;
             this.compatibleWith = compatibleWith;
             this.maker = maker;
-            this.incompatibilityNotes = 
Optional.ofNullable(incompatibilityNotes).orElseGet(Collections::emptyMap);
-
-            if 
(this.compatibleWith.stream().anyMatch(this.incompatibilityNotes::containsKey))
-                throw new IllegalStateException("The " + title + " entry is 
marked as 'compatible' but it has incompatibility notes");
-        }
-
-        public Map<Compatibility, String> getIncompatibilityNotes() {
-            return Collections.unmodifiableMap(incompatibilityNotes);
         }
 
         public String getTitle() {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d4c06cd5/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractCompatibilityTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractCompatibilityTest.java
 
b/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractCompatibilityTest.java
index 9a53583..99f2de0 100644
--- 
a/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractCompatibilityTest.java
+++ 
b/gremlin-tools/gremlin-io-test/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractCompatibilityTest.java
@@ -41,8 +41,7 @@ public abstract class AbstractCompatibilityTest {
 
     protected void assumeCompatibility(final String resource) {
         final Model.Entry e = model.find(resource).orElseThrow(() -> new 
IllegalStateException("Could not find model"));
-        final String msg = 
e.getIncompatibilityNotes().getOrDefault(getCompatibility(), "no additional 
notes");
-        assumeThat("Test model is not compatible with IO - " + msg, 
e.isCompatibleWith(getCompatibility()), is(true));
+        assumeThat("Test model is not compatible with IO - see comments in 
Model for details", e.isCompatibleWith(getCompatibility()), is(true));
     }
 
     protected <T> T findModelEntryObject(final String resourceName) {

Reply via email to