the plot thickens with BulkSet and Tree needing special handling during 
detachment. @spmallette was right about the rabbit hole. Fortuantely, we have 
lots of test cases that failed cause of not handling these collections 
correctly. So that is a win.


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

Branch: refs/heads/tp32
Commit: c01b27ea870b15464a263254248b177a8bd0d9d4
Parents: 12de6fb
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Tue Jun 27 14:56:48 2017 -0600
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Tue Jun 27 14:56:48 2017 -0600

----------------------------------------------------------------------
 .../gremlin/structure/util/detached/DetachedFactory.java  | 10 +++++++++-
 .../structure/util/reference/ReferenceFactory.java        | 10 +++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c01b27ea/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java
index 775e5c6..710511c 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java
@@ -19,6 +19,8 @@
 package org.apache.tinkerpop.gremlin.structure.util.detached;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -86,6 +88,12 @@ public class DetachedFactory {
                 list.add(DetachedFactory.detach(item, withProperties));
             }
             return (D) list;
+        } else if (object instanceof BulkSet) {
+            final BulkSet set = new BulkSet();
+            for (Map.Entry<Object, Long> entry : ((BulkSet<Object>) 
object).asBulk().entrySet()) {
+                
set.add(DetachedFactory.detach(entry.getKey(),withProperties),entry.getValue());
+            }
+            return (D) set;
         } else if (object instanceof Set) {
             final Set set = object instanceof LinkedHashSet ? new 
LinkedHashSet() : new HashSet();
             for (final Object item : (Set) object) {
@@ -93,7 +101,7 @@ public class DetachedFactory {
             }
             return (D) set;
         } else if (object instanceof Map) {
-            final Map map = object instanceof LinkedHashMap ? new 
LinkedHashMap() : new HashMap();
+            final Map map = object instanceof Tree ? new Tree() : object 
instanceof LinkedHashMap ? new LinkedHashMap() : new HashMap();
             for (final Map.Entry<Object, Object> entry : ((Map<Object, 
Object>) object).entrySet()) {
                 map.put(DetachedFactory.detach(entry.getKey(), 
withProperties), DetachedFactory.detach(entry.getValue(), withProperties));
             }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c01b27ea/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java
index 749e424..a703ada 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java
@@ -19,6 +19,8 @@
 package org.apache.tinkerpop.gremlin.structure.util.reference;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -86,6 +88,12 @@ public class ReferenceFactory {
                 list.add(ReferenceFactory.detach(item));
             }
             return (D) list;
+        } else if (object instanceof BulkSet) {
+            final BulkSet set = new BulkSet();
+            for (Map.Entry<Object, Long> entry : ((BulkSet<Object>) 
object).asBulk().entrySet()) {
+                set.add(ReferenceFactory.detach(entry.getKey()), 
entry.getValue());
+            }
+            return (D) set;
         } else if (object instanceof Set) {
             final Set set = object instanceof LinkedHashSet ? new 
LinkedHashSet() : new HashSet();
             for (final Object item : (Set) object) {
@@ -93,7 +101,7 @@ public class ReferenceFactory {
             }
             return (D) set;
         } else if (object instanceof Map) {
-            final Map map = object instanceof LinkedHashMap ? new 
LinkedHashMap() : new HashMap();
+            final Map map = object instanceof Tree ? new Tree() : object 
instanceof LinkedHashMap ? new LinkedHashMap() : new HashMap();
             for (final Map.Entry<Object, Object> entry : ((Map<Object, 
Object>) object).entrySet()) {
                 map.put(ReferenceFactory.detach(entry.getKey()), 
ReferenceFactory.detach(entry.getValue()));
             }

Reply via email to