cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

AspectJ is not getting triggered

Former Member
0 Kudos
981

Hey guys,

I'm currently facing the problem that my AspectJ Class is not getting trigger or much more it is not getting used from my aop.xml as soon as I start the hybrisserver.

I want to intercept the EditorConfigurationUtil getColumns() method because we have wanted to extend the ListView.xsd with our own custom logic.

My Aspect class is inside the following package: com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil It is inside the backoffice/src folder

My aop.xml looks as the following:

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.ee.org/aspectj/dtd/aspectj.dtd">
 <aspectj>
     <weaver options="-debug -showWeaveInfo">
         <include within="com.emmet.prem.pim.AspectJEditorUtil..*" />
         <include within="com.hybris.cockpitng.common.configuration.EditorConfigurationUtil" />
     </weaver>
     <aspects>
         <aspect name="com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil" />
     </aspects>
 </aspectj>

As you can see the path towards my AspectJ class is correct but as soon as I start the server i'm getting the following error:

 [PlatformInPlaceClassLoader@2d4f741c] warning register definition failed -- (RuntimeException) Cannot register non aspect: com$emmet$prem$pim$AspectJEditorUtil$AspectJEditorUtil , com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
 Cannot register non aspect: com$emmet$prem$pim$AspectJEditorUtil$AspectJEditorUtil , com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
 java.lang.RuntimeException: Cannot register non aspect: com$emmet$prem$pim$AspectJEditorUtil$AspectJEditorUtil , com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
         at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:219)
         at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:485)
         at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:304)
         at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:171)
         at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:340)
         at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:345)
         at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:319)
         at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:113)
         at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
         at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
         at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
         at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
         at de.hybris.bootstrap.loader.YURLClassLoader.loadRegisterAndResolveClass(YURLClassLoader.java:85)
         at de.hybris.bootstrap.loader.YURLClassLoader.loadClass(YURLClassLoader.java:72)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Class.java:348)

My AspectJEditorUtil looks as follows:

 @Aspect
 public class AspectJEditorUtil
 {
     @Around("call(* com.hybris.cockpitng.common.configuration.EditorConfigurationUtil.getColumns(..))")
     public List<ListColumn> listColumn(final ProceedingJoinPoint joinPoint) throws Throwable
     {
         return (List<ListColumn>) joinPoint.proceed();
     }
 }

(Sidenote: There is no logic in it cause firstly I want to get it started then taking care of the logic)

Is it possible that AspectJ is somehow not able to handle java classes inside the backoffice/src folder?

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

I used to have a similar issue. I fixed it by using execution() instead of call() in the @ Around