[Minor] Added StrolchComponent interface to SimpleServiceHandler

This commit is contained in:
Robert von Burg 2013-10-27 03:27:18 +01:00
parent 55462432b6
commit 181e3dfdff
6 changed files with 41 additions and 12 deletions

View File

@ -39,6 +39,10 @@
<groupId>li.strolch</groupId> <groupId>li.strolch</groupId>
<artifactId>li.strolch.persistence.api</artifactId> <artifactId>li.strolch.persistence.api</artifactId>
</dependency> </dependency>
<dependency>
<groupId>li.strolch</groupId>
<artifactId>li.strolch.runtime</artifactId>
</dependency>
<dependency> <dependency>
<groupId>ch.eitchnet</groupId> <groupId>ch.eitchnet</groupId>

View File

@ -19,21 +19,36 @@
*/ */
package li.strolch.command; package li.strolch.command;
import li.strolch.persistence.api.StrolchTransaction;
import ch.eitchnet.privilege.model.Restrictable; import ch.eitchnet.privilege.model.Restrictable;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
* *
*/ */
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() * @see ch.eitchnet.privilege.model.Restrictable#getPrivilegeName()
*/ */
@Override @Override
public String getPrivilegeName() { public String getPrivilegeName() {
return AbstractCommand.class.getName(); return Command.class.getName();
} }
/** /**
@ -43,6 +58,6 @@ public abstract class AbstractCommand implements Restrictable {
public Object getPrivilegeValue() { public Object getPrivilegeValue() {
return this.getClass().getName(); return this.getClass().getName();
} }
public abstract void doCommand(); public abstract void doCommand();
} }

View File

@ -23,7 +23,7 @@ package li.strolch.service;
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
* *
*/ */
public abstract class AbstractService implements Service { public abstract class AbstractService<T extends ServiceArgument> implements Service<T> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**

View File

@ -27,9 +27,7 @@ import ch.eitchnet.privilege.model.Restrictable;
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
* *
*/ */
public interface Service extends Serializable, Restrictable { public interface Service<T extends ServiceArgument> extends Serializable, Restrictable {
public ServiceResult doService(ServiceArgument argument); public ServiceResult doService(T argument);
public ServiceArgument getServiceArgument();
} }

View File

@ -0,0 +1,8 @@
package li.strolch.service;
import ch.eitchnet.privilege.model.Certificate;
public interface ServiceHandler {
public <T extends ServiceArgument> ServiceResult doService(Certificate certificate, Service<T> service, T argument);
}

View File

@ -21,23 +21,27 @@ package li.strolch.service;
import java.text.MessageFormat; import java.text.MessageFormat;
import li.strolch.runtime.component.StrolchComponent;
import ch.eitchnet.privilege.handler.PrivilegeHandler; import ch.eitchnet.privilege.handler.PrivilegeHandler;
import ch.eitchnet.privilege.model.Certificate; import ch.eitchnet.privilege.model.Certificate;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
*/ */
public class SimpleServiceHandler { public class SimpleServiceHandler extends StrolchComponent implements ServiceHandler {
private PrivilegeHandler privilegeHandler; private PrivilegeHandler privilegeHandler;
public ServiceResult doService(Certificate certificate, Service service, ServiceArgument argument) { @Override
public <T extends ServiceArgument> ServiceResult doService(Certificate certificate, Service<T> service, T argument) {
try { try {
this.privilegeHandler.getPrivilegeContext(certificate).validateAction(service); this.privilegeHandler.getPrivilegeContext(certificate).validateAction(service);
return service.doService(argument); ServiceResult serviceResult = service.doService(argument);
return serviceResult;
} catch (Exception e) { } catch (Exception e) {
String msg = "Failed to perform service {0} due to exception {1}"; //$NON-NLS-1$ String msg = "Failed to perform service {0} due to exception {1}"; //$NON-NLS-1$