summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/lifecycle/instance/predefined
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-09-09 12:13:21 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-09-09 12:13:21 +0200
commitda731d2bb81666b9c697d9099da632e7dfcdc0f7 (patch)
tree567693c3c48f3d15ecbb2dac4f9db03bb6e58c72 /src/main/java/com/c2kernel/lifecycle/instance/predefined
parentae1e79e33fd30e3d8bcedbef8891a14a048276d7 (diff)
Replaced int sysKey Item identifier with UUID, which is now portable.
ItemPath objects are now used to identify Items throughout the kernel, replacing ints and Integers.
Diffstat (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined')
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java20
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java21
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java38
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddNewSlot.java35
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java43
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java26
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java26
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java11
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveC2KObject.java22
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java25
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java53
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java27
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteProperty.java21
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteViewpoint.java25
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/CreateAgentFromDescription.java17
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/RemoveAgent.java13
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentPassword.java7
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentRoles.java7
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java42
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/item/Erase.java10
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java3
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java7
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java7
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java5
24 files changed, 272 insertions, 239 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java
index 8416820..893ecea 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java
@@ -11,9 +11,12 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -35,25 +38,20 @@ public class AddC2KObject extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
- Logger.msg(1, "AddC2KObject::request() - Starting.");
-
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "AddC2KObject: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
try
{
-
- Logger.msg(5, "AddC2KObject::request() - data:" + getDataList(requestData)[0]);
- C2KLocalObject obj = (C2KLocalObject)Gateway.getMarshaller().unmarshall(getDataList(requestData)[0]);
- Gateway.getStorage().put(itemSysKey, obj, null );
- Logger.msg(1, "AddC2KObject::request() - DONE.");
+ C2KLocalObject obj = (C2KLocalObject)Gateway.getMarshaller().unmarshall(params[0]);
+ Gateway.getStorage().put(item, obj, null );
return requestData;
}
catch( Exception ex )
{
- Logger.error("AddC2KObject::request() - during unmarshall.");
- Logger.error(ex);
- throw new InvalidDataException(ex.toString(), "");
+ throw unknownException(ex);
}
}
} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java
index 4c02cbb..daa8fcc 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java
@@ -10,10 +10,11 @@ package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
-import com.c2kernel.lookup.InvalidItemPathException;
import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.LookupManager;
import com.c2kernel.process.Gateway;
@@ -28,30 +29,22 @@ public class AddDomainPath extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
- Logger.msg(1,"AddAlias::request() - Starting.");
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "AddDomainPath: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
try
{
LookupManager lookupManager = Gateway.getLookupManager();
- DomainPath domainPath = new DomainPath(getDataList(requestData)[0], new ItemPath(itemSysKey));
+ DomainPath domainPath = new DomainPath(params[0], item);
lookupManager.add(domainPath);
- Logger.msg(8,"AddDomainPath::request() - systemKey:" + itemSysKey +
- ". Adding dompath. DONE.");
return requestData;
}
- catch (InvalidItemPathException ex)
- {
- Logger.error(ex);
- throw new InvalidDataException(ex.toString(), "");
- }
catch( Exception ex )
{
- Logger.error("AddDomainPath::request() - during anyHelper.extract.");
- Logger.error(ex);
- throw new InvalidDataException(ex.toString(), "");
+ throw unknownException(ex);
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java
index 98ef8e3..889ee80 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java
@@ -12,12 +12,16 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+import java.util.UUID;
+
import com.c2kernel.collection.Dependency;
import com.c2kernel.collection.MembershipException;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.process.Gateway;
@@ -48,59 +52,55 @@ public class AddMemberToCollection extends PredefinedStep
* 1 - target entity key
*/
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
String collName;
- int entityKey;
+ ItemPath newChild;
Dependency dep;
CastorHashMap props = null;
- Logger.msg(1, "AddMemberToCollection::request() - Starting.");
-
// extract parameters
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "AddMemberToCollection: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
try {
- String[] params = getDataList(requestData);
collName = params[0];
- entityKey = Integer.parseInt(params[1]);
+ newChild = new ItemPath(UUID.fromString(params[1]));
if (params.length > 2)
props = (CastorHashMap)Gateway.getMarshaller().unmarshall(params[2]);
} catch (Exception e) {
- throw new InvalidDataException("Invalid parameters", "");
+ throw new InvalidDataException("AddMemberToCollection: Invalid parameters "+Arrays.toString(params), "");
}
// load collection
C2KLocalObject collObj;
try {
- collObj = Gateway.getStorage().get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
+ collObj = Gateway.getStorage().get(item, ClusterStorage.COLLECTION+"/"+collName, null);
} catch (ObjectNotFoundException ex) {
- throw new InvalidDataException("Collection '"+collName+"' not found in this Item", "");
+ throw new InvalidDataException("AddMemberToCollection: Collection '"+collName+"' not found in this Item", "");
} catch (ClusterStorageException ex) {
Logger.error(ex);
- throw new InvalidDataException("Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
+ throw new InvalidDataException("AddMemberToCollection: Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
}
- if (!(collObj instanceof Dependency)) throw new InvalidDataException("AddMemberToCollection operates on Dependency collections only.", "");
+ if (!(collObj instanceof Dependency)) throw new InvalidDataException("AddMemberToCollection: AddMemberToCollection operates on Dependency collections only.", "");
dep = (Dependency)collObj;
// find member and assign entity
try {
if (props == null)
- dep.addMember(entityKey);
+ dep.addMember(newChild);
else
- dep.addMember(entityKey, props, null);
+ dep.addMember(newChild, props, null);
} catch (MembershipException e) {
- throw new InvalidDataException("Entity "+entityKey+" is the wrong type for this collection", "");
+ throw new InvalidDataException("AddMemberToCollection: Item "+newChild+" is the wrong type for this collection", "");
}
try {
- Gateway.getStorage().put(itemSysKey, dep, null);
+ Gateway.getStorage().put(newChild, dep, null);
} catch (ClusterStorageException e) {
- Logger.error(e);
- throw new InvalidDataException("Error storing collection", "");
+ throw unknownException(e);
}
-
- Logger.msg(1, "AddMemberToCollection::request() - DONE.");
return requestData;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddNewSlot.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddNewSlot.java
index e38f71d..257c644 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddNewSlot.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddNewSlot.java
@@ -12,11 +12,15 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+import java.util.UUID;
+
import com.c2kernel.collection.Aggregation;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.process.Gateway;
@@ -50,46 +54,46 @@ public class AddNewSlot extends PredefinedStep
* 1 - Item Description key (optional)
*/
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
String collName;
- int descKey=-1;
+ ItemPath descKey = null;
Aggregation agg;
- Logger.msg(1, "AddNewSlot::request() - Starting.");
-
// extract parameters
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "AddNewSlot: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
+
try {
- String[] params = getDataList(requestData);
collName = params[0];
- if (params.length > 1) descKey = Integer.parseInt(params[1]);
+ if (params.length > 1 && params[1].length() > 0) descKey = new ItemPath(UUID.fromString(params[1]));
} catch (Exception e) {
- throw new InvalidDataException("Invalid parameters", "");
+ throw new InvalidDataException("AddNewSlot: Invalid parameters "+Arrays.toString(params), "");
}
// load collection
C2KLocalObject collObj;
try {
- collObj = Gateway.getStorage().get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
+ collObj = Gateway.getStorage().get(item, ClusterStorage.COLLECTION+"/"+collName, null);
} catch (ObjectNotFoundException ex) {
- throw new InvalidDataException("Collection '"+collName+"' not found in this Item", "");
+ throw new InvalidDataException("AddNewSlot: Collection '"+collName+"' not found in this Item", "");
} catch (ClusterStorageException ex) {
Logger.error(ex);
- throw new InvalidDataException("Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
+ throw new InvalidDataException("AddNewSlot: Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
}
- if (!(collObj instanceof Aggregation)) throw new InvalidDataException("AddNewSlot operates on Aggregation collections only.", "");
+ if (!(collObj instanceof Aggregation)) throw new InvalidDataException("AddNewSlot: AddNewSlot operates on Aggregation collections only.", "");
agg = (Aggregation)collObj;
// get props
CastorHashMap props = new CastorHashMap();
StringBuffer classProps = new StringBuffer();
- if (descKey > -1) {
+ if (descKey != null) {
PropertyDescriptionList propList;
try {
propList = PropertyUtility.getPropertyDescriptionOutcome(descKey);
} catch (ObjectNotFoundException e) {
- throw new InvalidDataException("Item "+descKey+" does not contain a PropertyDescription outcome to define a slot", "");
+ throw new InvalidDataException("AddNewSlot: Item "+descKey+" does not contain a PropertyDescription outcome to define a slot", "");
}
for (PropertyDescription pd : propList.list) {
props.put(pd.getName(), pd.getDefaultValue());
@@ -101,13 +105,12 @@ public class AddNewSlot extends PredefinedStep
agg.addSlot(props, classProps.toString());
try {
- Gateway.getStorage().put(itemSysKey, agg, null);
+ Gateway.getStorage().put(item, agg, null);
} catch (ClusterStorageException e) {
Logger.error(e);
- throw new InvalidDataException("Error storing collection", "");
+ throw new InvalidDataException("AddNewSlot: Error storing collection", "");
}
- Logger.msg(1, "AddNewSlot::request() - DONE.");
return requestData;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java
index 78d4087..724e974 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java
@@ -12,6 +12,9 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+import java.util.UUID;
+
import com.c2kernel.collection.Aggregation;
import com.c2kernel.collection.AggregationMember;
import com.c2kernel.collection.MembershipException;
@@ -19,6 +22,7 @@ import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.process.Gateway;
@@ -47,67 +51,64 @@ public class AssignItemToSlot extends PredefinedStep
* 2 - target entity key
*/
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
String collName;
int slotNo;
- int sysKey;
+ ItemPath childItem;
Aggregation agg;
- Logger.msg(1, "AssignItemToSlot::request() - Starting.");
-
-
// extract parameters
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "AssignItemToSlot: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
+
try {
- String[] params = getDataList(requestData);
collName = params[0];
slotNo = Integer.parseInt(params[1]);
- sysKey = Integer.parseInt(params[2]);
+ childItem = new ItemPath(UUID.fromString(params[2]));
} catch (Exception e) {
- throw new InvalidDataException("Invalid parameters", "");
+ throw new InvalidDataException("AssignItemToSlot: Invalid parameters "+Arrays.toString(params), "");
}
// load collection
C2KLocalObject collObj;
try {
- collObj = Gateway.getStorage().get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
+ collObj = Gateway.getStorage().get(item, ClusterStorage.COLLECTION+"/"+collName, null);
} catch (ObjectNotFoundException ex) {
- throw new InvalidDataException("Collection '"+collName+"' not found in this Item", "");
+ throw new InvalidDataException("AssignItemToSlot: Collection '"+collName+"' not found in this Item", "");
} catch (ClusterStorageException ex) {
Logger.error(ex);
- throw new InvalidDataException("Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
+ throw new InvalidDataException("AssignItemToSlot: Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
}
- if (!(collObj instanceof Aggregation)) throw new InvalidDataException("AssignItemToSlot operates on Aggregation collections only.", "");
+ if (!(collObj instanceof Aggregation)) throw new InvalidDataException("AssignItemToSlot: AssignItemToSlot operates on Aggregation collections only.", "");
agg = (Aggregation)collObj;
// find member and assign entity
boolean stored = false;
for (AggregationMember member : agg.getMembers().list) {
if (member.getID() == slotNo) {
- if (member.getSystemKey() > -1)
- throw new InvalidDataException("Member slot not empty", "");
+ if (member.getItemPath() != null)
+ throw new InvalidDataException("AssignItemToSlot: Member slot "+slotNo+" not empty", "");
try {
- member.assignItem(sysKey);
+ member.assignItem(childItem);
} catch (MembershipException e) {
- throw new InvalidDataException("Entity "+sysKey+" does not fit in this slot", "");
+ throw new InvalidDataException("AssignItemToSlot: Item "+childItem+" does not fit in slot "+slotNo, "");
}
stored = true;
break;
}
}
if (!stored) {
- throw new InvalidDataException("Member slot "+slotNo+" not found.", "");
+ throw new InvalidDataException("AssignItemToSlot: Member slot "+slotNo+" not found.", "");
}
try {
- Gateway.getStorage().put(itemSysKey, agg, null);
+ Gateway.getStorage().put(item, agg, null);
} catch (ClusterStorageException e) {
- Logger.error(e);
- throw new InvalidDataException("Error storing collection", "");
+ unknownException(e);
}
- Logger.msg(1, "AssignItemToSlot::request() - DONE.");
return requestData;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java
index 772f62e..c6bb654 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java
@@ -12,11 +12,14 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.collection.Aggregation;
import com.c2kernel.collection.AggregationMember;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.process.Gateway;
@@ -44,40 +47,40 @@ public class ClearSlot extends PredefinedStep
* 1 - slot number
*/
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
String collName;
int slotNo;
Aggregation agg;
- Logger.msg(1, "ClearSlot::request() - Starting.");
-
// extract parameters
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "ClearSlot: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
+
try {
- String[] params = getDataList(requestData);
collName = params[0];
slotNo = Integer.parseInt(params[1]);
} catch (Exception e) {
- throw new InvalidDataException("Invalid parameters", "");
+ throw new InvalidDataException("ClearSlot: Invalid parameters "+Arrays.toString(params), "");
}
// load collection
try {
- agg = (Aggregation)Gateway.getStorage().get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
+ agg = (Aggregation)Gateway.getStorage().get(item, ClusterStorage.COLLECTION+"/"+collName, null);
} catch (ObjectNotFoundException ex) {
- throw new InvalidDataException("Collection '"+collName+"' not found in this Item", "");
+ throw new InvalidDataException("ClearSlot: Collection '"+collName+"' not found in this Item", "");
} catch (ClusterStorageException ex) {
Logger.error(ex);
- throw new InvalidDataException("Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
+ throw new InvalidDataException("ClearSlot: Error loading collection '"+collName+"': "+ex.getMessage(), "");
}
// find member and clear
boolean stored = false;
for (AggregationMember member : agg.getMembers().list) {
if (member.getID() == slotNo) {
- if (member.getSystemKey() > -1)
- throw new InvalidDataException("Member slot already empty", "");
+ if (member.getItemPath() != null)
+ throw new InvalidDataException("ClearSlot: Member slot "+slotNo+" already empty", "");
member.clearItem();
stored = true;
break;
@@ -89,12 +92,11 @@ public class ClearSlot extends PredefinedStep
try {
- Gateway.getStorage().put(itemSysKey, agg, null);
+ Gateway.getStorage().put(item, agg, null);
} catch (ClusterStorageException e) {
Logger.error(e);
throw new InvalidDataException("Error storing collection", "");
}
- Logger.msg(1, "ClearSlot::request() - DONE.");
return requestData;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java
index 29d4c54..8a80d60 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java
@@ -7,10 +7,13 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.events.Event;
import com.c2kernel.events.History;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.persistency.TransactionManager;
import com.c2kernel.persistency.outcome.Outcome;
@@ -37,19 +40,18 @@ public class Import extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
-
- Logger.msg(8,"Import::request()");
-
- Logger.msg(1,"Import::request() - Starting.");
String[] params = getDataList(requestData);
-
-
+ if (Logger.doLog(3)) Logger.msg(3, "Import: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
+
int split1 = params[0].indexOf('_');
int split2 = params[0].indexOf(':');
+ if (split1 == -1)
+ throw new InvalidDataException("Import: Invalid parameters "+Arrays.toString(params));
+
requestData = params[1];
String schemaName = params[0].substring(0, split1);
@@ -73,17 +75,17 @@ public class Import extends PredefinedStep
TransactionManager storage = Gateway.getStorage();
Object locker = getWf();
History hist = getWf().getHistory();
- Event event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), getName(), getPath(), getType(), schemaName, schemaVersion, getStateMachine().getName(), getStateMachine().getVersion(), getStateMachine().getTransition(transitionID), viewpoint, timestamp);
+ Event event = hist.addEvent(agent, getCurrentAgentRole(), getName(), getPath(), getType(), schemaName, schemaVersion, getStateMachine().getName(), getStateMachine().getVersion(), getStateMachine().getTransition(transitionID), viewpoint, timestamp);
try {
- storage.put(itemSysKey, new Outcome(event.getID(), requestData, schemaName, schemaVersion), locker);
- storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, viewpoint, schemaVersion, event.getID()), locker);
+ storage.put(item, new Outcome(event.getID(), requestData, schemaName, schemaVersion), locker);
+ storage.put(item, new Viewpoint(item, schemaName, viewpoint, schemaVersion, event.getID()), locker);
if (!"last".equals(viewpoint))
- storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, "last", schemaVersion, event.getID()), locker);
+ storage.put(item, new Viewpoint(item, schemaName, "last", schemaVersion, event.getID()), locker);
} catch (ClusterStorageException e) {
Logger.error(e);
storage.abort(locker);
- throw new InvalidDataException("Could not store imported outcome. Rolled back.");
+ throw new InvalidDataException("Import: Could not store imported outcome. Rolled back.", "");
}
storage.commit(locker);
return requestData;
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
index d0fde2a..7a318ba 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
@@ -12,6 +12,7 @@ import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.InputSource;
+import com.c2kernel.common.InvalidDataException;
import com.c2kernel.lifecycle.instance.Activity;
import com.c2kernel.persistency.outcome.Outcome;
import com.c2kernel.utils.Logger;
@@ -121,12 +122,20 @@ public abstract class PredefinedStep extends Activity
return xmlData.toString();
}
}
+ public InvalidDataException unknownException(Exception ex) {
+ String stepName = this.getClass().getSimpleName();
+ Logger.error(stepName+": Exception:");
+ Logger.error(ex);
+ return new InvalidDataException(stepName+": "+ex.getClass().getSimpleName()+". See log.", "");
+ }
+
// generic bundling of single parameter
static public String bundleData(String data)
{
return "<PredefinedStepOutcome><param><![CDATA[" + data + "]]></param></PredefinedStepOutcome>";
}
- static public String[] getDataList(String xmlData)
+
+ public static String[] getDataList(String xmlData)
{
try
{
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveC2KObject.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveC2KObject.java
index 44d4c5d..fe4e1c8 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveC2KObject.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveC2KObject.java
@@ -13,8 +13,11 @@ package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -34,28 +37,21 @@ public class RemoveC2KObject extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
- Logger.msg(1, "RemoveC2KObject::request() - Starting.");
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "RemoveC2KObject: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
- String path = null;
try
{
- path = getDataList(requestData)[0];
-
- Logger.msg(5, "RemoveC2KObject::request() - path:"+path);
-
- Gateway.getStorage().remove( itemSysKey, path, null );
+ String path = params[0];
+ Gateway.getStorage().remove( item, path, null );
}
catch( Exception ex )
{
- Logger.error("RemoveC2KObject::request() - invalid data - path:"+path);
- Logger.error(ex);
- throw new InvalidDataException(ex.toString(), "");
+ throw unknownException(ex);
}
-
- Logger.msg(1, "RemoveC2KObject::request() - DONE.");
return requestData;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java
index df1c44e..4aabd6b 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java
@@ -10,10 +10,13 @@ package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.LookupManager;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -27,34 +30,30 @@ public class RemoveDomainPath extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
- Logger.msg(8,"RemoveDomainPath::request()");
-
-
- Logger.msg(1,"RemoveDomainPath::request() - Starting.");
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "RemoveDomainPath: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
- DomainPath domainPath = new DomainPath(getDataList(requestData)[0]);
+ DomainPath domainPath = new DomainPath(params[0]);
if (!domainPath.exists())
- throw new InvalidDataException("Domain path "+domainPath.toString()+" does not exist.", "");
+ throw new InvalidDataException("RemoveDomainPath: Domain path "+domainPath.toString()+" does not exist.", "");
if (domainPath.getType()!=DomainPath.ENTITY)
try {
- if (domainPath.getEntity().getSysKey() != itemSysKey)
- throw new InvalidDataException("Domain path "+domainPath.toString()+" is not an alias of the current Item "+itemSysKey, "");
+ if (!domainPath.getItemPath().equals(item))
+ throw new InvalidDataException("RemoveDomainPath: Domain path "+domainPath.toString()+" is not an alias of the current Item "+item, "");
} catch (ObjectNotFoundException ex) {
- throw new InvalidDataException("Domain path "+domainPath.toString()+" is a context.", "");
+ throw new InvalidDataException("RemoveDomainPath: Domain path "+domainPath.toString()+" is a context.", "");
}
try {
LookupManager lookupManager = Gateway.getLookupManager();
lookupManager.delete(domainPath);
- Logger.msg(8,"AddAlias::request() - context:" + domainPath.toString() + " DONE.");
return requestData;
} catch (Exception ex) {
- Logger.error(ex);
- throw new InvalidDataException("Problem updating directory", "");
+ throw unknownException(ex);
}
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java
index 38638cd..726078b 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java
@@ -12,12 +12,16 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+import java.util.UUID;
+
import com.c2kernel.collection.Collection;
import com.c2kernel.collection.CollectionMember;
import com.c2kernel.collection.MembershipException;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.process.Gateway;
@@ -46,42 +50,57 @@ public class RemoveSlotFromCollection extends PredefinedStep
* 2 - target entity key
*/
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
String collName;
- int slotNo;
- int sysKey = -1;
+ int slotNo = -1;
+ ItemPath currentChild = null;
Collection<? extends CollectionMember> coll;
- Logger.msg(1, "RemoveSlotFromCollection::request() - Starting.");
-
// extract parameters
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "RemoveSlotFromCollection: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
+
try {
- String[] params = getDataList(requestData);
collName = params[0];
- slotNo = params[1].length()>0?Integer.parseInt(params[1]):-1;
- if (params.length>2) sysKey = params[2].length()>0?Integer.parseInt(params[2]):-1;
+ if (params.length>1 && params[1].length()>0) slotNo = Integer.parseInt(params[1]);
+ if (params.length>2 && params[2].length()>0) currentChild = new ItemPath(UUID.fromString(params[2]));
} catch (Exception e) {
- throw new InvalidDataException("Invalid parameters", "");
+ throw new InvalidDataException("RemoveSlotFromCollection: Invalid parameters "+Arrays.toString(params), "");
}
- if (slotNo == -1 && sysKey == -1)
- throw new InvalidDataException("Must give either slot number or entity key", "");
+ if (slotNo == -1 && currentChild == null)
+ throw new InvalidDataException("RemoveSlotFromCollection: Must give either slot number or entity key", "");
// load collection
try {
- coll = (Collection<? extends CollectionMember>)Gateway.getStorage().get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
+ coll = (Collection<? extends CollectionMember>)Gateway.getStorage().get(item, ClusterStorage.COLLECTION+"/"+collName, null);
} catch (ObjectNotFoundException ex) {
- throw new InvalidDataException("Collection '"+collName+"' not found in this Item", "");
+ throw new InvalidDataException("RemoveSlotFromCollection: Collection '"+collName+"' not found in this Item", "");
} catch (ClusterStorageException ex) {
Logger.error(ex);
- throw new InvalidDataException("Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
+ throw new InvalidDataException("RemoveSlotFromCollection: Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
}
+ // check the slot is there if it's given by id
+ CollectionMember slot = null;
+ if (slotNo > -1) {
+ try {
+ slot = coll.getMember(slotNo);
+ } catch (ObjectNotFoundException e) {
+ throw new InvalidDataException("RemoveSlotFromCollection: Slot "+slotNo+" not found in this collection", "");
+ }
+ }
+
+ // if both parameters are supplied, check the given item is actually in that slot
+ if (slot != null && !slot.getItemPath().equals(currentChild)) {
+ throw new InvalidDataException("RemoveSlotFromCollection: Item "+currentChild+" was not in slot "+slotNo, "");
+ }
+
if (slotNo == -1) { // find slot from entity key
for (CollectionMember member : coll.getMembers().list) {
- if (member.getSystemKey() == sysKey) {
+ if (member.getItemPath().equals(currentChild)) {
slotNo = member.getID();
break;
}
@@ -100,12 +119,12 @@ public class RemoveSlotFromCollection extends PredefinedStep
// Store the collection
try {
- Gateway.getStorage().put(itemSysKey, coll, null);
+ Gateway.getStorage().put(item, coll, null);
} catch (ClusterStorageException e) {
Logger.error(e);
throw new InvalidDataException("Error storing collection", "");
}
- Logger.msg(1, "RemoveSlotFromCollection::request() - DONE.");
+
return requestData;
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java
index 2163d4c..74570a0 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java
@@ -1,11 +1,14 @@
package com.c2kernel.lifecycle.instance.predefined;
//Java
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.lifecycle.instance.CompositeActivity;
import com.c2kernel.lifecycle.instance.Workflow;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -18,33 +21,31 @@ public class ReplaceDomainWorkflow extends PredefinedStep
}
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
+
Workflow lifeCycle = getWf();
-
- Logger.msg(1, "ReplaceDomainWorkflow::request() - Starting ");
-
+
+ String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "AddC2KObject: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
+
try
{
- Logger.msg(8, "ReplaceDomainWorkflow::request() - data:" + getDataList(requestData)[0]);
lifeCycle.getChildGraphModel().removeVertex(lifeCycle.search("workflow/domain"));
- CompositeActivity domain = (CompositeActivity) Gateway.getMarshaller().unmarshall(getDataList(requestData)[0]);
+ CompositeActivity domain = (CompositeActivity) Gateway.getMarshaller().unmarshall(params[0]);
domain.setName("domain");
lifeCycle.initChild(domain, true, new GraphPoint(150, 100));
// if new workflow, activate it, otherwise refresh the jobs
- if (!domain.active) lifeCycle.run(agent, itemSysKey);
- else lifeCycle.refreshJobs(itemSysKey);
+ if (!domain.active) lifeCycle.run(agent, item);
+ else lifeCycle.refreshJobs(item);
// store new wf
- Gateway.getStorage().put(itemSysKey, lifeCycle, null);
- Logger.msg(1, "ReplaceDomainWorkflow::request() - DONE.");
+ Gateway.getStorage().put(item, lifeCycle, null);
return requestData;
}
catch (Exception ex)
{
- Logger.error("ReplaceDomainWorkflow::request() - during unmarshall.");
- Logger.error(ex);
- throw new InvalidDataException("ReplaceDomainWorkflow::request() - during unmarshall.", null);
+ throw unknownException(ex);
}
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteProperty.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteProperty.java
index abb0e95..079f8e0 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteProperty.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteProperty.java
@@ -11,9 +11,12 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.process.Gateway;
@@ -37,16 +40,14 @@ public class WriteProperty extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
- Logger.msg(1, "WriteProperty::request() - Starting.");
String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "WriteProperty: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
if (params.length != 2)
- throw new InvalidDataException("WriteProperty usage: [ name, value ]", "");
-
- Logger.msg(5, "WriteProperty::request() - name:" + params[0] +" val:"+params[1]);
+ throw new InvalidDataException("WriteProperty: invalid parameters "+Arrays.toString(params), "");
String name = params[0];
String newValue = params[1];
@@ -54,19 +55,17 @@ public class WriteProperty extends PredefinedStep
Property prop;
try {
- prop = (Property)Gateway.getStorage().get(itemSysKey, ClusterStorage.PROPERTY+"/"+name, null);
+ prop = (Property)Gateway.getStorage().get(item, ClusterStorage.PROPERTY+"/"+name, null);
if (!prop.isMutable() && !newValue.equals(prop.getValue()))
- throw new InvalidDataException("Property '"+name+"' is not mutable.", "");
+ throw new InvalidDataException("WriteProperty: Property '"+name+"' is not mutable.", "");
prop.setValue(newValue);
- Gateway.getStorage().put(itemSysKey, prop, null);
+ Gateway.getStorage().put(item, prop, null);
} catch (ObjectNotFoundException e) {
throw new InvalidDataException("WriteProperty: Property '"+name+"' not found.", "");
} catch (ClusterStorageException e) {
- Logger.error(e);
- throw new InvalidDataException("Storage error. See logs.", "");
+ throw unknownException(e);
}
- Logger.msg(1, "WriteProperty::request() - DONE.");
return requestData;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteViewpoint.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteViewpoint.java
index 741a9a2..e64aceb 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteViewpoint.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/WriteViewpoint.java
@@ -1,9 +1,12 @@
package com.c2kernel.lifecycle.instance.predefined;
+import java.util.Arrays;
+
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.events.Event;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.persistency.outcome.Viewpoint;
@@ -17,19 +20,19 @@ public class WriteViewpoint extends PredefinedStep {
}
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
String schemaName;
String viewName;
int evId;
-
- Logger.msg(1, "WriteViewpoint::request() - Starting.");
+
String[] params = getDataList(requestData);
+ if (Logger.doLog(3)) Logger.msg(3, "WriteViewpoint: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params));
// outcometype, name and evId. Event and Outcome should be checked so schema version should be discovered.
if (params.length != 3)
- throw new InvalidDataException("WriteViewpoint usage: [ schemaName, viewName, eventId ]", "");
+ throw new InvalidDataException("WriteViewpoint: Invalid parameters "+Arrays.toString(params), "");
schemaName = params[0];
viewName = params[1];
@@ -37,29 +40,29 @@ public class WriteViewpoint extends PredefinedStep {
try {
evId = Integer.parseInt(params[2]);
} catch (NumberFormatException ex) {
- throw new InvalidDataException("Parameter 3 (EventId) must be an integer", "");
+ throw new InvalidDataException("WriteViewpoint: Parameter 3 (EventId) must be an integer", "");
}
// Find event
Event ev;
try {
- ev = (Event)Gateway.getStorage().get(itemSysKey, ClusterStorage.HISTORY+"/"+evId, null);
+ ev = (Event)Gateway.getStorage().get(item, ClusterStorage.HISTORY+"/"+evId, null);
} catch (ObjectNotFoundException e) {
Logger.error(e);
- throw new InvalidDataException("Event "+evId+" not found", "");
+ throw new InvalidDataException("WriteViewpoint: Event "+evId+" not found", "");
} catch (ClusterStorageException e) {
Logger.error(e);
- throw new InvalidDataException("Exception loading event", "");
+ throw new InvalidDataException("WriteViewpoint: Exception loading event", "");
}
// Write new viewpoint
- Viewpoint newView = new Viewpoint(itemSysKey, schemaName, viewName, ev.getSchemaVersion(), evId);
+ Viewpoint newView = new Viewpoint(item, schemaName, viewName, ev.getSchemaVersion(), evId);
try {
- Gateway.getStorage().put(itemSysKey, newView, null);
+ Gateway.getStorage().put(item, newView, null);
} catch (ClusterStorageException e) {
Logger.error(e);
- throw new InvalidDataException("Could not store new viewpoint", "");
+ throw new InvalidDataException("WriteViewpoint: Could not store new viewpoint", "");
}
return requestData;
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/CreateAgentFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/CreateAgentFromDescription.java
index a7971f3..520f70f 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/CreateAgentFromDescription.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/CreateAgentFromDescription.java
@@ -19,6 +19,7 @@ import com.c2kernel.entity.CorbaServer;
import com.c2kernel.entity.agent.ActiveEntity;
import com.c2kernel.lifecycle.instance.predefined.item.CreateItemFromDescription;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -42,7 +43,7 @@ public class CreateAgentFromDescription extends CreateItemFromDescription
* @see com.c2kernel.lifecycle.instance.predefined.item.CreateItemFromDescription#runActivityLogic(com.c2kernel.lookup.AgentPath, int, int, java.lang.String)
*/
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath itemPath,
int transitionID, String requestData) throws InvalidDataException {
String[] input = getDataList(requestData);
@@ -67,8 +68,8 @@ public class CreateAgentFromDescription extends CreateItemFromDescription
} catch (ObjectNotFoundException ex) { }
// generate new entity key
- Logger.msg(6, "CreateItemFromDescription - Requesting new sysKey");
- AgentPath newAgentPath = Gateway.getNextKeyManager().generateNextAgentKey();
+ Logger.msg(6, "CreateItemFromDescription - Requesting new agent path");
+ AgentPath newAgentPath = new AgentPath(newName);
// resolve the item factory
Logger.msg(6, "CreateItemFromDescription - Resolving item factory");
@@ -77,7 +78,7 @@ public class CreateAgentFromDescription extends CreateItemFromDescription
Logger.msg(3, "CreateItemFromDescription - Creating Item");
CorbaServer factory = Gateway.getCorbaServer();
if (factory == null) throw new AccessRightsException("This process cannot create new Items", "");
- ActiveEntity newAgent = (ActiveEntity)factory.createEntity(newAgentPath);
+ ActiveEntity newAgent = factory.createAgent(newAgentPath);
Gateway.getLookupManager().add(newAgentPath);
// initialise it with its properties and workflow
@@ -85,10 +86,10 @@ public class CreateAgentFromDescription extends CreateItemFromDescription
Logger.msg(3, "CreateItemFromDescription - Initializing Item");
newAgent.initialise(
- agent.getSysKey(),
- Gateway.getMarshaller().marshall(getNewProperties(itemSysKey, newName, agent)),
- Gateway.getMarshaller().marshall(getNewWorkflow(itemSysKey)),
- Gateway.getMarshaller().marshall(getNewCollections(itemSysKey))
+ agent.getSystemKey(),
+ Gateway.getMarshaller().marshall(getNewProperties(itemPath, newName, agent)),
+ Gateway.getMarshaller().marshall(getNewWorkflow(itemPath)),
+ Gateway.getMarshaller().marshall(getNewCollections(itemPath))
);
// add roles if given
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/RemoveAgent.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/RemoveAgent.java
index 0630f6c..735a17d 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/RemoveAgent.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/RemoveAgent.java
@@ -6,7 +6,8 @@ import com.c2kernel.common.ObjectCannotBeUpdated;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
-import com.c2kernel.lookup.InvalidItemPathException;
+import com.c2kernel.lookup.InvalidAgentPathException;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.process.Gateway;
@@ -19,16 +20,16 @@ public class RemoveAgent extends PredefinedStep {
}
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath itemPath,
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(1, "RemoveAgent::request() - Starting.");
AgentPath targetAgent;
try {
- targetAgent = new AgentPath(itemSysKey);
- } catch (InvalidItemPathException ex) {
- throw new InvalidDataException("Could not resolve syskey "+itemSysKey+" as an Agent.");
+ targetAgent = new AgentPath(itemPath);
+ } catch (InvalidAgentPathException ex) {
+ throw new InvalidDataException("Could not resolve "+itemPath+" as an Agent.");
}
String agentName = targetAgent.getAgentName();
@@ -49,7 +50,7 @@ public class RemoveAgent extends PredefinedStep {
//clear out all storages
try {
- Gateway.getStorage().removeCluster(targetAgent.getSysKey(), "", null);
+ Gateway.getStorage().removeCluster(targetAgent, "", null);
} catch (ClusterStorageException e) {
Logger.error(e);
throw new InvalidDataException("Error deleting storage for "+agentName, "");
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentPassword.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentPassword.java
index 09fdefe..6c0caaa 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentPassword.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentPassword.java
@@ -9,6 +9,7 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.InvalidItemPathException;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -19,16 +20,16 @@ public class SetAgentPassword extends PredefinedStep {
}
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(1, "SetAgentPassword::request() - Starting.");
AgentPath targetAgent;
try {
- targetAgent = new AgentPath(itemSysKey);
+ targetAgent = new AgentPath(item);
} catch (InvalidItemPathException ex) {
- throw new InvalidDataException("Could not resolve syskey "+itemSysKey+" as an Agent.");
+ throw new InvalidDataException("Could not resolve syskey "+item+" as an Agent.");
}
String agentName = targetAgent.getAgentName();
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentRoles.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentRoles.java
index 8bcba30..8cdcc49 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentRoles.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/agent/SetAgentRoles.java
@@ -7,6 +7,7 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.InvalidItemPathException;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -18,7 +19,7 @@ public class SetAgentRoles extends PredefinedStep {
}
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(1, "SetAgentRoles::request() - Starting.");
@@ -26,9 +27,9 @@ public class SetAgentRoles extends PredefinedStep {
String[] params = getDataList(requestData);
AgentPath targetAgent;
try {
- targetAgent = new AgentPath(itemSysKey);
+ targetAgent = new AgentPath(item);
} catch (InvalidItemPathException ex) {
- throw new InvalidDataException("Could not resolve syskey "+itemSysKey+" as an Agent.");
+ throw new InvalidDataException("Could not resolve syskey "+item+" as an Agent.");
}
RolePath[] currentRoles = targetAgent.getRoles();
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java
index 728631c..60218e8 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java
@@ -53,7 +53,7 @@ public class CreateItemFromDescription extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath itemPath,
int transitionID, String requestData) throws InvalidDataException {
String[] input = getDataList(requestData);
@@ -65,17 +65,17 @@ public class CreateItemFromDescription extends PredefinedStep
try {
// check if the path is already taken
DomainPath context = new DomainPath(new DomainPath(domPath), newName);
- Logger.debug(8,"context "+context.getSysKey()+" "+context.getPath()+" "+context.getString());
- if (context.getSysKey()!=-1)
- throw new ObjectAlreadyExistsException("The item name " +newName+ " exists already.", "");
+ //Logger.debug(8,"context "+context.getItemPath()+" "+context.getPath()+" "+context.getString());
+ if (context.exists())
+ throw new ObjectAlreadyExistsException("The path " +context+ " exists already.", "");
// get init objects
/* ITEM CREATION */
// generate new entity key
- Logger.msg(6, "CreateItemFromDescription - Requesting new sysKey");
- ItemPath entityPath = Gateway.getNextKeyManager().generateNextEntityKey();
+ Logger.msg(6, "CreateItemFromDescription - Requesting new item path");
+ ItemPath newItemPath = new ItemPath();
// resolve the item factory
Logger.msg(6, "CreateItemFromDescription - Resolving item factory");
@@ -84,8 +84,8 @@ public class CreateItemFromDescription extends PredefinedStep
Logger.msg(3, "CreateItemFromDescription - Creating Item");
CorbaServer factory = Gateway.getCorbaServer();
if (factory == null) throw new AccessRightsException("This process cannot create new Items", "");
- TraceableEntity newItem = (TraceableEntity)factory.createEntity(entityPath);
- Gateway.getLookupManager().add(entityPath);
+ TraceableEntity newItem = factory.createItem(newItemPath);
+ Gateway.getLookupManager().add(newItemPath);
// initialise it with its properties and workflow
@@ -93,15 +93,15 @@ public class CreateItemFromDescription extends PredefinedStep
Logger.msg(3, "CreateItemFromDescription - Initializing Item");
newItem.initialise(
- agent.getSysKey(),
- Gateway.getMarshaller().marshall(getNewProperties(itemSysKey, newName, agent)),
- Gateway.getMarshaller().marshall(getNewWorkflow(itemSysKey)),
- Gateway.getMarshaller().marshall(getNewCollections(itemSysKey))
+ agent.getSystemKey(),
+ Gateway.getMarshaller().marshall(getNewProperties(itemPath, newName, agent)),
+ Gateway.getMarshaller().marshall(getNewWorkflow(itemPath)),
+ Gateway.getMarshaller().marshall(getNewCollections(itemPath))
);
// add its domain path
Logger.msg(3, "CreateItemFromDescription - Creating "+context);
- context.setEntity(entityPath);
+ context.setEntity(newItemPath);
Gateway.getLookupManager().add(context);
return requestData;
} catch (Exception e) {
@@ -111,9 +111,9 @@ public class CreateItemFromDescription extends PredefinedStep
}
- protected PropertyArrayList getNewProperties(int itemSysKey, String newName, AgentPath agent) throws ObjectNotFoundException {
+ protected PropertyArrayList getNewProperties(ItemPath itemPath, String newName, AgentPath agent) throws ObjectNotFoundException {
// copy properties -- intend to create from propdesc
- PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(itemSysKey);
+ PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(itemPath);
PropertyArrayList props = pdList.instanciate();
// set Name prop or create if not present
boolean foundName = false;
@@ -128,13 +128,13 @@ public class CreateItemFromDescription extends PredefinedStep
return props;
}
- protected CompositeActivity getNewWorkflow(int itemSysKey) throws ClusterStorageException, ObjectNotFoundException, InvalidDataException {
+ protected CompositeActivity getNewWorkflow(ItemPath itemPath) throws ClusterStorageException, ObjectNotFoundException, InvalidDataException {
// loop through collections, collecting instantiated descriptions and finding the default workflow def
- String[] collNames = Gateway.getStorage().getClusterContents(itemSysKey, ClusterStorage.COLLECTION);
+ String[] collNames = Gateway.getStorage().getClusterContents(itemPath, ClusterStorage.COLLECTION);
String wfDefName = null; Integer wfDefVer = null;
for (String collName : collNames) {
if (collName.equalsIgnoreCase("workflow")) {
- Collection<? extends CollectionMember> thisCol = (Collection<? extends CollectionMember>)Gateway.getStorage().get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
+ Collection<? extends CollectionMember> thisCol = (Collection<? extends CollectionMember>)Gateway.getStorage().get(itemPath, ClusterStorage.COLLECTION+"/"+collName, null);
ArrayList<? extends CollectionMember> members = thisCol.getMembers().list;
// get the first member from the wf collection
CollectionMember wfMember = members.get(0);
@@ -164,12 +164,12 @@ public class CreateItemFromDescription extends PredefinedStep
}
}
- protected CollectionArrayList getNewCollections(int itemSysKey) throws ClusterStorageException, ObjectNotFoundException {
+ protected CollectionArrayList getNewCollections(ItemPath itemPath) throws ClusterStorageException, ObjectNotFoundException {
// loop through collections, collecting instantiated descriptions and finding the default workflow def
CollectionArrayList colls = new CollectionArrayList();
- String[] collNames = Gateway.getStorage().getClusterContents(itemSysKey, ClusterStorage.COLLECTION);
+ String[] collNames = Gateway.getStorage().getClusterContents(itemPath, ClusterStorage.COLLECTION);
for (String collName : collNames) {
- Collection<? extends CollectionMember> thisCol = (Collection<? extends CollectionMember>)Gateway.getStorage().get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
+ Collection<? extends CollectionMember> thisCol = (Collection<? extends CollectionMember>)Gateway.getStorage().get(itemPath, ClusterStorage.COLLECTION+"/"+collName, null);
if (thisCol instanceof CollectionDescription) {
CollectionDescription<? extends CollectionMember> thisDesc = (CollectionDescription<? extends CollectionMember>)thisCol;
colls.put(thisDesc.newInstance());
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/Erase.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/Erase.java
index 81eb329..b15928a 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/Erase.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/item/Erase.java
@@ -40,7 +40,7 @@ public class Erase extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(1, "Erase::request() - Starting.");
@@ -48,19 +48,19 @@ public class Erase extends PredefinedStep
try
{
// get all domain paths
- Iterator<Path> domPaths = Gateway.getLookup().searchAliases(new ItemPath(itemSysKey));
+ Iterator<Path> domPaths = Gateway.getLookup().searchAliases(item);
while (domPaths.hasNext()) {
DomainPath path = (DomainPath)domPaths.next();
// delete them
- if (path.getSysKey() == itemSysKey)
+ if (path.getItemPath().equals(item))
Gateway.getLookupManager().delete(path);
}
//clear out all storages
- Gateway.getStorage().removeCluster(itemSysKey, "", null);
+ Gateway.getStorage().removeCluster(item, "", null);
//remove entity path
- Gateway.getLookupManager().delete(new ItemPath(itemSysKey));
+ Gateway.getLookupManager().delete(item);
}
catch( Exception ex )
{
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java
index 585f96f..35438e8 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java
@@ -9,6 +9,7 @@ import com.c2kernel.common.ObjectCannotBeUpdated;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -19,7 +20,7 @@ public class AddDomainContext extends PredefinedStep {
}
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(1, "AddDomainContext::request() - Starting.");
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java
index f2396da..45ae445 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java
@@ -11,6 +11,7 @@ import com.c2kernel.common.InvalidDataException;
import com.c2kernel.entity.imports.ImportAgent;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -24,14 +25,14 @@ public class CreateNewAgent extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
String redactedRequestData;
try {
ImportAgent newAgent = (ImportAgent)Gateway.getMarshaller().unmarshall(requestData);
- newAgent.create(agent.getSysKey());
- newAgent.password = "REDACTED";
+ newAgent.create(agent, true);
+ newAgent.setPassword("REDACTED");
redactedRequestData = Gateway.getMarshaller().marshall(newAgent);
return redactedRequestData;
} catch (Exception ex) {
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java
index 19fd80a..a1d1755 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java
@@ -14,6 +14,7 @@ import com.c2kernel.common.InvalidDataException;
import com.c2kernel.entity.imports.ImportItem;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -27,12 +28,12 @@ public class CreateNewItem extends PredefinedStep
//requestdata is xmlstring
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
try {
- ImportItem item = (ImportItem)Gateway.getMarshaller().unmarshall(requestData);
- item.create(agent.getSysKey(), false);
+ ImportItem newItem = (ImportItem)Gateway.getMarshaller().unmarshall(requestData);
+ newItem.create(agent, false);
return requestData;
} catch (Exception ex) {
Logger.error(ex);
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java
index 956166a..05d399c 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java
@@ -7,6 +7,7 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -16,7 +17,7 @@ public class RemoveDomainContext extends PredefinedStep {
}
@Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath item,
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(1, "RemoveDomainContext::request() - Starting.");
@@ -25,7 +26,7 @@ public class RemoveDomainContext extends PredefinedStep {
if (!pathToDelete.exists())
throw new InvalidDataException("Context "+pathToDelete+" does not exist", "");
try {
- pathToDelete.getEntity();
+ pathToDelete.getItemPath();
throw new InvalidDataException("Path "+pathToDelete+" is an Entity. Use its own Erase step instead, or RemoveAgent.", "");
} catch (ObjectNotFoundException ex) { }
if (Gateway.getLookup().getChildren(pathToDelete).hasNext())