*/
package org.wamblee.security.authorization;
+import javax.persistence.DiscriminatorColumn;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.persistence.Version;
+
import org.wamblee.persistence.Persistent;
import org.wamblee.usermgt.User;
*
* @author Erik Brakkee
*/
-public interface AuthorizationRule extends Persistent {
+@Entity
+@Table(name = "SEC_AUTH_RULE")
+@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
+@DiscriminatorColumn(name = "TYPE")
+public abstract class AuthorizationRule {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private Long primaryKey;
+
+ @Version
+ private int version;
+
+ public AuthorizationRule() {
+ // Empty
+ }
+
+ public AuthorizationRule(AuthorizationRule aRule) {
+ primaryKey = aRule.primaryKey;
+ version = aRule.version;
+ }
+
/**
* Returns the supported object types for which this authorization rule
* applies. This can be used by the authorization service for optimization.
*
* @return Array of supported types.
*/
- Class[] getSupportedTypes();
+ public abstract Class[] getSupportedTypes();
/**
* Determines whether an operation is allowed on a certain resource. The
*
* @return Authorization result.
*/
- AuthorizationResult isAllowed(Object aResource, Operation aOperation,
+ public abstract AuthorizationResult isAllowed(Object aResource, Operation aOperation,
User aUser);
}