Hi
Ich versuche gerade etwas mit Annotations zu basteln. Die Idee wäre, dass für eine Methode eine sog. @SecurityCheck Annotation hinzugefügt werden kann. Diese sollte bewirken, dass vor oder nach dem Aufruf der Methode ein check auf die aktuellen Userdaten gemacht wird.
Irgendwie krieg ich es nicht so richtig hin. Das deklarieren der Annotation ist simpel, jedoch die Implementierung??
Hier mal der Code bisher..
Deklaration:
Und Klasse welche die Annotation braucht:
Was jetzt halt noch fehlt ist die implementierung der Annotation und wie und was ich wo im Programmablauf einfügen muss, um
die Annotation auch zu verwenden.
Bitte klärt mich auf, auch bezüglich, ob mein Vorhaben Sinnvoll ist..
Ich versuche gerade etwas mit Annotations zu basteln. Die Idee wäre, dass für eine Methode eine sog. @SecurityCheck Annotation hinzugefügt werden kann. Diese sollte bewirken, dass vor oder nach dem Aufruf der Methode ein check auf die aktuellen Userdaten gemacht wird.
Irgendwie krieg ich es nicht so richtig hin. Das deklarieren der Annotation ist simpel, jedoch die Implementierung??
Hier mal der Code bisher..
Deklaration:
Java:
@Retention( RetentionPolicy.RUNTIME )
@Target(ElementType.METHOD)
public @interface SecurityCheck {
/**
* Name of the user variable. Needs to be present in the methods attributes.
*/
String userVariable();
/**
* When should the security check be done? Before or after the call (after means the return value is checked)
*/
SecurityCheckType type() default SecurityCheckType.BEFORE;
/**
* For what role should be tested? (read/write/delete)
*/
Role role() default Role.READ;
}
Und Klasse welche die Annotation braucht:
Java:
public class BusinessService {
/**
* Delete a business object.
*/
@SecurityCheck(role=Role.DELETE,type=SecurityCheckType.BEFORE,userVariable="securityObject")
public void deleteBusinessObject(IBusinessObject businessObject, ISecurityObject securityObject) {
// this body should not be executed until the security check is done...
}
}
Was jetzt halt noch fehlt ist die implementierung der Annotation und wie und was ich wo im Programmablauf einfügen muss, um
die Annotation auch zu verwenden.
Bitte klärt mich auf, auch bezüglich, ob mein Vorhaben Sinnvoll ist..