hibernate->JPA for authorization rules.
[utils] / security / impl / src / main / java / org / wamblee / security / authorization / AuthorizationRule.java
index d968c836476f787e414c8a3df243d9e037cfce99..4e0f5641fe43b21b2f758421419b6aa78ba35926 100644 (file)
  */ 
 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;
@@ -25,14 +35,35 @@ 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
@@ -49,6 +80,6 @@ public interface AuthorizationRule extends Persistent {
      * 
      * @return Authorization result.
      */
-    AuthorizationResult isAllowed(Object aResource, Operation aOperation,
+    public abstract AuthorizationResult isAllowed(Object aResource, Operation aOperation,
         User aUser);
 }