[Eclipse] [ECF] ISharedObjectのなぞ
実際はなぞと呼べるほどのものでもなく、ただ単に僕の理解力が足らないだけですが。
ISharedObjectインターフェースは各クライアント間で共有したいオブジェクトに対して付加する
タグインターフェースであることは間違いない。
ISharedObjectContainer.getSharedObjectManager().addSharedObject(ID, ISharedObject, Map)でクライアントにSharedObjectを共有できるが、共有後にモデルを変更したときに他のクライアントへどうやって通知したらよいかよくわかんない。
共有できていることを検証するコードはこんな感じ(抜粋)
for(ISharedObjectContainer client : st.getClients()){ ID id = st.getSharedObjects()[0]; IIdentifiable sharedObject = (IIdentifiable) client.getSharedObjectManager().getSharedObject(id); sharedObject.getID()); if( sharedObject instanceof LearningSharedObject){ LearningSharedObject object = (LearningSharedObject) sharedObject; System.out.println(object.toString()); } }
LearningSharedObjectはインナークラスで定義したBaseSharedObjectの子クラス。
フィールドにnameとageを追加しただけのオブジェクト。
追加時は同じオブジェクトを追加しているので、
取得してみるとフィールドの値が同じだったから共有できているように思えているのかもしれない。
値を変更しても他のクライアントへ通知する方法が分からなかった。