You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Romain Manni-Bucau <rm...@gmail.com> on 2013/06/01 09:22:13 UTC

Re: ApplicationComposer + JPA javaagent - NoSuchMethodError for MappedSuperclass ONLY when testing

Abstractbaseentity is listed in the persistence unit?

Well you can still enhance it at build time before tests
Le 31 mai 2013 23:54, "Reinis Vicups" <to...@orbit-x.de> a écrit :

> Hi,
>
> I get NoSuchMethodError when testing with ApplicationComposer and manually
> supplied javaagent. When I start container (TomEE) everything works just
> fine.
>
> I enable javaagent for maven test plugin like this:
>
>                 <plugin>
> <groupId>org.apache.maven.**plugins</groupId>
> <artifactId>maven-failsafe-**plugin</artifactId>
>                     <version>2.14.1</version>
>                 <executions>
>                     <execution>
>                         <goals>
> <goal>integration-test</goal>
>                             <goal>verify</goal>
>                         </goals>
>                     </execution>
>                 </executions>
>                     <configuration>
> <groups>de.orbitx.retena.**IntegrationTest</groups>
>                         <includes>
> <include>**/*.class</include>
>                         </includes>
> <argLine>-javaagent:${project.**build.directory}/openejb-**
> javaagent-${openejb.version}.**jar</argLine>
> <workingDirectory>${project.**build.directory}</**workingDirectory>
>                     </configuration>
>                 </plugin>
>
> javaagent is added like this (I use maven-dependency-plugin to copy it to
> right place):
>
>             <dependency>
>                 <groupId>org.apache.openejb</**groupId>
> <artifactId>openejb-javaagent<**/artifactId>
>                 <version>4.6.0-SNAPSHOT</**version>
>                 <scope>test</scope>
>             </dependency>
>
> The full log I was able to get our of openejb is here :
> https://gist.github.com/**anonymous/5688204<https://gist.github.com/anonymous/5688204>
>
> My AbstractBaseClass looks like this:
>
> @MappedSuperclass
> public abstract class AbstractBaseEntity implements Serializable {
>
>     @Id
>     @GeneratedValue(strategy = GenerationType.IDENTITY)
>     @Column(name = "id")
>     private Integer id;
>
>     // getter setter and so on....
> }
>
> and the Permission class from stack trace like this:
>
> @Entity
> public class Permission extends AbstractBaseEntity {
>
>     private String permission;
>
>     // more irrelevant code is here
> }
>
> I bootstrap from persistence.xml that has entity definition for Permission
> and NO entity definition for AbstractBaseEntity (as suggested somewhere on
> forums) like this:
>
> <entity class="my.access.Permission" />
>
> I have refactored everything couple of times (removed generics, tried to
> change AbstractBaseEntity to a concrete class, moved @Id from here to there
> and now appears that the only option that I have still think of is to
> remove BaseEntity.
>
> Before I do that, I would be happy if someone could help me to avoid that,
> because this is not solution but, rather, workaround that makes my code
> worse.
>
> thank you guys for your help!
> reinis
>

Re: ApplicationComposer + JPA javaagent - NoSuchMethodError for MappedSuperclass ONLY when testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
was  https://issues.apache.org/jira/browse/TOMEE-956

*Romain Manni-Bucau*
*Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
*Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
*LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
*Github: https://github.com/rmannibucau*



2013/6/1 Romain Manni-Bucau <rm...@gmail.com>

> did you try to add to your persistence.xml:
>
>
>      <class>de.orbitx.jpaissue.AbstractBaseEntity</class>
>     <class>de.orbitx.jpaissue.RetenaUser</class>
>     <class>de.orbitx.jpaissue.Role</class>
>     <exclude-unlisted-classes>true</exclude-unlisted-classes>
>
> ?
>
> *Romain Manni-Bucau*
> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> *Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> *Github: https://github.com/rmannibucau*
>
>
>
> 2013/6/1 Reinis Vicups <to...@orbit-x.de>
>
>> Hi,
>>
>> I am attaching foobar project that replicates this issue of mine. I will
>> gladly post jira on openejb or openjpa if that is really framework issue.
>>
>> br
>> reinis
>>
>>
>> On 01.06.2013 11:48, Reinis Vicups wrote:
>>
>>> Hi,
>>>
>>> I am sorry, the exception is exactly the same no matter if I add
>>> AbstractBaseEntity to PU or not. The other exception came from usage of
>>> generics at some point in my numerous re-factorings.
>>>
>>> Please find the complete log output from the test-run I just made with
>>> AbstractBaseEntity in PU here: https://gist.github.com/**
>>> anonymous/5689822 <https://gist.github.com/anonymous/5689822>
>>>
>>> Again, this VERY SAME config works just fine when running in TomEE.
>>>
>>> The config looks like this:
>>>
>>> orm.xml
>>>
>>> <entity-mappings xmlns="http://java.sun.com/**xml/ns/persistence/orm<http://java.sun.com/xml/ns/persistence/orm>
>>> "
>>>     xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>>> "
>>>     xsi:schemaLocation="http://**java.sun.com/xml/ns/**persistence/orm<http://java.sun.com/xml/ns/persistence/orm>
>>> http://java.sun.com/xml/ns/**persistence/orm_2_0.xsd<http://java.sun.com/xml/ns/persistence/orm_2_0.xsd>
>>> "
>>>     version="2.0">
>>>
>>>     <persistence-unit-metadata>
>>>         <persistence-unit-defaults>
>>>             <access>FIELD</access>
>>>         </persistence-unit-defaults>
>>>     </persistence-unit-metadata>
>>>
>>>     <entity class="my.base.**AbstractBaseEntity" />
>>>     <entity class="my.access.Permission" />
>>>     ...
>>> </entity-mappings>
>>>
>>> persistence.xml
>>>
>>> <persistence version="2.0"
>>>     xmlns="http://java.sun.com/**xml/ns/persistence<http://java.sun.com/xml/ns/persistence>"
>>> xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>>> "
>>>     xsi:schemaLocation="http://**java.sun.com/xml/ns/**persistence<http://java.sun.com/xml/ns/persistence>
>>> http://java.sun.com/xml/ns/**persistence/persistence_2_0.**xsd<http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd>
>>> ">
>>>
>>>     <persistence-unit name="default" transaction-type="JTA">
>>> <provider>org.apache.openjpa.**persistence.**PersistenceProviderImpl</**provider>
>>>
>>>         <jta-data-source>ICDatabase</**jta-data-source>
>>> <non-jta-data-source>**ICDatabaseNonJta</non-jta-**data-source>
>>>         <mapping-file>META-INF/orm.**xml</mapping-file>
>>>
>>>         <properties>
>>>             <property name="openjpa.**ConnectionFactoryProperties"
>>>                 value="PrettyPrint=true, PrettyPrintLineLength=144,
>>> PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000,
>>> TestOnBorrow=true" />
>>>             <property name="openjpa.Log" value="DefaultLevel=Trace" />
>>>             <property name="openjpa.TransactionMode" value="managed" />
>>>
>>>             <property name="openjpa.jdbc.**DBDictionary"
>>> value="org.apache.openjpa.**jdbc.sql.DerbyDictionary" />
>>>             <property name="openjpa.jdbc.Schema" value="ic" />
>>>             <property name="openjpa.jdbc.**SynchronizeMappings"
>>> value="buildSchema" />
>>>             <property name="openjpa.jdbc.**SchemaFactory"
>>> value="native(ForeignKeys=**true)"/>
>>>
>>>             <property name="openjpa.**DynamicEnhancementAgent"
>>> value="true" />
>>>             <property name="openjpa.**RuntimeUnenhancedClasses"
>>> value="unsupported" />
>>>
>>>             <property name="openjpa.DataCache" value="true" />
>>>             <property name="openjpa.QueryCache" value="true" />
>>>         </properties>
>>>     </persistence-unit>
>>> </persistence>
>>>
>>> Thank you Romain for taking time to look at this.
>>>
>>> br
>>> reinis
>>>
>>> On 01.06.2013 09:56, Romain Manni-Bucau wrote:
>>>
>>>> A sample would be great yes
>>>> Le 1 juin 2013 09:51, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>>>
>>>>  Hi,
>>>>>
>>>>> I bootstrap from persistence.xml that has entity definition for
>>>>> Permission
>>>>> and NO entity definition for AbstractBaseEntity (as suggested
>>>>> somewhere on
>>>>> forums) like this:
>>>>>
>>>>> <entity class="my.access.Permission" />
>>>>>
>>>>> So NO, Abstractbaseentity is not listed in persistence unit. I have
>>>>> tried
>>>>> adding it and got different exception (something with field 'id' does
>>>>> not
>>>>> have persistence annotations). If this is relevant I can post the
>>>>> exception
>>>>> I get if adding AbstractBaseEntity to PU.
>>>>>
>>>>>
>>>>> On 01.06.2013 09:22, Romain Manni-Bucau wrote:
>>>>>
>>>>>  Abstractbaseentity is listed in the persistence unit?
>>>>>>
>>>>>> Well you can still enhance it at build time before tests
>>>>>> Le 31 mai 2013 23:54, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>>>>>
>>>>>>   Hi,
>>>>>>
>>>>>>> I get NoSuchMethodError when testing with ApplicationComposer and
>>>>>>> manually
>>>>>>> supplied javaagent. When I start container (TomEE) everything works
>>>>>>> just
>>>>>>> fine.
>>>>>>>
>>>>>>> I enable javaagent for maven test plugin like this:
>>>>>>>
>>>>>>>                   <plugin>
>>>>>>> <groupId>org.apache.maven.******plugins</groupId>
>>>>>>> <artifactId>maven-failsafe-******plugin</artifactId>
>>>>>>> <version>2.14.1</version>
>>>>>>>                   <executions>
>>>>>>>                       <execution>
>>>>>>>                           <goals>
>>>>>>> <goal>integration-test</goal>
>>>>>>> <goal>verify</goal>
>>>>>>>                           </goals>
>>>>>>>                       </execution>
>>>>>>>                   </executions>
>>>>>>>                       <configuration>
>>>>>>> <groups>de.orbitx.retena.******IntegrationTest</groups>
>>>>>>>                           <includes>
>>>>>>> <include>**/*.class</include>
>>>>>>>                           </includes>
>>>>>>> <argLine>-javaagent:${project.******build.directory}/openejb-****
>>>>>>> javaagent-${openejb.version}.******jar</argLine>
>>>>>>> <workingDirectory>${project.******build.directory}</******workingDirectory>
>>>>>>>
>>>>>>>                       </configuration>
>>>>>>>                   </plugin>
>>>>>>>
>>>>>>> javaagent is added like this (I use maven-dependency-plugin to copy
>>>>>>> it to
>>>>>>> right place):
>>>>>>>
>>>>>>>               <dependency>
>>>>>>> <groupId>org.apache.openejb</******groupId>
>>>>>>> <artifactId>openejb-javaagent<******/artifactId>
>>>>>>> <version>4.6.0-SNAPSHOT</******version>
>>>>>>>                   <scope>test</scope>
>>>>>>>               </dependency>
>>>>>>>
>>>>>>> The full log I was able to get our of openejb is here :
>>>>>>> https://gist.github.com/******anonymous/5688204<https://gist.github.com/****anonymous/5688204>
>>>>>>> <https://**gist.github.com/**anonymous/**5688204<https://gist.github.com/**anonymous/5688204>>
>>>>>>>
>>>>>>> <https://**gist.github.com/**anonymous/**5688204<http://gist.github.com/anonymous/**5688204>
>>>>>>> <https://**gist.github.com/anonymous/**5688204<https://gist.github.com/anonymous/5688204>>
>>>>>>>
>>>>>>> My AbstractBaseClass looks like this:
>>>>>>>
>>>>>>> @MappedSuperclass
>>>>>>> public abstract class AbstractBaseEntity implements Serializable {
>>>>>>>
>>>>>>>       @Id
>>>>>>>       @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>>>>       @Column(name = "id")
>>>>>>>       private Integer id;
>>>>>>>
>>>>>>>       // getter setter and so on....
>>>>>>> }
>>>>>>>
>>>>>>> and the Permission class from stack trace like this:
>>>>>>>
>>>>>>> @Entity
>>>>>>> public class Permission extends AbstractBaseEntity {
>>>>>>>
>>>>>>>       private String permission;
>>>>>>>
>>>>>>>       // more irrelevant code is here
>>>>>>> }
>>>>>>>
>>>>>>> I bootstrap from persistence.xml that has entity definition for
>>>>>>> Permission
>>>>>>> and NO entity definition for AbstractBaseEntity (as suggested
>>>>>>> somewhere
>>>>>>> on
>>>>>>> forums) like this:
>>>>>>>
>>>>>>> <entity class="my.access.Permission" />
>>>>>>>
>>>>>>> I have refactored everything couple of times (removed generics,
>>>>>>> tried to
>>>>>>> change AbstractBaseEntity to a concrete class, moved @Id from here to
>>>>>>> there
>>>>>>> and now appears that the only option that I have still think of is to
>>>>>>> remove BaseEntity.
>>>>>>>
>>>>>>> Before I do that, I would be happy if someone could help me to avoid
>>>>>>> that,
>>>>>>> because this is not solution but, rather, workaround that makes my
>>>>>>> code
>>>>>>> worse.
>>>>>>>
>>>>>>> thank you guys for your help!
>>>>>>> reinis
>>>>>>>
>>>>>>>
>>>>>>>
>>
>

Re: ApplicationComposer + JPA javaagent - NoSuchMethodError for MappedSuperclass ONLY when testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
did you try to add to your persistence.xml:


     <class>de.orbitx.jpaissue.AbstractBaseEntity</class>
    <class>de.orbitx.jpaissue.RetenaUser</class>
    <class>de.orbitx.jpaissue.Role</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>

?

*Romain Manni-Bucau*
*Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
*Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
*LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
*Github: https://github.com/rmannibucau*



2013/6/1 Reinis Vicups <to...@orbit-x.de>

> Hi,
>
> I am attaching foobar project that replicates this issue of mine. I will
> gladly post jira on openejb or openjpa if that is really framework issue.
>
> br
> reinis
>
>
> On 01.06.2013 11:48, Reinis Vicups wrote:
>
>> Hi,
>>
>> I am sorry, the exception is exactly the same no matter if I add
>> AbstractBaseEntity to PU or not. The other exception came from usage of
>> generics at some point in my numerous re-factorings.
>>
>> Please find the complete log output from the test-run I just made with
>> AbstractBaseEntity in PU here: https://gist.github.com/**
>> anonymous/5689822 <https://gist.github.com/anonymous/5689822>
>>
>> Again, this VERY SAME config works just fine when running in TomEE.
>>
>> The config looks like this:
>>
>> orm.xml
>>
>> <entity-mappings xmlns="http://java.sun.com/**xml/ns/persistence/orm<http://java.sun.com/xml/ns/persistence/orm>
>> "
>>     xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>> "
>>     xsi:schemaLocation="http://**java.sun.com/xml/ns/**persistence/orm<http://java.sun.com/xml/ns/persistence/orm>
>> http://java.sun.com/xml/ns/**persistence/orm_2_0.xsd<http://java.sun.com/xml/ns/persistence/orm_2_0.xsd>
>> "
>>     version="2.0">
>>
>>     <persistence-unit-metadata>
>>         <persistence-unit-defaults>
>>             <access>FIELD</access>
>>         </persistence-unit-defaults>
>>     </persistence-unit-metadata>
>>
>>     <entity class="my.base.**AbstractBaseEntity" />
>>     <entity class="my.access.Permission" />
>>     ...
>> </entity-mappings>
>>
>> persistence.xml
>>
>> <persistence version="2.0"
>>     xmlns="http://java.sun.com/**xml/ns/persistence<http://java.sun.com/xml/ns/persistence>"
>> xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>> "
>>     xsi:schemaLocation="http://**java.sun.com/xml/ns/**persistence<http://java.sun.com/xml/ns/persistence>
>> http://java.sun.com/xml/ns/**persistence/persistence_2_0.**xsd<http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd>
>> ">
>>
>>     <persistence-unit name="default" transaction-type="JTA">
>> <provider>org.apache.openjpa.**persistence.**PersistenceProviderImpl</**provider>
>>
>>         <jta-data-source>ICDatabase</**jta-data-source>
>> <non-jta-data-source>**ICDatabaseNonJta</non-jta-**data-source>
>>         <mapping-file>META-INF/orm.**xml</mapping-file>
>>
>>         <properties>
>>             <property name="openjpa.**ConnectionFactoryProperties"
>>                 value="PrettyPrint=true, PrettyPrintLineLength=144,
>> PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000,
>> TestOnBorrow=true" />
>>             <property name="openjpa.Log" value="DefaultLevel=Trace" />
>>             <property name="openjpa.TransactionMode" value="managed" />
>>
>>             <property name="openjpa.jdbc.**DBDictionary"
>> value="org.apache.openjpa.**jdbc.sql.DerbyDictionary" />
>>             <property name="openjpa.jdbc.Schema" value="ic" />
>>             <property name="openjpa.jdbc.**SynchronizeMappings"
>> value="buildSchema" />
>>             <property name="openjpa.jdbc.**SchemaFactory"
>> value="native(ForeignKeys=**true)"/>
>>
>>             <property name="openjpa.**DynamicEnhancementAgent"
>> value="true" />
>>             <property name="openjpa.**RuntimeUnenhancedClasses"
>> value="unsupported" />
>>
>>             <property name="openjpa.DataCache" value="true" />
>>             <property name="openjpa.QueryCache" value="true" />
>>         </properties>
>>     </persistence-unit>
>> </persistence>
>>
>> Thank you Romain for taking time to look at this.
>>
>> br
>> reinis
>>
>> On 01.06.2013 09:56, Romain Manni-Bucau wrote:
>>
>>> A sample would be great yes
>>> Le 1 juin 2013 09:51, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>>
>>>  Hi,
>>>>
>>>> I bootstrap from persistence.xml that has entity definition for
>>>> Permission
>>>> and NO entity definition for AbstractBaseEntity (as suggested somewhere
>>>> on
>>>> forums) like this:
>>>>
>>>> <entity class="my.access.Permission" />
>>>>
>>>> So NO, Abstractbaseentity is not listed in persistence unit. I have
>>>> tried
>>>> adding it and got different exception (something with field 'id' does
>>>> not
>>>> have persistence annotations). If this is relevant I can post the
>>>> exception
>>>> I get if adding AbstractBaseEntity to PU.
>>>>
>>>>
>>>> On 01.06.2013 09:22, Romain Manni-Bucau wrote:
>>>>
>>>>  Abstractbaseentity is listed in the persistence unit?
>>>>>
>>>>> Well you can still enhance it at build time before tests
>>>>> Le 31 mai 2013 23:54, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>>>>
>>>>>   Hi,
>>>>>
>>>>>> I get NoSuchMethodError when testing with ApplicationComposer and
>>>>>> manually
>>>>>> supplied javaagent. When I start container (TomEE) everything works
>>>>>> just
>>>>>> fine.
>>>>>>
>>>>>> I enable javaagent for maven test plugin like this:
>>>>>>
>>>>>>                   <plugin>
>>>>>> <groupId>org.apache.maven.******plugins</groupId>
>>>>>> <artifactId>maven-failsafe-******plugin</artifactId>
>>>>>> <version>2.14.1</version>
>>>>>>                   <executions>
>>>>>>                       <execution>
>>>>>>                           <goals>
>>>>>> <goal>integration-test</goal>
>>>>>> <goal>verify</goal>
>>>>>>                           </goals>
>>>>>>                       </execution>
>>>>>>                   </executions>
>>>>>>                       <configuration>
>>>>>> <groups>de.orbitx.retena.******IntegrationTest</groups>
>>>>>>                           <includes>
>>>>>> <include>**/*.class</include>
>>>>>>                           </includes>
>>>>>> <argLine>-javaagent:${project.******build.directory}/openejb-****
>>>>>> javaagent-${openejb.version}.******jar</argLine>
>>>>>> <workingDirectory>${project.******build.directory}</******workingDirectory>
>>>>>>
>>>>>>                       </configuration>
>>>>>>                   </plugin>
>>>>>>
>>>>>> javaagent is added like this (I use maven-dependency-plugin to copy
>>>>>> it to
>>>>>> right place):
>>>>>>
>>>>>>               <dependency>
>>>>>> <groupId>org.apache.openejb</******groupId>
>>>>>> <artifactId>openejb-javaagent<******/artifactId>
>>>>>> <version>4.6.0-SNAPSHOT</******version>
>>>>>>                   <scope>test</scope>
>>>>>>               </dependency>
>>>>>>
>>>>>> The full log I was able to get our of openejb is here :
>>>>>> https://gist.github.com/******anonymous/5688204<https://gist.github.com/****anonymous/5688204>
>>>>>> <https://**gist.github.com/**anonymous/**5688204<https://gist.github.com/**anonymous/5688204>>
>>>>>>
>>>>>> <https://**gist.github.com/**anonymous/**5688204<http://gist.github.com/anonymous/**5688204>
>>>>>> <https://**gist.github.com/anonymous/**5688204<https://gist.github.com/anonymous/5688204>>
>>>>>>
>>>>>> My AbstractBaseClass looks like this:
>>>>>>
>>>>>> @MappedSuperclass
>>>>>> public abstract class AbstractBaseEntity implements Serializable {
>>>>>>
>>>>>>       @Id
>>>>>>       @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>>>       @Column(name = "id")
>>>>>>       private Integer id;
>>>>>>
>>>>>>       // getter setter and so on....
>>>>>> }
>>>>>>
>>>>>> and the Permission class from stack trace like this:
>>>>>>
>>>>>> @Entity
>>>>>> public class Permission extends AbstractBaseEntity {
>>>>>>
>>>>>>       private String permission;
>>>>>>
>>>>>>       // more irrelevant code is here
>>>>>> }
>>>>>>
>>>>>> I bootstrap from persistence.xml that has entity definition for
>>>>>> Permission
>>>>>> and NO entity definition for AbstractBaseEntity (as suggested
>>>>>> somewhere
>>>>>> on
>>>>>> forums) like this:
>>>>>>
>>>>>> <entity class="my.access.Permission" />
>>>>>>
>>>>>> I have refactored everything couple of times (removed generics, tried
>>>>>> to
>>>>>> change AbstractBaseEntity to a concrete class, moved @Id from here to
>>>>>> there
>>>>>> and now appears that the only option that I have still think of is to
>>>>>> remove BaseEntity.
>>>>>>
>>>>>> Before I do that, I would be happy if someone could help me to avoid
>>>>>> that,
>>>>>> because this is not solution but, rather, workaround that makes my
>>>>>> code
>>>>>> worse.
>>>>>>
>>>>>> thank you guys for your help!
>>>>>> reinis
>>>>>>
>>>>>>
>>>>>>
>

Re: ApplicationComposer + JPA javaagent - NoSuchMethodError for MappedSuperclass ONLY when testing

Posted by Reinis Vicups <to...@orbit-x.de>.
Hi,

I am attaching foobar project that replicates this issue of mine. I will 
gladly post jira on openejb or openjpa if that is really framework issue.

br
reinis

On 01.06.2013 11:48, Reinis Vicups wrote:
> Hi,
>
> I am sorry, the exception is exactly the same no matter if I add 
> AbstractBaseEntity to PU or not. The other exception came from usage 
> of generics at some point in my numerous re-factorings.
>
> Please find the complete log output from the test-run I just made with 
> AbstractBaseEntity in PU here: https://gist.github.com/anonymous/5689822
>
> Again, this VERY SAME config works just fine when running in TomEE.
>
> The config looks like this:
>
> orm.xml
>
> <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
> http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
>     version="2.0">
>
>     <persistence-unit-metadata>
>         <persistence-unit-defaults>
>             <access>FIELD</access>
>         </persistence-unit-defaults>
>     </persistence-unit-metadata>
>
>     <entity class="my.base.AbstractBaseEntity" />
>     <entity class="my.access.Permission" />
>     ...
> </entity-mappings>
>
> persistence.xml
>
> <persistence version="2.0"
>     xmlns="http://java.sun.com/xml/ns/persistence" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
> http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
>
>     <persistence-unit name="default" transaction-type="JTA">
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
>
>         <jta-data-source>ICDatabase</jta-data-source>
> <non-jta-data-source>ICDatabaseNonJta</non-jta-data-source>
>         <mapping-file>META-INF/orm.xml</mapping-file>
>
>         <properties>
>             <property name="openjpa.ConnectionFactoryProperties"
>                 value="PrettyPrint=true, PrettyPrintLineLength=144, 
> PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, 
> MaxWait=60000, TestOnBorrow=true" />
>             <property name="openjpa.Log" value="DefaultLevel=Trace" />
>             <property name="openjpa.TransactionMode" value="managed" />
>
>             <property name="openjpa.jdbc.DBDictionary" 
> value="org.apache.openjpa.jdbc.sql.DerbyDictionary" />
>             <property name="openjpa.jdbc.Schema" value="ic" />
>             <property name="openjpa.jdbc.SynchronizeMappings" 
> value="buildSchema" />
>             <property name="openjpa.jdbc.SchemaFactory" 
> value="native(ForeignKeys=true)"/>
>
>             <property name="openjpa.DynamicEnhancementAgent" 
> value="true" />
>             <property name="openjpa.RuntimeUnenhancedClasses" 
> value="unsupported" />
>
>             <property name="openjpa.DataCache" value="true" />
>             <property name="openjpa.QueryCache" value="true" />
>         </properties>
>     </persistence-unit>
> </persistence>
>
> Thank you Romain for taking time to look at this.
>
> br
> reinis
>
> On 01.06.2013 09:56, Romain Manni-Bucau wrote:
>> A sample would be great yes
>> Le 1 juin 2013 09:51, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>
>>> Hi,
>>>
>>> I bootstrap from persistence.xml that has entity definition for 
>>> Permission
>>> and NO entity definition for AbstractBaseEntity (as suggested 
>>> somewhere on
>>> forums) like this:
>>>
>>> <entity class="my.access.Permission" />
>>>
>>> So NO, Abstractbaseentity is not listed in persistence unit. I have 
>>> tried
>>> adding it and got different exception (something with field 'id' 
>>> does not
>>> have persistence annotations). If this is relevant I can post the 
>>> exception
>>> I get if adding AbstractBaseEntity to PU.
>>>
>>>
>>> On 01.06.2013 09:22, Romain Manni-Bucau wrote:
>>>
>>>> Abstractbaseentity is listed in the persistence unit?
>>>>
>>>> Well you can still enhance it at build time before tests
>>>> Le 31 mai 2013 23:54, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>>>
>>>>   Hi,
>>>>> I get NoSuchMethodError when testing with ApplicationComposer and
>>>>> manually
>>>>> supplied javaagent. When I start container (TomEE) everything 
>>>>> works just
>>>>> fine.
>>>>>
>>>>> I enable javaagent for maven test plugin like this:
>>>>>
>>>>>                   <plugin>
>>>>> <groupId>org.apache.maven.****plugins</groupId>
>>>>> <artifactId>maven-failsafe-****plugin</artifactId>
>>>>> <version>2.14.1</version>
>>>>>                   <executions>
>>>>>                       <execution>
>>>>>                           <goals>
>>>>> <goal>integration-test</goal>
>>>>> <goal>verify</goal>
>>>>>                           </goals>
>>>>>                       </execution>
>>>>>                   </executions>
>>>>>                       <configuration>
>>>>> <groups>de.orbitx.retena.****IntegrationTest</groups>
>>>>>                           <includes>
>>>>> <include>**/*.class</include>
>>>>>                           </includes>
>>>>> <argLine>-javaagent:${project.****build.directory}/openejb-**
>>>>> javaagent-${openejb.version}.****jar</argLine>
>>>>> <workingDirectory>${project.****build.directory}</****workingDirectory> 
>>>>>
>>>>>                       </configuration>
>>>>>                   </plugin>
>>>>>
>>>>> javaagent is added like this (I use maven-dependency-plugin to 
>>>>> copy it to
>>>>> right place):
>>>>>
>>>>>               <dependency>
>>>>> <groupId>org.apache.openejb</****groupId>
>>>>> <artifactId>openejb-javaagent<****/artifactId>
>>>>> <version>4.6.0-SNAPSHOT</****version>
>>>>>                   <scope>test</scope>
>>>>>               </dependency>
>>>>>
>>>>> The full log I was able to get our of openejb is here :
>>>>> https://gist.github.com/****anonymous/5688204<https://gist.github.com/**anonymous/5688204> 
>>>>>
>>>>> <https://**gist.github.com/anonymous/**5688204<https://gist.github.com/anonymous/5688204> 
>>>>>
>>>>> My AbstractBaseClass looks like this:
>>>>>
>>>>> @MappedSuperclass
>>>>> public abstract class AbstractBaseEntity implements Serializable {
>>>>>
>>>>>       @Id
>>>>>       @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>>       @Column(name = "id")
>>>>>       private Integer id;
>>>>>
>>>>>       // getter setter and so on....
>>>>> }
>>>>>
>>>>> and the Permission class from stack trace like this:
>>>>>
>>>>> @Entity
>>>>> public class Permission extends AbstractBaseEntity {
>>>>>
>>>>>       private String permission;
>>>>>
>>>>>       // more irrelevant code is here
>>>>> }
>>>>>
>>>>> I bootstrap from persistence.xml that has entity definition for
>>>>> Permission
>>>>> and NO entity definition for AbstractBaseEntity (as suggested 
>>>>> somewhere
>>>>> on
>>>>> forums) like this:
>>>>>
>>>>> <entity class="my.access.Permission" />
>>>>>
>>>>> I have refactored everything couple of times (removed generics, 
>>>>> tried to
>>>>> change AbstractBaseEntity to a concrete class, moved @Id from here to
>>>>> there
>>>>> and now appears that the only option that I have still think of is to
>>>>> remove BaseEntity.
>>>>>
>>>>> Before I do that, I would be happy if someone could help me to avoid
>>>>> that,
>>>>> because this is not solution but, rather, workaround that makes my 
>>>>> code
>>>>> worse.
>>>>>
>>>>> thank you guys for your help!
>>>>> reinis
>>>>>
>>>>>


Re: ApplicationComposer + JPA javaagent - NoSuchMethodError for MappedSuperclass ONLY when testing

Posted by Reinis Vicups <to...@orbit-x.de>.
Hi,

I am sorry, the exception is exactly the same no matter if I add 
AbstractBaseEntity to PU or not. The other exception came from usage of 
generics at some point in my numerous re-factorings.

Please find the complete log output from the test-run I just made with 
AbstractBaseEntity in PU here: https://gist.github.com/anonymous/5689822

Again, this VERY SAME config works just fine when running in TomEE.

The config looks like this:

orm.xml

<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
     version="2.0">

     <persistence-unit-metadata>
         <persistence-unit-defaults>
             <access>FIELD</access>
         </persistence-unit-defaults>
     </persistence-unit-metadata>

     <entity class="my.base.AbstractBaseEntity" />
     <entity class="my.access.Permission" />
     ...
</entity-mappings>

persistence.xml

<persistence version="2.0"
     xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

     <persistence-unit name="default" transaction-type="JTA">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
         <jta-data-source>ICDatabase</jta-data-source>
<non-jta-data-source>ICDatabaseNonJta</non-jta-data-source>
         <mapping-file>META-INF/orm.xml</mapping-file>

         <properties>
             <property name="openjpa.ConnectionFactoryProperties"
                 value="PrettyPrint=true, PrettyPrintLineLength=144, 
PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000, 
TestOnBorrow=true" />
             <property name="openjpa.Log" value="DefaultLevel=Trace" />
             <property name="openjpa.TransactionMode" value="managed" />

             <property name="openjpa.jdbc.DBDictionary" 
value="org.apache.openjpa.jdbc.sql.DerbyDictionary" />
             <property name="openjpa.jdbc.Schema" value="ic" />
             <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema" />
             <property name="openjpa.jdbc.SchemaFactory" 
value="native(ForeignKeys=true)"/>

             <property name="openjpa.DynamicEnhancementAgent" 
value="true" />
             <property name="openjpa.RuntimeUnenhancedClasses" 
value="unsupported" />

             <property name="openjpa.DataCache" value="true" />
             <property name="openjpa.QueryCache" value="true" />
         </properties>
     </persistence-unit>
</persistence>

Thank you Romain for taking time to look at this.

br
reinis

On 01.06.2013 09:56, Romain Manni-Bucau wrote:
> A sample would be great yes
> Le 1 juin 2013 09:51, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>
>> Hi,
>>
>> I bootstrap from persistence.xml that has entity definition for Permission
>> and NO entity definition for AbstractBaseEntity (as suggested somewhere on
>> forums) like this:
>>
>> <entity class="my.access.Permission" />
>>
>> So NO, Abstractbaseentity is not listed in persistence unit. I have tried
>> adding it and got different exception (something with field 'id' does not
>> have persistence annotations). If this is relevant I can post the exception
>> I get if adding AbstractBaseEntity to PU.
>>
>>
>> On 01.06.2013 09:22, Romain Manni-Bucau wrote:
>>
>>> Abstractbaseentity is listed in the persistence unit?
>>>
>>> Well you can still enhance it at build time before tests
>>> Le 31 mai 2013 23:54, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>>
>>>   Hi,
>>>> I get NoSuchMethodError when testing with ApplicationComposer and
>>>> manually
>>>> supplied javaagent. When I start container (TomEE) everything works just
>>>> fine.
>>>>
>>>> I enable javaagent for maven test plugin like this:
>>>>
>>>>                   <plugin>
>>>> <groupId>org.apache.maven.****plugins</groupId>
>>>> <artifactId>maven-failsafe-****plugin</artifactId>
>>>>                       <version>2.14.1</version>
>>>>                   <executions>
>>>>                       <execution>
>>>>                           <goals>
>>>> <goal>integration-test</goal>
>>>>                               <goal>verify</goal>
>>>>                           </goals>
>>>>                       </execution>
>>>>                   </executions>
>>>>                       <configuration>
>>>> <groups>de.orbitx.retena.****IntegrationTest</groups>
>>>>                           <includes>
>>>> <include>**/*.class</include>
>>>>                           </includes>
>>>> <argLine>-javaagent:${project.****build.directory}/openejb-**
>>>> javaagent-${openejb.version}.****jar</argLine>
>>>> <workingDirectory>${project.****build.directory}</****workingDirectory>
>>>>                       </configuration>
>>>>                   </plugin>
>>>>
>>>> javaagent is added like this (I use maven-dependency-plugin to copy it to
>>>> right place):
>>>>
>>>>               <dependency>
>>>>                   <groupId>org.apache.openejb</****groupId>
>>>> <artifactId>openejb-javaagent<****/artifactId>
>>>>                   <version>4.6.0-SNAPSHOT</****version>
>>>>                   <scope>test</scope>
>>>>               </dependency>
>>>>
>>>> The full log I was able to get our of openejb is here :
>>>> https://gist.github.com/****anonymous/5688204<https://gist.github.com/**anonymous/5688204>
>>>> <https://**gist.github.com/anonymous/**5688204<https://gist.github.com/anonymous/5688204>
>>>> My AbstractBaseClass looks like this:
>>>>
>>>> @MappedSuperclass
>>>> public abstract class AbstractBaseEntity implements Serializable {
>>>>
>>>>       @Id
>>>>       @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>       @Column(name = "id")
>>>>       private Integer id;
>>>>
>>>>       // getter setter and so on....
>>>> }
>>>>
>>>> and the Permission class from stack trace like this:
>>>>
>>>> @Entity
>>>> public class Permission extends AbstractBaseEntity {
>>>>
>>>>       private String permission;
>>>>
>>>>       // more irrelevant code is here
>>>> }
>>>>
>>>> I bootstrap from persistence.xml that has entity definition for
>>>> Permission
>>>> and NO entity definition for AbstractBaseEntity (as suggested somewhere
>>>> on
>>>> forums) like this:
>>>>
>>>> <entity class="my.access.Permission" />
>>>>
>>>> I have refactored everything couple of times (removed generics, tried to
>>>> change AbstractBaseEntity to a concrete class, moved @Id from here to
>>>> there
>>>> and now appears that the only option that I have still think of is to
>>>> remove BaseEntity.
>>>>
>>>> Before I do that, I would be happy if someone could help me to avoid
>>>> that,
>>>> because this is not solution but, rather, workaround that makes my code
>>>> worse.
>>>>
>>>> thank you guys for your help!
>>>> reinis
>>>>
>>>>


Re: ApplicationComposer + JPA javaagent - NoSuchMethodError for MappedSuperclass ONLY when testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
A sample would be great yes
Le 1 juin 2013 09:51, "Reinis Vicups" <to...@orbit-x.de> a écrit :

> Hi,
>
> I bootstrap from persistence.xml that has entity definition for Permission
> and NO entity definition for AbstractBaseEntity (as suggested somewhere on
> forums) like this:
>
> <entity class="my.access.Permission" />
>
> So NO, Abstractbaseentity is not listed in persistence unit. I have tried
> adding it and got different exception (something with field 'id' does not
> have persistence annotations). If this is relevant I can post the exception
> I get if adding AbstractBaseEntity to PU.
>
>
> On 01.06.2013 09:22, Romain Manni-Bucau wrote:
>
>> Abstractbaseentity is listed in the persistence unit?
>>
>> Well you can still enhance it at build time before tests
>> Le 31 mai 2013 23:54, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>>
>>  Hi,
>>>
>>> I get NoSuchMethodError when testing with ApplicationComposer and
>>> manually
>>> supplied javaagent. When I start container (TomEE) everything works just
>>> fine.
>>>
>>> I enable javaagent for maven test plugin like this:
>>>
>>>                  <plugin>
>>> <groupId>org.apache.maven.****plugins</groupId>
>>> <artifactId>maven-failsafe-****plugin</artifactId>
>>>                      <version>2.14.1</version>
>>>                  <executions>
>>>                      <execution>
>>>                          <goals>
>>> <goal>integration-test</goal>
>>>                              <goal>verify</goal>
>>>                          </goals>
>>>                      </execution>
>>>                  </executions>
>>>                      <configuration>
>>> <groups>de.orbitx.retena.****IntegrationTest</groups>
>>>                          <includes>
>>> <include>**/*.class</include>
>>>                          </includes>
>>> <argLine>-javaagent:${project.****build.directory}/openejb-**
>>> javaagent-${openejb.version}.****jar</argLine>
>>> <workingDirectory>${project.****build.directory}</****workingDirectory>
>>>                      </configuration>
>>>                  </plugin>
>>>
>>> javaagent is added like this (I use maven-dependency-plugin to copy it to
>>> right place):
>>>
>>>              <dependency>
>>>                  <groupId>org.apache.openejb</****groupId>
>>> <artifactId>openejb-javaagent<****/artifactId>
>>>                  <version>4.6.0-SNAPSHOT</****version>
>>>                  <scope>test</scope>
>>>              </dependency>
>>>
>>> The full log I was able to get our of openejb is here :
>>> https://gist.github.com/****anonymous/5688204<https://gist.github.com/**anonymous/5688204>
>>> <https://**gist.github.com/anonymous/**5688204<https://gist.github.com/anonymous/5688204>
>>> >
>>>
>>> My AbstractBaseClass looks like this:
>>>
>>> @MappedSuperclass
>>> public abstract class AbstractBaseEntity implements Serializable {
>>>
>>>      @Id
>>>      @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>      @Column(name = "id")
>>>      private Integer id;
>>>
>>>      // getter setter and so on....
>>> }
>>>
>>> and the Permission class from stack trace like this:
>>>
>>> @Entity
>>> public class Permission extends AbstractBaseEntity {
>>>
>>>      private String permission;
>>>
>>>      // more irrelevant code is here
>>> }
>>>
>>> I bootstrap from persistence.xml that has entity definition for
>>> Permission
>>> and NO entity definition for AbstractBaseEntity (as suggested somewhere
>>> on
>>> forums) like this:
>>>
>>> <entity class="my.access.Permission" />
>>>
>>> I have refactored everything couple of times (removed generics, tried to
>>> change AbstractBaseEntity to a concrete class, moved @Id from here to
>>> there
>>> and now appears that the only option that I have still think of is to
>>> remove BaseEntity.
>>>
>>> Before I do that, I would be happy if someone could help me to avoid
>>> that,
>>> because this is not solution but, rather, workaround that makes my code
>>> worse.
>>>
>>> thank you guys for your help!
>>> reinis
>>>
>>>
>

Re: ApplicationComposer + JPA javaagent - NoSuchMethodError for MappedSuperclass ONLY when testing

Posted by Reinis Vicups <to...@orbit-x.de>.
Hi,

I bootstrap from persistence.xml that has entity definition for Permission
and NO entity definition for AbstractBaseEntity (as suggested somewhere on
forums) like this:

<entity class="my.access.Permission" />

So NO, Abstractbaseentity is not listed in persistence unit. I have tried adding it and got different exception (something with field 'id' does not have persistence annotations). If this is relevant I can post the exception I get if adding AbstractBaseEntity to PU.


On 01.06.2013 09:22, Romain Manni-Bucau wrote:
> Abstractbaseentity is listed in the persistence unit?
>
> Well you can still enhance it at build time before tests
> Le 31 mai 2013 23:54, "Reinis Vicups" <to...@orbit-x.de> a écrit :
>
>> Hi,
>>
>> I get NoSuchMethodError when testing with ApplicationComposer and manually
>> supplied javaagent. When I start container (TomEE) everything works just
>> fine.
>>
>> I enable javaagent for maven test plugin like this:
>>
>>                  <plugin>
>> <groupId>org.apache.maven.**plugins</groupId>
>> <artifactId>maven-failsafe-**plugin</artifactId>
>>                      <version>2.14.1</version>
>>                  <executions>
>>                      <execution>
>>                          <goals>
>> <goal>integration-test</goal>
>>                              <goal>verify</goal>
>>                          </goals>
>>                      </execution>
>>                  </executions>
>>                      <configuration>
>> <groups>de.orbitx.retena.**IntegrationTest</groups>
>>                          <includes>
>> <include>**/*.class</include>
>>                          </includes>
>> <argLine>-javaagent:${project.**build.directory}/openejb-**
>> javaagent-${openejb.version}.**jar</argLine>
>> <workingDirectory>${project.**build.directory}</**workingDirectory>
>>                      </configuration>
>>                  </plugin>
>>
>> javaagent is added like this (I use maven-dependency-plugin to copy it to
>> right place):
>>
>>              <dependency>
>>                  <groupId>org.apache.openejb</**groupId>
>> <artifactId>openejb-javaagent<**/artifactId>
>>                  <version>4.6.0-SNAPSHOT</**version>
>>                  <scope>test</scope>
>>              </dependency>
>>
>> The full log I was able to get our of openejb is here :
>> https://gist.github.com/**anonymous/5688204<https://gist.github.com/anonymous/5688204>
>>
>> My AbstractBaseClass looks like this:
>>
>> @MappedSuperclass
>> public abstract class AbstractBaseEntity implements Serializable {
>>
>>      @Id
>>      @GeneratedValue(strategy = GenerationType.IDENTITY)
>>      @Column(name = "id")
>>      private Integer id;
>>
>>      // getter setter and so on....
>> }
>>
>> and the Permission class from stack trace like this:
>>
>> @Entity
>> public class Permission extends AbstractBaseEntity {
>>
>>      private String permission;
>>
>>      // more irrelevant code is here
>> }
>>
>> I bootstrap from persistence.xml that has entity definition for Permission
>> and NO entity definition for AbstractBaseEntity (as suggested somewhere on
>> forums) like this:
>>
>> <entity class="my.access.Permission" />
>>
>> I have refactored everything couple of times (removed generics, tried to
>> change AbstractBaseEntity to a concrete class, moved @Id from here to there
>> and now appears that the only option that I have still think of is to
>> remove BaseEntity.
>>
>> Before I do that, I would be happy if someone could help me to avoid that,
>> because this is not solution but, rather, workaround that makes my code
>> worse.
>>
>> thank you guys for your help!
>> reinis
>>