0 Replies Latest reply on Apr 1, 2009 12:17 PM by sgoyette

    Write invocation not being called for arrayreplacement

      Hi All,

      I've been pulling my hair out with this one for some time. I'm trying to intercept reads and writes to an array. Reading is working really well but I cannot for the life of me get the writes to work. Here's is mu jboss-aop.xml file:

      <?xml version="1.0" encoding="UTF-8"?>
      <aop>
       <interceptor class="com.intuit.tax.engine.group.TSingleGroupInterceptor"/>
      
       <arrayreplacement class="com.intuit.tax.engine.group.TSingleGroup" />
       <prepare expr="field(* com.intuit.tax.engine.group.TSingleGroup->R)"/>
       <prepare expr="field(* com.intuit.tax.engine.group.TSingleGroup->B)"/>
       <prepare expr="field(* com.intuit.tax.engine.group.TSingleGroup->S)"/>
      
       <arraybind type="READ_WRITE">
       <interceptor-ref name="com.intuit.tax.engine.group.TSingleGroupInterceptor"/>
       </arraybind>
      </aop>
      


      This calls this function within the TSingleGroupInterceptor:

       public Object invoke(Invocation invocation) throws Throwable {
      
       List<ArrayReference> refs = ArrayRegistry.getInstance().getArrayOwners(invocation.getTargetObject());
       logger.debug("Owner is " + refs.get(0).getRootObject().getClass().getName() );
      
       // These objects should only have a single owner
       TSingleGroup group = (TSingleGroup)refs.get(0).getRootObject();
       if ( invocation instanceof ArrayElementReadInvocation) {
       logger.debug("Read invocation");
       return invoke((ArrayElementReadInvocation) invocation, group);
       } else if (invocation instanceof ArrayElementWriteInvocation) {
       logger.debug("Write invocation");
       return invoke((ArrayElementWriteInvocation) invocation, group);
       }
       logger.debug("No match for read/write. Invocation is: " + invocation.getClass().getName() );
       throw new RuntimeException("This interceptor is for arrays");
       }
      


      Write invocation is never logged and neither is "No match for read/write".

      What am I doing wrong? Can anyone help?

      Thanks,

      Steve