Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1701 [created] 6e2ebb52f


added colleciton handling to XXXFactory.detach(). This will ensure that 
collection nested graph elements get detached accordingly.


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

Branch: refs/heads/TINKERPOP-1701
Commit: 6e2ebb52fdaa477e93a98d6c7c28b4ce5ed9bdb5
Parents: 9436585
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Tue Jun 27 13:51:47 2017 -0600
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Tue Jun 27 13:51:47 2017 -0600

----------------------------------------------------------------------
 .../util/detached/DetachedFactory.java          | 27 ++++++++++++++++++++
 .../util/reference/ReferenceFactory.java        | 27 ++++++++++++++++++++
 2 files changed, 54 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6e2ebb52/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 10265f8..775e5c6 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
@@ -25,6 +25,15 @@ import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -71,6 +80,24 @@ public class DetachedFactory {
             return (D) DetachedFactory.detach((Property) object);
         } else if (object instanceof Path) {
             return (D) DetachedFactory.detach((Path) object, withProperties);
+        } else if (object instanceof List) {
+            final List list = new ArrayList();
+            for (final Object item : (List) object) {
+                list.add(DetachedFactory.detach(item, withProperties));
+            }
+            return (D) list;
+        } else if (object instanceof Set) {
+            final Set set = object instanceof LinkedHashSet ? new 
LinkedHashSet() : new HashSet();
+            for (final Object item : (Set) object) {
+                set.add(DetachedFactory.detach(item, withProperties));
+            }
+            return (D) set;
+        } else if (object instanceof Map) {
+            final Map map = 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));
+            }
+            return (D) map;
         } else {
             return (D) object;
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6e2ebb52/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 48b6de3..749e424 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
@@ -25,6 +25,15 @@ import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -71,6 +80,24 @@ public class ReferenceFactory {
             return (D) ReferenceFactory.detach((Property) object);
         } else if (object instanceof Path) {
             return (D) ReferenceFactory.detach((Path) object);
+        } else if (object instanceof List) {
+            final List list = new ArrayList();
+            for (final Object item : (List) object) {
+                list.add(ReferenceFactory.detach(item));
+            }
+            return (D) list;
+        } else if (object instanceof Set) {
+            final Set set = object instanceof LinkedHashSet ? new 
LinkedHashSet() : new HashSet();
+            for (final Object item : (Set) object) {
+                set.add(ReferenceFactory.detach(item));
+            }
+            return (D) set;
+        } else if (object instanceof Map) {
+            final Map map = 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()));
+            }
+            return (D) map;
         } else {
             return (D) object;
         }

Reply via email to