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

Reply via email to