Cole-Greer opened a new pull request, #3214:
URL: https://github.com/apache/tinkerpop/pull/3214

   This PR migrates all of a step's interfaces (`Mutating`, `Bypassing`, 
`FilteringBarrier`...) to the step contract and ensures that placeholder and 
concrete steps share common base classes (`ScalarMapStep`, `FilterStep`...). 
This ensures that all methods of a step are now accessible from the 
StepContract type, without any need to cast to concrete types. This also 
enforces complete alignment between the placeholder and concrete steps. After 
this change, steps with contract interfaces should only implement the single 
contract interface. Any additional interfaces must be added to the contract 
itself.
   
   The only exception currently is `Configuring`, which has been omitted from 
`AddVertexStepContract`, `AddEdgeStepContract`, `AddPropertyStepContract`, 
`VertexStepContract`, and `GraphStepContract`. These are all steps which don't 
make use of with()-modulation in the reference implementations, and I'm 
reluctant to introduce configuring into these placeholders unnecessarily due to 
the complexity of keeping GValues properly isolated inside Parameters. I 
consider a revisit of Configuring as a followup task to be addressed separately 
from this change.
   
   One additional change of note is the loss of the abstract 
`RangeStepPlaceholder` class. The shared class structure is unfortunately no 
longer feasible as RangeGlobal and RangeLocal extend from distinct base classes 
and Java does not allow for multiple inheritance. The size and complexity of 
the range placeholder classes are minimal, so there isn't much value in 
developing a new solution to share code between them.
   
   VOTE +1


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to