X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthorization%2FUrlAuthorizationRule.java;h=e782a18e5c3c09485c6cc606be9aa1b6d3d885ec;hb=74a6cd5b71b4f668ddac54c3237511ee11e8d84e;hp=71fcac78faca8b1b4f4acaeeb7c10e002e4241f9;hpb=a11c373e6ef35e7fe540c95a94903ed848800612;p=utils diff --git a/security/impl/src/main/java/org/wamblee/security/authorization/UrlAuthorizationRule.java b/security/impl/src/main/java/org/wamblee/security/authorization/UrlAuthorizationRule.java index 71fcac78..e782a18e 100644 --- a/security/impl/src/main/java/org/wamblee/security/authorization/UrlAuthorizationRule.java +++ b/security/impl/src/main/java/org/wamblee/security/authorization/UrlAuthorizationRule.java @@ -15,14 +15,21 @@ */ package org.wamblee.security.authorization; -import org.apache.log4j.Logger; - -import static org.wamblee.security.authorization.AuthorizationResult.DENIED; -import static org.wamblee.security.authorization.AuthorizationResult.GRANTED; -import static org.wamblee.security.authorization.AuthorizationResult.UNDECIDED; -import static org.wamblee.security.authorization.AuthorizationResult.UNSUPPORTED_RESOURCE; +import static org.wamblee.security.authorization.AuthorizationResult.*; + +import javax.enterprise.inject.Typed; +import javax.persistence.Access; +import javax.persistence.AccessType; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; +import javax.persistence.Transient; -import org.wamblee.security.AbstractPersistent; +import org.apache.log4j.Logger; import org.wamblee.usermgt.User; /** @@ -31,12 +38,12 @@ import org.wamblee.usermgt.User; *
  • The path of the resource. To obtain the path of a resource, subclasses * must implement {@link #getResourcePath(Object)}. Whether a path is * appropriate is determined by a - * {@link org.wamblee.security.authorization.PathCondition}.
  • + * {@link org.wamblee.security.authorization.AbstractPathCondition}. *
  • The user identity with which the resource is accessed. Whether a user is * appropriate is determined by a - * {@link org.wamblee.security.authorization.UserCondition}.
  • + * {@link org.wamblee.security.authorization.AbstractUserCondition}. *
  • The operation that is requested. Whether the operation is appropriate is - * determined by a {@link org.wamblee.security.authorization.OperationCondition} + * determined by a {@link org.wamblee.security.authorization.AbstractOperationCondition} * .
  • * * In case all three conditions match, the condition returns the configured @@ -44,8 +51,9 @@ import org.wamblee.usermgt.User; * the specified type, the result is UNSUPPORTED_RESOURCE, otherwise, the result * is UNDECIDED. */ -public abstract class UrlAuthorizationRule extends AbstractPersistent implements - AuthorizationRule { +@Entity +@Access(AccessType.PROPERTY) +public abstract class UrlAuthorizationRule extends AbstractAuthorizationRule { private static final Logger LOGGER = Logger .getLogger(UrlAuthorizationRule.class); @@ -72,6 +80,7 @@ public abstract class UrlAuthorizationRule extends AbstractPersistent implements /** * Operation that this rule is for. */ + private OperationCondition operationCondition; /** @@ -134,6 +143,7 @@ public abstract class UrlAuthorizationRule extends AbstractPersistent implements * @see * org.wamblee.security.authorization.AuthorizationRule#getSupportedTypes() */ + @Transient public Class[] getSupportedTypes() { return new Class[] { resourceClass }; } @@ -213,6 +223,7 @@ public abstract class UrlAuthorizationRule extends AbstractPersistent implements * * @return Result. */ + @Column(name = "AUTH_RESULT", nullable = false) protected String getAuthorizationResultString() { if (result == null) { return null; @@ -231,6 +242,7 @@ public abstract class UrlAuthorizationRule extends AbstractPersistent implements result = AuthorizationResult.valueOf(aResult); } + @Column(name = "RES_CLASSNAME", nullable = false) protected String getResourceClassName() { if (resourceClass == null) { return ""; @@ -253,6 +265,8 @@ public abstract class UrlAuthorizationRule extends AbstractPersistent implements * * @return Returns the operationCondition. */ + @OneToOne(cascade = CascadeType.ALL, targetEntity = AbstractOperationCondition.class, orphanRemoval = true) + @JoinColumn(name = "OPER_COND_PK") public OperationCondition getOperationCondition() { return operationCondition; } @@ -270,6 +284,8 @@ public abstract class UrlAuthorizationRule extends AbstractPersistent implements * * @return Returns the pathCondition. */ + @OneToOne(cascade = CascadeType.ALL, targetEntity = AbstractPathCondition.class, orphanRemoval = true) + @JoinColumn(name = "PATH_COND_PK") public PathCondition getPathCondition() { return pathCondition; } @@ -287,6 +303,8 @@ public abstract class UrlAuthorizationRule extends AbstractPersistent implements * * @return Returns the userCondition. */ + @OneToOne(cascade = CascadeType.ALL, targetEntity = AbstractUserCondition.class, orphanRemoval = true) + @JoinColumn(name = "USER_COND_PK") public UserCondition getUserCondition() { return userCondition; }