diff --git a/.ant-targets-build.xml b/.ant-targets-build.xml deleted file mode 100644 index 99c02cc181..0000000000 --- a/.ant-targets-build.xml +++ /dev/null @@ -1,3 +0,0 @@ -fullBuildCommunity -fullBuildEnterprise -incrementalBuild diff --git a/pom.xml b/pom.xml index b6f6c278be..c31a6c3aac 100644 --- a/pom.xml +++ b/pom.xml @@ -82,7 +82,7 @@ - 5.1.a-EA + 5.1.b-EA ${project.build.directory}/${webapp.id.name}.war ${alfresco.version} diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index 2343579896..f79173a8a2 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -392,8 +392,12 @@ org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService - - + + + + + + diff --git a/rm-server/pom.xml b/rm-server/pom.xml index 476c419d4b..e8a2195917 100644 --- a/rm-server/pom.xml +++ b/rm-server/pom.xml @@ -15,7 +15,7 @@ /alfresco 9.1-901.jdbc4 5.1.31 - 5.1.2 + 5.4 alfresco ${webapp.id.name} @@ -83,6 +83,17 @@ + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + @@ -424,6 +435,11 @@ org.springframework.extensions.surf spring-webscripts + ${alfresco.spring.webscripts} tests test diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java index dd8d826ed9..d002fb915e 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java @@ -921,7 +921,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean return true; } - if( nodeRef != null && + if(nodeRef != null && nodeService.exists(nodeRef) && !AccessStatus.ALLOWED.equals( capabilityService.getCapabilityAccessState(nodeRef, ACCESS_AUDIT_CAPABILITY))) { diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralAdminServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralAdminServiceImpl.java index 4aa8c4afbb..9afcbc0259 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralAdminServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralAdminServiceImpl.java @@ -128,19 +128,6 @@ public class ReferralAdminServiceImpl implements ReferralAdminService return metadataReferral; } - /** Gets the {@link MetadataReferral} which uses the specified {@code assocType}. */ - private MetadataReferral getReferralForAssociation(QName assocType) - { - final MetadataReferral metadataReferral = registry.getReferralForAssociation(assocType); - - if (metadataReferral == null) - { - throw new IllegalArgumentException("No " + MetadataReferral.class.getSimpleName() + - " configured for assocType " + assocType); - } - return metadataReferral; - } - @Override public MetadataReferral detachReferrer(NodeRef referrer, QName aspectName) { final MetadataReferral referral = registry.getReferralForAspect(aspectName); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataException.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataException.java index 83cbb83ed1..aaaf992871 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataException.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataException.java @@ -31,12 +31,16 @@ import java.util.List; */ public class ReferredMetadataException extends AlfrescoRuntimeException { + private static final long serialVersionUID = -6059777070036571486L; + public ReferredMetadataException(String msgId) { super(msgId); } public ReferredMetadataException(String msgId, Throwable cause) { super(msgId, cause); } /** This exception may be thrown when a {@link MetadataReferral} was incorrectly initialised. */ public static class InvalidMetadataReferral extends ReferredMetadataException { + private static final long serialVersionUID = 8507076314709440295L; + public InvalidMetadataReferral(String msgId) { super(msgId); @@ -46,6 +50,8 @@ public class ReferredMetadataException extends AlfrescoRuntimeException /** This exception may be thrown when a {@link MetadataReferral} already exists. */ public static class MetadataReferralAlreadyExists extends ReferredMetadataException { + private static final long serialVersionUID = 8119954252195817706L; + private final MetadataReferral metadataReferral; public MetadataReferralAlreadyExists(String msgId, MetadataReferral metadataReferral) @@ -53,11 +59,18 @@ public class ReferredMetadataException extends AlfrescoRuntimeException super(msgId); this.metadataReferral = metadataReferral; } + + public MetadataReferral getMetadataReferral() + { + return this.metadataReferral; + } } /** A {@link MetadataReferral} has not been found. */ public static class MetadataReferralNotFound extends ReferredMetadataException { + private static final long serialVersionUID = 8648089074801662142L; + public MetadataReferralNotFound(String msgId) { super(msgId); @@ -67,6 +80,8 @@ public class ReferredMetadataException extends AlfrescoRuntimeException /** A referent Node has not been found. */ public static class ReferentNodeNotFound extends ReferredMetadataException { + private static final long serialVersionUID = -6003487925958374458L; + public ReferentNodeNotFound(String msgId) { super(msgId); @@ -76,6 +91,8 @@ public class ReferredMetadataException extends AlfrescoRuntimeException /** Exception to report that chains of metadata referral are not currently supported. */ public static class ChainedMetadataReferralUnsupported extends ReferredMetadataException { + private static final long serialVersionUID = -2293262325447442964L; + private final List existingReferrers; public ChainedMetadataReferralUnsupported(String msgId, List existingReferrers) @@ -101,6 +118,8 @@ public class ReferredMetadataException extends AlfrescoRuntimeException /** Exception to report that metadata referral is not supported for metadata defined on content types. */ public static class TypeMetadataReferralUnsupported extends ReferredMetadataException { + private static final long serialVersionUID = 7498707640089715503L; + public TypeMetadataReferralUnsupported(String msgId) { super(msgId); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java index e97290496b..067778b9e7 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/BaseTransferWebScript.java @@ -104,7 +104,7 @@ public abstract class BaseTransferWebScript extends StreamACP } // ensure the node is a filePlan object - if (!TYPE_FILE_PLAN.equals(this.nodeService.getType(filePlan))) + if (!filePlanService.isFilePlan(filePlan)) { status.setCode(HttpServletResponse.SC_BAD_REQUEST, "Node " + filePlan.toString() + " is not a file plan"); diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java index 65b0cede07..1a9d8f469c 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java @@ -141,6 +141,55 @@ public class RecordsManagementAuditServiceImplTest extends BaseRMTestCase }, ADMIN_USER); } + /** + * Test getAuditTrail method to check that deleted items always show in the audit. + * + * @see RM-2391 (last addressed isue) + */ + public void testGetAuditTrailForDeletedItem() + { + // We have only one entry for the event "audit.start": + List entries = getAuditTrail(1, ADMIN_USER); + + assertEquals(entries.get(0).getEvent(), "audit.start"); + + // Event "audit.view" was generated but will be visible on the next call to getAuditTrail(). + + // Make a change: + updateTitle(filePlan, ADMIN_USER); // event=Update RM Object + + // Show the audit has been updated; at this point we have three entries for the three events up to now: + // "audit.start", "audit.view" and "Update RM Object"; + entries = getAuditTrail(3, ADMIN_USER); + + assertEquals(entries.get(0).getEvent(), "audit.start"); + assertEquals(entries.get(1).getEvent(), "audit.view"); + assertEquals(entries.get(2).getEvent(), "Update RM Object"); + + // New "audit.view" event was generated - will be visible on next getAuditTrail(). + + doTestInTransaction(new Test() + { + @Override + public Void run() throws Exception + { + nodeService.deleteNode(record); + List entries = getAuditTrail(5, ADMIN_USER); + + assertEquals(entries.get(0).getEvent(), "audit.start"); + assertEquals(entries.get(1).getEvent(), "audit.view"); + assertEquals(entries.get(2).getEvent(), "Update RM Object"); + assertEquals(entries.get(3).getEvent(), "audit.view"); + + // Show the audit contains a reference to the deleted item: + assertEquals(entries.get(4).getEvent(), "Delete RM Object"); + assertEquals(entries.get(4).getNodeRef(), record); + + return null; + } + }); + } + /** * Test getAuditTrail method and parameter filters. */ diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java index a9aa394aad..4fd2a5eb7a 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java @@ -18,21 +18,24 @@ */ package org.alfresco.module.org_alfresco_module_rm.referredmetadata; -import static java.util.Collections.emptyMap; import static java.util.Arrays.asList; -import static org.alfresco.module.org_alfresco_module_rm.referredmetadata.ReferredMetadataException.ReferentNodeNotFound; -import static org.alfresco.module.org_alfresco_module_rm.referredmetadata.ReferredMetadataException.MetadataReferralNotFound; +import static java.util.Collections.emptyMap; import static org.alfresco.module.org_alfresco_module_rm.test.util.ExceptionUtils.expectedException; import static org.alfresco.module.org_alfresco_module_rm.test.util.FPUtils.asSet; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.any; +import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.eq; import static org.mockito.Mockito.when; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.alfresco.module.org_alfresco_module_rm.referredmetadata.ReferredMetadataException.MetadataReferralNotFound; +import org.alfresco.module.org_alfresco_module_rm.referredmetadata.ReferredMetadataException.ReferentNodeNotFound; import org.alfresco.service.cmr.dictionary.ClassDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.PropertyDefinition; @@ -47,10 +50,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - /** * Unit tests for {@link ReferredMetadataServiceImpl}. * @@ -96,6 +95,7 @@ public class ReferredMetadataServiceImplUnitTest this.setAspects(asSet(referredAspect1, referredAspect2)); }}; + @SuppressWarnings("serial") @Before public void setUp() { MockitoAnnotations.initMocks(this); diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java index 16b6ea6851..1e3fb5706a 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java @@ -18,7 +18,6 @@ */ package org.alfresco.module.org_alfresco_module_rm.script.classification; -import static java.util.Collections.emptyMap; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Matchers.any; @@ -34,8 +33,6 @@ import java.util.Arrays; import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationLevel; import org.alfresco.module.org_alfresco_module_rm.classification.ClearanceLevel; import org.alfresco.module.org_alfresco_module_rm.classification.SecurityClearance; @@ -50,7 +47,6 @@ import org.alfresco.service.namespace.QName; import org.alfresco.util.Pair; import org.json.JSONArray; import org.json.JSONObject; -import org.junit.Ignore; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; @@ -58,6 +54,9 @@ import org.mockito.Spy; import org.springframework.extensions.webscripts.DeclarativeWebScript; import org.springframework.extensions.webscripts.WebScriptRequest; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * Test for get user security clearance API * diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/FPUtils.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/FPUtils.java index 335461a587..6d09317b6d 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/FPUtils.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/FPUtils.java @@ -44,6 +44,7 @@ public class FPUtils * @param the type of elements in the list. * @return the list with each element being the first retrieved from a {@code Supplier}. */ + @SafeVarargs public static List asListFrom(Supplier... suppliers) { if (suppliers == null || suppliers.length == 0) @@ -66,6 +67,7 @@ public class FPUtils * @param the type of elements in the set. * @return the set with each element being the first retrieved from a {@code Supplier} (duplicates removed). */ + @SafeVarargs public static Set asSetFrom(Supplier... suppliers) { List l = asListFrom(suppliers); @@ -78,6 +80,7 @@ public class FPUtils * @param objects the objects to be added to the set * @return a Set of objects (any equal objects will of course not be duplicated) */ + @SafeVarargs public static Set asSet(T... objects) { return new HashSet<>(asList(objects));