diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
index cc0af7b9d8..fe6cedfd6d 100644
--- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
+++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
@@ -84,9 +84,13 @@
+
+
+
+
diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
index 97f6a97480..7d4b163dc7 100644
--- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
+++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
@@ -161,6 +161,8 @@
+
+
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java
index 0a6c839818..9068216fb3 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java
@@ -28,10 +28,15 @@
package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
import java.io.Serializable;
+import java.security.InvalidParameterException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException;
+import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
import org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService;
@@ -55,6 +60,8 @@ import org.alfresco.service.namespace.QName;
import org.alfresco.util.ParameterCheck;
import org.alfresco.util.PropertyMap;
+import com.google.common.collect.Sets;
+
/**
* Behaviour associated with the RM Site type
*
@@ -68,12 +75,14 @@ import org.alfresco.util.PropertyMap;
public class RmSiteType extends BaseBehaviourBean
implements NodeServicePolicies.OnCreateNodePolicy,
NodeServicePolicies.OnUpdatePropertiesPolicy,
- NodeServicePolicies.BeforeDeleteNodePolicy
+ NodeServicePolicies.BeforeDeleteNodePolicy,
+ NodeServicePolicies.OnCreateChildAssociationPolicy
{
/** Constant values */
public static final String COMPONENT_DOCUMENT_LIBRARY = "documentLibrary";
public static final String DEFAULT_SITE_NAME = "rm";
public static final QName DEFAULT_FILE_PLAN_TYPE = TYPE_FILE_PLAN;
+ private final static List ACCEPTED_NON_UNIQUE_CHILD_TYPES = Arrays.asList(ContentModel.TYPE_FOLDER);
/** Site service */
protected SiteService siteService;
@@ -295,4 +304,53 @@ public class RmSiteType extends BaseBehaviourBean
}
}
}
+
+ /**
+ * Add the limitation of creating only one rma:filePlan or one dod:filePlan depending on the type of rm site.
+ * Also added the limitation of crating two cm:folder type under rm site.
+ *
+ * Other than this nothing can be created under rm site nodeRef
+ *
+ * @author Silviu Dinuta
+ * @since 2.6
+ */
+ @Override
+ @Behaviour(kind = BehaviourKind.ASSOCIATION)
+ public void onCreateChildAssociation(final ChildAssociationRef childAssocRef, boolean isNewNode)
+ {
+ AuthenticationUtil.runAsSystem(new RunAsWork()
+ {
+ @Override
+ public Void doWork()
+ {
+ final NodeRef child = childAssocRef.getChildRef();
+ final NodeRef parent = childAssocRef.getParentRef();
+ List acceptedUniqueChildTypes = new ArrayList();
+ SiteInfo siteInfo = siteService.getSite(parent);
+ acceptedUniqueChildTypes.add(getFilePlanType(siteInfo));
+ // check the created child is of an accepted type
+ validateNewChildAssociation(parent, child, acceptedUniqueChildTypes, ACCEPTED_NON_UNIQUE_CHILD_TYPES);
+ return null;
+ }
+ });
+ }
+
+ /**
+ * Overridden this because in this case we need to have multiple cm:folder types but not more than two of them.
+ * The two mentioned folders are created when rm site is created and one of them is Saved Searches and the other surf-config folder.
+ After that creation of cm:folder should not be allowed under rm site node
+ *
+ */
+ @Override
+ protected void validateNewChildAssociation(NodeRef parent, NodeRef child, List acceptedUniqueChildType,
+ List acceptedMultipleChildType) throws InvalidParameterException
+ {
+ super.validateNewChildAssociation(parent, child, acceptedUniqueChildType, acceptedMultipleChildType);
+
+ // check the user is not trying to create more than 2 folders that are created by default.
+ if(nodeService.getChildAssocs(parent, Sets.newHashSet(ContentModel.TYPE_FOLDER)).size() > 2)
+ {
+ throw new InvalidParameterException("Operation failed. Children of type " + ContentModel.TYPE_FOLDER + " are not allowed");
+ }
+ }
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerType.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerType.java
index 07a2d3fe9c..b46fd8c711 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerType.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerType.java
@@ -26,8 +26,7 @@
*/
package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
-import java.util.Arrays;
-import java.util.List;
+import java.security.InvalidParameterException;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
@@ -38,7 +37,6 @@ import org.alfresco.repo.policy.annotation.BehaviourBean;
import org.alfresco.repo.policy.annotation.BehaviourKind;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.namespace.QName;
import org.springframework.extensions.surf.util.I18NUtil;
/**
@@ -52,20 +50,41 @@ public class TransferContainerType extends BaseBehaviourBean
implements NodeServicePolicies.OnCreateChildAssociationPolicy, NodeServicePolicies.OnCreateNodePolicy
{
private final static String MSG_ERROR_ADD_CONTENT_CONTAINER = "rm.service.error-add-content-container";
- private final static List ACCEPTED_NON_UNIQUE_CHILD_TYPES = Arrays.asList(TYPE_TRANSFER);
+ private static final String BEHAVIOUR_NAME = "onCreateChildAssocsForTransferContainer";
/**
- * On every event
+ * Disable the behaviours for this transaction
+ *
+ */
+ public void disable()
+ {
+ getBehaviour(BEHAVIOUR_NAME).disable();
+ }
+
+ /**
+ * Enable behaviours for this transaction
+ *
+ */
+ public void enable()
+ {
+ getBehaviour(BEHAVIOUR_NAME).enable();
+ }
+
+ /**
+ * Prevent creating a node inside transfer container, this will be possible only through internal services in a controlled manner.
*
* @see org.alfresco.repo.node.NodeServicePolicies.OnCreateChildAssociationPolicy#onCreateChildAssociation(org.alfresco.service.cmr.repository.ChildAssociationRef,
* boolean)
*/
@Override
- @Behaviour(kind = BehaviourKind.ASSOCIATION)
+ @Behaviour
+ (
+ kind = BehaviourKind.ASSOCIATION,
+ name = BEHAVIOUR_NAME
+ )
public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean bNew)
{
- // check the created child is of an accepted type
- validateNewChildAssociationSubTypesIncluded(childAssocRef.getChildRef(), ACCEPTED_NON_UNIQUE_CHILD_TYPES);
+ throw new InvalidParameterException("Operation failed. Creation is not allowed in Transfer Container");
}
@Override
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferType.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferType.java
new file mode 100644
index 0000000000..268caa0165
--- /dev/null
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferType.java
@@ -0,0 +1,81 @@
+/*
+ * #%L
+ * Alfresco Records Management Module
+ * %%
+ * Copyright (C) 2005 - 2016 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * -
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ * -
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * -
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * -
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
+
+package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
+
+import java.security.InvalidParameterException;
+
+import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
+import org.alfresco.repo.node.NodeServicePolicies;
+import org.alfresco.repo.policy.annotation.Behaviour;
+import org.alfresco.repo.policy.annotation.BehaviourBean;
+import org.alfresco.repo.policy.annotation.BehaviourKind;
+import org.alfresco.service.cmr.repository.ChildAssociationRef;
+
+/**
+ * rma:transfer behaviour bean
+ *
+ * @author Silviu Dinuta
+ * @since 2.6
+ */
+@BehaviourBean(defaultType = "rma:transfer")
+public class TransferType extends BaseBehaviourBean implements NodeServicePolicies.OnCreateChildAssociationPolicy
+{
+ private static final String BEHAVIOUR_NAME = "onCreateChildAssocsForTransferType";
+
+ /**
+ * Disable the behaviours for this transaction
+ *
+ */
+ public void disable()
+ {
+ getBehaviour(BEHAVIOUR_NAME).disable();
+ }
+
+ /**
+ * Enable behaviours for this transaction
+ *
+ */
+ public void enable()
+ {
+ getBehaviour(BEHAVIOUR_NAME).enable();
+ }
+
+ /**
+ * Prevent creating a node inside transfer folder, this will be possible only through internal services in a controlled manner.
+ */
+ @Override
+ @Behaviour
+ (
+ kind = BehaviourKind.ASSOCIATION,
+ name = BEHAVIOUR_NAME
+ )
+ public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean isNewNode)
+ {
+ throw new InvalidParameterException("Operation failed. Creation is not allowed in Transfer Folders");
+ }
+}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/UnfiledRecordFolderType.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/UnfiledRecordFolderType.java
new file mode 100644
index 0000000000..e9fca65542
--- /dev/null
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/UnfiledRecordFolderType.java
@@ -0,0 +1,61 @@
+/*
+ * #%L
+ * Alfresco Records Management Module
+ * %%
+ * Copyright (C) 2005 - 2016 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * -
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ * -
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * -
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * -
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
+
+package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.alfresco.model.ContentModel;
+import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
+import org.alfresco.repo.node.NodeServicePolicies;
+import org.alfresco.repo.policy.annotation.Behaviour;
+import org.alfresco.repo.policy.annotation.BehaviourBean;
+import org.alfresco.repo.policy.annotation.BehaviourKind;
+import org.alfresco.service.cmr.repository.ChildAssociationRef;
+import org.alfresco.service.namespace.QName;
+
+/**
+ * rma:unfiledRecordFolder behaviour bean
+ *
+ * @author Silviu Dinuta
+ * @since 2.6
+ */
+@BehaviourBean(defaultType = "rma:unfiledRecordFolder")
+public class UnfiledRecordFolderType extends BaseBehaviourBean
+ implements NodeServicePolicies.OnCreateChildAssociationPolicy
+{
+ private final static List ACCEPTED_NON_UNIQUE_CHILD_TYPES = Arrays.asList(TYPE_UNFILED_RECORD_FOLDER, ContentModel.TYPE_CONTENT, TYPE_NON_ELECTRONIC_DOCUMENT);
+
+ @Override
+ @Behaviour(kind = BehaviourKind.ASSOCIATION)
+ public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean isNewNode)
+ {
+ // check the created child is of an accepted type
+ validateNewChildAssociationSubTypesIncluded(childAssocRef.getChildRef(), ACCEPTED_NON_UNIQUE_CHILD_TYPES);
+ }
+}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java
index 8bc00da79d..be3775462f 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java
@@ -41,6 +41,8 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+import org.alfresco.module.org_alfresco_module_rm.model.rma.type.TransferContainerType;
+import org.alfresco.module.org_alfresco_module_rm.model.rma.type.TransferType;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
@@ -87,6 +89,10 @@ public class TransferServiceImpl extends ServiceBaseImpl
/** Freeze Service */
protected FreezeService freezeService;
+ protected TransferContainerType transferContainerType;
+
+ protected TransferType transferType;
+
/**
* @param filePlanService file plan service
*/
@@ -127,6 +133,16 @@ public class TransferServiceImpl extends ServiceBaseImpl
this.freezeService = freezeService;
}
+ public void setTransferContainerType(TransferContainerType transferContainerType)
+ {
+ this.transferContainerType = transferContainerType;
+ }
+
+ public void setTransferType(TransferType transferType)
+ {
+ this.transferType = transferType;
+ }
+
/**
* @see org.alfresco.module.org_alfresco_module_rm.transfer.TransferService#transfer(NodeRef, boolean)
*/
@@ -164,12 +180,21 @@ public class TransferServiceImpl extends ServiceBaseImpl
}
NodeRef transferContainer = filePlanService.getTransferContainer(root);
- transferNodeRef = nodeService.createNode(transferContainer,
- ContentModel.ASSOC_CONTAINS,
- QName.createQName(RM_URI, transferName),
- TYPE_TRANSFER,
- transferProps).getChildRef();
+ transferContainerType.disable();
+ try
+ {
+ transferNodeRef = nodeService.createNode(transferContainer,
+ ContentModel.ASSOC_CONTAINS,
+ QName.createQName(RM_URI, transferName),
+ TYPE_TRANSFER,
+ transferProps).getChildRef();
+
+ }
+ finally
+ {
+ transferContainerType.enable();
+ }
// Bind the hold node reference to the transaction
AlfrescoTransactionSupport.bindResource(KEY_TRANSFER_NODEREF, transferNodeRef);
}
@@ -188,10 +213,18 @@ public class TransferServiceImpl extends ServiceBaseImpl
}
// Link the record to the trasnfer object
- nodeService.addChild(transferNodeRef,
- nodeRef,
- ASSOC_TRANSFERRED,
- ASSOC_TRANSFERRED);
+ transferType.disable();
+ try
+ {
+ nodeService.addChild(transferNodeRef,
+ nodeRef,
+ ASSOC_TRANSFERRED,
+ ASSOC_TRANSFERRED);
+ }
+ finally
+ {
+ transferType.enable();
+ }
// Set PDF indicator flag
setPDFIndicationFlag(transferNodeRef, nodeRef);
@@ -253,12 +286,12 @@ public class TransferServiceImpl extends ServiceBaseImpl
{
throw new AlfrescoRuntimeException("Could not complete a transfer that contains held folders");
}
-
+
if(freezeService.hasFrozenChildren(assoc.getChildRef()))
{
throw new AlfrescoRuntimeException("Cound not complete a transfer that contains folders with held children");
}
-
+
markComplete(assoc.getChildRef(), accessionIndicator, transferLocation);
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/RMNodes.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/RMNodes.java
index bbbaf76323..983f985e96 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/RMNodes.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/RMNodes.java
@@ -45,12 +45,4 @@ public interface RMNodes extends Nodes
public static String PARAM_INCLUDE_HAS_RETENTION_SCHEDULE = "hasRetentionSchedule";
public static String PARAM_INCLUDE_IS_CLOSED = "isClosed";
public static String PARAM_INCLUDE_IS_COMPLETED = "isCompleted";
-
- /**
- * Identifies if one node is RM site node.
- *
- * @param nodeId
- * @return
- */
- boolean isRMSite(String nodeId);
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java
index d0059819bb..b127e2fbe1 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/RMNodesImpl.java
@@ -59,8 +59,6 @@ import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.site.SiteInfo;
-import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
@@ -86,7 +84,6 @@ public class RMNodesImpl extends NodesImpl implements RMNodes
private Repository repositoryHelper;
private DictionaryService dictionaryService;
private DispositionService dispositionService;
- private SiteService siteService;
/**
* TODO to remove this after isSpecialNode is made protected in core implementation(REPO-1459)
@@ -98,7 +95,6 @@ public class RMNodesImpl extends NodesImpl implements RMNodes
this.nodeService = serviceRegistry.getNodeService();
this.dictionaryService = serviceRegistry.getDictionaryService();
this.dispositionService = serviceRegistry.getDispositionService();
- this.siteService = serviceRegistry.getSiteService();
}
public void setRecordsManagementServiceRegistry(RecordsManagementServiceRegistry serviceRegistry)
@@ -402,21 +398,4 @@ public class RMNodesImpl extends NodesImpl implements RMNodes
}
super.deleteNode(nodeId, parameters);
}
-
- @Override
- public boolean isRMSite(String nodeId)
- {
- NodeRef nodeRef = validateOrLookupNode(nodeId, null);
-
- SiteInfo siteInfo = siteService.getSite(FilePlanService.DEFAULT_RM_SITE_ID);
- if(siteInfo !=null)
- {
- NodeRef rmNodeRef = siteInfo.getNodeRef();
- if(rmNodeRef.equals(nodeRef))
- {
- return true;
- }
- }
- return false;
- }
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelation.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelation.java
index bbf714bcad..9573442927 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelation.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelation.java
@@ -31,7 +31,6 @@ import java.util.ArrayList;
import java.util.List;
import org.alfresco.rest.api.model.Node;
-import org.alfresco.rest.framework.core.exceptions.PermissionDeniedException;
import org.alfresco.rest.framework.resource.RelationshipResource;
import org.alfresco.rest.framework.resource.actions.interfaces.MultiPartRelationshipResourceAction;
import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction;
@@ -68,10 +67,6 @@ public class FileplanComponentChildrenRelation implements RelationshipResourceAc
@Override
public List create(String parentFolderNodeId, List nodeInfos, Parameters parameters)
{
- if(nodes.isRMSite(parentFolderNodeId))
- {
- throw new PermissionDeniedException("POST request not allowed in RM site.");
- }
List result = new ArrayList<>(nodeInfos.size());
for (Node nodeInfo : nodeInfos)
@@ -85,10 +80,6 @@ public class FileplanComponentChildrenRelation implements RelationshipResourceAc
@Override
public Node create(String parentFolderNodeId, FormData formData, Parameters parameters, WithResponse withResponse)
{
- if(nodes.isRMSite(parentFolderNodeId))
- {
- throw new PermissionDeniedException("POST request not allowed in RM site.");
- }
return nodes.upload(parentFolderNodeId, formData, parameters);
}
}
diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteTypeUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteTypeUnitTest.java
new file mode 100644
index 0000000000..a9483509ad
--- /dev/null
+++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteTypeUnitTest.java
@@ -0,0 +1,338 @@
+/*
+ * #%L
+ * Alfresco Records Management Module
+ * %%
+ * Copyright (C) 2005 - 2016 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * -
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ * -
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * -
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * -
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
+
+package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.security.InvalidParameterException;
+import java.util.ArrayList;
+
+import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model;
+import org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock;
+import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
+import org.alfresco.module.org_alfresco_module_rm.test.util.MockAuthenticationUtilHelper;
+import org.alfresco.module.org_alfresco_module_rm.util.AuthenticationUtil;
+import org.alfresco.service.cmr.repository.ChildAssociationRef;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
+import org.alfresco.service.cmr.site.SiteService;
+import org.alfresco.service.namespace.QName;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import com.google.common.collect.Sets;
+
+/**
+ * Unit test for RmSiteType
+ *
+ * @author Silviu Dinuta
+ * @since 2.6
+ *
+ */
+public class RmSiteTypeUnitTest extends BaseUnitTest implements DOD5015Model
+{
+ @Mock
+ private AuthenticationUtil mockAuthenticationUtil;
+
+ @Mock
+ private SiteService mockedSiteService;
+
+ private @InjectMocks RmSiteType rmSiteType;
+
+ @Before
+ public void setup()
+ {
+ MockitoAnnotations.initMocks(this);
+ MockAuthenticationUtilHelper.setup(mockAuthenticationUtil);
+ }
+
+ /**
+ * Given that we try to add non allowed type to rm site,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddNonAcceptedTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);
+
+ QName type = AlfMock.generateQName();
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, type);
+
+ ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
+ when(mockedChildAssoc.getChildRef()).thenReturn(nodeRef);
+ when(mockedChildAssoc.getParentRef()).thenReturn(rmSiteNodeRef);
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add one cm:folder to rm site,
+ * Then operation is successful.
+ */
+ @Test
+ public void testAddOneFolderTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);
+ ArrayList assocs = new ArrayList();
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FOLDER);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FOLDER))).thenReturn(assocs);
+
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add two cm:folder to rm site,
+ * Then operation is successful.
+ */
+ @Test
+ public void testAddTwoFolderTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);
+ ArrayList assocs = new ArrayList();
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ //create first folder
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FOLDER);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FOLDER))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+
+ //create second cm:folder
+ nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FOLDER);
+ mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FOLDER))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add more than two cm:folder to rm site,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddMoreThanTwhoFolderTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);
+ ArrayList assocs = new ArrayList();
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FOLDER))).thenReturn(new ArrayList());
+
+ //create first folder
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FOLDER);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FOLDER))).thenReturn(assocs);
+
+ //create second cm:folder
+ nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FOLDER);
+ mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FOLDER))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+
+ //create third cm:folder
+ nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FOLDER);
+ mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FOLDER))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add one rma:filePlan to rm site,
+ * Then operation is successful.
+ */
+ @Test
+ public void testAddOneFilePlanTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);
+ ArrayList assocs = new ArrayList();
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FILE_PLAN);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FILE_PLAN))).thenReturn(assocs);
+
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add one dod:filePlan to standard rm site,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddDODFilePlanTypeToStandardRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_DOD_5015_FILE_PLAN);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add more than one rma:filePlan to rm site,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddMoreThanOneFilePlanTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);
+ ArrayList assocs = new ArrayList();
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ //first file plan creation
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FILE_PLAN);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FILE_PLAN))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+
+ //second filePlan creation
+ nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FILE_PLAN);
+ mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_FILE_PLAN))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add one dod:filePlan to rm site,
+ * Then operation is successful.
+ */
+ @Test
+ public void testAddOneDODFilePlanTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_DOD_5015_SITE, true);
+ ArrayList assocs = new ArrayList();
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteInfo.getNodeRef()).thenReturn(rmSiteNodeRef);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ when(mockedDictionaryService.isSubClass(TYPE_DOD_5015_SITE, TYPE_RM_SITE)).thenReturn(true);
+ when(mockedDictionaryService.isSubClass(TYPE_DOD_5015_FILE_PLAN, TYPE_FILE_PLAN)).thenReturn(true);
+ rmSiteType.registerFilePlanType(TYPE_DOD_5015_SITE, TYPE_DOD_5015_FILE_PLAN);
+
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_DOD_5015_FILE_PLAN);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_DOD_5015_FILE_PLAN))).thenReturn(assocs);
+
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add more than one dod:filePlan to rm site,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddMoreThanOneDODFilePlanTypeToRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_DOD_5015_SITE, true);
+ ArrayList assocs = new ArrayList();
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteInfo.getNodeRef()).thenReturn(rmSiteNodeRef);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ when(mockedDictionaryService.isSubClass(TYPE_DOD_5015_SITE, TYPE_RM_SITE)).thenReturn(true);
+ when(mockedDictionaryService.isSubClass(TYPE_DOD_5015_FILE_PLAN, TYPE_FILE_PLAN)).thenReturn(true);
+ rmSiteType.registerFilePlanType(TYPE_DOD_5015_SITE, TYPE_DOD_5015_FILE_PLAN);
+
+ //first dod:filePlan creation
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_DOD_5015_FILE_PLAN);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_DOD_5015_FILE_PLAN))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+
+ //second dod:filePlan creation
+ nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_DOD_5015_FILE_PLAN);
+ mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ assocs.add(mockedChildAssoc);
+ when(mockedNodeService.getChildAssocs(rmSiteNodeRef, Sets.newHashSet(TYPE_DOD_5015_FILE_PLAN))).thenReturn(assocs);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add one rma:filePlan to DOD rm site,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddStandardFilePlanTypeToDODRmSite()
+ {
+ NodeRef rmSiteNodeRef = generateNodeRef(TYPE_DOD_5015_SITE, true);
+
+ SiteInfo mockedSiteInfo = mock(SiteInfo.class);
+ when(mockedSiteInfo.getNodeRef()).thenReturn(rmSiteNodeRef);
+ when(mockedSiteService.getSite(rmSiteNodeRef)).thenReturn(mockedSiteInfo);
+ when(mockedApplicationContext.getBean("dbNodeService")).thenReturn(mockedNodeService);
+
+ when(mockedDictionaryService.isSubClass(TYPE_DOD_5015_SITE, TYPE_RM_SITE)).thenReturn(true);
+ when(mockedDictionaryService.isSubClass(TYPE_DOD_5015_FILE_PLAN, TYPE_FILE_PLAN)).thenReturn(true);
+ rmSiteType.registerFilePlanType(TYPE_DOD_5015_SITE, TYPE_DOD_5015_FILE_PLAN);
+
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, TYPE_FILE_PLAN);
+ ChildAssociationRef mockedChildAssoc = generateChildAssociationRef(rmSiteNodeRef, nodeRef);
+ rmSiteType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+}
diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerTypeUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerTypeUnitTest.java
index 2e3a3135b1..1623164f25 100644
--- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerTypeUnitTest.java
+++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferContainerTypeUnitTest.java
@@ -51,16 +51,15 @@ public class TransferContainerTypeUnitTest extends BaseUnitTest
private @InjectMocks TransferContainerType transferContainerType;
/**
- * Given that we try to add a non "rma:transfer" type to transfer container,
+ * Given that we try to add to transfer container,
* Then InvalidParameterException is thrown.
*/
@Test(expected = InvalidParameterException.class)
- public void testAddNonTransferTypeToTransferContainerTest()
+ public void testAddToTransferContainerTest()
{
NodeRef transferContainer = generateNodeRef(TYPE_TRANSFER_CONTAINER, true);
QName type = AlfMock.generateQName();
- when(mockedDictionaryService.isSubClass(type, TYPE_TRANSFER)).thenReturn(false);
NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, type);
ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
@@ -68,22 +67,4 @@ public class TransferContainerTypeUnitTest extends BaseUnitTest
when(mockedChildAssoc.getParentRef()).thenReturn(transferContainer);
transferContainerType.onCreateChildAssociation(mockedChildAssoc, true);
}
-
- /**
- * Given that we try to add "rma:transfer" type to transfer container,
- * Then the operation is successful.
- */
- @Test
- public void testAddTransferFolderToTransferContainer()
- {
- QName type = AlfMock.generateQName();
- when(mockedDictionaryService.isSubClass(type, TYPE_TRANSFER)).thenReturn(true);
- NodeRef transferFolder= AlfMock.generateNodeRef(mockedNodeService, type);
-
- NodeRef transferContainer = generateNodeRef(TYPE_TRANSFER_CONTAINER, true);
- ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
- when(mockedChildAssoc.getChildRef()).thenReturn(transferFolder);
- when(mockedChildAssoc.getParentRef()).thenReturn(transferContainer);
- transferContainerType.onCreateChildAssociation(mockedChildAssoc, true);
- }
}
diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferTypeUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferTypeUnitTest.java
new file mode 100644
index 0000000000..d16b49759a
--- /dev/null
+++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/TransferTypeUnitTest.java
@@ -0,0 +1,71 @@
+/*
+ * #%L
+ * Alfresco Records Management Module
+ * %%
+ * Copyright (C) 2005 - 2016 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * -
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ * -
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * -
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * -
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
+
+package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.security.InvalidParameterException;
+
+import org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock;
+import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
+import org.alfresco.service.cmr.repository.ChildAssociationRef;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.namespace.QName;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+
+/**
+ * Unit test for TransferType
+ *
+ * @author Silviu Dinuta
+ * @since 2.6
+ */
+public class TransferTypeUnitTest extends BaseUnitTest
+{
+ /** test object */
+ private @InjectMocks TransferType transferType;
+
+ /**
+ * Given that we try to add to transfer type folder,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddToTransferFolderTest()
+ {
+ NodeRef transferFolder = generateNodeRef(TYPE_TRANSFER, true);
+
+ QName type = AlfMock.generateQName();
+ NodeRef nodeRef = AlfMock.generateNodeRef(mockedNodeService, type);
+
+ ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
+ when(mockedChildAssoc.getChildRef()).thenReturn(nodeRef);
+ when(mockedChildAssoc.getParentRef()).thenReturn(transferFolder);
+ transferType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+}
diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/UnfiledRecordFolderTypeUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/UnfiledRecordFolderTypeUnitTest.java
new file mode 100644
index 0000000000..18efc7ecde
--- /dev/null
+++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/UnfiledRecordFolderTypeUnitTest.java
@@ -0,0 +1,138 @@
+/*
+ * #%L
+ * Alfresco Records Management Module
+ * %%
+ * Copyright (C) 2005 - 2016 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * -
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ * -
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * -
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * -
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
+
+package org.alfresco.module.org_alfresco_module_rm.model.rma.type;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.security.InvalidParameterException;
+
+import org.alfresco.model.ContentModel;
+import org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock;
+import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
+import org.alfresco.service.cmr.repository.ChildAssociationRef;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.namespace.QName;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+
+/**
+ * Unit test for UnfiledRecordFolderType
+ *
+ * @author Silviu Dinuta
+ * @since 2.6
+ */
+public class UnfiledRecordFolderTypeUnitTest extends BaseUnitTest
+{
+ @InjectMocks
+ private UnfiledRecordFolderType unfiledRecordFolderType;
+
+ /**
+ * Given that we try to add a type that is not one of "rma:unfiledRecordFolder", "cm:content" or "rma:nonElectronicDocument" types to unfiled record folder,
+ * Then InvalidParameterException is thrown.
+ */
+ @Test(expected = InvalidParameterException.class)
+ public void testAddNonAcceptedTypeToUnfiledRecordFolder()
+ {
+ QName type = AlfMock.generateQName();
+ when(mockedDictionaryService.isSubClass(type, TYPE_UNFILED_RECORD_FOLDER)).thenReturn(false);
+ when(mockedDictionaryService.isSubClass(type, ContentModel.TYPE_CONTENT)).thenReturn(false);
+ when(mockedDictionaryService.isSubClass(type, TYPE_NON_ELECTRONIC_DOCUMENT)).thenReturn(false);
+
+ NodeRef nodeRef= AlfMock.generateNodeRef(mockedNodeService, type);
+
+ NodeRef unfiledRecordFolder = generateNodeRef(TYPE_UNFILED_RECORD_FOLDER, true);
+ ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
+ when(mockedChildAssoc.getChildRef()).thenReturn(nodeRef);
+ when(mockedChildAssoc.getParentRef()).thenReturn(unfiledRecordFolder);
+ unfiledRecordFolderType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add "rma:unfiledRecordFolder" sub-type to unfiled record folder,
+ * Then the operation is successful.
+ */
+ @Test
+ public void testAddUnfiledRecordFolderTypeToUnfiledRecordFolder()
+ {
+ QName type = AlfMock.generateQName();
+ when(mockedDictionaryService.isSubClass(type, TYPE_UNFILED_RECORD_FOLDER)).thenReturn(true);
+ when(mockedDictionaryService.isSubClass(type, ContentModel.TYPE_CONTENT)).thenReturn(false);
+ when(mockedDictionaryService.isSubClass(type, TYPE_NON_ELECTRONIC_DOCUMENT)).thenReturn(false);
+
+ NodeRef nodeRef= AlfMock.generateNodeRef(mockedNodeService, type);
+
+ NodeRef unfiledRecordFolder = generateNodeRef(TYPE_UNFILED_RECORD_FOLDER, true);
+ ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
+ when(mockedChildAssoc.getChildRef()).thenReturn(nodeRef);
+ when(mockedChildAssoc.getParentRef()).thenReturn(unfiledRecordFolder);
+ unfiledRecordFolderType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add "cm:content" sub-type to unfiled record folder,
+ * Then the operation is successful.
+ */
+ @Test
+ public void testAddContentTypeToUnfiledRecordFolder()
+ {
+ QName type = AlfMock.generateQName();
+ when(mockedDictionaryService.isSubClass(type, TYPE_UNFILED_RECORD_FOLDER)).thenReturn(false);
+ when(mockedDictionaryService.isSubClass(type, ContentModel.TYPE_CONTENT)).thenReturn(true);
+ when(mockedDictionaryService.isSubClass(type, TYPE_NON_ELECTRONIC_DOCUMENT)).thenReturn(false);
+
+ NodeRef nodeRef= AlfMock.generateNodeRef(mockedNodeService, type);
+
+ NodeRef unfiledRecordFolder = generateNodeRef(TYPE_UNFILED_RECORD_FOLDER, true);
+ ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
+ when(mockedChildAssoc.getChildRef()).thenReturn(nodeRef);
+ when(mockedChildAssoc.getParentRef()).thenReturn(unfiledRecordFolder);
+ unfiledRecordFolderType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+
+ /**
+ * Given that we try to add "rma:nonElectronicDocument" sub-type to unfiled record folder,
+ * Then the operation is successful.
+ */
+ @Test
+ public void testNonElectronicDocumentTypeToUnfiledRecordFolder()
+ {
+ QName type = AlfMock.generateQName();
+ when(mockedDictionaryService.isSubClass(type, TYPE_UNFILED_RECORD_FOLDER)).thenReturn(false);
+ when(mockedDictionaryService.isSubClass(type, ContentModel.TYPE_CONTENT)).thenReturn(false);
+ when(mockedDictionaryService.isSubClass(type, TYPE_NON_ELECTRONIC_DOCUMENT)).thenReturn(true);
+
+ NodeRef nodeRef= AlfMock.generateNodeRef(mockedNodeService, type);
+
+ NodeRef unfiledRecordFolder = generateNodeRef(TYPE_UNFILED_RECORD_FOLDER, true);
+ ChildAssociationRef mockedChildAssoc = mock(ChildAssociationRef.class);
+ when(mockedChildAssoc.getChildRef()).thenReturn(nodeRef);
+ when(mockedChildAssoc.getParentRef()).thenReturn(unfiledRecordFolder);
+ unfiledRecordFolderType.onCreateChildAssociation(mockedChildAssoc, true);
+ }
+}
\ No newline at end of file
diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java
index 5dc05ded3d..3ae63a99c2 100644
--- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java
+++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/impl/RMNodesImplUnitTest.java
@@ -65,7 +65,6 @@ import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.security.AccessStatus;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
@@ -725,32 +724,6 @@ public class RMNodesImplUnitTest extends BaseUnitTest
verify(mockedFileFolderService, never()).delete(nodeRef);
}
- @Test
- public void testIsRMSite() throws Exception
- {
- //test when rm site exists and we do not check the rm site
- NodeRef parentNodeRef = AlfMock.generateNodeRef(mockedNodeService);
-
- NodeRef rmSiteNodeRef = AlfMock.generateNodeRef(mockedNodeService);
- SiteInfo mockedSiteInfo = mock(SiteInfo.class);
- when(mockedSiteInfo.getNodeRef()).thenReturn(rmSiteNodeRef);
- when(mockedSiteService.getSite(RM_SITE_ID)).thenReturn(mockedSiteInfo);
-
- boolean isRMSite = rmNodesImpl.isRMSite(parentNodeRef.getId());
- assertEquals("Should return false.", false, isRMSite);
-
- //check when rm site does not exist
- when(mockedSiteService.getSite(RM_SITE_ID)).thenReturn(null);
- isRMSite = rmNodesImpl.isRMSite(parentNodeRef.getId());
- assertEquals("Should return false.", false, isRMSite);
-
- //check when rm site exists and we check with rm site node ref id
- when(mockedSiteInfo.getNodeRef()).thenReturn(parentNodeRef);
- when(mockedSiteService.getSite(RM_SITE_ID)).thenReturn(mockedSiteInfo);
- isRMSite = rmNodesImpl.isRMSite(parentNodeRef.getId());
- assertEquals("Should return true.", true, isRMSite);
- }
-
private void setupCompanyHomeAndPrimaryParent(NodeRef nodeRef)
{
NodeRef companyHomeNodeRef = AlfMock.generateNodeRef(mockedNodeService);
diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java
index 895437efa3..7e9c9d75e2 100644
--- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java
+++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/rm/rest/api/nodes/FileplanComponentChildrenRelationUnitTest.java
@@ -28,13 +28,9 @@
package org.alfresco.rm.rest.api.nodes;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
@@ -42,7 +38,6 @@ import java.util.List;
import org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock;
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
import org.alfresco.rest.api.model.Node;
-import org.alfresco.rest.framework.core.exceptions.PermissionDeniedException;
import org.alfresco.rest.framework.resource.parameters.Parameters;
import org.alfresco.rest.framework.webscripts.WithResponse;
import org.alfresco.rm.rest.api.impl.RMNodesImpl;
@@ -100,28 +95,6 @@ public class FileplanComponentChildrenRelationUnitTest extends BaseUnitTest
}
@Test
- public void testCreateOnRMSite() throws Exception
- {
- Parameters mockedParameters = mock(Parameters.class);
- NodeRef parentNodeRef = AlfMock.generateNodeRef(mockedNodeService);
-
- List nodeInfos = new ArrayList();
- Node mokedNodeInfo = mock(Node.class);
- nodeInfos.add(mokedNodeInfo);
-
- when(mockedRMNodes.isRMSite(parentNodeRef.getId())).thenReturn(true);
- try
- {
- filePlanComponentChildrenRelation.create(parentNodeRef.getId(), nodeInfos, mockedParameters);
- fail("Expected ecxeption as POST request is not allowed in RM site.");
- }
- catch(PermissionDeniedException ex)
- {
- assertEquals("POST request not allowed in RM site.", ex.getMsgId());
- }
- verify(mockedRMNodes, never()).createNode(parentNodeRef.getId(), nodeInfos.get(0), mockedParameters);
- }
-
public void testUpload() throws Exception
{
Parameters mockedParameters = mock(Parameters.class);
@@ -131,24 +104,4 @@ public class FileplanComponentChildrenRelationUnitTest extends BaseUnitTest
filePlanComponentChildrenRelation.create(parentNodeRef.getId(), mockedFormData, mockedParameters, mockedWithResponse);
verify(mockedRMNodes, times(1)).upload(parentNodeRef.getId(), mockedFormData, mockedParameters);
}
-
- public void testUploadOnRMSite() throws Exception
- {
- Parameters mockedParameters = mock(Parameters.class);
- NodeRef parentNodeRef = AlfMock.generateNodeRef(mockedNodeService);
- FormData mockedFormData = mock(FormData.class);
- WithResponse mockedWithResponse = mock(WithResponse.class);
-
- when(mockedRMNodes.isRMSite(parentNodeRef.getId())).thenReturn(true);
- try
- {
- filePlanComponentChildrenRelation.create(parentNodeRef.getId(), mockedFormData, mockedParameters, mockedWithResponse);
- fail("Expected ecxeption as POST request is not allowed in RM site.");
- }
- catch(PermissionDeniedException ex)
- {
- assertEquals("POST request not allowed in RM site.", ex.getMsgId());
- }
- verify(mockedRMNodes, never()).upload(parentNodeRef.getId(), mockedFormData, mockedParameters);
- }
}