Now working with both hibernate and eclipselink
[utils] / security / impl / src / main / java / org / wamblee / security / authorization / DefaultAuthorizationService.java
index c5a8d8f2d1a360eb8fd2d2a1315c0507a56ca668..1e5abb99c0e28cf9cc95b67e7187f0215c98efd6 100644 (file)
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 package org.wamblee.security.authorization;
 
-import org.wamblee.persistence.AbstractPersistent;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderColumn;
+import javax.persistence.Transient;
 
 import org.wamblee.usermgt.User;
 import org.wamblee.usermgt.UserAccessor;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Default implementation of an authorization service. To determine whether
  * access to a resource is allowed, the service consults a number of
@@ -33,23 +39,24 @@ import java.util.List;
  * 
  * @author Erik Brakkee
  */
-public class DefaultAuthorizationService extends AbstractPersistent implements
-    AuthorizationService {
+@Entity
+@DiscriminatorValue("DEFAULT")
+public class DefaultAuthorizationService extends AbstractAuthorizationService {
+    
+    
     /**
      * List of ordered authorization rules.
      */
+    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, targetEntity = AbstractAuthorizationRule.class)
+    @OrderColumn(name = "RULE_INDEX")
     private List<AuthorizationRule> rules;
 
     /**
      * User accessor used to obtain the current user.
      */
+    @Transient
     private UserAccessor userAccessor;
 
-    /**
-     * Name for this instance of the authorization service.
-     */
-    private String name;
-
     /**
      * Constructs the service.
      * 
@@ -59,9 +66,9 @@ public class DefaultAuthorizationService extends AbstractPersistent implements
      *            Name of this instance of the service.
      */
     public DefaultAuthorizationService(UserAccessor aAccessor, String aName) {
+        super(aName);
         rules = new ArrayList<AuthorizationRule>();
         userAccessor = aAccessor;
-        name = aName;
     }
 
     /**
@@ -70,7 +77,6 @@ public class DefaultAuthorizationService extends AbstractPersistent implements
     public DefaultAuthorizationService() {
         rules = new ArrayList<AuthorizationRule>();
         userAccessor = null;
-        name = null;
     }
 
     /**
@@ -79,6 +85,7 @@ public class DefaultAuthorizationService extends AbstractPersistent implements
      * @param aUserAccessor
      *            User accessor.
      */
+    @Override
     public void setUserAccessor(UserAccessor aUserAccessor) {
         userAccessor = aUserAccessor;
     }
@@ -120,21 +127,13 @@ public class DefaultAuthorizationService extends AbstractPersistent implements
         return aResource;
     }
 
-    protected String getName() {
-        return name;
-    }
-
-    public void setName(String aName) {
-        name = aName;
-    }
-
     /*
      * (non-Javadoc)
      * 
      * @see org.wamblee.security.authorization.AuthorizationService#getRules()
      */
     public AuthorizationRule[] getRules() {
-        return rules.toArray(new AuthorizationRule[0]);
+        return rules.toArray(new AbstractAuthorizationRule[0]);
     }
 
     /*