diff --git a/source/java/org/alfresco/opencmis/mapping/IsImmutableProperty.java b/source/java/org/alfresco/opencmis/mapping/IsImmutableProperty.java index 46cbaaa3f5..7ace032b13 100644 --- a/source/java/org/alfresco/opencmis/mapping/IsImmutableProperty.java +++ b/source/java/org/alfresco/opencmis/mapping/IsImmutableProperty.java @@ -23,6 +23,9 @@ import java.io.Serializable; import org.alfresco.opencmis.CMISConnector; import org.alfresco.opencmis.dictionary.CMISNodeInfo; import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.lock.LockService; +import org.alfresco.service.cmr.lock.LockType; +import org.alfresco.service.cmr.repository.NodeRef; import org.apache.chemistry.opencmis.commons.PropertyIds; /** @@ -32,18 +35,22 @@ import org.apache.chemistry.opencmis.commons.PropertyIds; */ public class IsImmutableProperty extends AbstractProperty { + private LockService lockService; + /** * Construct */ public IsImmutableProperty(ServiceRegistry serviceRegistry, CMISConnector connector) { super(serviceRegistry, connector, PropertyIds.IS_IMMUTABLE); + lockService = serviceRegistry.getLockService(); } @Override public Serializable getValueInternal(CMISNodeInfo nodeInfo) { - if (nodeInfo.isVersion()) + NodeRef nodeRef = nodeInfo.getNodeRef(); + if (nodeInfo.isVersion() || (nodeInfo.hasPWC() && !nodeInfo.isPWC()) || (lockService.getLockType(nodeRef) == LockType.READ_ONLY_LOCK)) { return true; }