Hi Matthew and Andy,
have you solved this one?

I don't use abstract aspects a lot, so maybe I'm completely wrong, but
unless aspects extending other aspects have some special handling of private
fields, those are private ITD fields and cannot be accessed outside the
aspect itself. Maybe using privileged on the concrete aspects or declaring
those fields differently may give access, or was it an AspectJ bug?

I had a similar problem recently, and had to make some of them public.

Simone

2011/5/5 Andy Clement <andrew.clem...@gmail.com>

> I can't immediately see what is wrong.  If you can email me the whole
> app I'll puzzle through it for you (and did you try a 1.6.10?)
>
> cheers
> Andy
>
> On 5 May 2011 05:38, Matthew Adams <matt...@matthewadams.me> wrote:
> > Hi all,
> >
> > I'm blowing the dust off of an old AspectJ-based project I had been
> > working on, and I'm getting an error that I can't quite figure out.  I
> > have an abstract aspect that is introducing two Date fields.  Various
> > subaspects (4 of them) are attempting to access the field, but the
> > compiler is saying that the field is not visible.  I've included
> > relevant info below.  Anyone have an idea why this wouldn't work?  I'm
> > using Maven 2.2.1, JDK 1.6.0_25, and trying to use AspectJ 1.6.11 &
> > aspectj-maven-plugin 1.3.1.
> >
> > ...
> > [INFO]
> ------------------------------------------------------------------------
> > [ERROR] BUILD ERROR
> > [INFO]
> ------------------------------------------------------------------------
> > [INFO] Compiler errors:
> > error at datetimePersisted = new Date();
> > ^^^^^^^^^^^
> >
> C:\Work\...\trunk\domain-model\src\main\aspect\me\matthewadams\my\project\name\aspects\PersistentlyAuditableAdvisingPrePersistMixin.aj:18:0::0
> > datetimePersisted cannot be resolved
> > error at datetimeUpdated = new Date();
> > ^^^^^^
> >
> C:\Work\...\trunk\domain-model\src\main\aspect\me\matthewadams\my\project\name\aspects\PersistentlyAuditableAdvisingPrePersistMixin.aj:19:0::0
> > datetimeUpdated cannot be resolved
> > error at datetimeUpdated = new Date();
> > ^^^^^^^^^^^^^
> >
> C:\Work\...\trunk\domain-model\src\main\aspect\me\matthewadams\my\project\name\aspects\PersistentlyAuditableAdvisingPreUpdateMixin.aj:18:0::0
> > datetimeUpdated cannot be resolved
> > error at datetimePersisted = datetimeUpdated = new Date();
> > ^^^^^^^^^^^^^^^
> >
> C:\Work\...\trunk\domain-model\src\main\aspect\me\matthewadams\my\project\name\aspects\PersistentlyAuditableIntroducingPrePersistMixin.aj:13:0::0
> > The field
> AbstractPersistentlyAuditableMixin.IntroducedPersistentlyAuditable.datetimePersisted
> > is not visible
> > error at datetimePersisted = datetimeUpdated = new Date();
> >                    ^^^^^^^^^^^^^
> >
> C:\Work\...\trunk\domain-model\src\main\aspect\me\matthewadams\my\project\name\aspects\PersistentlyAuditableIntroducingPrePersistMixin.aj:13:0::0
> > The field
> AbstractPersistentlyAuditableMixin.IntroducedPersistentlyAuditable.datetimeUpdated
> > is not visible
> > error at datetimeUpdated = new Date();
> > ^^^^^^^^^^^^^
> >
> C:\Work\...\trunk\domain-model\src\main\aspect\me\matthewadams\my\project\name\aspects\PersistentlyAuditableIntroducingPreUpdateMixin.aj:14:0::0
> > The field
> AbstractPersistentlyAuditableMixin.IntroducedPersistentlyAuditable.datetimeUpdated
> > is not visible.
> >
> >
> > Here's the abstract aspect:
> >
> >
> > public abstract aspect AbstractPersistentlyAuditableMixin {
> >
> >    public interface IntroducedPersistentlyAuditable extends
> >            PersistentlyAuditable {
> >    }
> >
> >    @Column(name = "datetimePersisted")
> >    private Date
> >
> AbstractPersistentlyAuditableMixin.IntroducedPersistentlyAuditable.datetimePersisted;
> >
> >    @Column(name = "datetimeUpdated")
> >    private Date
> >
> AbstractPersistentlyAuditableMixin.IntroducedPersistentlyAuditable.datetimeUpdated;
> >
> >    public Date
> >
> AbstractPersistentlyAuditableMixin.IntroducedPersistentlyAuditable.getDatetimePersisted()
> > {
> >        return new Date(datetimePersisted.getTime());
> >    }
> >
> >    public Date
> >
> AbstractPersistentlyAuditableMixin.IntroducedPersistentlyAuditable.getDatetimeUpdated()
> > {
> >        return new Date(datetimeUpdated.getTime());
> >    }
> > }
> >
> >
> > Here's one of the subaspects:
> >
> >
> > public aspect PersistentlyAuditableAdvisingPrePersistMixin extends
> > AbstractPersistentlyAuditableMixin {
> >
> >    declare parents : ((@Entity *) && hasmethod(@PrePersist * *(..)))
> > implements IntroducedPersistentlyAuditable;
> >
> >    after() returning : execution(@PrePersist * *(..)) {
> >            datetimePersisted = new Date();
> >        datetimeUpdated = new Date();
> >    }
> > }
> >
> > I'm using maven 2.2.1 with the aspectj-maven-plugin 1.3.1.  Here are
> > the relevant portions of my pom:
> >
> > ...
> >        <!-- maven properties -->
> >
>  <my-project-name.aspectj.version>1.6.11</my-project-name.aspectj.version>
> >
>  
> <my-project-name.aspectj.maven.plugin.version>1.3.1</my-project-name.aspectj.maven.plugin.version>
> > ...
> >            <dependency>
> >                <groupId>org.aspectj</groupId>
> >                <artifactId>aspectjrt</artifactId>
> >                <version>${my-project-name.aspectj.version}</version>
> >            </dependency>
> >            <dependency>
> >                <groupId>org.aspectj</groupId>
> >                <artifactId>aspectjweaver</artifactId>
> >                <version>${my-project-name.aspectj.version}</version>
> >            </dependency>
> >            <dependency>
> >                <groupId>org.aspectj</groupId>
> >                <artifactId>aspectjtools</artifactId>
> >                <version>${my-project-name.aspectj.version}</version>
> >            </dependency>
> > ...
> >                <plugin>
> >                    <groupId>org.codehaus.mojo</groupId>
> >                    <artifactId>aspectj-maven-plugin</artifactId>
> >
> > <version>${my-project-name.aspectj.maven.plugin.version}</version>
> >                    <configuration>
> >                        <verbose>true</verbose>
> >                        <complianceLevel>1.5</complianceLevel>
> >                        <XhasMember>true</XhasMember>
> >                    </configuration>
> >                    <executions>
> >                        <execution>
> >                            <goals>
> >                                <goal>compile</goal>
> >                                <goal>test-compile</goal>
> >                            </goals>
> >                        </execution>
> >                    </executions>
> >                </plugin>
> > ...
> >
> > Thanks,
> > Matthew
> >
> > --
> > @matthewadams12
> > mailto:matt...@matthewadams.me
> > skype:matthewadams12
> > yahoo:matthewadams
> > aol:matthewadams12
> > google-talk:matthewadam...@gmail.com
> > msn:matt...@matthewadams.me
> > http://matthewadams.me
> > http://www.linkedin.com/in/matthewadams
> > _______________________________________________
> > aspectj-users mailing list
> > aspectj-users@eclipse.org
> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to