The following example shows the Java source code for an instance provider, SimpleInstanceProvider, that implements the enumInstances and getInstance interfaces for the Ex_SimpleInstanceProvider class. For brevity, this example implements the deleteInstance, createInstance, setInstance, and execQuery interfaces by throwing a CIMException. In practice, an instance provider must implement all InstanceProvider interfaces.
/*
* "@(#)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:
* The entire instances and not just the names are returned.
* Deep or shallow enumeration is possible, however
* currently the CIMOM only asks for shallow enumeration.
*/
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"));
// To delete this class, comment this following
// line and compile it.
instances.addElement(cop);
loop += 1;
} else {
cop.addKey("First", new CIMValue("red"));
cop.addKey("Last", new CIMValue("apple"));
// To delete this class, comment this following
// line and compile it.
instances.addElement(cop);
cop = new CIMObjectPath(op.getObjectName(),
op.getNameSpace());
cop.addKey("First", new CIMValue("green"));
cop.addKey("Last", new CIMValue("apple"));
// To delete this class, comment this following
// line and compile it.
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));
}
}