From da731d2bb81666b9c697d9099da632e7dfcdc0f7 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 9 Sep 2014 12:13:21 +0200 Subject: 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. --- .../instance/predefined/AddMemberToCollection.java | 38 +++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/AddMemberToCollection.java') 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; } } -- cgit v1.2.3