02-13-2015 03:38 AM
02-13-2015 04:13 AM
@Override
public void onCreateNode(ChildAssociationRef childAssocRef) {
if (applicable(childAssocRef.getChildRef())) {
onCreateNodeImpl(childAssocRef);
}
}
protected boolean applicable(NodeRef nodeRef) {
return getNodeService().exists(nodeRef) &&
!getNodeService().hasAspect(nodeRef, RenditionModel.ASPECT_HIDDEN_RENDITION) &&
!getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_HIDDEN) &&
!getNodeService().getType(nodeRef).equals(ForumModel.TYPE_FORUM) &&
!getNodeService().getType(nodeRef).equals(ForumModel.TYPE_POST) &&
!getNodeService().getType(nodeRef).equals(ForumModel.TYPE_FORUMS) &&
!getNodeService().getType(nodeRef).equals(ForumModel.TYPE_TOPIC)
}
02-13-2015 05:28 AM
@Service
@BehaviourBean
public class ApplyConfidentiality implements NodeServicePolicies.OnCreateNodePolicy
{
@Autowired
@Qualifier("NodeService")
private NodeService nodeService;
/**
* Called when a new node has been created.
*
* @param childAssocRef the created child association reference
*/
@Behaviour(
kind = BehaviourKind.CLASS,
type = "cm:content")
@Override
public void onCreateNode(ChildAssociationRef childAssocRef)
{
if (ContentModel.TYPE_CONTENT.equals(nodeService.getType(childAssocRef.getChildRef())))
{
System.out.println("CM:CONTENT");
}else
{
System.out.println("CM:CONTENT subType");
}
for (QName qName : nodeService.getAspects(childAssocRef.getChildRef()))
{
System.out.println(qName.getLocalName());
}
if (nodeService.hasAspect(childAssocRef.getChildRef(), RenditionModel.ASPECT_HIDDEN_RENDITION))
{
System.out.println("REDITION HIDDEN");
}
if (nodeService.hasAspect(childAssocRef.getChildRef(), ContentModel.ASPECT_HIDDEN))
{
System.out.println("ASPECT HIDDEN");
}
}
}
02-13-2015 05:54 AM
02-13-2015 07:40 AM
/** the types (hardcoded) to ignore generally */
private static final Set<QName> IGNORE_TYPES;
/** the aspects (hardcoded) to ignore generally */
private static final Set<QName> IGNORE_ASPECTS;
static
{
IGNORE_TYPES = new HashSet<QName>(13);
IGNORE_TYPES.add(RuleModel.TYPE_RULE);
IGNORE_TYPES.add(ActionModel.TYPE_ACTION);
IGNORE_TYPES.add(ContentModel.TYPE_THUMBNAIL);
// Workaround to prevent rules running on cm:rating nodes (which happened for 'liked' folders ALF-8308 & ALF-8382)
IGNORE_TYPES.add(ContentModel.TYPE_RATING);
IGNORE_TYPES.add(ContentModel.TYPE_SYSTEM_FOLDER);
IGNORE_ASPECTS = new HashSet<QName>(13);
IGNORE_ASPECTS.add(ContentModel.ASPECT_TEMPORARY);
}
protected void triggerRules(NodeRef nodeRef, NodeRef actionedUponNodeRef)
{
// Break out early if rules are off
if (!areRulesEnabled())
{
return;
}
// Do not trigger rules for rule and action type nodes
if (ignoreTrigger(actionedUponNodeRef) == false)
{
for (RuleType ruleType : this.ruleTypes)
{
ruleType.triggerRuleType(nodeRef, actionedUponNodeRef, this.executeRuleImmediately);
}
}
}
/**
* Indicate whether the trigger should be ignored or not
* @param actionedUponNodeRef actioned upon node reference
* @return boolean true if the trigger should be ignored, false otherwise
*/
private boolean ignoreTrigger(NodeRef actionedUponNodeRef)
{
boolean result = false;
QName typeQName = nodeService.getType(actionedUponNodeRef);
if (IGNORE_TYPES.contains(typeQName))
{
result = true;
}
for (QName aspectToIgnore : IGNORE_ASPECTS)
{
if (nodeService.hasAspect(actionedUponNodeRef, aspectToIgnore))
{
return true;
}
}
return result;
}
02-16-2015 12:30 PM
/**
* the types to ignore generally (see RuleTriggerAbstractBase)
*/
private static ImmutableSet<QName> IGNORE_TYPES = ImmutableSet.<QName>builder()
.add(RuleModel.TYPE_RULE)
.add(ActionModel.TYPE_ACTION)
.add(ContentModel.TYPE_THUMBNAIL)
.add(ContentModel.TYPE_RATING)
.add(ContentModel.TYPE_SYSTEM_FOLDER)
.build();
/**
* the aspects to ignoreForBehaviour generally (see RuleTriggerAbstractBase)
*/
public static ImmutableSet<QName> IGNORE_ASPECTS =
ImmutableSet.<QName>builder().add(ContentModel.ASPECT_TEMPORARY).build();
/**
* (see RuleTriggerAbstractBase)
* determine if the node has to be ignored for a behaviour*
*
* @param nodeRef ref of the node
* @return true if the node should be ignored, false otherwise
*/
public boolean ignoreForBehaviour(NodeRef nodeRef)
{
if (IGNORE_TYPES.contains(nodeService.getType(nodeRef)))
{
return true;
}
for (QName aspectToIgnore : IGNORE_ASPECTS)
{
if (nodeService.hasAspect(nodeRef, aspectToIgnore))
{
return true;
}
}
return isSurfConfig(nodeRef);
}
/**
* Check if the node is inside a surf-config folder (E.g. of files in the surf-config folder dashboard.xml)*
* @param nodeRef ref of the node to check
* @return true if it's surf-config file otherwise false
*/
private boolean isSurfConfig(NodeRef nodeRef)
{
if(nodeRef != null && nodeService.exists(nodeRef))
{
if ("surf-config".equals(nodeService.getProperty(nodeRef, ContentModel.PROP_NAME)))
{
return true;
}
return isSurfConfig(nodeService.getPrimaryParent(nodeRef).getParentRef());
}
return false;
}
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.