VIVO-774 clean up the handling of RoleLevel changes.
Create an interface for the Listener to act on. If the changed object doesn't implement the interface, log a warning and do nothing, instead of throwing a ClassCastException. The level values should never be null.
This commit is contained in:
parent
f4b3728822
commit
0bf6abb197
5 changed files with 75 additions and 37 deletions
|
@ -15,7 +15,6 @@ import com.hp.hpl.jena.rdf.model.Model;
|
||||||
import edu.cornell.mannlib.vedit.beans.EditProcessObject;
|
import edu.cornell.mannlib.vedit.beans.EditProcessObject;
|
||||||
import edu.cornell.mannlib.vedit.listener.ChangeListener;
|
import edu.cornell.mannlib.vedit.listener.ChangeListener;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.BaseResourceBean.RoleLevel;
|
import edu.cornell.mannlib.vitro.webapp.beans.BaseResourceBean.RoleLevel;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Property;
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess;
|
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -38,12 +37,16 @@ public class PropertyRestrictionListener implements ChangeListener {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void doDeleted(Object oldObj, EditProcessObject epo) {
|
public void doDeleted(Object oldObj, EditProcessObject epo) {
|
||||||
Property p = (Property) oldObj;
|
if (oldObj instanceof RoleRestrictedProperty) {
|
||||||
if (anyRoleChanged(p.getHiddenFromDisplayBelowRoleLevel(),
|
RoleRestrictedProperty p = (RoleRestrictedProperty) oldObj;
|
||||||
p.getProhibitedFromUpdateBelowRoleLevel(),
|
if (anyRoleChanged(p.getHiddenFromDisplayBelowRoleLevel(),
|
||||||
p.getHiddenFromPublishBelowRoleLevel(), null, null, null)) {
|
p.getProhibitedFromUpdateBelowRoleLevel(),
|
||||||
log.debug("rebuilding the PropertyRestrictionPolicyHelper after deletion");
|
p.getHiddenFromPublishBelowRoleLevel(), null, null, null)) {
|
||||||
createAndSetBean();
|
log.debug("rebuilding the PropertyRestrictionPolicyHelper after deletion");
|
||||||
|
createAndSetBean();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.warn("Not an instance of RoleRestrictedProperty: " + oldObj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,13 +55,17 @@ public class PropertyRestrictionListener implements ChangeListener {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void doInserted(Object newObj, EditProcessObject epo) {
|
public void doInserted(Object newObj, EditProcessObject epo) {
|
||||||
Property p = (Property) newObj;
|
if (newObj instanceof RoleRestrictedProperty) {
|
||||||
if (anyRoleChanged(null, null, null,
|
RoleRestrictedProperty p = (RoleRestrictedProperty) newObj;
|
||||||
p.getHiddenFromDisplayBelowRoleLevel(),
|
if (anyRoleChanged(null, null, null,
|
||||||
p.getProhibitedFromUpdateBelowRoleLevel(),
|
p.getHiddenFromDisplayBelowRoleLevel(),
|
||||||
p.getHiddenFromPublishBelowRoleLevel())) {
|
p.getProhibitedFromUpdateBelowRoleLevel(),
|
||||||
log.debug("rebuilding the PropertyRestrictionPolicyHelper after insertion");
|
p.getHiddenFromPublishBelowRoleLevel())) {
|
||||||
createAndSetBean();
|
log.debug("rebuilding the PropertyRestrictionPolicyHelper after insertion");
|
||||||
|
createAndSetBean();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.warn("Not an instance of RoleRestrictedProperty: " + newObj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,16 +74,22 @@ public class PropertyRestrictionListener implements ChangeListener {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void doUpdated(Object oldObj, Object newObj, EditProcessObject epo) {
|
public void doUpdated(Object oldObj, Object newObj, EditProcessObject epo) {
|
||||||
Property oldP = (Property) oldObj;
|
if (oldObj instanceof RoleRestrictedProperty
|
||||||
Property newP = (Property) newObj;
|
&& newObj instanceof RoleRestrictedProperty) {
|
||||||
if (anyRoleChanged(oldP.getHiddenFromDisplayBelowRoleLevel(),
|
RoleRestrictedProperty oldP = (RoleRestrictedProperty) oldObj;
|
||||||
oldP.getProhibitedFromUpdateBelowRoleLevel(),
|
RoleRestrictedProperty newP = (RoleRestrictedProperty) newObj;
|
||||||
oldP.getHiddenFromPublishBelowRoleLevel(),
|
if (anyRoleChanged(oldP.getHiddenFromDisplayBelowRoleLevel(),
|
||||||
newP.getHiddenFromDisplayBelowRoleLevel(),
|
oldP.getProhibitedFromUpdateBelowRoleLevel(),
|
||||||
newP.getProhibitedFromUpdateBelowRoleLevel(),
|
oldP.getHiddenFromPublishBelowRoleLevel(),
|
||||||
newP.getHiddenFromPublishBelowRoleLevel())) {
|
newP.getHiddenFromDisplayBelowRoleLevel(),
|
||||||
log.debug("rebuilding the PropertyRestrictionPolicyHelper after update");
|
newP.getProhibitedFromUpdateBelowRoleLevel(),
|
||||||
createAndSetBean();
|
newP.getHiddenFromPublishBelowRoleLevel())) {
|
||||||
|
log.debug("rebuilding the PropertyRestrictionPolicyHelper after update");
|
||||||
|
createAndSetBean();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.warn("Not instances of RoleRestrictedProperty: " + oldObj
|
||||||
|
+ ", " + newObj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.auth.policy.bean;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.beans.BaseResourceBean.RoleLevel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A property or faux property whose usage can be restricted according to the
|
||||||
|
* user's role level.
|
||||||
|
*/
|
||||||
|
public interface RoleRestrictedProperty {
|
||||||
|
RoleLevel getHiddenFromDisplayBelowRoleLevel();
|
||||||
|
|
||||||
|
RoleLevel getProhibitedFromUpdateBelowRoleLevel();
|
||||||
|
|
||||||
|
RoleLevel getHiddenFromPublishBelowRoleLevel();
|
||||||
|
}
|
|
@ -25,9 +25,9 @@ public class BaseResourceBean implements ResourceBean {
|
||||||
protected String localNameWithPrefix = null;
|
protected String localNameWithPrefix = null;
|
||||||
protected String pickListName = null;
|
protected String pickListName = null;
|
||||||
|
|
||||||
protected RoleLevel hiddenFromDisplayBelowRoleLevel = null;
|
protected RoleLevel hiddenFromDisplayBelowRoleLevel = RoleLevel.PUBLIC;
|
||||||
protected RoleLevel prohibitedFromUpdateBelowRoleLevel = null;
|
protected RoleLevel prohibitedFromUpdateBelowRoleLevel = RoleLevel.PUBLIC;
|
||||||
protected RoleLevel hiddenFromPublishBelowRoleLevel = null;
|
protected RoleLevel hiddenFromPublishBelowRoleLevel = RoleLevel.PUBLIC;
|
||||||
|
|
||||||
public enum RoleLevel {
|
public enum RoleLevel {
|
||||||
PUBLIC("http://vitro.mannlib.cornell.edu/ns/vitro/role#public",
|
PUBLIC("http://vitro.mannlib.cornell.edu/ns/vitro/role#public",
|
||||||
|
@ -79,6 +79,10 @@ public class BaseResourceBean implements ResourceBean {
|
||||||
return shorthand;
|
return shorthand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static RoleLevel notNull(RoleLevel level) {
|
||||||
|
return (level == null) ? RoleLevel.values()[0] : level;
|
||||||
|
}
|
||||||
|
|
||||||
public static RoleLevel getRoleByUri(String uri2) {
|
public static RoleLevel getRoleByUri(String uri2) {
|
||||||
if (uri2 == null)
|
if (uri2 == null)
|
||||||
return RoleLevel.values()[0];
|
return RoleLevel.values()[0];
|
||||||
|
@ -208,13 +212,13 @@ public class BaseResourceBean implements ResourceBean {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setHiddenFromDisplayBelowRoleLevel(RoleLevel eR) {
|
public void setHiddenFromDisplayBelowRoleLevel(RoleLevel level) {
|
||||||
hiddenFromDisplayBelowRoleLevel = eR;
|
hiddenFromDisplayBelowRoleLevel = RoleLevel.notNull(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setHiddenFromDisplayBelowRoleLevelUsingRoleUri(String roleUri) {
|
public void setHiddenFromDisplayBelowRoleLevelUsingRoleUri(String roleUri) {
|
||||||
hiddenFromDisplayBelowRoleLevel = BaseResourceBean.RoleLevel.getRoleByUri(roleUri);
|
hiddenFromDisplayBelowRoleLevel = RoleLevel.getRoleByUri(roleUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -223,13 +227,13 @@ public class BaseResourceBean implements ResourceBean {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setProhibitedFromUpdateBelowRoleLevel(RoleLevel eR) {
|
public void setProhibitedFromUpdateBelowRoleLevel(RoleLevel level) {
|
||||||
prohibitedFromUpdateBelowRoleLevel = eR;
|
prohibitedFromUpdateBelowRoleLevel = RoleLevel.notNull(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setProhibitedFromUpdateBelowRoleLevelUsingRoleUri(String roleUri) {
|
public void setProhibitedFromUpdateBelowRoleLevelUsingRoleUri(String roleUri) {
|
||||||
prohibitedFromUpdateBelowRoleLevel = BaseResourceBean.RoleLevel.getRoleByUri(roleUri);
|
prohibitedFromUpdateBelowRoleLevel = RoleLevel.getRoleByUri(roleUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -238,8 +242,8 @@ public class BaseResourceBean implements ResourceBean {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setHiddenFromPublishBelowRoleLevel(RoleLevel eR) {
|
public void setHiddenFromPublishBelowRoleLevel(RoleLevel level) {
|
||||||
hiddenFromPublishBelowRoleLevel = eR;
|
hiddenFromPublishBelowRoleLevel = RoleLevel.notNull(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -6,13 +6,15 @@ import java.text.Collator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.policy.bean.RoleRestrictedProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class representing a property that relates an entity (object)
|
* class representing a property that relates an entity (object)
|
||||||
* to a data literal
|
* to a data literal
|
||||||
* @author bjl23
|
* @author bjl23
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class DataProperty extends Property implements Comparable<DataProperty>, ResourceBean {
|
public class DataProperty extends Property implements Comparable<DataProperty>, ResourceBean, RoleRestrictedProperty {
|
||||||
|
|
||||||
private String name = null;
|
private String name = null;
|
||||||
private String publicName = null;
|
private String publicName = null;
|
||||||
|
|
|
@ -17,11 +17,13 @@ import org.joda.time.DateTime;
|
||||||
|
|
||||||
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
|
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.policy.bean.RoleRestrictedProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a class representing an object property
|
* a class representing an object property
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class ObjectProperty extends Property implements Comparable<ObjectProperty>, ResourceBean, Cloneable
|
public class ObjectProperty extends Property implements Comparable<ObjectProperty>, ResourceBean, Cloneable, RoleRestrictedProperty
|
||||||
{
|
{
|
||||||
private static final Log log = LogFactory.getLog(ObjectProperty.class.getName());
|
private static final Log log = LogFactory.getLog(ObjectProperty.class.getName());
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue