summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java2
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java24
-rw-r--r--src/main/java/com/c2kernel/lookup/LDAPRoleManager.java12
-rw-r--r--src/main/java/com/c2kernel/lookup/RolePath.java5
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java21
-rw-r--r--src/main/resources/boot/OD/Module.xsd38
-rw-r--r--src/main/resources/mapFiles/NewEntityMap.xml9
7 files changed, 97 insertions, 14 deletions
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);
}
}
}
diff --git a/src/main/resources/boot/OD/Module.xsd b/src/main/resources/boot/OD/Module.xsd
index 8351e65..1b54ac5 100644
--- a/src/main/resources/boot/OD/Module.xsd
+++ b/src/main/resources/boot/OD/Module.xsd
@@ -72,7 +72,8 @@
<xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
- <xs:element name="Property" type="property" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Property" type="property"
+ minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Outcome" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
@@ -95,30 +96,35 @@
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
- <xs:element name="MemberProperties" type="collprops" minOccurs="0"/>
+ <xs:element name="MemberProperties" type="collprops"
+ minOccurs="0" />
</xs:sequence>
<xs:attribute name="itemPath" type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
- <xs:element name="CollectionProperties" type="collprops" minOccurs="0"/>
+ <xs:element name="CollectionProperties" type="collprops"
+ minOccurs="0" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="isDescription" type="xs:boolean"
use="optional" default="false" />
- <xs:attribute name="itemDescriptionPath"
- type="xs:string" use="optional" />
+ <xs:attribute name="itemDescriptionPath" type="xs:string"
+ use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="Aggregation" minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
- <xs:documentation>A new collection with layout
+ <xs:documentation>
+ A new collection
+ with layout
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
- <xs:element name="AggregationMember" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="AggregationMember" minOccurs="0"
+ maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Geometry" minOccurs="1"
@@ -132,7 +138,8 @@
use="required" />
</xs:complexType>
</xs:element>
- <xs:element name="MemberProperties" type="collprops" minOccurs="0"/>
+ <xs:element name="MemberProperties" type="collprops"
+ minOccurs="0" />
</xs:sequence>
<xs:attribute name="slotNo" type="xs:int"
use="required" />
@@ -156,17 +163,28 @@
use="optional" />
</xs:complexType>
</xs:element>
+ <xs:element name="Role" maxOccurs="unbounded"
+ minOccurs="0">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="jobList" type="xs:boolean" use="required" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
<xs:element name="Agent" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Role" type="xs:string" maxOccurs="unbounded" />
- <xs:element name="Property" type="property" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Property" type="property"
+ minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="password" type="xs:string"
use="required" />
</xs:complexType>
- </xs:element>
+ </xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
diff --git a/src/main/resources/mapFiles/NewEntityMap.xml b/src/main/resources/mapFiles/NewEntityMap.xml
index a5d5006..dcbab09 100644
--- a/src/main/resources/mapFiles/NewEntityMap.xml
+++ b/src/main/resources/mapFiles/NewEntityMap.xml
@@ -124,4 +124,13 @@
<bind-xml name="Property" node="element"/>
</field>
</class>
+ <class name="com.c2kernel.lifecycle.instance.predefined.entitycreation.NewRole">
+ <map-to xml="Role"/>
+ <field name="name" type="string" direct="true">
+ <bind-xml name="name" node="text"/>
+ </field>
+ <field name="jobList" type="boolean" direct="true">
+ <bind-xml name="jobList" node="attribute"/>
+ </field>
+ </class>
</mapping>