Hi All!

I've hit a couple of issues with the Data Module and wanted to know if it
was worth fixing.

First, my sample app can be found at [1] (note you'll need JDK8 to run) and
you can run the test JPATest to see the results, using

mvn -Dtest=JPATest -Ddeltaspike.version=1.0.2

First issue you'll note is that the following output (or something similar
to it will be given):

java.lang.IllegalArgumentException: URL does not exist:
archive:se-examples.jar/META-INF/persistence.xml

at
org.apache.deltaspike.data.impl.meta.unit.DescriptorReader.readFromUrl(DescriptorReader.java:64)

at
org.apache.deltaspike.data.impl.meta.unit.DescriptorReader.readAllFromClassPath(DescriptorReader.java:50)

at
org.apache.deltaspike.data.impl.meta.unit.PersistenceUnitReader.readAll(PersistenceUnitReader.java:37)

at
org.apache.deltaspike.data.impl.meta.unit.PersistenceUnits.readPersistenceXmls(PersistenceUnits.java:98)

at
org.apache.deltaspike.data.impl.meta.unit.PersistenceUnits.init(PersistenceUnits.java:45)

at
org.apache.deltaspike.data.impl.RepositoryExtension.beforeBeanDiscovery(RepositoryExtension.java:73)

(full stack available at [2], test.log).  It seems like the
RepositoryExtension is picking up on my persistence.xml and aggressively
trying to parse them (at this point, I don't have any @Repository's defined
in my app).  For some reason it cannot parse this URL but it does seem to
pick up the persistence.xml from target/classes/META-INF so it does
eventually parse it.  To work around this, I wrapped
DescriptorReader.readAllFromClassPath's result.add with an exception check.
 I figure if it can't read the descriptor, no reason to make the whole app
die.  What do you think?

Second issue, after fixing this one, was that AbstractEntityRepository was
being picked up as a @Repository and erroring out saying that there's no
entity for it. This one I wasn't expecting.  To fix it, in
RepsitoryComponents, I added an explicit check if it was the base class, if
it was return null rather than exception and check for null in the add
method.  This also fixed things and the tests started running fine.  This
fix seems more hacky, and I'm wondering if I'm just doing something wrong
to make this class be picked up.

You can see the summary of changes in the gist's patch.txt.

John


[1]: https://github.com/johnament/restful-and-beyond-tut2184
[2]: https://gist.github.com/johnament/d4a55ce7251062ee0b85

Reply via email to