Jason Plurad created TINKERPOP-1504:
---------------------------------------
Summary: MutationListener doesn't provide property key on property
additions
Key: TINKERPOP-1504
URL: https://issues.apache.org/jira/browse/TINKERPOP-1504
Project: TinkerPop
Issue Type: Improvement
Components: process
Affects Versions: 3.2.2, 3.1.4
Reporter: Jason Plurad
The signatures for
[MutationListener|https://github.com/apache/tinkerpop/blob/3.1.4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/MutationListener.java#L58]
property changes look like this:
* {{public void vertexPropertyChanged(final Vertex element, final Property
oldValue, final Object setValue, final Object... vertexPropertyKeyValues);}}
* {{public void edgePropertyChanged(final Edge element, final Property
oldValue, final Object setValue);}}
* {{public void vertexPropertyPropertyChanged(final VertexProperty element,
final Property oldValue, final Object setValue);}}
These methods are used when a property is *added* and when a property is
*changed*. See usage in
[AddPropertyStep|https://github.com/apache/tinkerpop/blob/3.1.4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java#L93-L98].
When a vertex property is added, the {{oldValue}} is {{null}}, so there is no
way for the listener to get the {{String key}} of the added property.
I can think of a few options here, all of which would be breaking changes:
# Pass a non-null {{Property}} as the {{oldValue}} that has the property
{{key}} but a {{null}} property value. The listener would get the property
value from {{setValue}}.
# Add a {{final String key}} to the signatures above.
# Change the {{setValue}} to be {{final Property setValue}} so that the key can
be gathered from the new value.
# Add new methods on {{MutationListener}} for {{vertexPropertyAdded()}},
{{edgePropertyAdded()}}, and {{vertexPropertyPropertyAdded()}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)