次のコード例は、インスタンスプロバイダ SimpleInstanceProvider の Java ソースコードです。このインスタンスプロバイダは、Ex_SimpleInstanceProvider クラスの enumInstances インタフェースと getInstance インタフェースを実装しています。わかりやすくするために、この例では、CIMException をスローすることによって deleteInstance、createInstance、setInstance、execQuery の各インタフェースを実装します。実際には、インスタンスプロバイダがすべての InstanceProvider インスタンスを実装する必要があります。
/* * "@(#)SimpleInstanceProvider.java" */ import com.sun.wbem.cim.*; import com.sun.wbem.client.*; import com.sun.wbem.provider.CIMProvider; import com.sun.wbem.provider20.InstanceProvider; import com.sun.wbem.provider.MethodProvider; import java.util.*; import java.io.*; public class SimpleInstanceProvider implements InstanceProvider{ static int loop = 0; public void initialize(CIMOMHandle cimom) throws CIMException { } public void cleanup() throws CIMException { } public Vector enumInstances(CIMObjectPath op, boolean deep, CIMClass cc, boolean localOnly) throws CIMException { return null; } /* * enumInstances: * 名前だけでなく、インスタンス全体が返される。 * 詳細列挙または簡易列挙が可能だが、現在のところ * CIMOM は簡易列挙だけを要求する。 */ public Vector enumInstances(CIMObjectPath op, boolean deep, CIMClass cc) throws CIMException { if (op.getObjectName().equalsIgnoreCase("Ex_SimpleInstanceProvider")) { Vector instances = new Vector(); CIMObjectPath cop = new CIMObjectPath(op.getObjectName(), op.getNameSpace()); if (loop == 0){ cop.addKey("First", new CIMValue("red")); cop.addKey("Last", new CIMValue("apple")); // このクラスを削除する場合は、この次の行を // コメントにしてコンパイルする。 instances.addElement(cop); loop += 1; } else { cop.addKey("First", new CIMValue("red")); cop.addKey("Last", new CIMValue("apple")); // このクラスを削除する場合は、この次の行を // コメントにしてコンパイルする。 instances.addElement(cop); cop = new CIMObjectPath(op.getObjectName(), op.getNameSpace()); cop.addKey("First", new CIMValue("green")); cop.addKey("Last", new CIMValue("apple")); // このクラスを削除する場合は、この次の行を // コメントにしてコンパイルする。 instances.addElement(cop); } return instances; } return new Vector(); } public CIMInstance getInstance(CIMObjectPath op, CIMClass cc, boolean localOnly) throws CIMException { if (op.getObjectName().equalsIgnoreCase("Ex_SimpleInstanceProvider")) { CIMInstance ci = cc.newInstance(); ci.setProperty("First", new CIMValue("yellow")); ci.setProperty("Last", new CIMValue("apple")); return ci; } return new CIMInstance(); } public Vector execQuery(CIMObjectPath op, String query, int ql, CIMClass cc) throws CIMException { throw(new CIMException(CIMException.CIM_ERR_NOT_SUPPORTED)); } public void setInstance(CIMObjectPath op, CIMInstance ci) throws CIMException { throw(new CIMException(CIMException.CIM_ERR_NOT_SUPPORTED)); } public CIMObjectPath createInstance(CIMObjectPath op, CIMInstance ci) throws CIMException { throw(new CIMException(CIMException.CIM_ERR_NOT_SUPPORTED)); } public void deleteInstance(CIMObjectPath cp) throws CIMException { throw(new CIMException(CIMException.CIM_ERR_NOT_SUPPORTED)); } }