From d4fa3bd9dd48f4d5e26850a23f5ba48a9c10ad64 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 5 Jun 2014 15:02:07 +0200 Subject: LDAP refactored behind interfaces. All functions of LDAP now hidden behind interfaces: Authenticator, Lookup and NextKeyManager (LDAP property storage was already a ClusterStorage). Gateway holds additional objects, and Fixes #26 #191. Refs #27 (needs additional work for read perms and auth tokens) --- .../com/c2kernel/entity/AgentImplementation.java | 4 +-- src/main/java/com/c2kernel/entity/CorbaServer.java | 6 ++--- src/main/java/com/c2kernel/entity/agent/Job.java | 2 +- .../java/com/c2kernel/entity/proxy/AgentProxy.java | 22 ++++++++++----- .../com/c2kernel/entity/proxy/ProxyManager.java | 31 +++++++++++++--------- .../com/c2kernel/entity/transfer/TransferItem.java | 14 +++++----- .../com/c2kernel/entity/transfer/TransferSet.java | 4 +-- 7 files changed, 49 insertions(+), 34 deletions(-) (limited to 'src/main/java/com/c2kernel/entity') diff --git a/src/main/java/com/c2kernel/entity/AgentImplementation.java b/src/main/java/com/c2kernel/entity/AgentImplementation.java index d31b94a..8010114 100644 --- a/src/main/java/com/c2kernel/entity/AgentImplementation.java +++ b/src/main/java/com/c2kernel/entity/AgentImplementation.java @@ -53,7 +53,7 @@ public class AgentImplementation extends ItemImplementation implements @Override public void addRole(String roleName) throws CannotManageException, ObjectNotFoundException { - RolePath newRole = Gateway.getLDAPLookup().getRoleManager().getRolePath(roleName); + RolePath newRole = Gateway.getLookup().getRolePath(roleName); try { newRole.addAgent(new AgentPath(mSystemKey)); } catch (InvalidItemPathException ex) { @@ -65,7 +65,7 @@ public class AgentImplementation extends ItemImplementation implements @Override public void removeRole(String roleName) throws CannotManageException, ObjectNotFoundException { - RolePath rolePath = Gateway.getLDAPLookup().getRoleManager().getRolePath(roleName); + RolePath rolePath = Gateway.getLookup().getRolePath(roleName); try { rolePath.removeAgent(new AgentPath(mSystemKey)); } catch (InvalidItemPathException e) { diff --git a/src/main/java/com/c2kernel/entity/CorbaServer.java b/src/main/java/com/c2kernel/entity/CorbaServer.java index 4a129ae..3a01ed7 100644 --- a/src/main/java/com/c2kernel/entity/CorbaServer.java +++ b/src/main/java/com/c2kernel/entity/CorbaServer.java @@ -14,8 +14,8 @@ import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.agent.ActiveEntity; import com.c2kernel.entity.agent.ActiveLocator; import com.c2kernel.lookup.AgentPath; -import com.c2kernel.lookup.ItemPath; import com.c2kernel.lookup.InvalidItemPathException; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Logger; import com.c2kernel.utils.SoftCache; @@ -126,7 +126,7 @@ public class CorbaServer { if (entity == null) { Logger.msg(7, "Creating new servant for "+sysKey); - Class entityClass = Gateway.getLDAPLookup().getEntityClass(entityPath); + Class entityClass = Gateway.getLookup().getItemClass(entityPath); if (entityClass == TraceableEntity.class) { if (poa == null) poa = mItemPOA; @@ -167,7 +167,7 @@ public class CorbaServer { public Servant createEntity(ItemPath entityPath) throws CannotManageException, ObjectAlreadyExistsException { try { if (entityPath == null) - entityPath = Gateway.getLDAPLookup().getNextKeyManager().generateNextEntityKey(); + entityPath = Gateway.getNextKeyManager().generateNextEntityKey(); } catch (Exception ex) { Logger.error(ex); throw new CannotManageException("Cannot generate next entity key"); diff --git a/src/main/java/com/c2kernel/entity/agent/Job.java b/src/main/java/com/c2kernel/entity/agent/Job.java index efbd5fb..cef35ef 100644 --- a/src/main/java/com/c2kernel/entity/agent/Job.java +++ b/src/main/java/com/c2kernel/entity/agent/Job.java @@ -164,7 +164,7 @@ public class Job implements C2KLocalObject public int getAgentId() throws ObjectNotFoundException { if (agentId == -1) - agentId = Gateway.getLDAPLookup().getRoleManager().getAgentPath(getAgentName()).getSysKey(); + agentId = Gateway.getLookup().getAgentPath(getAgentName()).getSysKey(); return agentId; } diff --git a/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java b/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java index b6566a8..e5a52f0 100644 --- a/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java +++ b/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java @@ -11,7 +11,7 @@ package com.c2kernel.entity.proxy; import java.util.Date; -import java.util.Enumeration; +import java.util.Iterator; import com.c2kernel.common.AccessRightsException; import com.c2kernel.common.InvalidDataException; @@ -32,6 +32,7 @@ import com.c2kernel.lookup.Path; import com.c2kernel.persistency.outcome.OutcomeValidator; import com.c2kernel.persistency.outcome.Schema; import com.c2kernel.process.Gateway; +import com.c2kernel.process.auth.Authenticator; import com.c2kernel.scripting.ErrorInfo; import com.c2kernel.scripting.Script; import com.c2kernel.scripting.ScriptErrorException; @@ -50,6 +51,7 @@ public class AgentProxy extends ItemProxy { AgentPath agentPath; + Authenticator auth; /************************************************************************** * Creates an AgentProxy without cache and change notification **************************************************************************/ @@ -66,7 +68,15 @@ public class AgentProxy extends ItemProxy } } - @Override + public Authenticator getAuthObj() { + return auth; + } + + public void setAuthObj(Authenticator auth) { + this.auth = auth; + } + + @Override public Agent narrow() throws ObjectNotFoundException { try { @@ -237,14 +247,14 @@ public class AgentProxy extends ItemProxy /** Let scripts resolve items */ public ItemProxy searchItem(String name) throws ObjectNotFoundException { - Enumeration results = Gateway.getLDAPLookup().search(new DomainPath(""),name); + Iterator results = Gateway.getLookup().search(new DomainPath(""),name); Path returnPath = null; - if (!results.hasMoreElements()) + if (!results.hasNext()) throw new ObjectNotFoundException(name, ""); - while(results.hasMoreElements()) { - Path nextMatch = results.nextElement(); + while(results.hasNext()) { + Path nextMatch = results.next(); if (returnPath != null && nextMatch.getSysKey() != -1 && returnPath.getSysKey() != nextMatch.getSysKey()) throw new ObjectNotFoundException("Too many items with that name"); returnPath = nextMatch; diff --git a/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java b/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java index b217f3e..2b2e0e9 100644 --- a/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java +++ b/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java @@ -12,7 +12,6 @@ package com.c2kernel.entity.proxy; import java.util.ArrayList; import java.util.ConcurrentModificationException; -import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; @@ -41,9 +40,9 @@ public class ProxyManager { Logger.msg(5, "ProxyManager - Starting....."); - Enumeration servers = Gateway.getLDAPLookup().searchEntities(new DomainPath("/servers")); - while(servers.hasMoreElements()) { - Path thisServerPath = servers.nextElement(); + Iterator servers = Gateway.getLookup().searchEntities(new DomainPath("/servers")); + while(servers.hasNext()) { + Path thisServerPath = servers.next(); try { int syskey = thisServerPath.getSysKey(); String remoteServer = ((Property)Gateway.getStorage().get(syskey, ClusterStorage.PROPERTY+"/Name", null)).getValue(); @@ -157,7 +156,7 @@ public class ProxyManager **************************************************************************/ private ItemProxy createProxy( org.omg.CORBA.Object ior, int systemKey, - boolean isItem ) + boolean isAgent ) throws ObjectNotFoundException { @@ -165,13 +164,13 @@ public class ProxyManager Logger.msg(5, "ProxyManager::creating proxy on Item " + systemKey); - if( isItem ) + if( isAgent ) { - newProxy = new ItemProxy(ior, systemKey); + newProxy = new AgentProxy(ior, systemKey); } else { - newProxy = new AgentProxy(ior, systemKey); + newProxy = new ItemProxy(ior, systemKey); } // subscribe to changes from server @@ -195,7 +194,7 @@ public class ProxyManager **************************************************************************/ private ItemProxy getProxy( org.omg.CORBA.Object ior, int systemKey, - boolean isItem ) + boolean isAgent ) throws ObjectNotFoundException { Integer key = new Integer(systemKey); @@ -206,7 +205,7 @@ public class ProxyManager newProxy = proxyPool.get(key); if (newProxy == null) { // create a new one - newProxy = createProxy(ior, systemKey, isItem ); + newProxy = createProxy(ior, systemKey, isAgent ); proxyPool.put(key, newProxy); } return newProxy; @@ -225,12 +224,18 @@ public class ProxyManager //convert namePath to dn format Logger.msg(8,"ProxyManager::getProxy(" + path.toString() + ")"); - boolean isItem = !(path.getEntity() instanceof AgentPath); - return getProxy( Gateway.getLDAPLookup().getIOR(path), + boolean isAgent = (path.getEntity() instanceof AgentPath); + return getProxy( Gateway.getLookup().resolve(path), path.getSysKey(), - isItem ); + isAgent ); } + + public AgentProxy getAgentProxy( AgentPath path ) + throws ObjectNotFoundException + { + return (AgentProxy) getProxy(path); + } /************************************************************************** * void reportCurrentProxies() diff --git a/src/main/java/com/c2kernel/entity/transfer/TransferItem.java b/src/main/java/com/c2kernel/entity/transfer/TransferItem.java index df81721..9a4cfc5 100644 --- a/src/main/java/com/c2kernel/entity/transfer/TransferItem.java +++ b/src/main/java/com/c2kernel/entity/transfer/TransferItem.java @@ -2,7 +2,7 @@ package com.c2kernel.entity.transfer; import java.io.File; import java.util.ArrayList; -import java.util.Enumeration; +import java.util.Iterator; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.C2KLocalObject; @@ -26,7 +26,7 @@ public class TransferItem { public TransferItem() throws Exception { try { - importAgentId = Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey(); + importAgentId = Gateway.getLookup().getAgentPath("system").getSysKey(); } catch (ObjectNotFoundException e) { Logger.error("TransferItem - System user not found!"); throw e; @@ -37,9 +37,9 @@ public class TransferItem { this.sysKey = sysKey; domainPaths = new ArrayList(); Property name = (Property)Gateway.getStorage().get(sysKey, ClusterStorage.PROPERTY + "/Name", null); - Enumeration paths = Gateway.getLDAPLookup().search(new DomainPath(), name.getValue()); - while (paths.hasMoreElements()) { - DomainPath thisPath = (DomainPath)paths.nextElement(); + Iterator paths = Gateway.getLookup().search(new DomainPath(), name.getValue()); + while (paths.hasNext()) { + DomainPath thisPath = (DomainPath)paths.next(); domainPaths.add(thisPath.toString()); } } @@ -91,7 +91,7 @@ public class TransferItem { // create item ItemPath entityPath = new ItemPath(sysKey); TraceableEntity newItem = (TraceableEntity)Gateway.getCorbaServer().createEntity(entityPath); - Gateway.getLDAPLookup().add(entityPath); + Gateway.getLookup().add(entityPath); PropertyArrayList props = new PropertyArrayList(); Workflow wf = null; @@ -121,7 +121,7 @@ public class TransferItem { // add domPaths for (String element : domainPaths) { DomainPath newPath = new DomainPath(element, entityPath); - Gateway.getLDAPLookup().add(newPath); + Gateway.getLookup().add(newPath); } } diff --git a/src/main/java/com/c2kernel/entity/transfer/TransferSet.java b/src/main/java/com/c2kernel/entity/transfer/TransferSet.java index a7d81b6..7a5833f 100644 --- a/src/main/java/com/c2kernel/entity/transfer/TransferSet.java +++ b/src/main/java/com/c2kernel/entity/transfer/TransferSet.java @@ -4,7 +4,7 @@ import java.io.File; import java.util.ArrayList; import com.c2kernel.lookup.ItemPath; -import com.c2kernel.lookup.NextKeyManager; +import com.c2kernel.persistency.NextKeyManager; import com.c2kernel.process.Gateway; import com.c2kernel.utils.FileStringUtility; import com.c2kernel.utils.Logger; @@ -84,7 +84,7 @@ public class TransferSet { try { // find the current last key - NextKeyManager nextKeyMan = Gateway.getLDAPLookup().getNextKeyManager(); + NextKeyManager nextKeyMan = Gateway.getNextKeyManager(); ItemPath lastKey = nextKeyMan.getLastEntityPath(); Logger.msg(1, "Last key imported was "+packageLastKey+". LDAP lastkey was "+lastKey.getSysKey()); -- cgit v1.2.3