The following table describes the method in the Method Provider interface.
Table 5–4 MethodProvider Interface Methods
Method |
Description |
---|---|
CIMValue invokeMethod(CIMObjectPath op, String methodName, Vector inParams, Vector outParams) |
The CIM Object Manager calls this method when methodName in the instance referred to by op is invoked.. inParams is a vector of CIMValues that are input parameters to the invoked method. outParams is a vector of CIMValues that are output parameters from the invoked method. |
The code segment in Example 5–3 creates a Solaris provider class that routes requests to execute methods from the CIM Object Manager to one or more specialized providers. These specialized providers service requests for dynamic data for a particular type of Solaris object. For example, the Solaris_Package provider services requests to execute methods in the Solaris_Package class.
The method provider in this example implements a single method invokeMethod that calls the appropriate provider to perform one of following operations:
Reboot a Solaris system
Reboot or shut down a Solaris system
Delete a Solaris serial port
... public class Solaris implements MethodProvider { public void initialize(CIMONHandle, ch) throws CIMException { } public void cleanup() throws CIMException { } public CIMValue invokeMethod(CIMObjectPath op, String methodName, Vector inParams, Vector outParams) throws CIMException { if (op.getObjectName().equalsIgnoreCase("solaris_computersystem")) { Solaris_ComputerSystem sp = new Solaris_ComputerSystem(); if (methodName.equalsIgnoreCase("reboot")) { return new CIMValue (sp.Reboot()); } } if (op.getObjectName().equalsIgnoreCase("solaris_operatingsystem")) { Solaris_OperatingSystem sos = new Solaris_OperatingSystem(); if (methodName.equalsIgnoreCase("reboot")) { return new CIMValue (sos.Reboot()); } if (methodName.equalsIgnoreCase("shutdown")) { return new CIMValue (sos.Shutdown()); } } if (op.getObjectName().equalsIgnoreCase("solaris_serialport")) { Solaris_SerialPort ser = new Solaris_SerialPort(); if (methodName.equalsIgnoreCase("disableportservice")) { return new CIMValue (ser.DeletePort(op)); } } return null; } } ...