[Major] Refactored package for policies in model project
- added additional tests
This commit is contained in:
parent
339a736c59
commit
5da07f5824
|
@ -24,6 +24,11 @@ import ch.eitchnet.utils.helper.XmlHelper;
|
|||
import li.strolch.agent.api.ComponentContainer;
|
||||
import li.strolch.agent.api.StrolchComponent;
|
||||
import li.strolch.exception.StrolchPolicyException;
|
||||
import li.strolch.model.policy.JavaPolicyDef;
|
||||
import li.strolch.model.policy.KeyPolicyDef;
|
||||
import li.strolch.model.policy.Policy;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefVisitor;
|
||||
import li.strolch.policy.StrolchPolicyFileParser.PolicyModel;
|
||||
import li.strolch.policy.StrolchPolicyFileParser.PolicyType;
|
||||
import li.strolch.runtime.configuration.ComponentConfiguration;
|
||||
|
@ -70,7 +75,7 @@ public class DefaultPolicyHandler extends StrolchComponent implements PolicyHand
|
|||
}
|
||||
|
||||
@Override
|
||||
public <T> T getPolicy(PolicyDef policyDef) {
|
||||
public <T extends Policy> T getPolicy(PolicyDef policyDef) {
|
||||
return policyDef.accept(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
*/
|
||||
package li.strolch.policy;
|
||||
|
||||
import li.strolch.model.policy.Policy;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefVisitor;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* The {@link PolicyHandler} is Strolch's mechanism of dependency injection
|
||||
|
@ -47,5 +51,5 @@ public interface PolicyHandler {
|
|||
*
|
||||
* @return the instantiated instance of the referenced policy
|
||||
*/
|
||||
public <T> T getPolicy(PolicyDef policyDef);
|
||||
public <T extends Policy> T getPolicy(PolicyDef policyDef);
|
||||
}
|
||||
|
|
|
@ -24,8 +24,8 @@ import li.strolch.RuntimeMock;
|
|||
import li.strolch.agent.ComponentContainerTest;
|
||||
import li.strolch.agent.api.ComponentContainer;
|
||||
import li.strolch.model.Resource;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.persistence.api.StrolchTransaction;
|
||||
import li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyHandler;
|
||||
import li.strolch.runtime.StrolchConstants;
|
||||
|
||||
|
|
|
@ -63,8 +63,8 @@
|
|||
</Component>
|
||||
<Component>
|
||||
<name>PolicyHandler</name>
|
||||
<api>li.strolch.policy.PolicyHandler</api>
|
||||
<impl>li.strolch.policy.DefaultPolicyHandler</impl>
|
||||
<api>li.strolch.model.policy.PolicyHandler</api>
|
||||
<impl>li.strolch.model.policy.DefaultPolicyHandler</impl>
|
||||
<Properties>
|
||||
<readPolicyFile>true</readPolicyFile>
|
||||
<policyConfigFile>StrolchPolicies.xml</policyConfigFile>
|
||||
|
|
|
@ -41,6 +41,9 @@ import li.strolch.model.parameter.LongParameter;
|
|||
import li.strolch.model.parameter.Parameter;
|
||||
import li.strolch.model.parameter.StringListParameter;
|
||||
import li.strolch.model.parameter.StringParameter;
|
||||
import li.strolch.model.policy.JavaPolicyDef;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
import li.strolch.model.timedstate.BooleanTimedState;
|
||||
import li.strolch.model.timedstate.FloatTimedState;
|
||||
import li.strolch.model.timedstate.IntegerTimedState;
|
||||
|
@ -52,9 +55,6 @@ import li.strolch.model.timevalue.impl.FloatValue;
|
|||
import li.strolch.model.timevalue.impl.IntegerValue;
|
||||
import li.strolch.model.timevalue.impl.StringSetValue;
|
||||
import li.strolch.model.timevalue.impl.ValueChange;
|
||||
import li.strolch.policy.JavaPolicyDef;
|
||||
import li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* Class which can be used to generate objects which implement {@link StrolchElement}. These generated classes can then
|
||||
|
|
|
@ -20,8 +20,8 @@ import java.util.Date;
|
|||
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
|
||||
import li.strolch.exception.StrolchPolicyException;
|
||||
import li.strolch.model.Locator.LocatorBuilder;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
import li.strolch.model.visitor.StrolchRootElementVisitor;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* The Order is an object used in the EDF to transfer data from one range to another. Orders are not to be thought of as
|
||||
|
|
|
@ -25,10 +25,10 @@ import java.util.Set;
|
|||
|
||||
import li.strolch.exception.StrolchPolicyException;
|
||||
import li.strolch.model.Locator.LocatorBuilder;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
import li.strolch.model.timedstate.StrolchTimedState;
|
||||
import li.strolch.model.timevalue.IValue;
|
||||
import li.strolch.model.visitor.StrolchRootElementVisitor;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
|
|
|
@ -27,12 +27,12 @@ import li.strolch.exception.StrolchPolicyException;
|
|||
import li.strolch.model.GroupedParameterizedElement;
|
||||
import li.strolch.model.Locator;
|
||||
import li.strolch.model.Locator.LocatorBuilder;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
import li.strolch.model.State;
|
||||
import li.strolch.model.StrolchElement;
|
||||
import li.strolch.model.StrolchRootElement;
|
||||
import li.strolch.model.Tags;
|
||||
import li.strolch.model.visitor.StrolchRootElementVisitor;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* Parameterized object grouping a collection of {@link Activity} and {@link Action} objects defining the process to be
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.policy;
|
||||
package li.strolch.model.policy;
|
||||
|
||||
/**
|
||||
* Simple {@link PolicyDef} where the value references a concrete class which can simply be instantiated
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.policy;
|
||||
package li.strolch.model.policy;
|
||||
|
||||
/**
|
||||
* This {@link PolicyDef} adds a further indirection in the resolving of a policy. In this {@link PolicyDef} the value
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright 2015 Robert von Burg <eitch@eitchnet.ch>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.model.policy;
|
||||
|
||||
/**
|
||||
* Marker interface to define hierarchy of Strolch policies
|
||||
*
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public interface Policy {
|
||||
|
||||
// marker interface
|
||||
}
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.policy;
|
||||
package li.strolch.model.policy;
|
||||
|
||||
import li.strolch.exception.StrolchPolicyException;
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.policy;
|
||||
package li.strolch.model.policy;
|
||||
|
||||
/**
|
||||
* This is the visitor interface to resolve a policy from a {@link PolicyDef}
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.policy;
|
||||
package li.strolch.model.policy;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
|
@ -32,10 +32,10 @@ import li.strolch.model.activity.Action;
|
|||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.activity.IActivityElement;
|
||||
import li.strolch.model.parameter.Parameter;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
import li.strolch.model.timedstate.StrolchTimedState;
|
||||
import li.strolch.model.timevalue.ITimeVariable;
|
||||
import li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
|
|
|
@ -38,11 +38,11 @@ import li.strolch.model.Tags;
|
|||
import li.strolch.model.activity.Action;
|
||||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.parameter.Parameter;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
import li.strolch.model.timedstate.StrolchTimedState;
|
||||
import li.strolch.model.timevalue.IValue;
|
||||
import li.strolch.model.timevalue.impl.ValueChange;
|
||||
import li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
|
|
|
@ -35,12 +35,12 @@ import li.strolch.model.activity.Action;
|
|||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.activity.IActivityElement;
|
||||
import li.strolch.model.parameter.Parameter;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
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 li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
|
|
|
@ -39,12 +39,12 @@ import li.strolch.model.activity.Action;
|
|||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.activity.IActivityElement;
|
||||
import li.strolch.model.parameter.Parameter;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
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 li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
|
|
|
@ -41,11 +41,11 @@ import li.strolch.model.Tags;
|
|||
import li.strolch.model.activity.Action;
|
||||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.parameter.Parameter;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
import li.strolch.model.timedstate.StrolchTimedState;
|
||||
import li.strolch.model.timevalue.IValue;
|
||||
import li.strolch.model.timevalue.impl.ValueChange;
|
||||
import li.strolch.policy.PolicyDef;
|
||||
import li.strolch.policy.PolicyDefs;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright 2015 Robert von Burg <eitch@eitchnet.ch>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package li.strolch.model.policy;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class PolicyDefTest {
|
||||
|
||||
@Test
|
||||
public void shouldInstantiateJavaPolicyDef() {
|
||||
PolicyDef def = PolicyDef.valueOf("MyJavaType", JavaPolicyDef.XML_PREFIX + "java.lang.Object");
|
||||
assertEquals(JavaPolicyDef.class, def.getClass());
|
||||
assertEquals("MyJavaType", def.getType());
|
||||
assertEquals("java.lang.Object", def.getValue());
|
||||
assertEquals(JavaPolicyDef.XML_PREFIX + "java.lang.Object", def.getValueForXml());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldInstantiateKeyPolicyDef() {
|
||||
PolicyDef def = PolicyDef.valueOf("MyKeyType", KeyPolicyDef.XML_PREFIX + "MyKey");
|
||||
assertEquals(KeyPolicyDef.class, def.getClass());
|
||||
assertEquals("MyKeyType", def.getType());
|
||||
assertEquals("MyKey", def.getValue());
|
||||
assertEquals(KeyPolicyDef.XML_PREFIX + "MyKey", def.getValueForXml());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldClonePolicyDefs() {
|
||||
|
||||
PolicyDef javaDef = PolicyDef.valueOf("MyJavaType", JavaPolicyDef.XML_PREFIX + "java.lang.Object");
|
||||
PolicyDef keyDef = PolicyDef.valueOf("MyKeyType", KeyPolicyDef.XML_PREFIX + "MyKey");
|
||||
|
||||
PolicyDefs defs = new PolicyDefs();
|
||||
defs.addOrUpdate(javaDef);
|
||||
defs.addOrUpdate(keyDef);
|
||||
|
||||
assertEquals(2, defs.getPolicyTypes().size());
|
||||
|
||||
PolicyDefs clone = defs.getClone();
|
||||
assertEquals(2, clone.getPolicyTypes().size());
|
||||
|
||||
PolicyDef javaClone = clone.getPolicyDef("MyJavaType");
|
||||
assertEquals(JavaPolicyDef.class, javaClone.getClass());
|
||||
assertEquals("MyJavaType", javaClone.getType());
|
||||
assertEquals("java.lang.Object", javaClone.getValue());
|
||||
assertEquals(JavaPolicyDef.XML_PREFIX + "java.lang.Object", javaClone.getValueForXml());
|
||||
|
||||
PolicyDef keyClone = clone.getPolicyDef("MyKeyType");
|
||||
assertEquals(KeyPolicyDef.class, keyClone.getClass());
|
||||
assertEquals("MyKeyType", keyClone.getType());
|
||||
assertEquals("MyKey", keyClone.getValue());
|
||||
assertEquals(KeyPolicyDef.XML_PREFIX + "MyKey", keyClone.getValueForXml());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue