Yes, although we could fully modularize the API right away.

Ralph

> On May 9, 2017, at 12:51 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
>> 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


Reply via email to