diff --git a/pom.xml b/pom.xml
index b2a94ae31..267f0a731 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,6 +39,10 @@
li.strolch
li.strolch.persistence.api
+
+ li.strolch
+ li.strolch.runtime
+
ch.eitchnet
diff --git a/src/main/java/li/strolch/command/AbstractCommand.java b/src/main/java/li/strolch/command/Command.java
similarity index 71%
rename from src/main/java/li/strolch/command/AbstractCommand.java
rename to src/main/java/li/strolch/command/Command.java
index 304f62381..f447f41c9 100644
--- a/src/main/java/li/strolch/command/AbstractCommand.java
+++ b/src/main/java/li/strolch/command/Command.java
@@ -19,21 +19,36 @@
*/
package li.strolch.command;
+import li.strolch.persistence.api.StrolchTransaction;
import ch.eitchnet.privilege.model.Restrictable;
-
/**
* @author Robert von Burg
*
*/
-public abstract class AbstractCommand implements Restrictable {
+public abstract class Command implements Restrictable {
+
+ private final StrolchTransaction tx;
+
+ public Command(StrolchTransaction tx) {
+ this.tx = tx;
+ }
+
+ /**
+ * Returns the {@link StrolchTransaction} bound to this {@link Command}'s runtime
+ *
+ * @return the {@link StrolchTransaction} bound to this {@link Command}'s runtime
+ */
+ protected StrolchTransaction tx() {
+ return this.tx;
+ }
/**
* @see ch.eitchnet.privilege.model.Restrictable#getPrivilegeName()
*/
@Override
public String getPrivilegeName() {
- return AbstractCommand.class.getName();
+ return Command.class.getName();
}
/**
@@ -43,6 +58,6 @@ public abstract class AbstractCommand implements Restrictable {
public Object getPrivilegeValue() {
return this.getClass().getName();
}
-
+
public abstract void doCommand();
}
diff --git a/src/main/java/li/strolch/service/AbstractService.java b/src/main/java/li/strolch/service/AbstractService.java
index 53409944a..b96b68f55 100644
--- a/src/main/java/li/strolch/service/AbstractService.java
+++ b/src/main/java/li/strolch/service/AbstractService.java
@@ -23,7 +23,7 @@ package li.strolch.service;
* @author Robert von Burg
*
*/
-public abstract class AbstractService implements Service {
+public abstract class AbstractService implements Service {
private static final long serialVersionUID = 1L;
/**
diff --git a/src/main/java/li/strolch/service/Service.java b/src/main/java/li/strolch/service/Service.java
index 3c84a533a..42446cb49 100644
--- a/src/main/java/li/strolch/service/Service.java
+++ b/src/main/java/li/strolch/service/Service.java
@@ -27,9 +27,7 @@ import ch.eitchnet.privilege.model.Restrictable;
* @author Robert von Burg
*
*/
-public interface Service extends Serializable, Restrictable {
+public interface Service extends Serializable, Restrictable {
- public ServiceResult doService(ServiceArgument argument);
-
- public ServiceArgument getServiceArgument();
+ public ServiceResult doService(T argument);
}
diff --git a/src/main/java/li/strolch/service/ServiceHandler.java b/src/main/java/li/strolch/service/ServiceHandler.java
new file mode 100644
index 000000000..917a9f51a
--- /dev/null
+++ b/src/main/java/li/strolch/service/ServiceHandler.java
@@ -0,0 +1,8 @@
+package li.strolch.service;
+
+import ch.eitchnet.privilege.model.Certificate;
+
+public interface ServiceHandler {
+
+ public ServiceResult doService(Certificate certificate, Service service, T argument);
+}
\ No newline at end of file
diff --git a/src/main/java/li/strolch/service/SimpleServiceHandler.java b/src/main/java/li/strolch/service/SimpleServiceHandler.java
index 7f38de053..61c221f76 100644
--- a/src/main/java/li/strolch/service/SimpleServiceHandler.java
+++ b/src/main/java/li/strolch/service/SimpleServiceHandler.java
@@ -21,23 +21,27 @@ package li.strolch.service;
import java.text.MessageFormat;
+import li.strolch.runtime.component.StrolchComponent;
import ch.eitchnet.privilege.handler.PrivilegeHandler;
import ch.eitchnet.privilege.model.Certificate;
/**
* @author Robert von Burg
*/
-public class SimpleServiceHandler {
+public class SimpleServiceHandler extends StrolchComponent implements ServiceHandler {
private PrivilegeHandler privilegeHandler;
- public ServiceResult doService(Certificate certificate, Service service, ServiceArgument argument) {
+ @Override
+ public ServiceResult doService(Certificate certificate, Service service, T argument) {
try {
this.privilegeHandler.getPrivilegeContext(certificate).validateAction(service);
- return service.doService(argument);
+ ServiceResult serviceResult = service.doService(argument);
+
+ return serviceResult;
} catch (Exception e) {
String msg = "Failed to perform service {0} due to exception {1}"; //$NON-NLS-1$