Sun WBEM SDK 開発ガイド

コード例 — クラス名の列挙

Java GUI アプリケーションでは、例 4–13 のコードセグメントを使ってクラスやサブクラスのリストをユーザーに表示することがあります。


例 4–13 クラス名の列挙 (enumClass)

...
{
    /* CIMObjectPath オブジェクトを作成し、列挙する CIM クラスの
    名前 (myclass) で初期化する */
    CIMObjectPath cop = new CIMObjectPath(myclass); 
    
    /* この列挙には、列挙するクラス内のすべてのクラスとサブクラスの
    名前が含まれる */
    Enumeration e = cc.enumClass(cop, cc.DEEP);
}
... 


アプリケーションでは、例 4–14 のコードセグメントを使ってクラスやそのサブクラスの内容を表示することがあります。


例 4–14 クラスデータの列挙 (enumClass)

...
{
    /* CIMObjectPath オブジェクトを作成し、列挙する CIM クラスの 
    名前 (myclass) で初期化する  */
     
    CIMObjectPath cop = new CIMObjectPath(myclass); 
     
    /* この列挙には、列挙するクラス内のすべてのクラスとサブクラスが
    含まれる (cc.DEEP)。この列挙では、各クラスやサブクラスから
    継承されたメソッドやプロパティ以外のものだけが返される
    (localOnly が真) */
 
    Enumeration e = cc.enumClass(cop, cc.DEEP, true);  
}
...

例 4–15 のサンプルプログラムでは、クラスおよびインスタンスを詳細列挙および簡易列挙します。さらにこの例では、localOnly フラグを使って、(クラスやインスタンスの名前ではなく) クラスやインスタンスのデータを返します 。


例 4–15 クラスおよびインスタンスの列挙

import java.rmi.*;
import com.sun.wbem.client.CIMClient;
import com.sun.wbem.cim.CIMInstance;
import com.sun.wbem.cim.CIMValue;
import com.sun.wbem.cim.CIMProperty;
import com.sun.wbem.cim.CIMNameSpace;
import com.sun.wbem.cim.CIMObjectPath;
import com.sun.wbem.cim.CIMClass;
import com.sun.wbem.cim.CIMException;
import java.util.Enumeration;
 
/** 
 * この例では、クラスやインスタンスを列挙する。
 * この例では、コマンド行から入力されたクラスを詳細列挙
 * および簡易列挙する。さらに、localOnly フラグを使って
 * クラスやインスタンスの詳細を返す。
 */
 public class ClientEnum {
     public static void main(String args[]) throws CIMException {
		     CIMClient cc = null;
			   CIMObjectPath cop = null;
			   if(args.length != 2) {
				     System.out.println("Usage: ClientEnum host className"); 
				     System.exit(1);
	    		 }
			   try {
				    // ホスト名 (コマンド行から入力された args[0]) を含む
				    // CIMNameSpace オブジェクトを作成する。 
	    		    CIMNameSpace cns = new CIMNameSpace(args[0]);
 
				    // 指定されたホスト (args[0]) 上の 
				    // CIM Object Manager へのクライアント接続を作成する
	    		    cc = new CIMClient(cns);
 
	    		    // コマンド行から入力されたクラス名を取得する
	    		    cop = new CIMObjectPath(args[1]);
 
	    		    // クラスを詳細列挙し、クラス名を返す
				    // returns the class names.
	    		    Enumeration e = cc.enumClass(cop, cc.DEEP);
 
	    		    // 列挙するクラスのすべてのサブクラスの名前を出力する
	    		    for (; e.hasMoreElements(); System.out.println(e.nextElement()));
	    		        System.out.println("+++++");
 
	    		    // クラスを簡易列挙し、クラス名を返す
				    // returns the class names.
	    		    e = cc.enumClass(cop, cc.SHALLOW);
 
	    		    // 第一レベルのサブクラスの名前を出力する
	    		    for (; e.hasMoreElements(); System.out.println(e.nextElement()));
	    		        System.out.println("+++++");
 
	    		    // クラスを簡易列挙し、
				    // クラス名に加えクラスデータを
				    // 返す (localOnly が真)
	    		    e = cc.enumClass(cop, cc.SHALLOW, true);
 
	    		    // 第一レベルのサブクラスの詳細を出力する
	    		    for (; e.hasMoreElements(); System.out.println(e.nextElement()));
	    		        System.out.println("+++++");
 
				    // クラスのインスタンスを詳細列挙し、
				    // インスタンスの名前を返す
	    		    e = cc.enumInstances(cop, cc.DEEP);
 
	    		    // クラスとそのサブクラスのすべてのインスタンスの名前を出力する
	    		    for (; e.hasMoreElements(); System.out.println(e.nextElement()));
	    		        System.out.println("+++++");
 
				    // クラスのインスタンスを詳細列挙し、
				    // インスタンス名に加え、実際のインスタンスデータを
				    // 返す (localOnly が真)
	    		    e = cc.enumInstances(cop, cc.DEEP);
 
	    		    // クラスとそのサブクラスのすべてのインスタンスの詳細を出力する
	    		    for (; e.hasMoreElements(); System.out.println(e.nextElement()));
	    		        System.out.println("+++++");
 
				    // クラスのインスタンスを簡易列挙し、
				    // インスタンスの名前を返す
	    		    e = cc.enumInstances(cop, cc.SHALLOW);
 
				    // クラスのインスタンスの名前を出力する
	    		    for (; e.hasMoreElements(); System.out.println(e.nextElement()));
	    			      System.out.println("+++++");
			      } catch (Exception e) {
	    		        System.out.println("Exception: "+e);
			     }
			    // セッションを閉じる
			    if(cc != null) {
	    		    cc.close();
			    }
    }
}