uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marshall Schor <...@schor.com>
Subject name and style for new UIMA iterators
Date Thu, 04 Dec 2014 16:13:34 GMT
I'm working on providing UIMA will some new iterators that allow arbitrary index
modifications while you're iterating;  they do this by essentially "copying" the
state of the index when the iterator is created, and using that copy in a
read-only mode to do the iteration, thus allowing the original indices to be
updated while iterating (the iterator won't see those index updates).  

This supports use cases such as iterating over some FSs of some type, and
removing some of them, updating them and adding them back, etc.

I'm thinking various alternatives for specifying this kind of iterator.  To
preserve the ability of using the Java extended "for" statement:

   for (FeatureStructure fs : myIndex)

where myIndex is of type FSIndex, I'm thinking of having a new method in
FSIndex, which will produce a light-weight FSIndex object which operates like a
base FSIndex object, except that it produces these new kinds of iterators.  
This is as-opposed-to a new iterator() method, because the Iterable interface
makes use of the iterator() method...

The method to specify that the new iterators for an existing FSIndex would be
something like "withSnapshotIterators()".  You would use it like this:

   FSIndex  myNormalIndex = myIndexRepository.getIndex("myIndexName");

   FSIndex snapshotVersionOfIndex = myNormalIndex.withSnapshotIterators();

Some observations:
   The withSnapshotIterators could "update" the FSIndex object, or create a new
(lightweight) copy of it with the new configuration.
      -  Which should it do?  It seems that making a (very light-weight) copy
would be safer, so I'm leaning that way

   The forms could of course be combined:
       e.g.:   for (FeatureStructure fs :
indexRepo.getIndex("foo").withSnapshotIterators) ....

Another way of writing this is:
   with_snapshot_iterators()     There have been studies that this is easier to
read, and it seems that way to me...

The "with...." part in the name seem good (to me) because it implies you still
have an FSIndex; only the iterator part is changed (which is the case).



View raw message