次のコード例は、インスタンスプロバイダ 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));
}
}