multiverse.server.plugins
Class ObjectManagerPlugin

java.lang.Object
  extended by multiverse.server.engine.EnginePlugin
      extended by multiverse.server.plugins.ObjectManagerPlugin
All Implemented Interfaces:
MessageCallback, StatusMapCallback

public class ObjectManagerPlugin
extends EnginePlugin

handles creating from factory, loading from database, spawning, despawning, persisting to database, of objects see ObjectManagerClient for api to access this plugin


Nested Class Summary
(package private)  class ObjectManagerPlugin.DeleteInstanceHook
           
(package private)  class ObjectManagerPlugin.DeleteObjectHook
           
(package private)  class ObjectManagerPlugin.FixWorldNodeHook
           
(package private)  class ObjectManagerPlugin.GenerateObjectHook
          generates an object from the passed in template name returns the byte array in a response message
(package private)  class ObjectManagerPlugin.GetNamedObjectHook
           
(package private)  class ObjectManagerPlugin.GetObjectStatusHook
           
(package private)  class ObjectManagerPlugin.GetPluginStatusHook
           
(package private)  class ObjectManagerPlugin.GetTemplateHook
          gets a template and returns it to the caller
(package private)  class ObjectManagerPlugin.GetTemplateNamesHook
          gets a template and returns it to the caller
static class ObjectManagerPlugin.InstanceRPCCallback
           
private static class ObjectManagerPlugin.InstanceState
           
(package private)  class ObjectManagerPlugin.LoadInstanceContentHook
           
(package private)  class ObjectManagerPlugin.LoadObjectDataHook
           
(package private)  class ObjectManagerPlugin.LoadObjectHook
           
static class ObjectManagerPlugin.MasterObject
           
(package private)  class ObjectManagerPlugin.RegisterTemplateHook
          registers the template with the plugin so that you can then call generateObject and pass in this template's name
(package private)  class ObjectManagerPlugin.SaveObjectDataHook
           
(package private)  class ObjectManagerPlugin.SaveObjectHook
           
(package private) static class ObjectManagerPlugin.SaveObjectProcessor
           
(package private)  class ObjectManagerPlugin.SetPersistenceHook
          marks the master object as persistent and sends all plugins a persistence message
(package private)  class ObjectManagerPlugin.UnloadInstanceHook
           
(package private)  class ObjectManagerPlugin.UnloadObjectHook
           
 
Nested classes/interfaces inherited from class multiverse.server.engine.EnginePlugin
EnginePlugin.DeleteHook, EnginePlugin.DeleteSubObjHook, EnginePlugin.GenerateSubObjectHook, EnginePlugin.GetPropertyMessage, EnginePlugin.LoadHook, EnginePlugin.LoadSubObjHook, EnginePlugin.PluginActivateHook, EnginePlugin.PluginStateMessage, EnginePlugin.SaveHook, EnginePlugin.SaveSubObjHook, EnginePlugin.SetPropertyMessage, EnginePlugin.SubObjData, EnginePlugin.TransferFilter, EnginePlugin.TransferObjectMessage, EnginePlugin.UnloadHook, EnginePlugin.UnloadSubObjHook
 
Field Summary
private static int INSTANCE_DELETING
           
private static int INSTANCE_LOADING
           
private static int INSTANCE_OK
           
private static int INSTANCE_UNLOADING
           
private  Map<Long,ObjectManagerPlugin.InstanceState> instanceContent
           
protected static Logger log
           
protected  Manager<Template> templateManager
           
 
Fields inherited from class multiverse.server.engine.EnginePlugin
deleteSubObjectSubscription, dumpAllThreadSubscription, dumpAllThreadSubscriptionLock, loadSubObjectSubscription, lock, MSG_TYPE_DUMP_ALL_THREAD_STACKS, MSG_TYPE_GET_PROPERTY, MSG_TYPE_PLUGIN_STATE, MSG_TYPE_SET_PROPERTY, MSG_TYPE_SET_PROPERTY_NONBLOCK, MSG_TYPE_TRANSFER_OBJECT, pluginStateSubscription, propertySubscription, saveSubObjectSubscription, selectionFilter, selectionSubscription, setSubObjectPersistenceSubscription, subObjectSubscription, unloadSubObjectSubscription
 
Fields inherited from interface multiverse.msgsys.MessageCallback
NO_FLAGS, RESPONSE_EXPECTED
 
Constructor Summary
ObjectManagerPlugin()
           
 
Method Summary
private  void addInstance(ObjectManagerPlugin.MasterObject instance)
           
private  void addInstanceContent(long instanceOid, ObjectManagerPlugin.MasterObject entity)
           
