From c45ee34928eaa7d148c60fb520f279362414af5a Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 12 Jun 2014 10:24:01 +0200 Subject: Separate PredefinedStepContainers for Agents and Items (and Server Item) --- src/main/java/com/c2kernel/entity/CorbaServer.java | 33 +++++++++++----------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'src/main/java/com/c2kernel/entity/CorbaServer.java') diff --git a/src/main/java/com/c2kernel/entity/CorbaServer.java b/src/main/java/com/c2kernel/entity/CorbaServer.java index 3a01ed7..60c10a8 100644 --- a/src/main/java/com/c2kernel/entity/CorbaServer.java +++ b/src/main/java/com/c2kernel/entity/CorbaServer.java @@ -117,29 +117,28 @@ public class CorbaServer { /************************************************************************** * Returns a CORBA servant for a pre-existing entity **************************************************************************/ - private Servant getEntity(int sysKey, org.omg.PortableServer.POA poa) throws ObjectNotFoundException { + private Servant getItem(int sysKey, org.omg.PortableServer.POA poa) throws ObjectNotFoundException { try { - ItemPath entityPath = new ItemPath(sysKey); - Servant entity = null; + ItemPath itemPath = Gateway.getLookup().getItemPath(sysKey); + Servant item = null; synchronized (mEntityCache) { - entity = mEntityCache.get(entityPath); - if (entity == null) { + item = mEntityCache.get(itemPath); + if (item == null) { Logger.msg(7, "Creating new servant for "+sysKey); - Class entityClass = Gateway.getLookup().getItemClass(entityPath); - - if (entityClass == TraceableEntity.class) { - if (poa == null) poa = mItemPOA; - entity = new TraceableEntity(sysKey, poa); - } - else if (entityClass == ActiveEntity.class) { + if (itemPath instanceof AgentPath) { if (poa == null) poa = mAgentPOA; - entity = new ActiveEntity(sysKey, poa); + item = new ActiveEntity(sysKey, poa); + } + else if (itemPath instanceof ItemPath) { + if (poa == null) poa = mItemPOA; + item = new TraceableEntity(sysKey, poa); } - mEntityCache.put(entityPath, entity); + + mEntityCache.put(itemPath, item); } } - return entity; + return item; } catch (InvalidItemPathException ex) { throw new ObjectNotFoundException("Invalid Entity Key", ""); @@ -150,14 +149,14 @@ public class CorbaServer { * Wrapper for fetching Items **************************************************************************/ public TraceableEntity getItem(int sysKey) throws ObjectNotFoundException { - return (TraceableEntity)getEntity(sysKey, mItemPOA); + return (TraceableEntity)getItem(sysKey, mItemPOA); } /************************************************************************** * Wrapper for fetching Agents **************************************************************************/ public ActiveEntity getAgent(int sysKey) throws ObjectNotFoundException { - return (ActiveEntity)getEntity(sysKey, mAgentPOA); + return (ActiveEntity)getItem(sysKey, mAgentPOA); } /** -- cgit v1.2.3