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)); } }