(package private)  GenericResponseMessage generateSubObject(Long masterOid, Namespace namespace, Template template)
          creates a subobject, returns the subobject's oid
private  Long getInstanceNamedObject(long instanceOid, String name, ObjectType objectType)
           
private  Long getNamedObject(String name, ObjectType objectType)
           
private  boolean isInstanceLoading(long instanceOid)
           
private  boolean isInstanceOk(long instanceOid, int newStatus)
           
 void onActivate()
          for developers extending the EnginePlugin object, it may be easier to use the onActivate() method which gets called when the plugin is being activated by the Engine.
protected  void registerHooks()
           
private  void removeInstance(ObjectManagerPlugin.MasterObject instance)
           
private  void removeInstanceContent(long instanceOid, ObjectManagerPlugin.MasterObject entity)
           
(package private)  void resolveDeps(Long masterOid, Namespace namespace, Map<Namespace,Collection<Namespace>> depMap)
           
private  void setInstanceStatus(long instanceOid, int newStatus)
           
 
Methods inherited from class multiverse.server.engine.EnginePlugin
activate, createMBeanInstance, createSubscription, getHookManager, getMessageHandler, getName, getObjectLockManager, getObjectProperties, getObjectProperties, getObjectProperty, getPercentCPULoad, getPluginAvailable, getPluginInfo, getPluginNamespaces, getPluginState, getPluginStatus, getPluginType, getPropertyImpl, getStatusMap, handleMessage, handleMessageImpl, logDepsOutstanding, processKeysAndValues, registerActivateHook, registerDeleteHook, registerLoadHook, registerPluginNamespace, registerPluginNamespaces, registerPluginNamespaces, registerPluginNamespaces, registerSaveHook, registerTransferHook, registerUnloadHook, sendSubObjectResponse, sendSubObjectResponse, sendSubObjectResponse, setMessageHandler, setName, setObjectProperties, setObjectProperties, setObjectPropertiesNoResponse, setObjectPropertiesNoResponse, setObjectProperty, setObjectPropertyNoResponse, setPercentCPULoad, setPluginAvailable, setPluginInfo, setPluginType, setPropertyImpl, transferObject
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INSTANCE_OK

private static final int INSTANCE_OK
See Also:
Constant Field Values

INSTANCE_LOADING

private static final int INSTANCE_LOADING
See Also:
Constant Field Values

INSTANCE_UNLOADING

private static final int INSTANCE_UNLOADING
See Also:
Constant Field Values

INSTANCE_DELETING

private static final int INSTANCE_DELETING
See Also:
Constant Field Values

log

protected static final Logger log

templateManager

protected Manager<Template> templateManager

instanceContent

private Map<Long,ObjectManagerPlugin.InstanceState> instanceContent
Constructor Detail

ObjectManagerPlugin

public ObjectManagerPlugin()
Method Detail

onActivate

public void onActivate()
Description copied from class: EnginePlugin
for developers extending the EnginePlugin object, it may be easier to use the onActivate() method which gets called when the plugin is being activated by the Engine. this is an alternative to calling registerActivateHook()

Overrides:
onActivate in class EnginePlugin

registerHooks

protected void registerHooks()

resolveDeps

void resolveDeps(Long masterOid,
                 Namespace namespace,
                 Map<Namespace,Collection<Namespace>> depMap)

generateSubObject

GenericResponseMessage generateSubObject(Long masterOid,
                                         Namespace namespace,
                                         Template template)
creates a subobject, returns the subobject's oid

Returns:
the GenericResponseMessage from creating the subobject the object is a LinkedList of namespaces that the plugin is still waiting to be created before it can finish subobject creation.

addInstance

private void addInstance(ObjectManagerPlugin.MasterObject instance)

removeInstance

private void removeInstance(ObjectManagerPlugin.MasterObject instance)

addInstanceContent

private void addInstanceContent(long instanceOid,
                                ObjectManagerPlugin.MasterObject entity)

removeInstanceContent

private void removeInstanceContent(long instanceOid,
                                   ObjectManagerPlugin.MasterObject entity)

isInstanceOk

private boolean isInstanceOk(long instanceOid,
                             int newStatus)

isInstanceLoading

private boolean isInstanceLoading(long instanceOid)

setInstanceStatus

private void setInstanceStatus(long instanceOid,
                               int newStatus)

getInstanceNamedObject

private Long getInstanceNamedObject(long instanceOid,
                                    String name,
                                    ObjectType objectType)

getNamedObject

private Long getNamedObject(String name,
                            ObjectType objectType)