diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-09-16 08:49:21 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-09-16 08:49:21 +0200 |
| commit | 5e294dbd586034b23484adb3c0c4de0f6acd901c (patch) | |
| tree | e5fac95eff998d6a9096383a97527b8dd0ef56cf /src/main/java/com/c2kernel/lifecycle | |
| parent | 30a7e7b62147afe44fceaf3b52b75b04622ad19c (diff) | |
Abstract properties. Activities cannot be instantiated unless the slot
overrides them. Fixes #190
Diffstat (limited to 'src/main/java/com/c2kernel/lifecycle')
| -rw-r--r-- | src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java | 19 | ||||
| -rw-r--r-- | src/main/java/com/c2kernel/lifecycle/WfVertexDef.java | 2 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java b/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java index 85c942f..004d4c1 100644 --- a/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java +++ b/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java @@ -97,6 +97,18 @@ public class ActivitySlotDef extends WfVertexDef }
}
}
+
+ KeyValuePair[] props;
+ try {
+ props = getTheActivityDef().getProperties().getKeyValuePairs();
+ for (KeyValuePair prop : props) {
+ if (prop.isAbstract() && !getProperties().containsKey(prop.getKey())) {
+ mErrors.add("Abstract property '"+prop.getKey()+"' not defined in slot");
+ err = false;
+ }
+ }
+ } catch (Exception ex) { }
+
// Loop check
Vertex[] outV = getOutGraphables();
@@ -138,11 +150,11 @@ public class ActivitySlotDef extends WfVertexDef *
* @return CastorHashMap
*/
- public void configureInstance(Activity act)
+ private void configureInstance(Activity act)
{
KeyValuePair[] k = getProperties().getKeyValuePairs();
for (KeyValuePair element : k)
- act.getProperties().put(element.getKey(), element.getValue());
+ act.getProperties().put(element.getKey(), element.getValue(), element.isAbstract());
act.setCentrePoint(getCentrePoint());
act.setOutlinePoints(getOutlinePoints());
act.setInEdgeIds(getInEdgeIds());
@@ -160,6 +172,9 @@ public class ActivitySlotDef extends WfVertexDef public WfVertex instantiate() throws ObjectNotFoundException, InvalidDataException {
Activity newActivity = (Activity)getTheActivityDef().instantiate();
configureInstance(newActivity);
+ if (newActivity.getProperties().getAbstract().size() > 0) {
+ throw new InvalidDataException("Abstract properties not overridden: "+newActivity.getProperties().getAbstract().toString(), "");
+ }
return newActivity;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/WfVertexDef.java b/src/main/java/com/c2kernel/lifecycle/WfVertexDef.java index b2bd306..b0a6938 100644 --- a/src/main/java/com/c2kernel/lifecycle/WfVertexDef.java +++ b/src/main/java/com/c2kernel/lifecycle/WfVertexDef.java @@ -33,7 +33,7 @@ public abstract class WfVertexDef extends GraphableVertex public void configureInstance(WfVertex newVertex) {
KeyValuePair[] k = getProperties().getKeyValuePairs();
for (KeyValuePair element : k)
- newVertex.getProperties().put(element.getKey(), element.getValue());
+ newVertex.getProperties().put(element.getKey(), element.getValue(), element.isAbstract());
newVertex.setID(getID());
if (getIsLayoutable()) {
newVertex.setInEdgeIds(getInEdgeIds());
|
