Hi Jody.

> We should also be able to detect implementations that still implement
> ServiceProvider, log a warning, and ignore - rather than fail.

Yes, I think this makes a lot of sense. I updated the proposal accordingly.

I'm particularly interested in your opinion about returning streams and
keeping deprecated overloads around.

 so long ... Nicolai



On 22.09.2017 18:33, Jody Garnett wrote:
> Thanks this looks great.
> 
> The key design question is the API break from Java ServiceProvider to
> GeoTools Factory. I think this change is important enough to Break API; in
> part because we were broken by Java 9 restrictions - by changing our API we
> are really clear to downstream applications that there is an
> incompatibility.
> 
> We should also be able to detect implementations that still implement
> ServiceProvider, log a warning, and ignore - rather than fail.
> 
> I may add one example using the FactoryFinder classes - just to show that
> for the majority of code (which uses a FactoryFinder) there will be no
> change. This will be a good test of our architecture to see how well we
> protected downstream applications from the plugin system.
> 
> 
> --
> Jody Garnett
> 
> On 22 September 2017 at 00:21, Nicolai Parlog <[email protected]> wrote:
> 
>>  Hi!
>>
>> I finally found some time to accompany my pull request[1] containing the
>> refactored FactoryRegistry with a formal proposal[2]. These are the main
>> points:
>>
>> * FactoryRegistry extends javax.imageio.spi.ServiceRegistry, but on
>>   Java 9 the latter throws an exception if extended by non-JDK
>>   classes; this breaks GeoTools on Java 9.
>> * Reimplement required ServiceRegistry functionality in
>>   FactoryRegistry, so the latter no longer needs to extend the former.
>> * Take the opportunity of the resulting runtime incompatibility (has
>>   to do with registration callbacks) to further change the API:
>>     * name new methods according to GeoTools' terminology (e.g.
>>       registerFactory) as opposed to the service registry's
>>       (registerServiceProvider)
>>     * have registry methods return Stream instead of Iterator to
>>       allow clients to use more modern APIs and language features
>>       (note that Stream::iterator makes it easy to switch from
>>       streaming to iterating)
>>     * replace use of javax.imageio.spi.RegisterableService with the
>>       new org.geotools.factory.RegistrableFactory
>>     * replace use of javax.imageio.spi.ServiceRegistry.Filter with
>>       java.util.function.Predicate
>>
>> The PR[1] implements all of those except for the Stream return type. It
>> also provides deprecated method variants with the old signature.
>>
>> Any feedback?
>>
>>  so long ... Nicolai
>>
>>
>> [1] https://github.com/geotools/geotools/pull/1670
>> [2]
>> https://github.com/geotools/geotools/wiki/FactoryRegistry-
>> Refactoring-for-Java-9-Compatibility
>>
>>
>>
>> --
>>
>> PGP Key:
>>     http://keys.gnupg.net/pks/lookup?op=vindex&search=0xCA3BAD2E9CCCD509
>>
>> Web:
>>     http://codefx.org
>>         a blog about software development
>>     https://www.sitepoint.com/java
>>         high-quality Java/JVM content
>>     http://do-foss.de
>>         Free and Open Source Software for the City of Dortmund
>>
>> Twitter:
>>     https://twitter.com/nipafx
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> GeoTools-Devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>>
> 

-- 

PGP Key:
    http://keys.gnupg.net/pks/lookup?op=vindex&search=0xCA3BAD2E9CCCD509

Web:
    http://codefx.org
        a blog about software development
    https://www.sitepoint.com/java
        high-quality Java/JVM content
    http://do-foss.de
        Free and Open Source Software for the City of Dortmund

Twitter:
    https://twitter.com/nipafx

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to