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]
