Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Fwd: Re: Upgrade from old compiler, adding methods to interface implementers via declare parent

I was actually just tinkering with your SearchTimer class just now.  Thanks for following up and letting me know you are now working ok.  Nothing in the aspects looked unusual (incompatible with later versions of AspectJ), although 1.0 is rather old.

If you have any more issues, just let me know,

cheers
Andy.

On 6 July 2011 07:52, Rene Stone <rstone@xxxxxxxxxxx> wrote:
Hi Andy,
I've spent some more time on this issue and was able to resolve the compilation problem.  I noticed that this code compiles in Eclipse, but it was not compiling in maven.  I did some research and found the following link:

http://stackoverflow.com/questions/2610633/maven-compile-aspectj-project-containing-java-1-6-source

In there, the first solution fixed my problem, where I updated my pom file to have the following line in the execution section of the aspectj-maven-plugin

  <phase>process-sources</phase>

This resolved all the references (I had others too, that I did not post) that could not be found.  So, I don't think there was anything wrong with this code.  It was the compiler plugin all along.

Thanks,
Rene

-------- Original Message --------
Subject: Re: [aspectj-users] Upgrade from old compiler, adding methods to interface implementers via declare parent
Date: Sat, 02 Jul 2011 10:42:42 -0700
From: Rene Stone <rstone@xxxxxxxxxxx>
To: aspectj-users@xxxxxxxxxxx


Hi Andy,
Below is the code for SearchTimer also, if that's helpful.  It's using 
SQLUtil.

The compiler we are using is 1.0 beta 2 (embarrassingly old, I'd say).

We compile the code all at once through maven, using the 
aspectj-maven-plugin.  I'd appreciate any help/guidance you can give 
us.  I'm expecting this is just the first of several issues we'll need 
to work through in order to upgrade.

Thanks,
Rene

package com.vms.adbase.presentation.performance;

import java.io.Serializable;
import java.text.DecimalFormat;

import com.vms.adbase.oracle.search.SearchTranslatorImpl;
import com.vms.adbase.searchBuilder.ConstructedSearch;
import com.vms.adbase.util.HibernateUtil;
import com.vms.adbase.util.TwoDecimalPlaceFormat;
import com.vms.adbase.util.sql.NullResolver;
import com.vms.adbase.util.sql.SQLUtil;


public class SearchTimer implements Serializable {
    private ConstructedSearch search;
    private Exception lastException;
    private boolean shouldRun;

    public SearchTimer(ConstructedSearch search) {
        this.search = search;
        setTimeout(new SQLUtil(HibernateUtil.ADBASE).getTimeout());
    }

    public SearchTimer(ConstructedSearch search, int timeout) {
        this.search = search;
        setTimeout(timeout);
    }

    public Exception getLastException() {
        return lastException;
    }

    public ConstructedSearch getSearch() {
        return search;
    }

    public String getSearchResults() {
        if (!getShouldRun()) {
            return "--";
        }

        if (hasException()) {
            return lastException.toString();
        }

        DecimalFormat formatter = new TwoDecimalPlaceFormat();

        return formatter.format(getSearch().getRunElapsedTime());
    }

    public void setShouldRun(boolean shouldRun) {
        this.shouldRun = shouldRun;
    }

    public boolean getShouldRun() {
        return shouldRun;
    }

    public boolean hasException() {
        return lastException != null;
    }

    public void run() {
        lastException = null;

        SearchTranslatorImpl queryBuilder = new 
SearchTranslatorImpl(search);
        queryBuilder.setResolver(new NullResolver());

        try {
            search.runSearchWithTranslator(queryBuilder);
        } catch (Exception e) {
            lastException = e;
        }
    }
}


On 07/01/2011 04:41 PM, Andy Clement wrote:
> Hi,
>
> I can help you work through this, but I am not sure anything has
> really changed to affect how ITDs work.  In the three example files
> you included, I don't understand the relationship between SQLUtil and
> HasTimeout?  Is it via SearchTimer?
>
> How old is the compiler you are on, 1.2?
>
>
> public aspect HasTimeoutImpl {
>     private int HasTimeout.timeout = 0;
>     public int HasTimeout.getTimeout(){
>         return timeout;
>     }
>     public void HasTimeout.setTimeout(int newTimeout){
>         timeout = newTimeout;
>     }
> }
>
> this aspect will ensure that HasTimeout and anyone implementing
> HasTimeout will get a 'setTimeout(int)', if they don't already provide
> it.  Are you compiling all the code together, or in separate stages?
>
> cheers,
> Andy
>
> On 1 July 2011 11:58, Rene Stone<rstone@xxxxxxxxxxx>  wrote:
>> Hi,
>> We have aspectj code using a really old version of the Aspectj compiler.
>>   This works fine with it, but we want to upgrade to the latest compiler.
>>   When I try to do that, I'm getting a compiler error as follows:
>>
>> /home/rstone/workspace3/Adbase/src/main/java/com/vms/adbase/presentation/performance/SearchTimer.java:[23,8]
>> cannot find symbol
>> symbol  : method setTimeout(int)
>> location: class com.vms.adbase.presentation.performance.SearchTimer
>>
>> Sorry if this seems like a basic question, but we created a bunch of aspects
>> years ago and have not upgraded our compiler.  Now we need to and we have
>> several examples like this, where we are adding methods to an interface,
>> that are just not compiling with the new compiler.
>>
>> Any ideas on how to fix this?
>>
>> Thanks,
>> Rene
>>
>>
>> Aspect HasTimeoutImple.aj:
>>
>> package com.vms.adbase.presentation.performance;
>>
>> public aspect HasTimeoutImpl {
>>     private int HasTimeout.timeout = 0;
>>     public int HasTimeout.getTimeout(){
>>         return timeout;
>>     }
>>     public void HasTimeout.setTimeout(int newTimeout){
>>         timeout = newTimeout;
>>     }
>> }
>>
>> Interface HasTimeout.java:
>> package com.vms.adbase.presentation.performance;
>>
>> public interface HasTimeout {}
>>
>>
>> Aspect to add methods to SearchTimer:
>>
>> package com.vms.adbase.presentation.performance;
>>
>> import com.vms.adbase.util.sql.SQLUtil;
>>
>> public aspect TimeoutPropagation{
>>     declare parents : SearchTimer implements HasTimeout;
>>
>>     pointcut sqlUtilConstructions():
>>         call(SQLUtil+.new(..));
>>
>>     pointcut timerMethods(HasTimeout timer) :
>>         execution(* HasTimeout+.*(..))&&
>>         this(timer);
>>
>>     pointcut sqlUtilConstructionsFromTimer(HasTimeout timer) :
>>         sqlUtilConstructions()&&  cflow(timerMethods(timer));
>>
>>     after(HasTimeout timer) returning(SQLUtil newSQLUtil) :
>>         sqlUtilConstructionsFromTimer(timer){
>>
>>         newSQLUtil.setTimeout(timer.getTimeout());
>>     }
>> }
>>
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users



Back to the top