From be9aa9c636204051381f4efe4b895dff968f0c4d Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 17 May 2013 11:44:46 +0200 Subject: Add Role management support to module, instead of just creating one if it's not already there. Supports 'jobList' attribute to enable job pushing --- .../predefined/entitycreation/NewAgent.java | 2 +- .../predefined/entitycreation/NewRole.java | 24 ++++++++++++++++++++++ .../java/com/c2kernel/lookup/LDAPRoleManager.java | 12 +++++++++++ src/main/java/com/c2kernel/lookup/RolePath.java | 5 ++++- .../java/com/c2kernel/process/module/Module.java | 21 +++++++++++++++++-- 5 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java (limited to 'src/main/java') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java index f13bced..e7301a1 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java @@ -51,7 +51,7 @@ public class NewAgent extends ModuleImport implements java.io.Serializable { try { thisRole = Gateway.getLDAPLookup().getRoleManager().getRolePath(role); } catch (ObjectNotFoundException ex) { - thisRole = Gateway.getLDAPLookup().getRoleManager().createRole(role, false); + throw new ObjectNotFoundException("Role "+role+" does not exist."); } thisRole.addAgent(newAgent); } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java new file mode 100644 index 0000000..1800b0e --- /dev/null +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java @@ -0,0 +1,24 @@ +package com.c2kernel.lifecycle.instance.predefined.entitycreation; + +import com.c2kernel.common.ObjectAlreadyExistsException; +import com.c2kernel.common.ObjectCannotBeUpdated; +import com.c2kernel.process.Gateway; +import com.c2kernel.process.module.ModuleImport; + +public class NewRole extends ModuleImport { + + public boolean jobList; + + public NewRole() { + } + + @Override + public String getPath(String ns) { + return null; // roles don't have user-specified domain paths + } + + public void create(int agentId) throws ObjectAlreadyExistsException, ObjectCannotBeUpdated { + Gateway.getLDAPLookup().getRoleManager().createRole(name, jobList); + } + +} diff --git a/src/main/java/com/c2kernel/lookup/LDAPRoleManager.java b/src/main/java/com/c2kernel/lookup/LDAPRoleManager.java index 0536d6c..b2cffc6 100644 --- a/src/main/java/com/c2kernel/lookup/LDAPRoleManager.java +++ b/src/main/java/com/c2kernel/lookup/LDAPRoleManager.java @@ -196,4 +196,16 @@ public class LDAPRoleManager { throw new ObjectNotFoundException("Entry was not a Role"); } + public void setHasJobList(RolePath role, boolean hasJobList) throws ObjectNotFoundException, ObjectCannotBeUpdated { + // get entry + LDAPEntry roleEntry; + try { + roleEntry = LDAPLookupUtils.getEntry(mLdap.getConnection(), role.getFullDN()); + } catch (ObjectNotFoundException e) { + throw new ObjectNotFoundException("Role does not exist", ""); + } + // set attribute + LDAPLookupUtils.setAttributeValue(mLdap.getConnection(), roleEntry, "jobList", hasJobList?"TRUE":"FALSE"); + } + } diff --git a/src/main/java/com/c2kernel/lookup/RolePath.java b/src/main/java/com/c2kernel/lookup/RolePath.java index e6593ea..0e07012 100644 --- a/src/main/java/com/c2kernel/lookup/RolePath.java +++ b/src/main/java/com/c2kernel/lookup/RolePath.java @@ -51,9 +51,12 @@ public class RolePath extends DomainPath } /** * @param hasJobList The hasJobList to set. + * @throws ObjectCannotBeUpdated + * @throws ObjectNotFoundException */ - public void setHasJobList(boolean hasJobList) { + public void setHasJobList(boolean hasJobList) throws ObjectNotFoundException, ObjectCannotBeUpdated { this.hasJobList = hasJobList; + Gateway.getLDAPLookup().getRoleManager().setHasJobList(this, hasJobList); } diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java index 91c43b2..33180ae 100644 --- a/src/main/java/com/c2kernel/process/module/Module.java +++ b/src/main/java/com/c2kernel/process/module/Module.java @@ -9,8 +9,10 @@ import com.c2kernel.lifecycle.instance.predefined.entitycreation.Dependency; import com.c2kernel.lifecycle.instance.predefined.entitycreation.DependencyMember; import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewAgent; import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewItem; +import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewRole; import com.c2kernel.lifecycle.instance.predefined.entitycreation.Outcome; import com.c2kernel.lookup.DomainPath; +import com.c2kernel.lookup.RolePath; import com.c2kernel.process.Bootstrap; import com.c2kernel.process.Gateway; import com.c2kernel.scripting.ErrorInfo; @@ -74,6 +76,7 @@ public class Module { public void importAll(ItemProxy serverEntity, String moduleXML) throws Exception { addModuleItem(moduleXML); + int systemAgentId = Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey(); for (ModuleImport thisImp : imports.list) { Logger.msg(1, "Checking for "+thisImp.name+" "+thisImp.getClass().getSimpleName()); if (thisImp instanceof ModuleResource) { @@ -93,7 +96,21 @@ public class Module { continue; } catch (ObjectNotFoundException ex) { } Logger.msg("Module.importAll() - Item '"+thisItem.name+"' not found. Creating."); - thisItem.create(Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey()); + thisItem.create(systemAgentId); + } + else if (thisImp instanceof NewRole) { + NewRole thisRole = (NewRole)thisImp; + RolePath rolePath; + try { + rolePath = Gateway.getLDAPLookup().getRoleManager().getRolePath(thisRole.name); + if (rolePath.hasJobList() != thisRole.jobList) { + Logger.msg("Module.importAll() - Role '"+thisRole.name+"' has incorrect joblist settings. Correcting."); + rolePath.setHasJobList(thisRole.jobList); + } + } catch (ObjectNotFoundException ex) { + Logger.msg("Module.importAll() - Role '"+thisRole.name+"' not found. Creating."); + thisRole.create(systemAgentId); + } } else if (thisImp instanceof NewAgent) { NewAgent thisAgent = (NewAgent)thisImp; @@ -103,7 +120,7 @@ public class Module { continue; } catch (ObjectNotFoundException ex) { } Logger.msg("Module.importAll() - User '"+thisAgent.name+"' not found. Creating."); - thisAgent.create(Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey()); + thisAgent.create(systemAgentId); } } } -- cgit v1.2.3