yeah - github picks up your changes on the branch automatically. we'll work
on reviewing.

On Fri, Jan 27, 2017 at 7:11 PM, Paul A. Jackson <paul.jack...@pb.com>
wrote:

> I am git illiterate.
> I committed to my repo.
> It looks like that's all I have to do.
> Travis build tells me to hang tight.
> It knows the commit is related to an open pull request
> and your repo knows to pull it in automatically?
> That's cool, if true.
> -Paul
>
> -----Original Message-----
> From: Paul A. Jackson [mailto:paul.jack...@pb.com]
> Sent: Friday, January 27, 2017 2:24 PM
> To: dev@tinkerpop.apache.org
> Subject: RE: [GitHub] tinkerpop issue #548: TINKERPOP-1589 Re-introduced
> CloseableIterator
>
> Hi Stephen,
>
> I think there are two parts to this, and I may have responded to the wrong
> part.
>
> I can easily and cleanly make those subclasses implement AutoCloseable and
> remove that from FlatMapStep.
>
> Implementing AutoCloseable is needed for the second half of the problem,
> where a traversal is closed before it is read to completion. This is easily
> delegated to the subclasses.
>
> There's the first half of the problem dealing with closing iterators as
> FlatMapStep finishes with them, but before it loses its reference to them.
> This is very hard to remove from FlatMapStep without duplicating all the
> code in the subclasses.
>
> If you consent I'd like to update the pull request that removes
> AutoCloseable from FlatMapStep but keeps the closing of iterators on the
> fly in FlatMapStep.
>
> I'd can also move that try/catch stuff to a helper method (in
> CloseableInterface?). That keeps FlatMapStep very clean.
>
> Thoughts?
>
> public abstract class FlatMapStep<S, E> extends AbstractStep<S, E> {
>
>     private Traverser.Admin<S> head = null;
>     protected Iterator<E> iterator = EmptyIterator.instance(); // Made
> protected
>
>     public FlatMapStep(final Traversal.Admin traversal) {
>         super(traversal);
>     }
>
>     @Override
>     protected Traverser.Admin<E> processNextStart() {
>         while (true) {
>             if (this.iterator.hasNext()) {
>                 return this.head.split(this.iterator.next(), this);
>             } else {
>                 this.head = this.starts.next();
>                 closeIterator();                            // Added
>                 this.iterator = this.flatMap(this.head);
>             }
>         }
>     }
>
>     protected abstract Iterator<E> flatMap(final Traverser.Admin<S>
> traverser);
>
>     @Override
>     public void reset() {
>         super.reset();
>         closeIterator();                            // Added
>         this.iterator = EmptyIterator.instance();
>     }
>
>     void closeIterator() {
>         CloseableIterator.closeIterator(this.iterator);
>     }
> }
>
> Thanks,
> -Paul
>
> -----Original Message-----
> From: Paul A. Jackson [mailto:paul.jack...@pb.com]
> Sent: Friday, January 27, 2017 1:55 PM
> To: dev@tinkerpop.apache.org
> Subject: RE: [GitHub] tinkerpop issue #548: TINKERPOP-1589 Re-introduced
> CloseableIterator
>
> I can do this, and I can see why you are suggesting it, but I didn't
> originally because it means overriding all the methods from FlatMapStep
> into these subclasses.
>
> The way it's currently designed all the subclasses need to do is implement
> flatMap(). FlatMapStep has private access to iterator and head. It knows
> when it is done with an iterator, that when it's done with an iterator that
> it should replace it with an EmptyIterator, that if it's not done it needs
> to call head.split with the next element, etc.
>
> To implement what you suggest, correct me if I'm wrong, all that private
> knowledge needs to be duplicated in the subclasses. If feels like a bad
> design because if any of those behaviors change in FlatMapStep we need to
> remember to go into the subclasses and mirror the changes there.
>
> Maybe I should move the try/catch stuff to a helper method so that all
> FlatMapStep needs to do is execute one line when it's done with an iterator?
>
> Should I submit parallel pull request so you can compare/contrast?
>
> -Paul
>
> -----Original Message-----
> From: spmallette [mailto:g...@git.apache.org]
> Sent: Friday, January 27, 2017 1:23 PM
> To: dev@tinkerpop.apache.org
> Subject: [GitHub] tinkerpop issue #548: TINKERPOP-1589 Re-introduced
> CloseableIterator
>
> Github user spmallette commented on the issue:
>
>     https://github.com/apache/tinkerpop/pull/548
>
>     I'm pretty sure @okram was affirming that `VertexStep`,
> `EdgeVertexStep` and `PropertiesStep` should implement `AutoCloseable` (I
> don't think that there are others) rather than a blanket change of just
> applying it to `FlatMapStep`. As the logic is re-used, perhaps you could do
> an `ElementStep` that extends the `FlatMapStep` and implements
> `AutoCloseable`. Then have those three steps extend `ElementStep` which
> would contain the close logic that you have.
>
>
> ---
> If your project is set up for it, you can reply to this email and have
> your reply appear on GitHub as well. If your project does not have this
> feature enabled and wishes so, or if the feature is enabled but not
> working, please contact infrastructure at infrastruct...@apache.org or
> file a JIRA ticket with INFRA.
> ---
>
> ________________________________
>
>
> ________________________________
>
>
> ________________________________
>
>

Reply via email to