<?xml version="1.0" encoding="UTF-8"?>
<aop>

   <interceptor name="CountingInterceptor" class="org.jboss.test.aop.override.CountingInterceptor"/>
   <interceptor name="MetadataInterceptor" class="org.jboss.test.aop.override.MetadataInterceptor"/>
   <aspect name="CountingAspect" class="org.jboss.test.aop.override.CountingAspect"/>

   <bind pointcut="execution(void org.jboss.test.aop.override.POJO->superOnly())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.POJO->superOnlyNoSub())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.POJO->overridden())">
      <advice aspect="CountingAspect" name="test"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubPOJO->overridden())">
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubPOJOOverrideAll->overridden())">
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubSubPOJO->overridden())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubSubPOJOOverrideAll->overridden())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.POJO->overriddenNoSub())">
      <advice aspect="CountingAspect" name="test"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubPOJO->subOnly())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubPOJOOverrideAll->subOnly())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubPOJO->superOnly())">
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubPOJOOverrideAll->superOnly())">
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubSubPOJO->superOnly())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void org.jboss.test.aop.override.SubSubPOJOOverrideAll->superOnly())">
      <interceptor-ref name="CountingInterceptor"/>
      <interceptor-ref name="CountingInterceptor"/>
      <advice aspect="CountingAspect" name="test"/>
      <advice aspect="CountingAspect" name="test"/>
   </bind>

   <bind pointcut="execution(void $instanceof{org.jboss.test.aop.override.POJO}->*(..))">
      <interceptor-ref name="MetadataInterceptor"/>
   </bind>

   <metadata tag="test" class="org.jboss.test.aop.override.POJO">
      <method expr="void superOnly()">
         <data>p.s</data>
      </method>
      <method expr="void superOnlyNoSub()">
         <data>p.sns</data>
      </method>
      <method expr="void overridden()">
         <data>pojo.o</data>
      </method>
      <method expr="void overriddenNoSub()">
         <data>pojo.ons</data>
      </method>
   </metadata>

   <metadata tag="test" class="org.jboss.test.aop.override.SubPOJO">
      <method expr="void superOnly()">
         <data>subpojo.superOnly</data>
      </method>
      <method expr="void overridden()">
         <data>subpojo.overridden</data>
      </method>
      <method expr="void subOnly()">
         <data>subpojo.subOnly</data>
      </method>
   </metadata>

   <metadata tag="test" class="org.jboss.test.aop.override.SubSubPOJO">
      <method expr="void superOnly()">
         <data>subsubpojo.superOnly</data>
      </method>
      <method expr="void overridden()">
         <data>subsubpojo.overridden</data>
      </method>
      <method expr="void subOnly()">
         <data>subsubpojo.subOnly</data>
      </method>
   </metadata>

   <metadata tag="test" class="org.jboss.test.aop.override.POJO">
      <method expr="void superOnly()">
         <data>pojo.superOnly</data>
      </method>
      <method expr="void superOnlyNoSub()">
         <data>pojo.superOnlyNoSub</data>
      </method>
      <method expr="void overridden()">
         <data>pojo.overridden</data>
      </method>
      <method expr="void overriddenNoSub()">
         <data>pojo.overriddenNoSub</data>
      </method>
   </metadata>

</aop>
