jp.co.fujitsu.reffi.client.nexaweb.model
クラス SubscribeCore

java.lang.Object
  上位を拡張 jp.co.fujitsu.reffi.client.nexaweb.model.BaseModel
      上位を拡張 jp.co.fujitsu.reffi.client.nexaweb.model.XalReturnPossibilityModel
          上位を拡張 jp.co.fujitsu.reffi.client.nexaweb.model.SubscribeCore
すべての実装されたインタフェース:
Model

public class SubscribeCore
extends XalReturnPossibilityModel

[概 要]

トピックをクライアントで購読する為の機能モデルクラスです。

[詳 細]

[備 考]

トピックの購読開始と中止は別々のSubscribeCoreで制御することが可能です。

同一のSubscribeCoreで購読の開始と中止を行う場合(下記使用例)、SubscriberManager に対してunsubscribeを行うこととなりますが、unsubscribeを実行すると再度successForward が呼び出されます。

別々のSubscribeCoreで購読の開始と中止を行う場合、購読中止のSubscribeCoreを 予約したActionと購読開始のSubscribeCoreを予約したActionに対してsuccessForward が呼び出されます。
これはActionの多重起動抑制が有効な場合、購読開始を行ったActionが購読中止を認識 できないと、購読を開始したActionが終了することがなく、再度同一のActionを実行することが 不可能となるためです。

両者に共通することで、購読中止の際はsuccessForwardの引数「result」はnullに設定され、 SubscribeCoreから取得できるsuccessCountはインクリメントされた状態となっています。 使用例)
・指定回数subscribeしたらunsubscribeする

    public class ServerPushDemoAction extends BaseAction {
        @Override
        protected void reserveModels(List> models) {
            models.add(SubscribeCore.class);
        }

        @Override
        public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
            switch(index){
                case 0:
                    ((SubscribeCore)next).setTopic("serverPushDemo");
                    ((SubscribeCore)next).setSubscribe(true);
                    break;
            }
            return true;
        }

        @Override
        public void successForward(int index, Model model, Object result) throws Exception {
            switch(index) {
                case 0:
                    // 3回subscribeしたらunsubscribeする
                    SubscribeCore subscribeCore = ((SubscribeCore)model);
                    if(subscribeCore.getSuccessCount() > 3) {
                        SubscriberManager.getInstance().unsubscribe(subscribeCore.getTopic());
                    }
                
                    ObjectDataSource odc = getObjectDataSourceById("hostDataSource");
                    odc.setSource(result);
                    break;
            }
        }
    }
 

[環 境] JDK 6.0 Update 11

Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.

作成者:
Project Reffi
関連項目:
SubscribeManager

コンストラクタの概要
SubscribeCore()
           
 
メソッドの概要
 String getIdentifier()
          [概 要] トピックを受信中のSubscribeCoreを識別する為の識別子を返却します。
 String getTopic()
          [概 要] 購読開始、中止対象トピック名を取得します。
 boolean isSubscribe()
          [概 要] 開始、中止を判断するフラグを取得します。
protected  void mainproc()
          [概 要] subscribeの開始、中止処理を行います。
protected  void postSubscribe(Object result)
          [概 要] subscribe結果受信用オーバーライドメソッドです。
protected  void postUnsubscribe()
          [概 要] unsubscribe用オーバーライドメソッドです。
 void setIdentifier(String identifier)
          [概 要] トピックを受信中のSubscribeCoreを識別する為の識別子を設定します。
 void setSubscribe(boolean subscribe)
          [概 要] 開始、中止を判断するフラグを設定します。
 void setTopic(String topic)
          [概 要] 購読開始、中止対象トピック名を設定します。
 void subscribeCompleted(Object result)
          [概 要] subscribe受信時にコールバックされるメソッドです。
 void unsubscribeCompleted()
          [概 要] unsubscribe時にコールバックされるメソッドです。
 
クラス jp.co.fujitsu.reffi.client.nexaweb.model.XalReturnPossibilityModel から継承されたメソッド
addIdentifierToWindows, getCommunicateId, getEventSourceWindow, setCommunicateId, setEventSourceWindow
 
クラス jp.co.fujitsu.reffi.client.nexaweb.model.BaseModel から継承されたメソッド
addModelProcessListener, finalproc, fireModelFailure, fireModelFinished, fireModelSuccess, getController, getExecuteIndex, getListenerList, getParameterMapping, getResult, getSuccessCount, incrementSuccessCount, isSkip, postproc, preproc, removeModelProcessListener, run, setController, setExecuteIndex, setListenerList, setParameterMapping, setResult, setSkip, trap
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SubscribeCore

