[Minor] [New] Implemented and fixed remaining policy tests
This commit is contained in:
parent
ac1885883a
commit
0e3b3b2a1e
|
@ -38,7 +38,7 @@
|
|||
</TimedState>
|
||||
<Policies>
|
||||
<Policy Type="PlanningPolicy" Value="key:SimplePlanningPolicy" />
|
||||
<Policy Type="ExecutionPolicy" Value="java:li.strolch.policy.execution.TestSimulatedExecutionPolicy" />
|
||||
<Policy Type="ExecutionPolicy" Value="java:li.strolch.policytest.TestSimulatedExecutionPolicy" />
|
||||
<Policy Type="ConfirmationPolicy" Value="key:NoConfirmation" />
|
||||
</Policies>
|
||||
</Resource>
|
||||
|
|
|
@ -118,6 +118,9 @@ public class Order extends GroupedParameterizedElement implements StrolchRootEle
|
|||
clone.setDate(this.date);
|
||||
clone.setState(this.state);
|
||||
|
||||
if (this.policyDefs != null)
|
||||
clone.setPolicyDefs(this.policyDefs.getClone());
|
||||
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
|
|
@ -132,6 +132,9 @@ public class Resource extends GroupedParameterizedElement implements StrolchRoot
|
|||
}
|
||||
}
|
||||
|
||||
if (this.policyDefs != null)
|
||||
clone.setPolicyDefs(this.policyDefs.getClone());
|
||||
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
|
|
@ -242,6 +242,10 @@ public class Activity extends GroupedParameterizedElement
|
|||
for (IActivityElement element : this.elements.values()) {
|
||||
clone.addElement(element.getClone());
|
||||
}
|
||||
|
||||
if (this.policyDefs != null)
|
||||
clone.setPolicyDefs(this.policyDefs.getClone());
|
||||
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
|
|
@ -109,6 +109,9 @@ public class StrolchElementToDomVisitor {
|
|||
Element element = document.createElement(Tags.ACTIVITY);
|
||||
fillElement(element, activity);
|
||||
|
||||
if (activity.hasPolicyDefs())
|
||||
fillElement(element, activity.getPolicyDefs());
|
||||
|
||||
if (activity.hasElements()) {
|
||||
Iterator<Entry<String, IActivityElement>> iter = activity.elementIterator();
|
||||
while (iter.hasNext()) {
|
||||
|
@ -123,9 +126,6 @@ public class StrolchElementToDomVisitor {
|
|||
}
|
||||
}
|
||||
|
||||
if (activity.hasPolicyDefs())
|
||||
fillElement(element, activity.getPolicyDefs());
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,12 @@ import java.util.Map.Entry;
|
|||
import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
|
||||
import li.strolch.model.GroupedParameterizedElement;
|
||||
import li.strolch.model.Order;
|
||||
import li.strolch.model.ParameterBag;
|
||||
|
@ -37,13 +43,8 @@ import li.strolch.model.timedstate.StrolchTimedState;
|
|||
import li.strolch.model.timevalue.ITimeValue;
|
||||
import li.strolch.model.timevalue.IValue;
|
||||
import li.strolch.model.timevalue.IValueChange;
|
||||
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
|
||||
import li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
|
@ -146,6 +147,9 @@ public abstract class StrolchElementToSaxVisitor {
|
|||
this.contentHandler.endElement(null, null, Tags.TIMED_STATE);
|
||||
}
|
||||
|
||||
if (resource.hasPolicyDefs())
|
||||
toSax(resource.getPolicyDefs());
|
||||
|
||||
this.contentHandler.endElement(null, null, Tags.RESOURCE);
|
||||
}
|
||||
|
||||
|
@ -162,6 +166,9 @@ public abstract class StrolchElementToSaxVisitor {
|
|||
|
||||
toSax((GroupedParameterizedElement) order);
|
||||
|
||||
if (order.hasPolicyDefs())
|
||||
toSax(order.getPolicyDefs());
|
||||
|
||||
this.contentHandler.endElement(null, null, Tags.ORDER);
|
||||
}
|
||||
|
||||
|
@ -169,6 +176,9 @@ public abstract class StrolchElementToSaxVisitor {
|
|||
this.contentHandler.startElement(null, null, Tags.ACTIVITY, attributesFor(activity));
|
||||
toSax((GroupedParameterizedElement) activity);
|
||||
|
||||
if (activity.hasPolicyDefs())
|
||||
toSax(activity.getPolicyDefs());
|
||||
|
||||
Iterator<Entry<String, IActivityElement>> iter = activity.elementIterator();
|
||||
while (iter.hasNext()) {
|
||||
IActivityElement activityElement = iter.next().getValue();
|
||||
|
@ -185,6 +195,26 @@ public abstract class StrolchElementToSaxVisitor {
|
|||
this.contentHandler.endElement(null, null, Tags.ACTIVITY);
|
||||
}
|
||||
|
||||
private void toSax(PolicyDefs policyDefs) throws SAXException {
|
||||
if (!policyDefs.hasPolicyDefs())
|
||||
return;
|
||||
|
||||
this.contentHandler.startElement(null, null, Tags.POLICIES, null);
|
||||
for (String type : policyDefs.getPolicyTypes()) {
|
||||
PolicyDef policyDef = policyDefs.getPolicyDef(type);
|
||||
this.contentHandler.startElement(null, null, Tags.POLICY, attributesFor(policyDef));
|
||||
this.contentHandler.endElement(null, null, Tags.POLICY);
|
||||
}
|
||||
this.contentHandler.endElement(null, null, Tags.POLICIES);
|
||||
}
|
||||
|
||||
protected AttributesImpl attributesFor(PolicyDef policyDef) {
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(null, null, Tags.TYPE, Tags.CDATA, policyDef.getType());
|
||||
attributes.addAttribute(null, null, Tags.VALUE, Tags.CDATA, policyDef.getValueForXml());
|
||||
return attributes;
|
||||
}
|
||||
|
||||
protected AttributesImpl attributesFor(Action action) {
|
||||
AttributesImpl attributes = attributesFor((StrolchElement) action);
|
||||
attributes.addAttribute(null, null, Tags.RESOURCE_ID, Tags.CDATA, action.getResourceId());
|
||||
|
|
|
@ -37,4 +37,9 @@ public class JavaPolicyDef extends PolicyDef {
|
|||
public String getValueForXml() {
|
||||
return XML_PREFIX + this.value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaPolicyDef getClone() {
|
||||
return new JavaPolicyDef(this.type, this.value);
|
||||
}
|
||||
}
|
|
@ -39,4 +39,9 @@ public class KeyPolicyDef extends PolicyDef {
|
|||
public String getValueForXml() {
|
||||
return XML_PREFIX + this.value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeyPolicyDef getClone() {
|
||||
return new KeyPolicyDef(this.type, this.value);
|
||||
}
|
||||
}
|
|
@ -75,8 +75,21 @@ public abstract class PolicyDef {
|
|||
*/
|
||||
public abstract <T> T accept(PolicyDefVisitor visitor);
|
||||
|
||||
/**
|
||||
* Returns the value formatted for XML marshalling, so that the {@link #valueOf(String, String)} can then again
|
||||
* parse the value and instantiate a concrete {@link PolicyDef} instance
|
||||
*
|
||||
* @return the value formatted for XML marshalling
|
||||
*/
|
||||
public abstract String getValueForXml();
|
||||
|
||||
/**
|
||||
* Return a clone of this {@link PolicyDef} instance
|
||||
*
|
||||
* @return a clone of this {@link PolicyDef} instance
|
||||
*/
|
||||
public abstract PolicyDef getClone();
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
@ -88,13 +101,35 @@ public abstract class PolicyDef {
|
|||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link PolicyDef} instance which handles the given type of XML Value
|
||||
*
|
||||
* @param type
|
||||
* the type
|
||||
* @param xmlValue
|
||||
* the XML formatted value with the prefix denoting the {@link PolicyDef} type
|
||||
*
|
||||
* @return a {@link PolicyDef} instance which handles the given type of XML Value
|
||||
*/
|
||||
public static PolicyDef valueOf(String type, String xmlValue) {
|
||||
|
||||
if (xmlValue.startsWith(JavaPolicyDef.XML_PREFIX)) {
|
||||
|
||||
String value = xmlValue.substring(JavaPolicyDef.XML_PREFIX.length());
|
||||
|
||||
try {
|
||||
Class.forName(value);
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new StrolchPolicyException("Invalid policy configuration. Policy does not exist: " + value);
|
||||
}
|
||||
|
||||
return new JavaPolicyDef(type, value);
|
||||
|
||||
} else if (xmlValue.startsWith(KeyPolicyDef.XML_PREFIX)) {
|
||||
|
||||
String value = xmlValue.substring(KeyPolicyDef.XML_PREFIX.length());
|
||||
return new KeyPolicyDef(type, value);
|
||||
|
||||
} else {
|
||||
throw new StrolchPolicyException("Unhandled PolicyDef from xml value " + xmlValue);
|
||||
}
|
||||
|
|
|
@ -85,4 +85,17 @@ public class PolicyDefs {
|
|||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a clone of this {@link PolicyDefs}
|
||||
*
|
||||
* @return a clone of this {@link PolicyDefs}
|
||||
*/
|
||||
public PolicyDefs getClone() {
|
||||
PolicyDefs clone = new PolicyDefs();
|
||||
for (PolicyDef policyDef : this.policyDefMap.values()) {
|
||||
clone.addOrUpdate(policyDef.getClone());
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</ParameterBag>
|
||||
<Policies>
|
||||
<Policy Type="PlanningPolicy" Value="key:SimplePlanningPolicy" />
|
||||
<Policy Type="ExecutionPolicy" Value="java:li.strolch.policy.execution.TestSimulatedExecutionPolicy" />
|
||||
<Policy Type="ExecutionPolicy" Value="java:li.strolch.policytest.TestSimulatedExecutionPolicy" />
|
||||
<Policy Type="ConfirmationPolicy" Value="key:NoConfirmation" />
|
||||
</Policies>
|
||||
</Resource>
|
||||
|
|
Loading…
Reference in New Issue