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