[
https://issues.apache.org/jira/browse/TINKERPOP-2302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan LaRocque updated TINKERPOP-2302:
------------------------------------
Description:
TINKERPOP-2284 added {{ElementMapStep}}.
This step implements {{GraphComputing}}, so it defines that interface's
{{onGraphComputer()}} method. The method sets a private boolean field.
For any implementation that wants to alter {{ElementMapStep}} behavior by
replacing instances of the step with an alternative implementation (maybe a
subclass), it could be convenient to make private the {{onGraphComputer}} state
accessible. I think the rest of {{ElementMapStep}}'s public state is already
accessible; it's just this field that is private.
There are a few ways to go about this.
* We could add an {{isOnGraphComputer()}} method to just {{ElementMapStep}}, or
make {{onGraphComputer}} protected. This is the narrowest version of the
change.
* We could add an {{isOnGraphComputer()}} method to the {{GraphComputing}}
interface. This would affect a bunch of implementing steps. Most
implementations on tp34 have an internal boolean field storing this state, so
it would be easy on those. However, [{{GraphStep}} does not have a boolean
onGraphComputer
field|https://github.com/apache/tinkerpop/blob/tp34/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java#L131-L135]:
{code}
@Override
public void onGraphComputer() {
this.iteratorSupplier = Collections::emptyIterator;
convertElementsToIds();
}
{code}
We could maybe implement this without adding another field, but it would be
simpler to do that.
*Altering this interface would also break any third-party implementations of
{{GraphComputing}}.*
* We could add create a {{GraphComputing}} subinterface that adds an
{{isOnGraphComputer()}}, and only implement it where it's already made simple
to do by the existence of a boolean field. This somewhere in between the first
two approaches in terms of scope.
I'm going to open a PR taking the first, narrowest possible approach, where I'm
only touching {{ElementMapStep}}. I'd be happy to rework it to one of the
alternatives, if desired.
was:
TINKERPOP-2284 added {{ElementMapStep}}.
This step implements {{GraphComputing}}, so it defines that interface's
{{onGraphComputer()}} method. The method sets a private boolean field.
For any implementation that wants to alter {{ElementMapStep}} behavior by
replacing instances of the step with an alternative implementation (maybe a
subclass), it could be convenient to make private the {{onGraphComputer}} state
accessible. I think the rest of {{ElementMapStep}}'s public state is already
accessible; it's just this field that is private.
There are a few ways to go about this.
* We could add an {{isOnGraphComputer()}} method to just {{ElementMapStep}}, or
by making {{onGraphComputer}} protected. This is the narrowest version of the
change.
* We could add an {{isOnGraphComputer()}} method to the {{GraphComputing}}
interface. This would affect a bunch of implementing steps. Most
implementations on tp34 have an internal boolean field storing this state, so
it would be easy on those. However, [{{GraphStep}} does not have a boolean
onGraphComputer
field|https://github.com/apache/tinkerpop/blob/tp34/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java#L131-L135]:
{code}
@Override
public void onGraphComputer() {
this.iteratorSupplier = Collections::emptyIterator;
convertElementsToIds();
}
{code}
We could maybe implement this without adding another field, but it would be
simpler to do that.
*Altering this interface would also break any third-party implementations of
{{GraphComputing}}.*
* We could add create a {{GraphComputing}} subinterface that adds an
{{isOnGraphComputer()}}, and only implement it where it's already made simple
to do by the existence of a boolean field. This somewhere in between the first
two approaches in terms of scope.
I'm going to open a PR taking the first, narrowest possible approach, where I'm
only touching {{ElementMapStep}}. I'd be happy to rework it to one of the
alternatives, if desired.
> Add isOnGraphComputer() field accessor to ElementMapStep
> --------------------------------------------------------
>
> Key: TINKERPOP-2302
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2302
> Project: TinkerPop
> Issue Type: Improvement
> Components: process
> Affects Versions: 3.5.0, 3.4.4
> Reporter: Dan LaRocque
> Priority: Minor
>
> TINKERPOP-2284 added {{ElementMapStep}}.
> This step implements {{GraphComputing}}, so it defines that interface's
> {{onGraphComputer()}} method. The method sets a private boolean field.
> For any implementation that wants to alter {{ElementMapStep}} behavior by
> replacing instances of the step with an alternative implementation (maybe a
> subclass), it could be convenient to make private the {{onGraphComputer}}
> state accessible. I think the rest of {{ElementMapStep}}'s public state is
> already accessible; it's just this field that is private.
> There are a few ways to go about this.
> * We could add an {{isOnGraphComputer()}} method to just {{ElementMapStep}},
> or make {{onGraphComputer}} protected. This is the narrowest version of the
> change.
> * We could add an {{isOnGraphComputer()}} method to the {{GraphComputing}}
> interface. This would affect a bunch of implementing steps. Most
> implementations on tp34 have an internal boolean field storing this state, so
> it would be easy on those. However, [{{GraphStep}} does not have a boolean
> onGraphComputer
> field|https://github.com/apache/tinkerpop/blob/tp34/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java#L131-L135]:
> {code}
> @Override
> public void onGraphComputer() {
> this.iteratorSupplier = Collections::emptyIterator;
> convertElementsToIds();
> }
> {code}
> We could maybe implement this without adding another field, but it would be
> simpler to do that.
> *Altering this interface would also break any third-party implementations of
> {{GraphComputing}}.*
> * We could add create a {{GraphComputing}} subinterface that adds an
> {{isOnGraphComputer()}}, and only implement it where it's already made simple
> to do by the existence of a boolean field. This somewhere in between the
> first two approaches in terms of scope.
> I'm going to open a PR taking the first, narrowest possible approach, where
> I'm only touching {{ElementMapStep}}. I'd be happy to rework it to one of
> the alternatives, if desired.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)