Instead of patching the second one, for an uber-jar it might also be a
valid recommendation to exclude the class over the beans.xml.


On Tue, Sep 2, 2014 at 8:12 AM, Thomas Hug <[email protected]> wrote:

> Hi John
>
> First one should - as Romain mentioned - usually not be a problem. Might
> still be worth adding the exception check as I've run into problems on WLS
> with this particular approach. We lose the ability to deal with entities
> defined in orm.xml's but that's probably still better than crashing :-)
>
> The second one comes from creating an uber-jar - the api module doesn't
> have a beans.xml. Can't think of a different approach to get rid of this
> one...
>
>
> On Tue, Sep 2, 2014 at 6:54 AM, Romain Manni-Bucau <[email protected]>
> wrote:
>
>> Hi
>>
>> Archive url issue is due to the arquillian adapter (so no problem for data
>> module)
>>
>> Can't the other one be fixed using @Typed?
>> Le 1 sept. 2014 21:41, "John D. Ament" <[email protected]> a écrit :
>>
>> > 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