Hi,

Ive just started using aop for some simple logging in a new project. Ive read through quite a few threads and various sites but cant seem to quite understand why Im getting the problem.

I am using Spring 2.5.5 to inject various classes for a JMS project and also using the schema based spring-aop namespace due to being restricted to 1.4jvm. I am also using aspectJ 1.5.4.

The problem is that although logging seems to work fine for any classes that use a default constructor, classes that have constructors with args; 1. dont get logging and 2. throw an error within the DI that seems to be a nullpointer issue, Im only guessing at this as no info is given.

What I also dont understand is that I am using the method pointcut pattern so why is this causing a problem with the constructor?

Heres my code, hope Im not just being dumb (though most likely!)

Code:
<bean id="sonicConfig" 
                class="com.homeserve.guidewire.plugins.messaging.edi.outbound.transport.SonicConfig"> 
                <constructor-arg value="SonicBroker=tcp://hgbsmdev02.hgb.hs.int:2531;SonicUsername=Administrator;SonicPassword=Administrator" /> 
</bean> 
<bean id="aopLogging" 
                class="com.homeserve.guidewire.plugins.messaging.edi.logging.LoggingInterceptor"> 
</bean> 
                
        <aop:config proxy-target-class="false"> 
                <aop:aspect id="aopLoggingAspect" ref="aopLogging"> 
                
                        <aop:pointcut id="loggingPointCut" 
                                expression="execution( * com.homeserve.guidewire.plugins.messaging.edi.outbound..*.*(..))" />
                                        
                        <aop:around method="aopLogging" pointcut-ref="loggingPointCut" /> 
                        
                </aop:aspect> 
        </aop:config>
Code:
 public SonicConfig(String sonicConnectionString) throws ParseException 
    { 
        this.sonicConnectionString = sonicConnectionString; 
        parseSonicConnectionString(); 
    }
Code:
public class LoggingInterceptor { 
        
        public Object aopLogging(ProceedingJoinPoint pjp) throws Throwable{ 
                Logger log = Logger.getLogger(LoggingInterceptor.class); 
                Object retValue = null; 
                Object[] args = pjp.getArgs(); 
                try	{ 
                        
                        StringBuffer entering = new StringBuffer(); 
                        StringBuffer leaving = new StringBuffer(); 
                        Signature sig = pjp.getSignature(); 
                                String clazz = pjp.getSignature().getDeclaringType().getName(); 
                                entering.append(clazz.substring(clazz.lastIndexOf(".")+1, clazz.length())); 
                                entering.append("."); 
                                entering.append(sig.getName()); 
                                entering.append("("); 
                                leaving.append(entering.toString()); 
                                for (int i = 0; i < args.length; i++) { 
                                        if (i > 0) { 
                                                entering.append(", "); 
                                        } 
                                        entering.append(args[i]); 
                                } 
                                entering.append(")]"); 
                                SourceLocation sl = pjp.getSourceLocation(); 
                                log.info("Entering [" + entering); 
                                        
                        retValue =  pjp.proceed(); 

                        leaving.append(")"); 
                        log.info("Leaving [" + leaving + " Return value: " + retValue); 
                                                
                } 
                catch (Exception e) 
                { 
                        log.error(e); 
                } 
                return retValue; 
        } 
}
Thanks.