package jasco.runtime.distribution.aspects; import jasco.runtime.distribution.*; class Sharing { hook Synchronize { private String aspectname; private String fieldname; Synchronize(method(Object newValue)) { execution(method) && !executionhost(joinpointhost); } after() { System.out.println("should not happen!"); getSharedField().setValue(newValue); } public void setSharedFieldInfo(String a, String f) { this.aspectname=a; this.fieldname=f; } public ISharedField getSharedField() { return jasco.runtime.distribution.DistributedSharingManager.getInstance().getSharedMasterField(aspectname,fieldname); } } hook QueryMaster { private String aspectname; private String fieldname; QueryMaster(method(..args)) { execution(method) && joinpointhost(localhost); } public void setSharedFieldInfo(String a, String f) { this.aspectname=a; this.fieldname=f; } around() { return getSharedField().getValue(); } public ISharedField getSharedField() { return jasco.runtime.distribution.DistributedSharingManager.getInstance().getSharedMasterField(aspectname,fieldname); } } hook SetMaster { private String aspectname; private String fieldname; SetMaster(method(Object arg1)) { execution(method) && joinpointhost(localhost); } public void setSharedFieldInfo(String a, String f) { this.aspectname=a; this.fieldname=f; } around() { getSharedField().setValue(arg1); return null; } public ISharedField getSharedField() { return jasco.runtime.distribution.DistributedSharingManager.getInstance().getSharedMasterField(aspectname,fieldname); } } }