mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
OpenCMIS server performance improvements
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29571 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -18,9 +18,9 @@
|
||||
*/
|
||||
package org.alfresco.opencmis.mapping;
|
||||
|
||||
import org.alfresco.opencmis.CMISConnector;
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.opencmis.dictionary.CMISNodeInfo;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
|
||||
/**
|
||||
* Action Evaluator whose evaluation takes place on parent
|
||||
@@ -30,7 +30,6 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
public class ParentActionEvaluator extends AbstractActionEvaluator
|
||||
{
|
||||
private AbstractActionEvaluator evaluator;
|
||||
private CMISConnector cmisConnector;
|
||||
|
||||
/**
|
||||
* Construct
|
||||
@@ -38,11 +37,10 @@ public class ParentActionEvaluator extends AbstractActionEvaluator
|
||||
* @param serviceRegistry
|
||||
* @param action
|
||||
*/
|
||||
protected ParentActionEvaluator(CMISConnector cmisConnector, AbstractActionEvaluator evaluator)
|
||||
protected ParentActionEvaluator(AbstractActionEvaluator evaluator)
|
||||
{
|
||||
super(evaluator.getServiceRegistry(), evaluator.getAction());
|
||||
this.evaluator = evaluator;
|
||||
this.cmisConnector = cmisConnector;
|
||||
}
|
||||
|
||||
public boolean isAllowed(CMISNodeInfo nodeInfo)
|
||||
@@ -52,10 +50,10 @@ public class ParentActionEvaluator extends AbstractActionEvaluator
|
||||
return false;
|
||||
}
|
||||
|
||||
ChildAssociationRef car = getServiceRegistry().getNodeService().getPrimaryParent(nodeInfo.getNodeRef());
|
||||
if ((car != null) && (car.getParentRef() != null))
|
||||
List<CMISNodeInfo> parents = nodeInfo.getParents();
|
||||
if (!parents.isEmpty())
|
||||
{
|
||||
return evaluator.isAllowed(cmisConnector.createNodeInfo(car.getParentRef()));
|
||||
return evaluator.isAllowed(parents.get(0));
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@@ -19,11 +19,11 @@
|
||||
package org.alfresco.opencmis.mapping;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.opencmis.CMISConnector;
|
||||
import org.alfresco.opencmis.dictionary.CMISNodeInfo;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.apache.chemistry.opencmis.commons.PropertyIds;
|
||||
|
||||
/**
|
||||
@@ -51,10 +51,10 @@ public class ParentProperty extends AbstractProperty
|
||||
return null;
|
||||
}
|
||||
|
||||
ChildAssociationRef car = getServiceRegistry().getNodeService().getPrimaryParent(nodeInfo.getNodeRef());
|
||||
if ((car != null) && (car.getParentRef() != null))
|
||||
List<CMISNodeInfo> parents = nodeInfo.getParents();
|
||||
if (!parents.isEmpty())
|
||||
{
|
||||
return car.getParentRef().toString();
|
||||
return parents.get(0).getObjectId();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@@ -159,9 +159,8 @@ public class RuntimePropertyAccessorMapping implements PropertyAccessorMapping,
|
||||
Action.CAN_GET_PROPERTIES, PermissionService.READ_PROPERTIES));
|
||||
registerEvaluator(BaseTypeId.CMIS_DOCUMENT, new FixedValueActionEvaluator(serviceRegistry,
|
||||
Action.CAN_GET_OBJECT_RELATIONSHIPS, true));
|
||||
registerEvaluator(BaseTypeId.CMIS_DOCUMENT, new ParentActionEvaluator(cmisConnector,
|
||||
new PermissionActionEvaluator(serviceRegistry, Action.CAN_GET_OBJECT_PARENTS,
|
||||
PermissionService.READ_PERMISSIONS)));
|
||||
registerEvaluator(BaseTypeId.CMIS_DOCUMENT, new ParentActionEvaluator(new PermissionActionEvaluator(
|
||||
serviceRegistry, Action.CAN_GET_OBJECT_PARENTS, PermissionService.READ_PERMISSIONS)));
|
||||
// Is CAN_MOVE correct mapping?
|
||||
registerEvaluator(BaseTypeId.CMIS_DOCUMENT, new CurrentVersionEvaluator(serviceRegistry,
|
||||
new PermissionActionEvaluator(serviceRegistry, Action.CAN_MOVE_OBJECT, PermissionService.DELETE_NODE),
|
||||
@@ -213,11 +212,10 @@ public class RuntimePropertyAccessorMapping implements PropertyAccessorMapping,
|
||||
Action.CAN_GET_PROPERTIES, PermissionService.READ_PROPERTIES));
|
||||
registerEvaluator(BaseTypeId.CMIS_FOLDER, new FixedValueActionEvaluator(serviceRegistry,
|
||||
Action.CAN_GET_OBJECT_RELATIONSHIPS, true));
|
||||
registerEvaluator(BaseTypeId.CMIS_FOLDER, new ParentActionEvaluator(cmisConnector,
|
||||
new PermissionActionEvaluator(serviceRegistry, Action.CAN_GET_OBJECT_PARENTS,
|
||||
PermissionService.READ_PERMISSIONS)));
|
||||
registerEvaluator(BaseTypeId.CMIS_FOLDER, new ParentActionEvaluator(new PermissionActionEvaluator(
|
||||
serviceRegistry, Action.CAN_GET_OBJECT_PARENTS, PermissionService.READ_PERMISSIONS)));
|
||||
registerEvaluator(BaseTypeId.CMIS_FOLDER, new RootFolderEvaluator(serviceRegistry, new ParentActionEvaluator(
|
||||
cmisConnector, new PermissionActionEvaluator(serviceRegistry, Action.CAN_GET_FOLDER_PARENT,
|
||||
new PermissionActionEvaluator(serviceRegistry, Action.CAN_GET_FOLDER_PARENT,
|
||||
PermissionService.READ_PERMISSIONS)), false));
|
||||
registerEvaluator(BaseTypeId.CMIS_FOLDER, new PermissionActionEvaluator(serviceRegistry,
|
||||
Action.CAN_GET_DESCENDANTS, PermissionService.READ_CHILDREN));
|
||||
|
Reference in New Issue
Block a user