package com.plexobject.rbac.security;
import java.util.Map;
import java.util.TreeMap;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
public class PermissionRequest {
private final String domain;
private final String subjectName;
private final String operation;
private final String target;
private final Map<String, Object> subjectContext = new TreeMap<String, Object>();
public PermissionRequest(final String domain, final String subjectName,
final String operation, final String target,
final Map<String, Object> subjectContext) {
this.domain = domain;
this.subjectName = subjectName;
this.operation = operation;
this.target = target;
if (subjectContext != null) {
this.subjectContext.putAll(subjectContext);
}
}
public String getDomain() {
return domain;
}
/**
* @return the subjectName
*/
public String getSubjectName() {
return subjectName;
}
/**
* @return the operation
*/
public String getOperation() {
return operation;
}
/**
* @return the target
*/
public String getTarget() {
return target;
}
/**
* @return the subjectContext
*/
public Map<String, Object> getSubjectContext() {
return subjectContext;
}
/**
* @see java.lang.Object#equals(Object)
*/
@Override
public boolean equals(Object object) {
if (!(object instanceof PermissionRequest)) {
return false;
}
PermissionRequest rhs = (PermissionRequest) object;
return new EqualsBuilder().append(this.domain, domain).append(
this.subjectName, rhs.subjectName).append(this.operation,
rhs.operation).append(this.target, rhs.target).append(
this.subjectContext, rhs.subjectContext).isEquals();
}
/**
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
return new HashCodeBuilder(786529047, 1924536713).append(domain)
.append(subjectName).append(operation).append(target)
.toHashCode();
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return new ToStringBuilder(this).append(domain).append(subjectName)
.append(operation).append(target).append(subjectContext)
.toString();
}
}