openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Joysn <joys...@gmail.com>
Subject Re: Annotations removed when enhancing?
Date Wed, 08 Aug 2012 19:57:40 GMT
nice :)

thanks for your hints. But i seem unable to apply the plugin cfg to my
setup successfully:

i added the following cfg, changing the execution phase to
process-test-classes, as the
enhencement is only needed for entities needed in unit tests:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>openjpa-maven-plugin</artifactId>
    <version>1.2</version>
    <configuration>
      <includes>org/activiti/standalone/jpa/*.class</includes>
      <addDefaultConstructor>true</addDefaultConstructor>
      <enforcePropertyRestrictions>true</enforcePropertyRestrictions>

 <persistenceXmlFile>src/test/resources/META-INF/persistence.xml</persistenceXmlFile>
    </configuration>
    <executions>
      <execution>
        <id>enhancer</id>
        <phase>process-test-classes</phase>
        <goals>
          <goal>enhance</goal>
        </goals>
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>org.apache.openjpa</groupId>
        <artifactId>openjpa</artifactId>
        <version>2.0.1</version>
      </dependency>
    </dependencies>
  </plugin>

the plugin is unable to find the entities listed in the persistence.xml:

[INFO] --- openjpa-maven-plugin:1.2:enhance (enhancer) @ activiti-engine ---
38  activiti-jpa-pu  INFO   [main] openjpa.Tool - No targets were given.
 Running on all classes in your persistent classes list, or all metadata
files in classpath directories if you have not listed your persistent
classes.  Use -help to display tool usage information.
[INFO]
------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 3.623s
[INFO] Finished at: Wed Aug 08 21:52:30 CEST 2012
[INFO] Final Memory: 15M/250M
[INFO]
------------------------------------------------------------------------
[ERROR] Failed to execute goal
org.codehaus.mojo:openjpa-maven-plugin:1.2:enhance (enhancer) on project
activiti-engine: Execution enhancer of goal
org.codehaus.mojo:openjpa-maven-plugin:1.2:enhance failed:
java.lang.ClassNotFoundException:
org.activiti.standalone.jpa.IntegerIdJPAEntity -> [Help 1]

what i am missing for that plugin?

Thanks
Chris

On 8 August 2012 20:22, Mark Struberg <struberg@yahoo.de> wrote:

> yikes, that means you use subclassing.
>
>
> I recommend to use the openjpa-maven-plugin to enhance the classes at
> build time already.
>
> Here is a sample which you can look at
>
> https://github.com/struberg/lightweightEE/blob/master/backend-api/pom.xml
>
> We still need to polish our own documentation, but the parameters are
> almost the same as in the old version which you can find at [1].
> The openjpa-maven-plugin is not part of OpenJPA itself since 2.2.0.
>
>
> LieGrue,
> strub
>
> [1] http://mojo.codehaus.org/openjpa-maven-plugin/usage.html
>
>
>
> ----- Original Message -----
> > From: Chris Joysn <joysn71@gmail.com>
> > To: users@openjpa.apache.org
> > Cc:
> > Sent: Wednesday, August 8, 2012 7:04 PM
> > Subject: Re: Annotations removed when enhancing?
> >
> > well... i am not so an experienced OpenJPA user but i can provide the
> > following information:
> >
> > before merging the entity to an persistence context the class of the
> entity
> > looks like:
> >
> > org.activiti.standalone.jpa.FieldAccessJPAEntity@4260ab
> >
> > after the merge it looks like:
> >
> > org.apache.openjpa.enhance.org
> > $activiti$standalone$jpa$FieldAccessJPAEntity$pcsubclass@df88d2
> >
> > when performing an
> >
> > private boolean isEntityAnnotationPresent(Class<?> clazz) {
> >     return (clazz.getAnnotation(Entity.class) != null);
> > }
> >
> > the Entity.class annotation is found before the merge, not not after the
> > merge.
> >
> > And when subclassing is bad, how can i get rid of it?
> >
> > Chris
> >
> > On 8 August 2012 15:55, Kevin Sutter <kwsutter@gmail.com> wrote:
> >
> >>  >  What way of enhancement do you use in your project?
> >>  >  If you use subclassing, then the generated subclass is probably
> > without
> >>  annotations.
> >>
> >>  And, if you are using subclassing, then quit using subclassing!  :-)
> >>  Nobody that is serious about their application should be using
> subclassing
> >>  support.  I've even been throwing around the idea of removing the
> >>  subclassing support altogether since it can cause more issues than it
> >>  resolves...  But, that's a whole separate discussion...
> >>
> >>  Kevin
> >>
> >>  On Wed, Aug 8, 2012 at 1:13 AM, Mark Struberg <struberg@yahoo.de>
> > wrote:
> >>
> >>  >
> >>  >
> >>  > Kevin is right. I re-checked it now as well. At least for build-time
> >>  > enhanced entities the annotations remain on the class and fields. We
> > do
> >>  not
> >>  > use method annotations, so I cannot check this quickly.
> >>  >
> >>  > What confused me earlier is that jad (java decompiler) doesn't
> > seem to
> >>  > show annotations in general. But looking at the hex dump of the class
> >>  file
> >>  > itself clearly shows that they are there.
> >>  >
> >>  > What way of enhancement do you use in your project?
> >>  > If you use subclassing, then the generated subclass is probably
> > without
> >>  > annotations.
> >>  >
> >>  >
> >>  > LieGrue,
> >>  > strub
> >>  >
> >>  >
> >>  >
> >>  > ----- Original Message -----
> >>  > > From: Kevin Sutter <kwsutter@gmail.com>
> >>  > > To: users@openjpa.apache.org
> >>  > > Cc:
> >>  > > Sent: Tuesday, August 7, 2012 5:21 PM
> >>  > > Subject: Re: Annotations removed when enhancing?
> >>  > >
> >>  > > I'm curious why you think that the annotations are
> > removed...  Even
> >>  after
> >>  > > enhancement is performed, OpenJPA parses the entity classes to
> > get the
> >>  > ORM
> >>  > > data, which is normally specified via annotations.  Do you have
> > an
> >>  > example?
> >>  > >
> >>  > > Kevin
> >>  > >
> >>  > > On Sun, Aug 5, 2012 at 1:09 PM, Chris Joysn
> > <joysn71@gmail.com> wrote:
> >>  > >
> >>  > >>  well.. unfortunately a framework relies on it to detect JPA
> >>  > entities... i
> >>  > >>  think there is no other way to detect in a reliable way JPA
> > entities?
> >>  > >>
> >>  > >>  LieGrueZuRue
> >>  > >>
> >>  > >>
> >>  > >>  On 5 August 2012 19:52, Mark Struberg
> > <struberg@yahoo.de> wrote:
> >>  > >>
> >>  > >>  > Having code relying on @Entity is bitter so to say ;)
> >>  > >>  >
> >>  > >>  > All JPA functions could also be added via XML, without
> > having any
> >>  > >>  > annotation on your entities...
> >>  > >>  >
> >>  > >>  > Such code would btw also not work in Hibernate if you
> > use proxies.
> >>  > >>  Becasue
> >>  > >>  > the generated proxies don't have annotations
> > neither.
> >>  > >>  >
> >>  > >>  > LieGrue,
> >>  > >>  > strub
> >>  > >>  >
> >>  > >>  >
> >>  > >>  >
> >>  > >>  > ----- Original Message -----
> >>  > >>  > > From: Chris Joysn <joysn71@gmail.com>
> >>  > >>  > > To: users@openjpa.apache.org
> >>  > >>  > > Cc:
> >>  > >>  > > Sent: Sunday, August 5, 2012 7:19 PM
> >>  > >>  > > Subject: Annotations removed when enhancing?
> >>  > >>  > >
> >>  > >>  > > Hello,
> >>  > >>  > >
> >>  > >>  > > is it possible that entities do not get their
> > annotations removed
> >>  > > when
> >>  > >>  > > OpenJPA is performing its enhancements?
> >>  > >>  > >
> >>  > >>  > > unfortunately some code relies on the fact that
> > eg. @Entity is
> >>  > > present
> >>  > >>  on
> >>  > >>  > > classes, but this annotation gets removed by
> > OpenJPA.
> >>  > >>  > >
> >>  > >>  > > thanks
> >>  > >>  > >
> >>  > >>  >
> >>  > >>
> >>  > >
> >>  >
> >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message