summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java
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/AddMemberToCollection.java
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/AddMemberToCollection.java')
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java38
1 files changed, 19 insertions, 19 deletions
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;
}
}