<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aspectwerkz PUBLIC "-//AspectWerkz//DTD//EN" "http://aspectwerkz.codehaus.org/dtd/aspectwerkz.dtd">
<aspectwerkz>
<system id="samples-xmldef">
<introduction-def name="provider" interface="org.globus.progtutorial.services.core.core_sd.impl.MathIF" implementation="org.globus.progtutorial.services.core.core_sd.impl.MathService" deployment-model="perInstance" attribute="provider"/>
<introduction-def name="callback" interface="org.globus.progtutorial.services.core.core_sd.impl.GlobusBaseConnector" implementation="org.globus.progtutorial.services.core.core_sd.impl.CallBack" deployment-model="perInstance" attribute="callback"/>

<introduction-def name="weavecontrol" interface="org.globus.progtutorial.services.core.weavecontrol.impl.WeaveControlIF" implementation="org.globus.progtutorial.services.core.weavecontrol.impl.WeaveControl" deployment-model="perInstance" attribute="weavecontrol"/>


<advice-def name="execlog" class="examples.xmldef.logging.LoggingAdvice" attribute="execlog" deployment-model="perJVM">
<param value="10" name="timeout"/>
</advice-def>
<advice-def name="logging" class="org.globus.progtutorial.services.core.core_sd.impl.LoggingAdvice" attribute="logging" deployment-model="perInstance">
<param value="10" name="timeout"/>
</advice-def>
<advice-def name="invoclog" class="examples.xmldef.logging.InvocationLoggingAdvice" attribute="invoclog" deployment-model="perJVM">
<param value="10" name="timeout"/>
</advice-def>
<advice-def name="servicedata" class="org.globus.progtutorial.services.core.core_sd.impl.ServiceDataAspect" attribute="servicedata" deployment-model="perJVM">
<param value="10" name="timeout"/>
</advice-def>
<advice-def name="operations" class="org.globus.progtutorial.services.core.core_sd.impl.OperationAdvice" attribute="operations" deployment-model="perJVM">
<param value="10" name="timeout"/>
</advice-def>
<advice-def name="notify" class="org.globus.progtutorial.services.core.core_sd.impl.NotifyAdvice" attribute="notify" deployment-model="perJVM">
<param value="10" name="timeout"/>
</advice-def>
<aspect name="weavecontrol">
<bind-introduction class="org.globus.progtutorial.services.core.weavecontrol.impl.WeaveProvider">
<introduction-ref name="weavecontrol"/>
</bind-introduction>
</aspect>

<aspect name="op_provider">
<bind-introduction class="org.globus.progtutorial.services.core.core_sd.impl.MathProvider">
<introduction-ref name="provider"/>
</bind-introduction>
</aspect>
<aspect name="life_cycle">
<bind-introduction class="org.globus.progtutorial.services.core.core_sd.impl.MathProvider">
<introduction-ref name="callback"/>
</bind-introduction>
</aspect>


<!--aspect name="service_data">
<pointcut-def pattern="void org.globus.progtutorial.services.core.core_sd.impl.MathService.*(*)" type="method" name="ops"/>
<pointcut-def pattern="void org.globus.progtutorial.services.core.core_sd.impl.CallBack.preCreate(*)" type="method" name="precreate"/>

<bind-advice pointcut="precreate">
<advice-ref name="servicedata"/>
</bind-advice>
<bind-advice pointcut="ops">
<advice-ref name="servicedata"/>
</bind-advice>
</aspect-->
<aspect name="notifications">
<pointcut-def pattern="void org.globus.progtutorial.services.core.core_sd.impl.MathService.*(*)" type="method" name="ops"/>
<pointcut-def pattern="void org.globus.progtutorial.services.core.core_sd.impl.CallBack.preCreate(*)" type="method" name="precreate"/>

<bind-advice pointcut="precreate">
<advice-ref name="notify"/>
<advice-ref name="servicedata"/>


</bind-advice>
<bind-advice pointcut="ops">
<advice-ref name="notify"/>
<advice-ref name="servicedata"/>
<advice-ref name="operations"/>
</bind-advice>
</aspect>
<aspect name="log">
<pointcut-def pattern="void org.globus.progtutorial.services.core.core_sd.impl.CallBack.*(*)" type="method" name="lifecycle"/>
<pointcut-def pattern="void org.globus.progtutorial.services.core.core_sd.impl.MathService.*(*)" type="method" name="ops"/>

<bind-advice pointcut="lifecycle">
<advice-ref name="logging"/>
</bind-advice>
<bind-advice pointcut="ops">
<advice-ref name="logging"/>
</bind-advice>
</aspect>


<aspect name="ops">
<pointcut-def pattern="void org.globus.progtutorial.services.core.core_sd.impl.MathService.*(*)" type="method" name="ops"/>
<!--bind-advice pointcut="ops">
<advice-ref name="operations"/>
</bind-advice-->
</aspect>

<aspect name="test">
<pointcut-def pattern="* org.globus.ogsa.impl.ogsi.FactoryProvider.addServiceData()" type="method" name="ops"/>
<bind-advice pointcut="ops">
<advice-ref name="logging"/>
</bind-advice>
</aspect>

</system>


</aspectwerkz>