On Tue, May 9, 2017 at 12:34 AM, Apache <ralph.go...@dslextreme.com> wrote:
> Technically you are considered modularized just by adding a manifest entry > providing the module name. But all the packages are exported. You cannot do > more than that until all your dependencies do at least that much. > So it's a two-step. First the module name, only when all the deps do it. Then some other second step, only when the deps do that too. Sounds like it will be a looooong wait. Gary > > Ralph > > > On May 9, 2017, at 12:27 AM, Gary Gregory <garydgreg...@gmail.com> > wrote: > > > >> On Tue, May 9, 2017 at 12:24 AM, Apache <ralph.go...@dslextreme.com> > wrote: > >> > >> I read that previously but if Log4J implements modules I don't see how > the > >> nodal appenders or flume appender can work. > >> > >> I also got a reply to my query about referencing dependencies that are > not > >> yet modularized and the recommendation is to only use the manifest entry > >> and not have a module-info.java until all dependencies are modularized. > >> > > > > Am I reading that we should not modularize Log4j 2 until all of its > > dependencies are themselves modularized? > > > > Gary > > > >> > >>> On May 9, 2017, at 12:18 AM, Remko Popma <remko.po...@gmail.com> > wrote: > >>> > >>> > >>> > >>> > >>> > >>> (Shameless plug) Every java main() method deserves http://picocli.info > >>>> On May 9, 2017, at 15:35, Gary Gregory <garydgreg...@gmail.com> > wrote: > >>>> > >>>> Hi All, > >>>> > >>>> On Mon, May 8, 2017 at 10:46 PM, Ralph Goers < > >> ralph.go...@dslextreme.com> > >>>> wrote: > >>>> > >>>>> So I keep reading up on Java modules and the more I do the more > >> confused I > >>>>> get about how this can ever work properly. > >>>>> > >>>>> 1. I am confused about how we are supposed to create a module and > >>>>> reference something that is not yet a module. As I understand it, it > >> will > >>>>> either be an automatic module on the module path or just be in the > >>>>> “unnamed” module on the class path. Well, a jar that has made no > >> attempt to > >>>>> be modularized will be known by the wrong name - essentially the jar > >> file > >>>>> name without the version so I don’t see how that can just be dropped > >> on the > >>>>> module path. Also, as I understand it in order for it to be accessed > >> on the > >>>>> class path we can’t declare a requirement on it (which makes sense I > >> guess > >>>>> since it isn’t a module), but it means our module declaration is > >> incomplete. > >>>>> > >>>> > >>>> For this one, this could be a case where module users will have to > wrap > >>>> jars in a module like some people do in OSGi: wrapping a jar to > create a > >>>> bundle. Eclipse ended up with a whole repository of these. Yikes. > >>>> > >>>> > >>>>> > >>>>> 2. This one scares me. The module system doesn’t allow circularities. > >> So > >>>>> picture a case where HttpClient is a module and it uses the Log4j 2 > or > >>>>> SLF4J API (it doesn’t really matter which). Then Log4j has an > Appender > >> that > >>>>> uses HttpClient. Now you have Log4j that has an Appender that uses > >>>>> HttpClient (so an optional dependency is declared) and then > HttpClient > >> uses > >>>>> Log4j (and so declares that as a dependency) you now have a system > that > >>>>> won’t run. Even if HttpClient uses SLF4J instead you will still have > a > >>>>> problem if that then gets routed to Log4j. > >>>>> > >>>> > >>>> Nothing to do about that which is what one of the items the JBoss > folks > >>>> where dismayed about... :-( > >>> > >>> Mark Reinhold's reasoning in his response ( > http://mail.openjdk.java.net/ > >> pipermail/jpms-spec-experts/2017-May/000695.html) makes sense to me. > >>> > >>> Also not sure if there really is a problem: > >>> "Cycles are not allowed when modules are resolved but it is possible to > >> create them post-resolution via the API, if needed [4][5]. Cycles are > also > >> set up amongst all automatic modules, after resolution, to make it > easier > >> to treat existing JAR files as modules without change [6]." > >>> > >>> > >>>> > >>>> It's good that we are finding this out early but it sure seems worse > and > >>>> worse :-( > >>>> > >>>> Gary > >>>> > >>>> > >>>>> I’ve written to a couple of folks off list but at the moment I’m not > >> clear > >>>>> on how this can work for libraries like Log4j. > >>>>> > >>>>> Ralph > >>>>> > >>>>>> On Apr 24, 2017, at 7:58 AM, Matt Sicker <boa...@gmail.com> wrote: > >>>>>> > >>>>>> Support Java 9 modules sounds a lot stricter than OSGi modules. > >>>>> Essentially > >>>>>> what is best practices in OSGi is required in JPMS. > >>>>>> > >>>>>> Anyways, the ServiceLoader for log4j-api sounds reasonable. The > >> current > >>>>>> solution is basically a custom version of that with additional > >> metadata > >>>>>> (the required API version), but we can probably support that > >> differently. > >>>>>> From what I recall, it's basically two service loaders combined into > >> one. > >>>>>> > >>>>>> On 24 April 2017 at 09:22, Mikael Ståldal < > mikael.stal...@magine.com> > >>>>> wrote: > >>>>>> > >>>>>>> Doing things for Java 9 modules that are beneficial also in Java > 7/8 > >> is > >>>>>>> good. > >>>>>>> > >>>>>>> Using Java ServiceLoader seems like a good idea, and we should > >>>>> definitely > >>>>>>> do it if required to support latest SLF4J. > >>>>>>> > >>>>>>> I am not so sure about refactoring package the structure though. > >>>>> Especially > >>>>>>> not if doing so will break BC. > >>>>>>> > >>>>>>> On Mon, Apr 24, 2017 at 4:00 PM, Ralph Goers < > >>>>> ralph.go...@dslextreme.com> > >>>>>>> wrote: > >>>>>>> > >>>>>>>> It is and it isn’t. I’ve been working on module support all > >> weekend. > >>>>>>>> There are a couple of changes that must be made before modules can > >> be > >>>>>>>> effectively implemented and IMO it is worth doing them whether we > >>>>> support > >>>>>>>> modules or not. Note that none of these changes require Java 9. > >>>>>>>> > >>>>>>>> 1. Modify the API provider mechanism to use Java ServiceLoader. > >> Modules > >>>>>>>> require that the kind of mechanism we are using be implemented > with > >>>>>>>> ServiceLoader. However, our current implementation makes this easy > >> and > >>>>>>>> creating a binding for for an implementation is dirt simple. I > >> will be > >>>>>>>> checking something in for this in the next few days. > >>>>>>>> 2. Refactor our existing package structures. Modules essentially > >> make > >>>>>>>> everything in a package public. We currently have a mixture of > >> public > >>>>> and > >>>>>>>> private classes in both our API and in core. We need to go > through > >> all > >>>>>>>> these classes and determine which are really public and move the > >>>>> private > >>>>>>>> ones to a different package. This isn’t trivial. I think there is > >>>>>>> benefit > >>>>>>>> in doing this whether we support modules or not. Right now many > >> methods > >>>>>>>> have “consider this private” in the header. But some classes in > API > >>>>> that > >>>>>>>> are marked this way are used by Core, which means they are > required > >> to > >>>>> be > >>>>>>>> public to an implementation. These kinds of classes should be in > the > >>>>> spi > >>>>>>>> package. > >>>>>>>> > >>>>>>>> I should also note that SLF4J now supports Java modules in the > 1.8.0 > >>>>>>> alpha > >>>>>>>> releases. I tried integrating with that, and was somewhat > >> successful, > >>>>> but > >>>>>>>> since Logback isn’t modularized our build fails in the various > >> points > >>>>>>> where > >>>>>>>> we have tests that use it. SLF4J also changed its binding > >> mechanism to > >>>>>>> use > >>>>>>>> SeviceLoader and it will ignore implementations that use the > current > >>>>>>>> binding mechanism. I have implemented support for that and will be > >>>>>>>> committing that in the next few days as well. > >>>>>>>> > >>>>>>>> Ralph > >>>>>>>> > >>>>>>>>> On Apr 24, 2017, at 3:15 AM, Mikael Ståldal < > >>>>> mikael.stal...@magine.com > >>>>>>>> > >>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>> I think that it might be a bit early for us to do too much work > for > >>>>>>>>> supporting Java 9 modules. > >>>>>>>>> > >>>>>>>>> On Mon, Apr 24, 2017 at 12:03 PM, Mikael Ståldal < > >>>>>>>> mikael.stal...@magine.com> > >>>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>>> This option will only be supported in JDK 9. > >>>>>>>>>> It will be removed in JDK 10. > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> On Sun, Apr 23, 2017 at 6:51 PM, Gary Gregory < > >>>>> garydgreg...@gmail.com > >>>>>>>> > >>>>>>>>>> wrote: > >>>>>>>>>> > >>>>>>>>>>> The "big kill switch" straight from the source: > >>>>>>>>>>> http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017- > >>>>>>>> March/011763.html > >>>>>>>>>>> > >>>>>>>>>>> --permit-illegal-access > >>>>>>>>>>> > >>>>>>>>>>> Gary > >>>>>>>>>>> > >>>>>>>>>>>> On Apr 23, 2017 9:44 AM, "Matt Sicker" <boa...@gmail.com> > >> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>> “I have too often seen APIs that seemed like a good idea at > the > >>>>> time > >>>>>>>> but > >>>>>>>>>>>> were, in fact, woefully deficient, baked into the Java > Platform > >>>>>>> where > >>>>>>>>>>> they > >>>>>>>>>>>> fester for ages, cause pain to all who use it, and torment > those > >>>>> who > >>>>>>>>>>>> maintain it. I will not let that happen > >>>>>>>>>>>> Here“ - Mark Reinhold > >>>>>>>>>>>> > >>>>>>>>>>>> That sounds like JPMS in general to be honest, but I'm just > >> being > >>>>>>>>>>> cynical. > >>>>>>>>>>>> ;) > >>>>>>>>>>>> > >>>>>>>>>>>> On 23 April 2017 at 11:34, Gary Gregory < > garydgreg...@gmail.com > >>> > >>>>>>>> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>>> On Apr 23, 2017 9:19 AM, "Matt Sicker" <boa...@gmail.com> > >> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>> One potential scenario I see is that many users may just end > up > >>>>>>>>>>> disabling > >>>>>>>>>>>>> JPMS in all their applications to the point that it's > >>>>> significantly > >>>>>>>>>>>> revised > >>>>>>>>>>>>> or scaled back for Java 10 or later. > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> That's my plan the first time I see an IllegalAccessError :-( > >> what > >>>>>>> is > >>>>>>>>>>> the > >>>>>>>>>>>>> command line kill switch called? > >>>>>>>>>>>>> > >>>>>>>>>>>>> Gary > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> On 23 April 2017 at 11:04, Gary Gregory < > >> garydgreg...@gmail.com> > >>>>>>>>>>> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>>> Worse: Are Java 9 modules its Titanic? > >>>>>>>>>>>>>> https://developer.jboss.org/blogs/scott.stark/2017/04/14/ > >>>>>>>>>>>>>> critical-deficiencies-in-jigsawjsr-376-java-platform- > >>>>>>>>>>>>>> module-system-ec-member-concerns > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Gary > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> On Apr 22, 2017 5:02 PM, "Ralph Goers" < > >>>>>>> ralph.go...@dslextreme.com> > >>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> This is an interesting look at the problems faced in > getting > >>>>>>>>>>>> Hibernate > >>>>>>>>>>>>> to > >>>>>>>>>>>>>>> work. http://stackoverflow.com/ > questions/43258796/hibernate- > >>>>>>>>>>>>>>> support-for-java-9 <http://stackoverflow.com/ > >>>>>>>>>>>>>> questions/43258796/hibernate- > >>>>>>>>>>>>>>> support-for-java-9>. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> The issue with the compile problem with javax.xml are > >> familiar > >>>>> to > >>>>>>>>>>> me > >>>>>>>>>>>> - > >>>>>>>>>>>>> I > >>>>>>>>>>>>>>> had to modify some Log4j code to not use the DataType > >> converter > >>>>>>>>>>> as it > >>>>>>>>>>>>>> isn’t > >>>>>>>>>>>>>>> present in the java.base module. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Ralph > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> On Apr 22, 2017, at 4:40 PM, Ralph Goers < > >>>>>>>>>>>> ralph.go...@dslextreme.com > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Oh - I just reread this. S far as I know Java 9 has a > >> scheduled > >>>>>>>>>>>>> release > >>>>>>>>>>>>>>> date. It is July 27. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> BTW - here is the complete set of features - > >>>>>>>>>>>>> https://docs.oracle.com/ > >>>>>>>>>>>>>>> javase/9/whatsnew/toc.htm#JSNEW-GUID-BA9D8AF6-E706-4327- > >>>>>>>>>>>>>> 8909-F6747B8F35C5 > >>>>>>>>>>>>>>> <https://docs.oracle.com/javase/9/whatsnew/toc.htm# > >>>>>>>>>>>>>>> JSNEW-GUID-BA9D8AF6-E706-4327-8909-F6747B8F35C5>. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Ralph > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> On Apr 22, 2017, at 10:45 AM, Gary Gregory < > >>>>>>>>>>>> garydgreg...@gmail.com> > >>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Let me play devil's advocate here for a sec... > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Java 9 modules and this auto naming business sounds > >> painful. > >>>>> Is > >>>>>>>>>>>>> there > >>>>>>>>>>>>>>> any > >>>>>>>>>>>>>>>>> chance that this feature will be ignored like > >>>>>>>>>>> java.util.logging is > >>>>>>>>>>>>> or > >>>>>>>>>>>>>>>>> should be? > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Can we stop tying ourselves into unreleased pretzels > over a > >>>>>>>>>>> moving > >>>>>>>>>>>>>>> target > >>>>>>>>>>>>>>>>> since we do not know when Java 9 will be out. > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Can't we refocus this energy on getting the best out of > >> Java > >>>>> 8? > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Ducking from incoming tomatoes, > >>>>>>>>>>>>>>>>> Gary > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> On Fri, Apr 21, 2017 at 8:48 PM, Matt Sicker < > >>>>> boa...@gmail.com > >>>>>>>>>>>> > >>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> I'm a fan of splitting packages up better due to OSGi > >> support > >>>>>>>>>>> in > >>>>>>>>>>>>> the > >>>>>>>>>>>>>>> first > >>>>>>>>>>>>>>>>>> place. Hierarchical packaging is definitely something > new > >>>>>>>>>>> (OSGi > >>>>>>>>>>>>>> doesn't > >>>>>>>>>>>>>>>>>> care about that; each package is considered separately), > >> and > >>>>>>>>>>> it > >>>>>>>>>>>>> could > >>>>>>>>>>>>>>> help > >>>>>>>>>>>>>>>>>> in making some classes more organized. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> On 21 April 2017 at 14:55, Stefan Bodewig < > >>>>> bode...@apache.org > >>>>>>>>>>>> > >>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> On 2017-04-21, Ralph Goers wrote: > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> I have not started work on this yet, but from looking > at > >>>>>>>>>>>>>>>>>>>> http://blog.joda.org/2017/04/j > >>>>>>>>>>> ava-9-modules-jpms-basics.html > >>>>>>>>>>>>>>>>>>>> <http://blog.joda.org/2017/04/ > >>>>>>>>>>> java-9-modules-jpms-basics.html> > >>>>>>>>>>>>> it > >>>>>>>>>>>>>>>>>>>> seems we are going to have problems with a) plugins > that > >>>>>>>>>>> are in > >>>>>>>>>>>>>>>>>>>> different jars (modules) that use the same namespace > >> and b) > >>>>>>>>>>>>>>> log4j-core > >>>>>>>>>>>>>>>>>>>> as it currently exists. > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> Item b is a problem because the module-info for > >> log4j-core > >>>>>>>>>>>> should > >>>>>>>>>>>>>>> have > >>>>>>>>>>>>>>>>>>>> a requires ONLY for log4j-api. For example, I’m not > sure > >>>>>>>>>>> how we > >>>>>>>>>>>>> can > >>>>>>>>>>>>>>>>>>>> have an optional dependency on Jackson. > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> requires static module-name-of-jackson; > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> http://cr.openjdk.java.net/~ > mr/jigsaw/spec/lang-vm.html > >>>>>>>>>>> section > >>>>>>>>>>>>>> 1.1.1 > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> The requires keyword may be followed by the modifier > >>>>>>>>>>> static. > >>>>>>>>>>>>> This > >>>>>>>>>>>>>>>>>>> specifies that the dependence, while mandatory at > compile > >>>>>>>>>>>> time, > >>>>>>>>>>>>> is > >>>>>>>>>>>>>>>>>>> optional at run time. > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Of course "requires static" captures this way more > >> clearly > >>>>>>>>>>> than > >>>>>>>>>>>>>>> "require > >>>>>>>>>>>>>>>>>>> optional" which was proposed intially > >>>>>>>>>>>>>>>>>>> http://openjdk.java.net/projects/jigsaw/doc/topics/ > >>>>>>>>>>>> optional.html > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> :-) > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Without knowing the structure of log4j too well I agree > >> the > >>>>>>>>>>>> strict > >>>>>>>>>>>>>>>>>>> package hierarchies mandated by JPMS will be a problem. > >>>>>>>>>>> Probably > >>>>>>>>>>>>> for > >>>>>>>>>>>>>>>>>>> many other projects with more than one artifact as > well. > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Stefan > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> -- > >>>>>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> -- > >>>>>>>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > >>>>>>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition > >>>>>>>>>>>>>>>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ > >>>>>>>>>>>>>>> tl?ie=UTF8&camp=1789&creative= > 9325&creativeASIN=1617290459& > >>>>>>>>>>>>>>> linkCode=as2&tag=garygregory-20&linkId= > >>>>>>>>>>>> cadb800f39946ec62ea2b1af9fe6a2 > >>>>>>>>>>>>> b8> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >>>>>>>>>>>>>> garygregory-20&l=am2&o=1&a= > >>>>>>>>>>>>>>> 1617290459> > >>>>>>>>>>>>>>>>> JUnit in Action, Second Edition > >>>>>>>>>>>>>>>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ > >>>>>>>>>>>>>>> tl?ie=UTF8&camp=1789&creative= > 9325&creativeASIN=1935182021& > >>>>>>>>>>>>>>> linkCode=as2&tag=garygregory-20&linkId= > >>>>>>>>>>>> 31ecd1f6b6d1eaf8886ac902a24de4 > >>>>>>>>>>>>>> 18%22 > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >>>>>>>>>>>>>> garygregory-20&l=am2&o=1&a= > >>>>>>>>>>>>>>> 1935182021> > >>>>>>>>>>>>>>>>> Spring Batch in Action > >>>>>>>>>>>>>>>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ > >>>>>>>>>>>>>>> tl?ie=UTF8&camp=1789&creative= > 9325&creativeASIN=1935182951& > >>>>>>>>>>>>>>> linkCode=%7B%7BlinkCode%7D%7D& > tag=garygregory-20&linkId=%7B% > >>>>>>>>>>>>>>> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > >>>>>>>>>>>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >>>>>>>>>>>>>> garygregory-20&l=am2&o=1&a= > >>>>>>>>>>>>>>> 1935182951> > >>>>>>>>>>>>>>>>> Blog: http://garygregory.wordpress.com > >>>>>>>>>>>>>>>>> Home: http://garygregory.com/ > >>>>>>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> -- > >>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> -- > >>>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> -- > >>>>>>>>>> [image: MagineTV] > >>>>>>>>>> > >>>>>>>>>> *Mikael Ståldal* > >>>>>>>>>> Senior software developer > >>>>>>>>>> > >>>>>>>>>> *Magine TV* > >>>>>>>>>> mikael.stal...@magine.com > >>>>>>>>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | > www.magine.com > >>>>>>>>>> > >>>>>>>>>> Privileged and/or Confidential Information may be contained in > >> this > >>>>>>>>>> message. If you are not the addressee indicated in this message > >>>>>>>>>> (or responsible for delivery of the message to such a person), > you > >>>>> may > >>>>>>>> not > >>>>>>>>>> copy or deliver this message to anyone. In such case, > >>>>>>>>>> you should destroy this message and kindly notify the sender by > >> reply > >>>>>>>>>> email. > >>>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> -- > >>>>>>>>> [image: MagineTV] > >>>>>>>>> > >>>>>>>>> *Mikael Ståldal* > >>>>>>>>> Senior software developer > >>>>>>>>> > >>>>>>>>> *Magine TV* > >>>>>>>>> mikael.stal...@magine.com > >>>>>>>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com > >>>>>>>>> > >>>>>>>>> Privileged and/or Confidential Information may be contained in > this > >>>>>>>>> message. If you are not the addressee indicated in this message > >>>>>>>>> (or responsible for delivery of the message to such a person), > you > >> may > >>>>>>>> not > >>>>>>>>> copy or deliver this message to anyone. In such case, > >>>>>>>>> you should destroy this message and kindly notify the sender by > >> reply > >>>>>>>>> email. > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> -- > >>>>>>> [image: MagineTV] > >>>>>>> > >>>>>>> *Mikael Ståldal* > >>>>>>> Senior software developer > >>>>>>> > >>>>>>> *Magine TV* > >>>>>>> mikael.stal...@magine.com > >>>>>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com > >>>>>>> > >>>>>>> Privileged and/or Confidential Information may be contained in this > >>>>>>> message. If you are not the addressee indicated in this message > >>>>>>> (or responsible for delivery of the message to such a person), you > >> may > >>>>> not > >>>>>>> copy or deliver this message to anyone. In such case, > >>>>>>> you should destroy this message and kindly notify the sender by > reply > >>>>>>> email. > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> -- > >>>>>> Matt Sicker <boa...@gmail.com> > >>>>> > >>>>> > >>>>> > >>>> > >>>> > >>>> -- > >>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > >>>> Java Persistence with Hibernate, Second Edition > >>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > >> linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2 > b8> > >>>> > >>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > garygregory-20&l=am2&o=1&a= > >> 1617290459> > >>>> JUnit in Action, Second Edition > >>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > >> linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de4 > 18%22 > >>> > >>>> > >>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > garygregory-20&l=am2&o=1&a= > >> 1935182021> > >>>> Spring Batch in Action > >>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& > >> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% > >> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > >>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > garygregory-20&l=am2&o=1&a= > >> 1935182951> > >>>> Blog: http://garygregory.wordpress.com > >>>> Home: http://garygregory.com/ > >>>> Tweet! http://twitter.com/GaryGregory > >> > >> > >> > > > > > > -- > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > > Java Persistence with Hibernate, Second Edition > > <https://www.amazon.com/gp/product/1617290459/ref=as_li_ > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> > > > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= > 1617290459> > > JUnit in Action, Second Edition > > <https://www.amazon.com/gp/product/1935182021/ref=as_li_ > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22 > > > > > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= > 1935182021> > > Spring Batch in Action > > <https://www.amazon.com/gp/product/1935182951/ref=as_li_ > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& > linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% > 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= > 1935182951> > > Blog: http://garygregory.wordpress.com > > Home: http://garygregory.com/ > > Tweet! http://twitter.com/GaryGregory > > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> JUnit in Action, Second Edition <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> Spring Batch in Action <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory