From cde640d511dacfb91959de37f026042ae7cdbf17 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Sat, 22 Aug 2015 21:16:43 +0200 Subject: [PATCH] [Major] Added StrolchPolicy.undo() - and from now on we don't use interfaces anymore. We use abstract classes with StrolchPolicy as the super class. - it would be lovely if Java would get rid of interfaces and abstract classes. We only need one: abstract classes. --- .../main/java/li/strolch/policy/StrolchPolicy.java | 5 +++++ .../li/strolch/policytest/TestConfirmationPolicy.java | 11 +++++++++-- .../li/strolch/policytest/TestExecutionPolicy.java | 11 +++++++++-- .../strolch/policytest/TestNoConfirmationPolicy.java | 8 ++++++-- .../li/strolch/policytest/TestPlanningPolicy.java | 11 +++++++++-- .../strolch/policytest/TestSimplePlanningPolicy.java | 8 ++++++-- .../policytest/TestSimulatedExecutionPolicy.java | 8 ++++++-- 7 files changed, 50 insertions(+), 12 deletions(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/policy/StrolchPolicy.java b/li.strolch.agent/src/main/java/li/strolch/policy/StrolchPolicy.java index c3ff50235..c00705273 100644 --- a/li.strolch.agent/src/main/java/li/strolch/policy/StrolchPolicy.java +++ b/li.strolch.agent/src/main/java/li/strolch/policy/StrolchPolicy.java @@ -73,4 +73,9 @@ public abstract class StrolchPolicy { protected StrolchTransaction tx() { return this.tx; } + + /** + * @see Command#undo() + */ + protected abstract void undo(); } diff --git a/li.strolch.agent/src/test/java/li/strolch/policytest/TestConfirmationPolicy.java b/li.strolch.agent/src/test/java/li/strolch/policytest/TestConfirmationPolicy.java index 706deb1c5..815814df6 100644 --- a/li.strolch.agent/src/test/java/li/strolch/policytest/TestConfirmationPolicy.java +++ b/li.strolch.agent/src/test/java/li/strolch/policytest/TestConfirmationPolicy.java @@ -15,12 +15,19 @@ */ package li.strolch.policytest; +import li.strolch.agent.api.ComponentContainer; import li.strolch.model.activity.Action; +import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.policy.StrolchPolicy; /** * @author Robert von Burg */ -public interface TestConfirmationPolicy { +public abstract class TestConfirmationPolicy extends StrolchPolicy { - public void confirm(Action action); + public TestConfirmationPolicy(ComponentContainer container, StrolchTransaction tx) { + super(container, tx); + } + + public abstract void confirm(Action action); } diff --git a/li.strolch.agent/src/test/java/li/strolch/policytest/TestExecutionPolicy.java b/li.strolch.agent/src/test/java/li/strolch/policytest/TestExecutionPolicy.java index 98be00c06..11ea77eaa 100644 --- a/li.strolch.agent/src/test/java/li/strolch/policytest/TestExecutionPolicy.java +++ b/li.strolch.agent/src/test/java/li/strolch/policytest/TestExecutionPolicy.java @@ -15,12 +15,19 @@ */ package li.strolch.policytest; +import li.strolch.agent.api.ComponentContainer; import li.strolch.model.activity.Action; +import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.policy.StrolchPolicy; /** * @author Robert von Burg */ -public interface TestExecutionPolicy { +public abstract class TestExecutionPolicy extends StrolchPolicy { - public void execute(Action action); + public TestExecutionPolicy(ComponentContainer container, StrolchTransaction tx) { + super(container, tx); + } + + public abstract void execute(Action action); } diff --git a/li.strolch.agent/src/test/java/li/strolch/policytest/TestNoConfirmationPolicy.java b/li.strolch.agent/src/test/java/li/strolch/policytest/TestNoConfirmationPolicy.java index eb57987d1..831c493c7 100644 --- a/li.strolch.agent/src/test/java/li/strolch/policytest/TestNoConfirmationPolicy.java +++ b/li.strolch.agent/src/test/java/li/strolch/policytest/TestNoConfirmationPolicy.java @@ -19,12 +19,11 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.model.State; import li.strolch.model.activity.Action; import li.strolch.persistence.api.StrolchTransaction; -import li.strolch.policy.StrolchPolicy; /** * @author Robert von Burg */ -public class TestNoConfirmationPolicy extends StrolchPolicy implements TestConfirmationPolicy { +public class TestNoConfirmationPolicy extends TestConfirmationPolicy { public TestNoConfirmationPolicy(ComponentContainer container, StrolchTransaction tx) { super(container, tx); @@ -34,4 +33,9 @@ public class TestNoConfirmationPolicy extends StrolchPolicy implements TestConfi public void confirm(Action action) { action.setState(State.CLOSED); } + + @Override + protected void undo() { + // do nothing + } } diff --git a/li.strolch.agent/src/test/java/li/strolch/policytest/TestPlanningPolicy.java b/li.strolch.agent/src/test/java/li/strolch/policytest/TestPlanningPolicy.java index a2a8bab17..2457fb5d8 100644 --- a/li.strolch.agent/src/test/java/li/strolch/policytest/TestPlanningPolicy.java +++ b/li.strolch.agent/src/test/java/li/strolch/policytest/TestPlanningPolicy.java @@ -15,12 +15,19 @@ */ package li.strolch.policytest; +import li.strolch.agent.api.ComponentContainer; import li.strolch.model.activity.Action; +import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.policy.StrolchPolicy; /** * @author Robert von Burg */ -public interface TestPlanningPolicy { +public abstract class TestPlanningPolicy extends StrolchPolicy { - public void plan(Action action); + public TestPlanningPolicy(ComponentContainer container, StrolchTransaction tx) { + super(container, tx); + } + + public abstract void plan(Action action); } diff --git a/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimplePlanningPolicy.java b/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimplePlanningPolicy.java index 9462e9ba6..9e2dd11ed 100644 --- a/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimplePlanningPolicy.java +++ b/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimplePlanningPolicy.java @@ -19,12 +19,11 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.model.State; import li.strolch.model.activity.Action; import li.strolch.persistence.api.StrolchTransaction; -import li.strolch.policy.StrolchPolicy; /** * @author Robert von Burg */ -public class TestSimplePlanningPolicy extends StrolchPolicy implements TestPlanningPolicy { +public class TestSimplePlanningPolicy extends TestPlanningPolicy { public TestSimplePlanningPolicy(ComponentContainer container, StrolchTransaction tx) { super(container, tx); @@ -34,4 +33,9 @@ public class TestSimplePlanningPolicy extends StrolchPolicy implements TestPlann public void plan(Action action) { action.setState(State.PLANNED); } + + @Override + protected void undo() { + // do nothing + } } diff --git a/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimulatedExecutionPolicy.java b/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimulatedExecutionPolicy.java index 5f95cac30..49963f986 100644 --- a/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimulatedExecutionPolicy.java +++ b/li.strolch.agent/src/test/java/li/strolch/policytest/TestSimulatedExecutionPolicy.java @@ -19,12 +19,11 @@ import li.strolch.agent.api.ComponentContainer; import li.strolch.model.State; import li.strolch.model.activity.Action; import li.strolch.persistence.api.StrolchTransaction; -import li.strolch.policy.StrolchPolicy; /** * @author Robert von Burg */ -public class TestSimulatedExecutionPolicy extends StrolchPolicy implements TestExecutionPolicy { +public class TestSimulatedExecutionPolicy extends TestExecutionPolicy { public TestSimulatedExecutionPolicy(ComponentContainer container, StrolchTransaction tx) { super(container, tx); @@ -34,4 +33,9 @@ public class TestSimulatedExecutionPolicy extends StrolchPolicy implements TestE public void execute(Action action) { action.setState(State.EXECUTION); } + + @Override + protected void undo() { + // do nothing + } }