I'm trying to recreate this locally but not having much luck. The annotations are always there for me. You could try turning off pipeline compilation in case that is affecting things - put X="-Xset:pipelineCompilation=false" in your iajc command. But I'm not hopeful that will address it as you are doing binary weaving. You are on a recent AspectJ I take it?
Andy 2009/8/24 Matthew Adams <[email protected]> > > I'm using the ant task iajc to achieve some binary weaving of .class > files, where I want to introduce not only fields and methods but also > class-level annotations. > > The iajc compiler is emitting messages that say that it is adding the > annotations, but when I decompile or use reflection against the woven > classes, there are none on the class. > > Anyone know why this might be happening? > > Here is my iajc invocation (run from within maven-antrun-plugin): > <iajc destDir="${project.build.outputDirectory}" source="1.6" > target="1.6" debug="true" preserveAllLocals="true" > showWeaveInfo="true" verbose="true" classpathref="cp" > noimporterror="false"> > <sourceroots> > <pathelement location="${project.build.sourceDirectory}" /> > <pathelement > location="${project.build.sourceDirectory}/../aspect" /> > </sourceroots> > <inpath> > <pathelement location="${resource.entity.source.classes.path}" > /> > </inpath> > </iajc> > > Above, classpathref cp evaluates to a path that is > maven.compile.classpath, and resource.entity.source.classes.path is > the directory containing the .class files that I'm trying to weave. > > The ajc compiler says (package names abbreviated with "org...." to > protect the innocent): > [iajc] ajc [-source, 1.6, -verbose, -target, 1.6, -g, -d, > C:\dev\ECO\svn\trunk\case\case-rest-resource-entity\target\classes, > -showWeaveInfo, -preserveAllLocals, -classpath, ... > ... > [iajc] info Pipelining compilation > ... > [iajc] info weaver operating in reweavable mode. Need to verify > any required types exist. > ... > [iajc] weaveinfo 'org.....rest.entity.Person' (Person.java) is > annotated with @XmlRootElement type annotation from > 'org.....rest.entity.aspects.RestResourceEntityMixin' > (RestResourceEntityMixin.aj:14) > [iajc] weaveinfo 'org.....rest.entity.Person' (Person.java) is > annotated with @Generated type annotation from > 'org.....rest.entity.aspects.RestResourceEntityMixin' > (RestResourceEntityMixin.aj:13) > [iajc] weaveinfo 'org.....rest.entity.User' (User.java) is > annotated with @XmlRootElement type annotation from > 'org.....rest.entity.aspects.RestResourceEntityMixin' > (RestResourceEntityMixin.aj:14) > [iajc] weaveinfo 'org.....rest.entity.User' (User.java) is > annotated with @Generated type annotation from > 'org.....rest.entity.aspects.RestResourceEntityMixin' > (RestResourceEntityMixin.aj:13) > > Below is the aspect that's being applied. Note interestingly that > while the @Generated and @XmlRootElements don't appear in the final > woven .class file, the introduced fields and methods actually do show > up. > > import org.....rest.entity.annotations.Generated; > import javax.xml.bind.annotation.XmlRootElement; > > public aspect RestResourceEntityMixin { > > public static interface Introduced {} > > declare @type: (org.....rest.entity.*) : @Generated; > declare @type: (org.....rest.entity.*) : @XmlRootElement; > > declare parents: (@Generated *) implements Introduced; > > private String Introduced.etag; > private String Introduced.href; > > public String Introduced.getEtag() { > return etag; > } > public void Introduced.setEtag(String etag) { > this.etag = etag; > } > > public String Introduced.getHref() { > return href; > } > public void Introduced.setHref(String href) { > this.href = href; > } > } > > Can anyone help? > > Thanks, > Matthew > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