public SubscribeCore()
メソッドの詳細

getTopic

public String getTopic()

[概 要]

購読開始、中止対象トピック名を取得します。

[詳 細]

topicフィールド値を返却します。

[備 考]

戻り値:
購読開始、中止対象トピック名

setTopic

public void setTopic(String topic)

[概 要]

購読開始、中止対象トピック名を設定します。

[詳 細]

topicフィールド値を引数topicで設定します。

[備 考]

パラメータ:
topic - 購読開始、中止対象トピック名

isSubscribe

public boolean isSubscribe()

[概 要]

開始、中止を判断するフラグを取得します。

[詳 細]

subscribeフィールド値を返却します。

[備 考]

戻り値:
開始、中止フラグ

setSubscribe

public void setSubscribe(boolean subscribe)

[概 要]

開始、中止を判断するフラグを設定します。

[詳 細]

subscribeフィールド値を引数subscribeで設定します。

[備 考]

パラメータ:
subscribe - 開始、中止フラグ

getIdentifier

public String getIdentifier()

[概 要]

トピックを受信中のSubscribeCoreを識別する為の識別子を返却します。

[詳 細]

identifierフィールド値を返却します。

[備 考]

戻り値:
トピックを受信中のSubscribeCoreを識別する為の識別子

setIdentifier

public void setIdentifier(String identifier)

[概 要]

トピックを受信中のSubscribeCoreを識別する為の識別子を設定します。

[詳 細]

identifierフィールド値を引数identifierで設定します。

[備 考]

パラメータ:
identifire - トピックを受信中のSubscribeCoreを識別する為の識別子

mainproc

protected void mainproc()
                 throws Exception

[概 要]

subscribeの開始、中止処理を行います。

[詳 細]

subscribe管理オブジェクト(SubscribeManager)を取得し、購読の開始、中止を委譲します。
対象となるトピック名はフィールド「topic」から、購読開始、中止の判断を行うフラグは フィールド「subscribe」から取得します。

購読中止(isSubscribe() == false)時、unsubscribeメソッド処理が例外をスローしなかった 場合は、その時点でModel処理成功イベントを発火します。

[備 考]

購読中止時のModel処理成功イベント内結果オブジェクトはnullです。 利用することは出来ません。

オーバーライド:
クラス XalReturnPossibilityModel 内の mainproc
例外:
Exception - オーバーライド先で発生する可能性が有る例外

subscribeCompleted

public final void subscribeCompleted(Object result)

[概 要]

subscribe受信時にコールバックされるメソッドです。

[詳 細]

SubscribeManagerに管理されているMessageListnerのonMessageイベントハンドラ からコールバックされます。
subscribe受信データ取得用オーバーライドメソッドであるpostSubscribeを テンプレートコールします。
postSubscribeメソッドが正常終了した後、Model処理成功イベントを発火します。

[備 考]

このメソッドはオーバーライド出来ません。
subscribe受信データをモデルレイヤで取得したい場合は、 postSubscribeメソッドをオーバーライドして下さい。

パラメータ:
result - subscribeの結果受信したオブジェクト

unsubscribeCompleted

public final void unsubscribeCompleted()

[概 要]

unsubscribe時にコールバックされるメソッドです。

[詳 細]

SubscribeManagerにて指定したトピックの購読を中止した際、 SubscribeManagerが管理するSubscribeCoreの本メソッドをコールして 購読を中止した旨を通知します。
また、購読中のSubscribeCoreと購読中止のSubscribeCoreは異なる モデルのため、購読中止を行うSubscribeCoreでも、SubscribeManager 宛に購読中止を要求する際に、本メソッドをコールする必要があります。

[備 考]

このメソッドはオーバーライド出来ません。
unsubscribeをモデルレイヤで取得したい場合は、 postUnsubscribeメソッドをオーバーライドして下さい。


postSubscribe

protected void postSubscribe(Object result)

[概 要]

subscribe結果受信用オーバーライドメソッドです。

[詳 細]

デフォルト処理は有りません。

[備 考]

パラメータ:
result - subscribeの結果受信したオブジェクト

postUnsubscribe

protected void postUnsubscribe()

[概 要]

unsubscribe用オーバーライドメソッドです。

[詳 細]

デフォルト処理は有りません。

[備 考]

購読中止の際はデータはないため、引数はありません。



Copyright(C) Fujitsu All Rights Reserved.