4 Replies Latest reply: Apr 9, 2012 8:33 PM by larry_west RSS

Field visibility and aspect

Emanuele Palese Newbie

Hi,
if I have a class with an enclosed class like this

Class POJO {
private String aField;

...

class AnotherClass {
public void someMethod() {
aField = "something";
}
}
}

and I add an aspect at runtime through these instructions:
AdviceBinding binding = new AdviceBinding("execution(public boolean Pojo>getCond())", null);
binding.addInterceptor(SimpleAspect.class);
AspectManager.instance().addBinding(binding);

An exception is thrown:
Exception in thread "main" java.lang.NullPointerException
at org.jboss.aop.pointcut.MethodMatcher.(MethodMatcher.java:72)
at org.jboss.aop.pointcut.ExecutionMethodMatcher.(ExecutionMethodMatcher.java:53)
at org.jboss.aop.pointcut.PointcutExpression.matchesExecution(PointcutExpression.java:118)
at org.jboss.aop.Advisor.resolveMethodPointcut(Advisor.java:1333)
at org.jboss.aop.GeneratedClassAdvisor.resolveMethodPointcut(GeneratedClassAdvisor.java:309)
at org.jboss.aop.ClassAdvisor.resolvePointcuts(ClassAdvisor.java:751)
at org.jboss.aop.ClassAdvisor.doRebuildInterceptorsForAddedBinding(ClassAdvisor.java:1160)
at org.jboss.aop.ClassAdvisor$RebuildInterceptorsAction$2.rebuildInterceptorsForAddedBinding(ClassAdvisor.java:2348)
at org.jboss.aop.ClassAdvisor.rebuildInterceptorsForAddedBinding(ClassAdvisor.java:1139)
at org.jboss.aop.GeneratedClassAdvisor.access$1501(GeneratedClassAdvisor.java:65)
at org.jboss.aop.GeneratedClassAdvisor$ClassAdvisorStrategy.rebuildInterceptorsForAddedBinding(GeneratedClassAdvisor.java:1538)
at org.jboss.aop.GeneratedClassAdvisor.rebuildInterceptorsForAddedBinding(GeneratedClassAdvisor.java:244)
at org.jboss.aop.Advisor.newBindingAdded(Advisor.java:1124)
at org.jboss.aop.AspectManager.updateAdvisorsForAddedBinding(AspectManager.java:1498)
at org.jboss.aop.AspectManager.updateAdvisorsForAddedBinding(AspectManager.java:1521)
at org.jboss.aop.AspectManager.addBinding(AspectManager.java:1456)
at Caller.run(Caller.java:36)
at Caller.main(Caller.java:57)

If the field visibility is public the exception is not thrown anymore.
Can someone tell me why?

  • 1. Re: Field visibility and aspect
    Kabir Khan Master

    Can you create a JIRA issue with an example based on one of the aop examples, and we can investigate?
    https://jira.jboss.org/jira/browse/JBAOP

  • 2. Re: Field visibility and aspect
    Emanuele Palese Newbie

    Yes, as soon as possible.
    I forget to mention that this behaviour happens with jboss-aop-2.0.0.GA. Using jboss-aop_1.5.6.GA it's all okay (apart from other problems using hotswap and the javaassist library bundled with this version :) )

  • 3. Field visibility and aspect
    andrewwot Newbie

    Hi Kabir,

    We've stepped into the same issue with AOP 2.1.6.GA. Any ETA on fix, is there a JIRA we can use to track the issue?

     

    Thanks

  • 4. Re: Field visibility and aspect
    larry_west Newbie

    Also see the same issue with AOP 2.1.6GA, also when adding static nested classes.   I see nothing relevant in the JIRA area for AOP, is this still undocumented?

     

    java.lang.NullPointerException

        at org.jboss.aop.pointcut.MethodMatcher.<init>(MethodMatcher.java:72)

        at org.jboss.aop.pointcut.ExecutionMethodMatcher.<init>(ExecutionMethodMatcher.java:53)

        at org.jboss.aop.pointcut.PointcutExpression.matchesExecution(PointcutExpression.java:118)

        at org.jboss.aop.Advisor.resolveMethodPointcut(Advisor.java:1343)

        at org.jboss.aop.GeneratedClassAdvisor.resolveMethodPointcut(GeneratedClassAdvisor.java:312)

        at org.jboss.aop.ClassAdvisor.resolveBindings(ClassAdvisor.java:668)

        at org.jboss.aop.ClassAdvisor.createInterceptorChains(ClassAdvisor.java:607)

        at org.jboss.aop.GeneratedClassAdvisor.access$201(GeneratedClassAdvisor.java:65)

        at org.jboss.aop.GeneratedClassAdvisor$ClassAdvisorStrategy.createInterceptorChains(GeneratedClassAdvisor.java:1306)

        at org.jboss.aop.GeneratedClassAdvisor.createInterceptorChains(GeneratedClassAdvisor.java:410)

        at org.jboss.aop.ClassAdvisor$1.run(ClassAdvisor.java:306)

        at java.security.AccessController.doPrivileged(Native Method)

        at org.jboss.aop.ClassAdvisor.attachClass(ClassAdvisor.java:276)

        at org.jboss.aop.AspectManager.initialiseClassAdvisor(AspectManager.java:754)

        at org.jboss.aop.GeneratedClassAdvisor$ClassAdvisorStrategy.initialise(GeneratedClassAdvisor.java:1294)

        at org.jboss.aop.GeneratedClassAdvisor.initialise(GeneratedClassAdvisor.java:146)

        at com.intuit.cg.services.ds.ofx.service.resource.ProxyResourceImpl$ProxyResourceImplAdvisor.initialise(ProxyResourceImpl$ProxyResourceImplAdvisor.java)

        at com.intuit.cg.services.ds.ofx.service.resource.ProxyResourceImpl$ProxyResourceImplAdvisor.<init>(ProxyResourceImpl$ProxyResourceImplAdvisor.java)

        at com.intuit.cg.services.ds.ofx.service.resource.ProxyResourceImpl.<clinit>(ProxyResourceImpl.java)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)

        ...