Yeah that would fix one of a dozen “leaked” internal packages. Baby steps!
-Jake > On Dec 3, 2018, at 4:32 PM, Kirk Lund <kl...@apache.org> wrote: > > Moving internal.logging to geode-logging would involve moving some > internal.logging classes to org.apache.geode.logging. I think that would > help with the logging portion of what you're doing. > >> On Mon, Dec 3, 2018 at 4:30 PM Kirk Lund <kl...@apache.org> wrote: >> >> I'm iteratively cleaning up geode's internal logging (specifically our >> dependency on log4j core) so that log4j core can be optional and a user >> could switch it out for logback or do further customization of our logging. >> >> Even without the modules work you're doing, moving our logging internals >> to a new geode-logging module would make my work easier so that I could >> hide the Geode log4j2 appenders behind a ServiceLoader -- would that make >> your work easier or more difficult? >> >>> On Mon, Dec 3, 2018 at 1:31 PM Jacob Barrett <jbarr...@pivotal.io> wrote: >>> >>> All, >>> >>> I’ll start with yuck! I took a stab at adding module-info.java files to >>> core and cq and it isn’t pretty. So all the work done in he second >>> iteration, internal package refactoring, etc., also has to be done for real >>> modules. To achieve this we basically have to compile the sources in a Java >>> 9+ compiler using the new ‘—release X’ argument, where primary sources get >>> ‘—release 8’ and module-info.java gets ‘—release 9’. If only it was that >>> easy though as the compiler validates the module-info.java when compiling >>> so all the packages and classes mention in it must exist in the source >>> input to javac. Blah blah smoke and mirrors later it is doable, such that a >>> jar is produced with Java 8 compatible (binary and API) classes and a Java >>> 9+ module info file. >>> >>> When all is done here is the module file for the core, cq and an >>> application. >>> >>> geode-core: >>> module org.apache.geode.core { >>> exports org.apache.geode; >>> exports org.apache.geode.cache; >>> exports org.apache.geode.cache.client; >>> exports org.apache.geode.cache.query; >>> exports org.apache.geode.pdx; >>> >>> requires org.apache.geode.common; >>> requires org.apache.geode.json; >>> >>> requires java.desktop; >>> requires java.naming; >>> requires java.management; >>> requires java.rmi; >>> requires java.sql; >>> >>> requires org.apache.logging.log4j; >>> requires org.apache.logging.log4j.core; >>> requires antlr; >>> >>> opens org.apache.geode.internal.logging.log4j to >>> org.apache.logging.log4j.core; >>> opens org.apache.geode.cache.query.internal.parse to antlr; >>> >>> uses org.apache.geode.distributed.internal.DistributedSystemService; >>> uses org.apache.geode.cache.query.internal.cq.spi.CqServiceFactory; >>> uses org.apache.geode.internal.cache.CacheService; >>> >>> // TODO Internal exports are bad >>> exports org.apache.geode.cache.client.internal to org.apache.geode.cq; >>> exports org.apache.geode.cache.query.internal to org.apache.geode.cq; >>> exports org.apache.geode.cache.query.internal.cq to org.apache.geode.cq; >>> exports org.apache.geode.cache.query.internal.cq.spi to >>> org.apache.geode.cq; >>> exports org.apache.geode.distributed.internal to org.apache.geode.cq; >>> exports org.apache.geode.internal to org.apache.geode.cq; >>> exports org.apache.geode.internal.cache to org.apache.geode.cq; >>> exports org.apache.geode.internal.cache.tier.sockets to >>> org.apache.geode.cq; >>> exports org.apache.geode.internal.logging to org.apache.geode.cq; >>> exports org.apache.geode.internal.statistics to org.apache.geode.cq; >>> } >>> >>> geode-cq: >>> module org.apache.geode.cq { >>> requires org.apache.geode.core; >>> >>> provides org.apache.geode.cache.query.internal.cq.spi.CqServiceFactory >>> with org.apache.geode.cq.internal.cache.query.CqServiceFactoryImpl; >>> provides org.apache.geode.distributed.internal.DistributedSystemService >>> with org.apache.geode.cq.internal.CQDistributedSystemService; >>> >>> requires org.apache.logging.log4j; >>> } >>> >>> application: >>> module com.example.java11example { >>> exports com.example; >>> >>> // for PDX auto serialization >>> opens com.example to org.apache.geode.core; >>> >>> requires org.apache.geode.core; >>> requires org.apache.geode.cq; >>> } >>> >>> Thoughts? >>> >>> -Jake >>> >>>