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));