WebSphere Enterprise Service Bus for z/OS バージョン 6.2.0 オペレーティング・システム: z/OS


どうすれば DataObject に any タグがあるかどうかが分かるか

DataObject のインスタンス内に any 値が設定されているかどうかは、インスタンスのプロパティーを調べて、いずれかのオープン・プロパティーが属性であるかどうかを確認すれば、簡単に判別できます。

DataObject は DataObject Type に any タグがあるかどうかを判別するメカニズムを備えていません。DataObject には、any と anyAttribute の両方に適用され、any のプロパティーを自由に追加できる「オープン」の概念だけがあります。any タグが存在すると DataObject は isOpen() = true で isSequenced() = true になりますが、単にその DataObject に anyAttribute タグと、Sequence のトピックで述べた順序付けされる理由の 1 つがあるにすぎない場合も考えられます。次の例は、それらの概念を実際に示したものです。

	DataObject dobj = ...

	// タイプがオープンであるかどうかを検査し、そうでなければ
	// 中に any 値が設定されていることはありえない。
	boolean isOpen = dobj.getType().isOpen();

	if (!isOpen) return false;  // any 値は設定されていない

	// オープン・プロパティーはインスタンス・プロパティー・リストに追加されるが
	// プロパティー・リストには追加されないため、それらのサイズを比較すれば
	// 設定されたオープン・データがあるかどうかを簡単に判別できる
	int instancePropertyCount = dobj.getInstanceProperties().size();
	int definedPropertyCount = dobj.getType().getProperties().size();

	// 同じであれば、オープン・コンテンツは設定されていない
	if (instancePropertyCount == definedPropertyCount) return false;

	// オープン・コンテンツの Property を調べて、any が Element であるかどうかを
	// 判別する
	for (int i=definedPropertyCount; i < instancePropertyCount; i++)
	{
	    Property prop = (Property)dobj.getInstanceProperties().get(i);
	    if (boXsdHelper.isElement(prop))
	    {
	        return true;  // any 値が検出された
	    }
	}

	return false;  // any 値は設定されていない

concept 概念トピック

ご利用条件 | フィードバック


タイムスタンプ・アイコン 最終更新: 2010/07/05


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.zseries.doc/doc/cbo_howdataobjtag.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています (http://www.eclipse.org)。