[hibernate-dev] The PAR archive test case validity - PackagedEntityManagerTest

Vlad Mihalcea mihalcea.vlad at gmail.com
Wed Mar 9 13:39:59 EST 2016


Hi,

The part is backslashes comes from the absolute path set by Gradle when
supplying the module OS folder.
The right part containing slashes is the one set in persistence.xml.
I'll try to replace backslashes with slashes and see how it goes.

I was curious if people use the jar-file with absolute paths because the
JPA spec only implies it in the context of relative paths inside an EAR or
WAR.
As for PAR, I guess that was included in some JPA 1.0 draft but it got
rejected in the end, right?

Vlad




On Wed, Mar 9, 2016 at 6:39 PM, Emmanuel Bernard <emmanuel at hibernate.org>
wrote:

> We usually strive on having functionalities work on both Java EE and
> Java SE.
> you example though shows a mix of forward and backslash in your
> <jar-file>, is that expected ?
>
> Emmanuel
>
> On Wed 2016-03-09 17:05, Vlad Mihalcea wrote:
> > Hi,
> >
> > I have two tests in the PackagedEntityManagerTest unit test that fail on
> my
> > machine, but work just fine for everybody else.
> > It could be an OS thing or not, but during the check, I found hat we are
> > testing against an use case that is not found in the JPA spec.
> >
> > The testExternalJar() creates an externaljar.jar and an explicitpar.par.
> >
> > I found an old reference on the PAR archive (
> > http://radio-weblogs.com/0135826/2005/07/07.html) but the JPA 2.1
> doesn't
> > mention anything about it.
> > The explicitpar.par contains the persistence.xml which contains a
> jar-file
> > attribute that references the externaljar.jar with an absolute path:
> >
> >
> <jar-file>D:\Vlad\Work\GitHub\hibernate-orm\hibernate-entitymanager\target/packages/externaljar.jar</jar-file>
> >
> > The JPA spec says that: "Such JAR files are specified relative to the
> > directory or jar file that contains the root of the persistence unit",
> and
> > gives several examples
> > for when using an EAR with or without a WAR.
> >
> > While debugging, I found that the JarFileBasedArchiveDescriptor scans the
> > "explicitpar.par" and looks for:
> >
> > if ( getEntryBasePrefix() != null && ! entryName.startsWith(
> > getEntryBasePrefix() ) ) {
> >     continue;
> > }
> >
> > where the getEntryBasePrefix() is
> >
> "D:/Vlad/Work/GitHub/hibernate-orm/hibernate-entitymanager/target/packages/externaljar.jar"
> >
> > The way that JarFileBasedArchiveDescriptor is implemented matches the JPA
> > description.
> > Nevertheless, the scan cannot locate the jar, and the entities that are
> > contained in the "externaljar.jar" don't get loaded, and the test fails.
> >
> > I can ignore this on my machine and just consider it a white noise, but I
> > wonder why we still check for PAR when we might want to have a test with
> an
> > EAR instead and relative paths.
> >
> > Vlad
> > _______________________________________________
> > hibernate-dev mailing list
> > hibernate-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>


More information about the hibernate-dev mailing list