summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/lifecycle/instance
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
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')
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Activity.java59
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java5
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java39
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java19
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Join.java15
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Loop.java7
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java7
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Split.java11
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java16
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Workflow.java45
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java11
-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
35 files changed, 402 insertions, 343 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
index 88cbeb6..95e0ede 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
@@ -19,6 +19,8 @@ import com.c2kernel.lifecycle.instance.stateMachine.State;
import com.c2kernel.lifecycle.instance.stateMachine.StateMachine;
import com.c2kernel.lifecycle.instance.stateMachine.Transition;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.InvalidAgentPathException;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.persistency.outcome.Outcome;
@@ -128,7 +130,7 @@ public class Activity extends WfVertex
/** cf Item request
* @throws ObjectNotFoundException
* @throws PersistencyException */
- public String request(AgentPath agent, int itemSysKey, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectNotFoundException, PersistencyException
+ public String request(AgentPath agent, ItemPath itemPath, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectNotFoundException, PersistencyException
{
// Find requested transition
@@ -154,7 +156,7 @@ public class Activity extends WfVertex
State newState = getStateMachine().traverse(this, transition, agent);
// Run extra logic in predefined steps here
- String outcome = runActivityLogic(agent, itemSysKey, transitionID, requestData);
+ String outcome = runActivityLogic(agent, itemPath, transitionID, requestData);
// set new state and reservation
setState(newState.getId());
@@ -165,26 +167,26 @@ public class Activity extends WfVertex
try {
History hist = getWf().getHistory();
if (storeOutcome)
- newEvent = hist.addEvent(agent.getAgentName(), usedRole, getName(), getPath(), getType(), schema.docType, schema.docVersion,
+ newEvent = hist.addEvent(agent, usedRole, getName(), getPath(), getType(), schema.docType, schema.docVersion,
getStateMachine().getName(), getStateMachine().getVersion(), transition, viewName);
else
- newEvent = hist.addEvent(agent.getAgentName(), usedRole, getName(), getPath(), getType(),
+ newEvent = hist.addEvent(agent, usedRole, getName(), getPath(), getType(),
getStateMachine().getName(), getStateMachine().getVersion(), transition);
Logger.msg(7, "Activity::auditEvent() - Event:" + newEvent.getName() + " was added to the AuditTrail");
if (storeOutcome) {
Outcome newOutcome = new Outcome(newEvent.getID(), outcome, schema.docType, schema.docVersion);
- Gateway.getStorage().put(itemSysKey, newOutcome, getWf());
+ Gateway.getStorage().put(itemPath, newOutcome, getWf());
// update specific view if defined
if (viewName != null && !viewName.equals("")) {
- Viewpoint currentView = new Viewpoint(itemSysKey, schema.docType, viewName, schema.docVersion, newEvent.getID());
- Gateway.getStorage().put(itemSysKey, currentView, getWf());
+ Viewpoint currentView = new Viewpoint(itemPath, schema.docType, viewName, schema.docVersion, newEvent.getID());
+ Gateway.getStorage().put(itemPath, currentView, getWf());
}
// update last view
- Viewpoint currentView = new Viewpoint(itemSysKey, schema.docType, "last", schema.docVersion, newEvent.getID());
- Gateway.getStorage().put(itemSysKey, currentView, getWf());
+ Viewpoint currentView = new Viewpoint(itemPath, schema.docType, "last", schema.docVersion, newEvent.getID());
+ Gateway.getStorage().put(itemPath, currentView, getWf());
}
Gateway.getStorage().commit(getWf());
} catch (ClusterStorageException ex) {
@@ -195,18 +197,18 @@ public class Activity extends WfVertex
if (newState.isFinished()) {
if (!getProperties().get("Breakpoint").equals(Boolean.TRUE))
- runNext(agent, itemSysKey);
+ runNext(agent, itemPath);
}
DateUtility.setToNow(mStateDate);
//refresh all the job lists
- pushJobsToAgents(itemSysKey);
+ pushJobsToAgents(itemPath);
return outcome;
}
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ protected String runActivityLogic(AgentPath agent, ItemPath itemPath,
int transitionID, String requestData) throws InvalidDataException {
// Overriden in predefined steps
return requestData;
@@ -281,7 +283,7 @@ public class Activity extends WfVertex
* @throws PersistencyException
* @throws ObjectAlreadyExistsException */
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runNext(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
setActive(false);
try
@@ -305,7 +307,7 @@ public class Activity extends WfVertex
}
Logger.debug(8, outVertices + " " + outVertices2);
if (!hasNoNext)
- ((WfVertex) outVertices[0]).run(agent, itemSysKey);
+ ((WfVertex) outVertices[0]).run(agent, itemPath);
else
{
if (getParent() != null && getParent().getName().equals("domain")) // workflow
@@ -315,7 +317,7 @@ public class Activity extends WfVertex
{
CompositeActivity parent = (CompositeActivity) getParent();
if (parent != null)
- parent.runNext(agent, itemSysKey);
+ parent.runNext(agent, itemPath);
}
}
}
@@ -365,7 +367,7 @@ public class Activity extends WfVertex
* @throws PersistencyException
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void run(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
Logger.debug(8, getPath() + " run " + getState());
@@ -373,12 +375,12 @@ public class Activity extends WfVertex
boolean finished = getStateMachine().getState(getState()).isFinished();
if (finished)
{
- runNext(agent, itemSysKey);
+ runNext(agent, itemPath);
}
else
{
DateUtility.setToNow(mStateDate);
- pushJobsToAgents(itemSysKey);
+ pushJobsToAgents(itemPath);
}
}
/**
@@ -391,10 +393,10 @@ public class Activity extends WfVertex
* @throws PersistencyException
*/
@Override
- public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runFirst(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
Logger.debug(8, getPath() + " runfirst");
- run(agent, itemSysKey);
+ run(agent, itemPath);
}
/** @return the current ability to be executed */
public boolean getActive()
@@ -424,16 +426,17 @@ public class Activity extends WfVertex
/**
* returns the lists of jobs for the activity and children (cf com.c2kernel.entity.Job)
+ * @throws InvalidAgentPathException
*/
- public ArrayList<Job> calculateJobs(AgentPath agent, int itemSysKey, boolean recurse) throws ObjectNotFoundException, InvalidDataException
+ public ArrayList<Job> calculateJobs(AgentPath agent, ItemPath itemPath, boolean recurse) throws ObjectNotFoundException, InvalidDataException, InvalidAgentPathException
{
- return calculateJobsBase(agent, itemSysKey, false);
+ return calculateJobsBase(agent, itemPath, false);
} //
- public ArrayList<Job> calculateAllJobs(AgentPath agent, int itemSysKey, boolean recurse) throws ObjectNotFoundException, InvalidDataException
+ public ArrayList<Job> calculateAllJobs(AgentPath agent, ItemPath itemPath, boolean recurse) throws ObjectNotFoundException, InvalidDataException, InvalidAgentPathException
{
- return calculateJobsBase(agent, itemSysKey, true);
+ return calculateJobsBase(agent, itemPath, true);
}
- private ArrayList<Job> calculateJobsBase(AgentPath agent, int itemSysKey, boolean includeInactive) throws ObjectNotFoundException, InvalidDataException
+ private ArrayList<Job> calculateJobsBase(AgentPath agent, ItemPath itemPath, boolean includeInactive) throws ObjectNotFoundException, InvalidDataException, InvalidAgentPathException
{
Logger.msg(7, "calculateJobs - " + getPath());
ArrayList<Job> jobs = new ArrayList<Job>();
@@ -443,13 +446,13 @@ public class Activity extends WfVertex
Logger.msg(7, "Activity.calculateJobs() - Got " + transitions.size() + " transitions.");
for (Transition transition : transitions.keySet()) {
Logger.msg(7, "Creating Job object for transition " + transition);
- jobs.add(new Job(this, itemSysKey, transition, agent, transitions.get(transition)));
+ jobs.add(new Job(this, itemPath, transition, agent, transitions.get(transition)));
}
}
return jobs;
}
- public void pushJobsToAgents(int itemSysKey)
+ public void pushJobsToAgents(ItemPath itemPath)
{
String agentRole = getCurrentAgentRole();
if (agentRole == null || agentRole.length()==0) return;
@@ -463,7 +466,7 @@ public class Activity extends WfVertex
}
if (myRole.hasJobList())
- new JobPusher(this, itemSysKey, myRole).start();
+ new JobPusher(this, itemPath, myRole).start();
}
/**
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java b/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java
index 0ecdb7f..e8e548e 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java
@@ -6,6 +6,7 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
/**
* @version $Revision: 1.16 $ $Date: 2005/05/10 15:14:54 $
* @author $Author: abranson $
@@ -20,12 +21,12 @@ public class AndSplit extends Split
super();
}
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runNext(AgentPath agent, ItemPath item) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
AdvancementCalculator adv = new AdvancementCalculator();
adv.calculate((CompositeActivity) getParent());
Vertex[] outVertices = getOutGraphables();
for (Vertex outVertice : outVertices)
- ((WfVertex) outVertice).run(agent, itemSysKey);
+ ((WfVertex) outVertice).run(agent, item);
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
index e6d1bf9..949d918 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
@@ -12,6 +12,8 @@ import com.c2kernel.graph.model.GraphModel;
import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.graph.model.GraphableVertex;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.InvalidAgentPathException;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.utils.Logger;
/**
@@ -288,32 +290,33 @@ public class CompositeActivity extends Activity
* @see com.c2kernel.lifecycle.instance.WfVertex#run()
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void run(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
- super.run(agent, itemSysKey);
+ super.run(agent, itemPath);
if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished())
{
WfVertex first = (WfVertex) getChildrenGraphModel().getStartVertex();
- first.run(agent, itemSysKey);
+ first.run(agent, itemPath);
}
}
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, AccessRightsException, InvalidTransitionException, ObjectNotFoundException, PersistencyException
+ public void runNext(AgentPath agent, ItemPath itemPath) throws InvalidDataException, AccessRightsException, InvalidTransitionException, ObjectNotFoundException, PersistencyException
{
if (!getStateMachine().getState(state).isFinished())
- request(agent, itemSysKey, CompositeActivity.COMPLETE, null);
- super.runNext(agent, itemSysKey);
+ request(agent, itemPath, CompositeActivity.COMPLETE, null);
+ super.runNext(agent, itemPath);
}
/**
* @throws InvalidDataException
* @throws ObjectNotFoundException
+ * @throws InvalidAgentPathException
* @see com.c2kernel.lifecycle.instance.Activity#calculateJobs()
*/
@Override
- public ArrayList<Job> calculateJobs(AgentPath agent, int itemSysKey, boolean recurse) throws ObjectNotFoundException, InvalidDataException
+ public ArrayList<Job> calculateJobs(AgentPath agent, ItemPath itemPath, boolean recurse) throws ObjectNotFoundException, InvalidDataException, InvalidAgentPathException
{
ArrayList<Job> jobs = new ArrayList<Job>();
boolean childActive = false;
@@ -322,16 +325,16 @@ public class CompositeActivity extends Activity
if (getChildren()[i] instanceof Activity)
{
Activity child = (Activity) getChildren()[i];
- jobs.addAll(child.calculateJobs(agent, itemSysKey, recurse));
+ jobs.addAll(child.calculateJobs(agent, itemPath, recurse));
childActive |= child.active;
}
if (!childActive)
- jobs.addAll(super.calculateJobs(agent, itemSysKey, recurse));
+ jobs.addAll(super.calculateJobs(agent, itemPath, recurse));
return jobs;
}
@Override
- public ArrayList<Job> calculateAllJobs(AgentPath agent, int itemSysKey, boolean recurse) throws ObjectNotFoundException, InvalidDataException
+ public ArrayList<Job> calculateAllJobs(AgentPath agent, ItemPath itemPath, boolean recurse) throws ObjectNotFoundException, InvalidDataException, InvalidAgentPathException
{
ArrayList<Job> jobs = new ArrayList<Job>();
if (recurse)
@@ -339,9 +342,9 @@ public class CompositeActivity extends Activity
if (getChildren()[i] instanceof Activity)
{
Activity child = (Activity) getChildren()[i];
- jobs.addAll(child.calculateAllJobs(agent, itemSysKey, recurse));
+ jobs.addAll(child.calculateAllJobs(agent, itemPath, recurse));
}
- jobs.addAll(super.calculateAllJobs(agent, itemSysKey, recurse));
+ jobs.addAll(super.calculateAllJobs(agent, itemPath, recurse));
return jobs;
}
@@ -413,21 +416,21 @@ public class CompositeActivity extends Activity
}
@Override
- public String request(AgentPath agent, int itemSysKey, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectNotFoundException, PersistencyException
+ public String request(AgentPath agent, ItemPath itemPath, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectNotFoundException, PersistencyException
{
if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished() && transitionID == CompositeActivity.START)
- ((WfVertex) getChildrenGraphModel().getStartVertex()).run(agent, itemSysKey);
+ ((WfVertex) getChildrenGraphModel().getStartVertex()).run(agent, itemPath);
- return super.request(agent, itemSysKey, transitionID, requestData);
+ return super.request(agent, itemPath, transitionID, requestData);
}
- public void refreshJobs(int itemSysKey)
+ public void refreshJobs(ItemPath itemPath)
{
GraphableVertex[] children = getChildren();
for (GraphableVertex element : children)
if (element instanceof CompositeActivity)
- ((CompositeActivity) element).refreshJobs(itemSysKey);
+ ((CompositeActivity) element).refreshJobs(itemPath);
else if (element instanceof Activity)
- ((Activity) element).pushJobsToAgents(itemSysKey);
+ ((Activity) element).pushJobsToAgents(itemPath);
}
} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java b/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java
index 89e7708..d134daf 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java
@@ -6,6 +6,7 @@ import com.c2kernel.entity.Agent;
import com.c2kernel.entity.AgentHelper;
import com.c2kernel.entity.agent.JobArrayList;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.Path;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.process.Gateway;
@@ -14,43 +15,43 @@ import com.c2kernel.utils.Logger;
final class JobPusher extends Thread {
private final Activity activity;
private final RolePath myRole;
- private final int itemSysKey;
+ private final ItemPath itemPath;
- JobPusher(Activity activity, int itemSysKey, RolePath role) {
+ JobPusher(Activity activity, ItemPath itemPath, RolePath role) {
this.activity = activity;
- this.itemSysKey = itemSysKey;
+ this.itemPath = itemPath;
this.myRole = role;
}
@Override
public void run()
{
- Thread.currentThread().setName("Agent job pusher for "+itemSysKey+":"+activity.getName()+" to role "+myRole);
+ Thread.currentThread().setName("Agent job pusher for "+itemPath+":"+activity.getName()+" to role "+myRole);
for (Iterator<Path> e = myRole.getChildren(); e.hasNext();)
{
AgentPath nextAgent = (AgentPath)e.next();
- Logger.msg(7, "Activity.pushJobsToAgents() - Calculating jobs for " + nextAgent.getAgentName());
+ Logger.msg(7, "Activity.pushJobsToAgents() - Calculating jobs for " + nextAgent);
try
{
// get joblist for user
- JobArrayList jobList = new JobArrayList(this.activity.calculateJobs(nextAgent, itemSysKey, false));
+ JobArrayList jobList = new JobArrayList(this.activity.calculateJobs(nextAgent, itemPath, false));
Logger.msg(7, "Activity.pushJobsToAgents() - User will receive " + jobList.list.size() + " jobs");
String stringJobs = Gateway.getMarshaller().marshall(jobList);
// push it to the agent
org.omg.CORBA.Object agentIOR = nextAgent.getIOR();
Agent thisAgent = AgentHelper.narrow(agentIOR);
Logger.msg(7, "Calling agent "+thisAgent.getSystemKey()+" from "+activity.getPath());
- thisAgent.refreshJobList(itemSysKey, activity.getPath(), stringJobs);
+ thisAgent.refreshJobList(itemPath.getSystemKey(), activity.getPath(), stringJobs);
}
catch (Exception ex)
{
Logger.error(
"Agent "
- + nextAgent.getAgentName()
+ + nextAgent
+ " of role "
+ myRole
+ " could not be found to be informed of a change in "
- + itemSysKey);
+ + itemPath);
Logger.error(ex);
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Join.java b/src/main/java/com/c2kernel/lifecycle/instance/Join.java
index 7f50ece..a811f8f 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Join.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Join.java
@@ -9,6 +9,7 @@ import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.graph.traversal.GraphTraversal;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
/**
* @version $Revision: 1.52 $ $Date: 2005/05/10 15:14:54 $
* @author $Author: abranson $
@@ -36,7 +37,7 @@ public class Join extends WfVertex
* @see com.c2kernel.lifecycle.instance.WfVertex#runNext()
*/
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runNext(AgentPath agent, ItemPath item) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
AdvancementCalculator adv = new AdvancementCalculator();
adv.calculate((CompositeActivity) getParent());
@@ -46,10 +47,10 @@ public class Join extends WfVertex
if (outVertices.length > 0)
{
WfVertex nextAct = (WfVertex) outVertices[0];
- nextAct.run(agent, itemSysKey);
+ nextAct.run(agent, item);
}
else
- super.runNext(agent, itemSysKey);
+ super.runNext(agent, item);
}
}
/**
@@ -157,9 +158,9 @@ public class Join extends WfVertex
* @see com.c2kernel.lifecycle.instance.WfVertex#run()
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void run(AgentPath agent, ItemPath item) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
- runNext(agent, itemSysKey);
+ runNext(agent, item);
}
/**
* @see com.c2kernel.lifecycle.instance.WfVertex#addNext(com.c2kernel.lifecycle.instance.WfVertex)
@@ -188,9 +189,9 @@ public class Join extends WfVertex
return loop2;
}
@Override
- public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runFirst(AgentPath agent, ItemPath item) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
- runNext(agent, itemSysKey);
+ runNext(agent, item);
}
/*
* (non-Javadoc)
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Loop.java b/src/main/java/com/c2kernel/lifecycle/instance/Loop.java
index 51d6133..1b16638 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Loop.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Loop.java
@@ -7,6 +7,7 @@ import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.graph.traversal.GraphTraversal;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.utils.Logger;
/**
* @version $Revision: 1.35 $ $Date: 2005/05/10 15:14:54 $
@@ -30,15 +31,15 @@ public class Loop extends XOrSplit
return true;
}
@Override
- public void followNext(Next activeNext, AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void followNext(Next activeNext, AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
WfVertex v = activeNext.getTerminusVertex();
if (!isInPrev(v))
- v.run(agent, itemSysKey);
+ v.run(agent, itemPath);
else
{
v.reinit(getID());
- v.run(agent, itemSysKey);
+ v.run(agent, itemPath);
}
}
/**
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java b/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java
index b9fc263..305ec34 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java
@@ -4,6 +4,7 @@ import java.util.StringTokenizer;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.graph.model.DirectedEdge;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.scripting.ScriptingEngineException;
import com.c2kernel.utils.Logger;
/**
@@ -20,13 +21,13 @@ public class OrSplit extends Split
super();
}
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runNext(AgentPath agent, ItemPath itemPath) throws InvalidDataException
{
String nexts;
String scriptName = (String) getProperties().get("RoutingScriptName");
Integer scriptVersion = getVersionNumberProperty("RoutingScriptVersion");
try {
- nexts = this.evaluateScript(scriptName, scriptVersion, itemSysKey).toString();
+ nexts = this.evaluateScript(scriptName, scriptVersion, itemPath).toString();
} catch (ScriptingEngineException e) {
Logger.error(e);
throw new InvalidDataException("Error running routing script "+scriptName+" v"+scriptVersion, null);
@@ -48,7 +49,7 @@ public class OrSplit extends Split
if (thisNext != null && thisNext.equals(nextEdge.getProperties().get("Alias")))
{
WfVertex term = nextEdge.getTerminusVertex();
- term.run(agent, itemSysKey);
+ term.run(agent, itemPath);
Logger.msg(7, "Running " + nextEdge.getProperties().get("Alias"));
active++;
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Split.java b/src/main/java/com/c2kernel/lifecycle/instance/Split.java
index a123391..8eb1ab1 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Split.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Split.java
@@ -10,6 +10,7 @@ import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.graph.traversal.GraphTraversal;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
/**
* @version $Revision: 1.47 $ $Date: 2006/05/29 13:17:45 $
@@ -40,7 +41,7 @@ public abstract class Split extends WfVertex
* @see com.c2kernel.lifecycle.instance.WfVertex#runNext()
*/
@Override
- public abstract void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException;
+ public abstract void runNext(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException;
/**
* Method addNext.
@@ -154,9 +155,9 @@ public abstract class Split extends WfVertex
* @see com.c2kernel.lifecycle.instance.WfVertex#run()
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void run(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
- runNext(agent, itemSysKey);
+ runNext(agent, itemPath);
}
/**
@@ -203,9 +204,9 @@ public abstract class Split extends WfVertex
}
@Override
- public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runFirst(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
- runNext(agent, itemSysKey);
+ runNext(agent, itemPath);
}
} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
index 2f0ef0d..c2596f8 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
@@ -35,7 +35,7 @@ public abstract class WfVertex extends GraphableVertex
* @throws AccessRightsException
* @throws InvalidTransitionException
* @throws PersistencyException */
- public abstract void runFirst(AgentPath agent, int itemSysKey) throws ScriptingEngineException, InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, ObjectAlreadyExistsException, PersistencyException;
+ public abstract void runFirst(AgentPath agent, ItemPath itemPath) throws ScriptingEngineException, InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, ObjectAlreadyExistsException, PersistencyException;
/**
* @see java.lang.Object#Object()
@@ -56,11 +56,11 @@ public abstract class WfVertex extends GraphableVertex
* @throws PersistencyException
* @throws ObjectAlreadyExistsException
*/
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runNext(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
try
{
- ((CompositeActivity)getParent()).request(agent, itemSysKey, CompositeActivity.COMPLETE, null);
+ ((CompositeActivity)getParent()).request(agent, itemPath, CompositeActivity.COMPLETE, null);
}
catch (Exception e)
{
@@ -98,7 +98,7 @@ public abstract class WfVertex extends GraphableVertex
* @throws InvalidTransitionException
* @throws PersistencyException
*/
- public abstract void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException;
+ public abstract void run(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException;
/**
* Method loop.
@@ -112,7 +112,7 @@ public abstract class WfVertex extends GraphableVertex
*/
public abstract Next addNext(WfVertex vertex);
- protected Object evaluateScript(String scriptName, Integer scriptVersion, int itemSysKey) throws ScriptingEngineException
+ protected Object evaluateScript(String scriptName, Integer scriptVersion, ItemPath itemPath) throws ScriptingEngineException
{
try
@@ -131,7 +131,7 @@ public abstract class WfVertex extends GraphableVertex
{
value = value.substring(11);
if (value.startsWith("."))
- value = itemSysKey + value.substring(1);
+ value = itemPath.getUUID() + value.substring(1);
try {
inputParam = ViewpointDataHelper.get(value)[0];
} catch (ArrayIndexOutOfBoundsException ex) {
@@ -142,7 +142,7 @@ public abstract class WfVertex extends GraphableVertex
{
value = value.substring(10);
try {
- inputParam = Gateway.getStorage().get(itemSysKey, ClusterStorage.PROPERTY+"/"+value, null);
+ inputParam = Gateway.getStorage().get(itemPath, ClusterStorage.PROPERTY+"/"+value, null);
} catch (ObjectNotFoundException ex) {
inputParam = null;
}
@@ -154,7 +154,7 @@ public abstract class WfVertex extends GraphableVertex
//TODO: is this right?
if (requiredInput.containsKey("item")) {
- script.setInputParamValue("item", Gateway.getProxyManager().getProxy(new ItemPath(itemSysKey)));
+ script.setInputParamValue("item", Gateway.getProxyManager().getProxy(itemPath));
}
if (requiredInput.containsKey("agent")) {
AgentPath systemAgent = Gateway.getLookup().getAgentPath("system");
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
index 451d7fd..33c80a4 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
@@ -1,5 +1,6 @@
package com.c2kernel.lifecycle.instance;
import java.util.ArrayList;
+import java.util.UUID;
import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
@@ -14,6 +15,8 @@ import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.graph.model.TypeNameAndConstructionInfo;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStepContainer;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.InvalidAgentPathException;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.utils.Language;
import com.c2kernel.utils.Logger;
@@ -24,7 +27,7 @@ import com.c2kernel.utils.Logger;
public class Workflow extends CompositeActivity implements C2KLocalObject
{
public History history;
- private Integer itemSysKey = null;
+ private ItemPath itemPath = null;
/** TypeNameAndConstructionInfo[] variables added by Steve */
private final TypeNameAndConstructionInfo[] mVertexTypeNameAndConstructionInfo =
@@ -57,9 +60,9 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
public History getHistory() throws InvalidDataException {
if (history == null) {
- if (itemSysKey == null)
+ if (itemPath == null)
throw new InvalidDataException("Workflow not initialized.", "");
- history = new History(itemSysKey, this);
+ history = new History(itemPath, this);
}
return history;
}
@@ -98,12 +101,12 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
* @throws PersistencyException
*/
//requestData is xmlstring
- public String requestAction(AgentPath agent, String stepPath, int itemSysKey, int transitionID, String requestData)
+ public String requestAction(AgentPath agent, String stepPath, ItemPath itemPath, int transitionID, String requestData)
throws ObjectNotFoundException, AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectAlreadyExistsException, PersistencyException
{
- Logger.msg(3, "Action: " + transitionID + " " + stepPath + " by " + agent.getAgentName());
+ Logger.msg(3, "Action: " + transitionID + " " + stepPath + " by " + agent);
if (search(stepPath) != null)
- return ((Activity) search(stepPath)).request(agent, itemSysKey, transitionID, requestData);
+ return ((Activity) search(stepPath)).request(agent, itemPath, transitionID, requestData);
else
throw new ObjectNotFoundException(stepPath + " not found", "");
}
@@ -172,12 +175,12 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
* @throws AccessRightsException
* @throws InvalidTransitionException
*/
- public void initialise(int systemKey, AgentPath agent) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException
+ public void initialise(ItemPath itemPath, AgentPath agent) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException
{
- itemSysKey = systemKey;
+ setItemPath(itemPath);
try
{
- runFirst(agent, systemKey);
+ runFirst(agent, itemPath);
}
catch (InvalidDataException ex)
{
@@ -188,13 +191,22 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
}
}
- public Integer getItemSysKey() {
- return itemSysKey;
+ public ItemPath getItemPath() {
+ return itemPath;
}
- public void setItemSysKey(Integer itemSysKey) {
- this.itemSysKey = itemSysKey;
+ public void setItemPath(ItemPath itemPath) {
+ this.itemPath = itemPath;
}
+
+ public void setItemUUID( String uuid )
+ {
+ setItemPath(new ItemPath(UUID.fromString(uuid)));
+ }
+
+ public String getItemUUID() {
+ return getItemPath().getUUID().toString();
+ }
/**
* if type = 0 only domain steps will be queried if type = 1 only predefined steps will be queried else both will be queried
@@ -204,14 +216,15 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
* @return
* @throws ObjectNotFoundException
* @throws InvalidDataException
+ * @throws InvalidAgentPathException
*/
- public ArrayList<Job> calculateJobs(AgentPath agent, int itemSysKey, int type) throws ObjectNotFoundException, InvalidDataException
+ public ArrayList<Job> calculateJobs(AgentPath agent, ItemPath itemPath, int type) throws ObjectNotFoundException, InvalidDataException, InvalidAgentPathException
{
ArrayList<Job> jobs = new ArrayList<Job>();
if (type != 1)
- jobs.addAll(((CompositeActivity) search("workflow/domain")).calculateJobs(agent, itemSysKey, true));
+ jobs.addAll(((CompositeActivity) search("workflow/domain")).calculateJobs(agent, itemPath, true));
if (type != 0)
- jobs.addAll(((CompositeActivity) search("workflow/predefined")).calculateJobs(agent, itemSysKey, true));
+ jobs.addAll(((CompositeActivity) search("workflow/predefined")).calculateJobs(agent, itemPath, true));
return jobs;
}
/**
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java b/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java
index 65bd4ba..f5d9432 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java
@@ -10,6 +10,7 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.DirectedEdge;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.scripting.ScriptingEngineException;
import com.c2kernel.utils.Logger;
@@ -28,14 +29,14 @@ public class XOrSplit extends Split
}
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
+ public void runNext(AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
ArrayList<DirectedEdge> nextsToFollow = new ArrayList<DirectedEdge>();
String nexts;
String scriptName = (String) getProperties().get("RoutingScriptName");
Integer scriptVersion = getVersionNumberProperty("RoutingScriptVersion");
try {
- nexts = this.evaluateScript(scriptName, scriptVersion, itemSysKey).toString();
+ nexts = this.evaluateScript(scriptName, scriptVersion, itemPath).toString();
} catch (ScriptingEngineException e) {
Logger.error(e);
throw new InvalidDataException("Error running routing script "+scriptName+" v"+scriptVersion, "");
@@ -55,12 +56,12 @@ public class XOrSplit extends Split
if (nextsToFollow.size() != 1)
throw new InvalidDataException("not good number of active next", null);
- followNext((Next)nextsToFollow.get(0), agent, itemSysKey);
+ followNext((Next)nextsToFollow.get(0), agent, itemPath);
}
- public void followNext(Next activeNext, AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException {
- activeNext.getTerminusVertex().run(agent, itemSysKey);
+ public void followNext(Next activeNext, AgentPath agent, ItemPath itemPath) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException {
+ activeNext.getTerminusVertex().run(agent, itemPath);
}
}
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())