[ 
https://issues.apache.org/jira/browse/TINKERPOP3-729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marko A. Rodriguez closed TINKERPOP3-729.
-----------------------------------------
    Resolution: Fixed

This was a bug in {{Attachable.getOrCreate()}} where the {{Optional.orElse()}} 
should have been {{Optional.orElseGet()}}. This has been fixed and a test case 
added. However, note that only adding graph data via "edges" is bad because you 
can't create the incident vertex labels from the edges as "incident vertex 
labels are not accessible." (a function of StarGraph and its use in a 
GraphComputer/adjacency-list context).

> Attachable getOrCreate on Edge Throwing Exception
> -------------------------------------------------
>
>                 Key: TINKERPOP3-729
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-729
>             Project: TinkerPop 3
>          Issue Type: Bug
>          Components: structure
>            Reporter: stephen mallette
>            Assignee: Marko A. Rodriguez
>             Fix For: 3.0.0.GA
>
>
> Getting an "Edge with id already exists" on 
> {{Attachable.Method.getOrCreate()}} - if the edge already exists then it 
> should just "get" not throw an exception.
> {code}
> gremlin> graph1 = TinkerGraph.open()
> ==>tinkergraph[vertices:0 edges:0]
> gremlin> graph = TinkerFactory.createModern()
> ==>tinkergraph[vertices:6 edges:6]
> gremlin> l = graph.vertices().collect{StarGraph.of(it)}
> ==>stargraph[starOf:v[1]]
> ==>stargraph[starOf:v[2]]
> ==>stargraph[starOf:v[3]]
> ==>stargraph[starOf:v[4]]
> ==>stargraph[starOf:v[5]]
> ==>stargraph[starOf:v[6]]
> gremlin> 
> l.each{it.edges().each{e->e.attach(Attachable.Method.getOrCreate(graph1))}}
> Edge with id already exists: 7
> Display stack trace? [yN] y
> java.lang.IllegalArgumentException: Edge with id already exists: 7
>       at 
> org.apache.tinkerpop.gremlin.structure.Graph$Exceptions.edgeWithIdAlreadyExists(Graph.java:1038)
>       at 
> org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerHelper.addEdge(TinkerHelper.java:57)
>       at 
> org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex.addEdge(TinkerVertex.java:127)
>       at 
> org.apache.tinkerpop.gremlin.structure.util.Attachable$Method.createEdge(Attachable.java:320)
>       at 
> org.apache.tinkerpop.gremlin.structure.util.Attachable$Method.lambda$getOrCreate$19(Attachable.java:123)
>       at 
> org.apache.tinkerpop.gremlin.structure.util.Attachable$Method$$Lambda$55/1277716905.apply(Unknown
>  Source)
>       at 
> org.apache.tinkerpop.gremlin.structure.util.Attachable.attach(Attachable.java:63)
>       at 
> org.apache.tinkerpop.gremlin.structure.util.Attachable$attach.call(Unknown 
> Source)
>       at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
>       at 
> org.apache.tinkerpop.gremlin.structure.util.Attachable$attach.call(Unknown 
> Source)
>       at groovysh_evaluate$_run_closure1$_closure2.doCall(groovysh_evaluate:3)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:497)
>       at 
> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
>       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
>       at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:292)
>       at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
>       at groovy.lang.Closure.call(Closure.java:423)
>       at groovy.lang.Closure.call(Closure.java:439)
>       at 
> org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2027)
>       at org.codehaus.groovy.runtime.dgm$161.invoke(Unknown Source)
>       at 
> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
>       at 
> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122)
>       at groovysh_evaluate$_run_closure1.doCall(groovysh_evaluate:3)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:497)
>       at 
> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
>       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
>       at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:292)
>       at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
>       at groovy.lang.Closure.call(Closure.java:423)
>       at groovy.lang.Closure.call(Closure.java:439)
>       at 
> org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2027)
>       at 
> org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2012)
>       at 
> org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2053)
>       at org.codehaus.groovy.runtime.dgm$162.invoke(Unknown Source)
>       at 
> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
>       at 
> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
>       at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122)
>       at groovysh_evaluate.run(groovysh_evaluate:3)
>       at 
> org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:215)
>       at 
> org.codehaus.groovy.tools.shell.Interpreter.evaluate(Interpreter.groovy:69)
>       at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:185)
>       at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:119)
>       at 
> org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:94)
>       at 
> org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$work(InteractiveShellRunner.groovy)
>       at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:497)
>       at 
> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
>       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
>       at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
>       at 
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:130)
>       at 
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:150)
>       at 
> org.codehaus.groovy.tools.shell.InteractiveShellRunner.work(InteractiveShellRunner.groovy:123)
>       at 
> org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:58)
>       at 
> org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$run(InteractiveShellRunner.groovy)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:497)
>       at 
> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
>       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
>       at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
>       at 
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:130)
>       at 
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:150)
>       at 
> org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:82)
>       at 
> org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:215)
>       at 
> org.apache.tinkerpop.gremlin.console.Console.<init>(Console.groovy:144)
>       at 
> org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:215)
>       at org.apache.tinkerpop.gremlin.console.Console.main(Console.groovy:302)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to