package com.kedzie.vbox.api;
import java.util.Map;
import com.kedzie.vbox.soap.KSOAP;
import com.kedzie.vbox.soap.VBoxSvc;
/**
* <p>Managed object reference.</p>
* <p>Only within the webservice, a managed object reference (which is really an opaque number) allows a webservice client to address an object that lives in the address space of the webservice server.</p>
* <p>Behind each managed object reference, there is a COM object that lives in the webservice server's address space. The COM object is not freed until the managed object reference is released, either by an explicit call to {@link IManagedObjectRef#release} or by logging off from the webservice ({@link IVirtualBox#logoff}), which releases all objects created during the webservice session.</p>
* <p>Whenever a method call of the VirtualBox API returns a COM object, the webservice representation of that method will instead return a managed object reference, which can then be used to invoke methods on that object.</p></p>
* @apiviz.stereotype Proxy
* @apiviz.category Proxy
*/
@KSOAP
public interface IManagedObjectRef {
/**
* @return Managed object identifier
*/
public String getIdRef();
/**
* Clear cached property values
*/
public void clearCache();
/**
* Clear cached property values
* @param names names of properties
*/
public void clearCacheNamed(String...names);
/**
* Get property cache
*/
public Map<String, Object> getCache();
/**
* @return VirtualBox JAXWS API
*/
public VBoxSvc getAPI();
/**
* Returns the name of the interface that this managed object represents, for example, "IMachine", as a string.
*/
@KSOAP(prefix="IManagedObjectRef")
public String getInterfaceName();
/**
* Releases this managed object reference and frees the resources that were allocated for it in the webservice server process.
* <p>After calling this method, the identifier of the reference can no longer be used.
*/
@KSOAP(prefix="IManagedObjectRef")
public void release();
}