Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] Conflicts when extending abstract aspect

I'm having trouble extending an abstract aspect and hope someone can give me some advice.
I'm packaging an abstract aspect that provides introduction to a marker interface in a common code base. I extend the abstract aspect with an empty concrete aspect and it provides introduction correctly within the common code base.
When I use that common code base as a jar/library in a new project, I'd like the same introduction performed on classes that implement the marker interface from the common jar. I've again, extended the abstract aspect with an empty concrete aspect, but when I attempt to compile I receive the following:
 

\patterns\SingletonAspectImpl.java:12:1: public static SingletonAspectImpl
SingletonAspectImpl.aspectOf() conflicts with public static SingletonAspect Sing
letonAspect.aspectOf(): defined in same type
 
\patterns\SingletonAspectImpl.java:12:1: public static boolean SingletonAsp
ectImpl.hasAspect() conflicts with public static boolean SingletonAspect.hasAspe
ct(): defined in same type
    [ajc] [ERROR] public aspect SingletonAspectImpl extends SingletonAspect
 
here's my code:
 
package com.common;
public abstract aspect SingletonAspect

 public static Object (SingletonPattern+).instance=null;
 
 public (SingletonPattern+).new() { super(); initialize(); }        
 
 public static Object (SingletonPattern+).getInstance()
 {
  return instance;
 }
     
 after(): staticinitialization(SingletonPattern+)
 {
  Class SingletonPattern = thisJoinPoint.getSignature().getDeclaringType();
  try
  {
   java.lang.reflect.Field theInstance =  SingletonPattern.getField("instance");
   Object singletonObject = SingletonPattern.newInstance();     
   if (theInstance.get(null)==null)
   {
    theInstance.set(null,singletonObject);     
   }
 
  }
  catch (Exception ex)
  {
   System.err.println("Singleton pattern failed for "+SingletonPattern.getName()+": "+ex);
  };  
 }
}
 
// This one compiles without error
package com.common;
public aspect SingletonAspectImpl extends SingletonAspect
{}
 
// This one does not compile, with the conflicts listed above
package com.derivative;
public aspect SingletonAspectImpl extends SingletonAspect
{}
 
 
Can anyone out there point me to a solution?
 
Thanks,
-Eric Simmerman
 
 

Back to the top