diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-09-30 12:28:42 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-09-30 12:28:42 +0200 |
| commit | 8307f06a338b1f73f47e83b94aa64c2241e9baa7 (patch) | |
| tree | e31851213922c3241bcc075d68a092ab12d50c76 /src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java | |
| parent | 25e0517ffc1db85e2f89318abbec9b5202bb43c0 (diff) | |
Initial properties can be supplied as a marshalled PropertyArrayList as
an optional additional parameter to CreateItem/AgentFromDescription.
Each property supplied must be defined in the property description.
Diffstat (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java')
| -rw-r--r-- | src/main/java/com/c2kernel/lifecycle/instance/predefined/item/CreateItemFromDescription.java | 22 |
1 files changed, 19 insertions, 3 deletions
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 eea3976..d9c65d5 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 @@ -11,8 +11,13 @@ package com.c2kernel.lifecycle.instance.predefined.item;
+import java.io.IOException;
import java.util.ArrayList;
+import org.exolab.castor.mapping.MappingException;
+import org.exolab.castor.xml.MarshalException;
+import org.exolab.castor.xml.ValidationException;
+
import com.c2kernel.collection.Collection;
import com.c2kernel.collection.CollectionArrayList;
import com.c2kernel.collection.CollectionDescription;
@@ -59,6 +64,8 @@ public class CreateItemFromDescription extends PredefinedStep String[] input = getDataList(requestData);
String newName = input[0];
String domPath = input[1];
+ PropertyArrayList initProps =
+ input.length > 2?getInitProperties(input[2]):new PropertyArrayList();
Logger.msg(1, "CreateItemFromDescription - Starting.");
@@ -94,7 +101,7 @@ public class CreateItemFromDescription extends PredefinedStep newItem.initialise(
agent.getSystemKey(),
- Gateway.getMarshaller().marshall(getNewProperties(itemPath, newName, agent)),
+ Gateway.getMarshaller().marshall(getNewProperties(itemPath, initProps, newName, agent)),
Gateway.getMarshaller().marshall(getNewWorkflow(itemPath)),
Gateway.getMarshaller().marshall(getNewCollections(itemPath))
);
@@ -111,10 +118,19 @@ public class CreateItemFromDescription extends PredefinedStep }
- protected PropertyArrayList getNewProperties(ItemPath itemPath, String newName, AgentPath agent) throws ObjectNotFoundException {
+ protected PropertyArrayList getInitProperties(String input) throws InvalidDataException {
+ try {
+ return (PropertyArrayList)Gateway.getMarshaller().unmarshall(input);
+ } catch (Exception e) {
+ Logger.error(e);
+ throw new InvalidDataException("Initial property parameter was not a marshalled PropertyArrayList: "+input, "");
+ }
+ }
+
+ protected PropertyArrayList getNewProperties(ItemPath itemPath, PropertyArrayList initProps, String newName, AgentPath agent) throws ObjectNotFoundException, InvalidDataException {
// copy properties -- intend to create from propdesc
PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(itemPath);
- PropertyArrayList props = pdList.instanciate();
+ PropertyArrayList props = pdList.instantiate(initProps);
// set Name prop or create if not present
boolean foundName = false;
for (Property prop : props.list) {
|
