diff --git a/pom.xml b/pom.xml
index f688a3a9aa..d1cdf9f98d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
org.alfresco
alfresco-rm
pom
- 2.5.2-SNAPSHOT
+ 2.5.3-SNAPSHOT
Alfresco Records Management
diff --git a/rm-automation/pom.xml b/rm-automation/pom.xml
index 1e82d8ca5a..8b6b5481f5 100644
--- a/rm-automation/pom.xml
+++ b/rm-automation/pom.xml
@@ -8,7 +8,7 @@
org.alfresco
alfresco-rm
- 2.5.2-SNAPSHOT
+ 2.5.3-SNAPSHOT
diff --git a/rm-community/pom.xml b/rm-community/pom.xml
index 08dc021dd4..1e3cc7ce3c 100644
--- a/rm-community/pom.xml
+++ b/rm-community/pom.xml
@@ -8,7 +8,7 @@
org.alfresco
alfresco-rm
- 2.5.2-SNAPSHOT
+ 2.5.3-SNAPSHOT
diff --git a/rm-community/rm-community-repo/pom.xml b/rm-community/rm-community-repo/pom.xml
index 3d1fa7be44..cccf74e302 100644
--- a/rm-community/rm-community-repo/pom.xml
+++ b/rm-community/rm-community-repo/pom.xml
@@ -9,7 +9,7 @@
org.alfresco
alfresco-rm-community
- 2.5.2-SNAPSHOT
+ 2.5.3-SNAPSHOT
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
index d7041ea2d9..1123c53fca 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
@@ -274,8 +274,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
*/
public void setFilePlanService(FilePlanService filePlanService)
{
- this.filePlanService = filePlanService;
- }
+ this.filePlanService = filePlanService;
+ }
/**
* @param namespaceService namespace service
@@ -377,8 +377,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
@Override
public boolean isAuditLogEnabled(NodeRef filePlan)
{
- ParameterCheck.mandatory("filePlan", filePlan);
- // TODO use file plan to scope audit log
+ ParameterCheck.mandatory("filePlan", filePlan);
+ // TODO use file plan to scope audit log
return auditService.isAuditEnabled(
RM_AUDIT_APPLICATION_NAME,
@@ -391,8 +391,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
@Override
public void startAuditLog(NodeRef filePlan)
{
- ParameterCheck.mandatory("filePlan", filePlan);
- // TODO use file plan to scope audit log
+ ParameterCheck.mandatory("filePlan", filePlan);
+ // TODO use file plan to scope audit log
auditService.enableAudit(
RM_AUDIT_APPLICATION_NAME,
@@ -412,8 +412,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
@Override
public void stopAuditLog(NodeRef filePlan)
{
- ParameterCheck.mandatory("filePlan", filePlan);
- // TODO use file plan to scope audit log
+ ParameterCheck.mandatory("filePlan", filePlan);
+ // TODO use file plan to scope audit log
auditEvent(filePlan, AUDIT_EVENT_STOP, null, null, true);
@@ -433,8 +433,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
@Override
public void clearAuditLog(NodeRef filePlan)
{
- ParameterCheck.mandatory("filePlan", filePlan);
- // TODO use file plan to scope audit log
+ ParameterCheck.mandatory("filePlan", filePlan);
+ // TODO use file plan to scope audit log
auditService.clearAudit(RM_AUDIT_APPLICATION_NAME, null, null);
if (logger.isInfoEnabled())
@@ -451,8 +451,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
@Override
public Date getDateAuditLogLastStarted(NodeRef filePlan)
{
- ParameterCheck.mandatory("filePlan", filePlan);
- // TODO use file plan to scope audit log
+ ParameterCheck.mandatory("filePlan", filePlan);
+ // TODO use file plan to scope audit log
// TODO: return proper date, for now it's today's date
return getStartOfDay(new Date());
@@ -464,8 +464,8 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
@Override
public Date getDateAuditLogLastStopped(NodeRef filePlan)
{
- ParameterCheck.mandatory("filePlan", filePlan);
- // TODO use file plan to scope audit log
+ ParameterCheck.mandatory("filePlan", filePlan);
+ // TODO use file plan to scope audit log
// TODO: return proper date, for now it's today's date
return getEndOfDay(new Date());
@@ -495,7 +495,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
@Override
public void auditEvent(NodeRef nodeRef, String eventName, Map before, Map after, boolean immediate)
{
- auditEvent(nodeRef, eventName, before, after, immediate, false);
+ auditEvent(nodeRef, eventName, before, after, immediate, false);
}
/**
@@ -773,12 +773,12 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
ParameterCheck.mandatory("params", params);
- Writer fileWriter = null;
- try
+ File auditTrailFile = TempFileProvider.createTempFile(AUDIT_TRAIL_FILE_PREFIX,
+ format == ReportFormat.HTML ? AUDIT_TRAIL_HTML_FILE_SUFFIX : AUDIT_TRAIL_JSON_FILE_SUFFIX);
+
+ try (FileOutputStream fileOutputStream = new FileOutputStream(auditTrailFile);
+ Writer fileWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream,"UTF8"));)
{
- File auditTrailFile = TempFileProvider.createTempFile(AUDIT_TRAIL_FILE_PREFIX,
- format == ReportFormat.HTML ? AUDIT_TRAIL_HTML_FILE_SUFFIX : AUDIT_TRAIL_JSON_FILE_SUFFIX);
- fileWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(auditTrailFile),"UTF8"));
// Get the results, dumping to file
getAuditTrailImpl(params, null, fileWriter, format);
// Done
@@ -788,14 +788,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
{
throw new AlfrescoRuntimeException(MSG_TRAIL_FILE_FAIL, e);
}
- finally
- {
- // close the writer
- if (fileWriter != null)
- {
- try { fileWriter.close(); } catch (IOException closeEx) {}
- }
- }
}
/**
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java
index 784ac9b778..d2892b04c3 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMAfterInvocationProvider.java
@@ -37,6 +37,7 @@ import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
+import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.search.SimpleResultSetMetaData;
import org.alfresco.repo.search.impl.lucene.PagingLuceneResultSet;
@@ -172,7 +173,12 @@ public class RMAfterInvocationProvider extends RMSecurityCommon
}
else if (StoreRef.class.isAssignableFrom(returnedObject.getClass()))
{
- return decide(authentication, object, config, nodeService.getRootNode((StoreRef) returnedObject)).getStoreRef();
+ NodeRef rootNodeRef = decide(authentication, object, config, nodeService.getRootNode((StoreRef) returnedObject));
+ if (rootNodeRef == null)
+ {
+ throw new AlfrescoRuntimeException("Root node reference of '" + returnedObject + "' is null.");
+ }
+ return rootNodeRef.getStoreRef();
}
else if (NodeRef.class.isAssignableFrom(returnedObject.getClass()))
{
@@ -208,7 +214,7 @@ public class RMAfterInvocationProvider extends RMSecurityCommon
}
else
{
- if (logger.isDebugEnabled())
+ if (logger.isDebugEnabled() && object != null)
{
logger.debug("Uncontrolled object - access allowed for " + object.getClass().getName());
}
@@ -515,33 +521,33 @@ public class RMAfterInvocationProvider extends RMSecurityCommon
if (!nodeService.exists(returnedObject.getNodeRef(i)))
{
- inclusionMask.set(i, false);
+ inclusionMask.set(i, false);
}
else
{
- int parentCheckRead = checkRead(returnedObject.getChildAssocRef(i).getParentRef());
- int childCheckRead = checkRead(returnedObject.getNodeRef(i));
+ int parentCheckRead = checkRead(returnedObject.getChildAssocRef(i).getParentRef());
+ int childCheckRead = checkRead(returnedObject.getNodeRef(i));
- for (ConfigAttributeDefintion cad : supportedDefinitions)
- {
- NodeRef testNodeRef = returnedObject.getNodeRef(i);
- int checkRead = childCheckRead;
- if (cad.parent)
- {
- testNodeRef = returnedObject.getChildAssocRef(i).getParentRef();
- checkRead = parentCheckRead;
- }
+ for (ConfigAttributeDefintion cad : supportedDefinitions)
+ {
+ NodeRef testNodeRef = returnedObject.getNodeRef(i);
+ int checkRead = childCheckRead;
+ if (cad.parent)
+ {
+ testNodeRef = returnedObject.getChildAssocRef(i).getParentRef();
+ checkRead = parentCheckRead;
+ }
- if (isUnfiltered(testNodeRef))
- {
- continue;
- }
+ if (isUnfiltered(testNodeRef))
+ {
+ continue;
+ }
- if (inclusionMask.get(i) && (testNodeRef != null) && (checkRead != AccessDecisionVoter.ACCESS_GRANTED))
- {
- inclusionMask.set(i, false);
- }
- }
+ if (inclusionMask.get(i) && (testNodeRef != null) && (checkRead != AccessDecisionVoter.ACCESS_GRANTED))
+ {
+ inclusionMask.set(i, false);
+ }
+ }
}
// Bug out if we are limiting by size
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java
index b22f92feb1..8523a0c52b 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyDodCertModelFixesGet.java
@@ -51,8 +51,8 @@ import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.NamespaceService;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
@@ -81,7 +81,7 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript
private static final String RMC_CUSTOM_RECORD_PROPERTIES = RecordsManagementCustomModel.RM_CUSTOM_PREFIX + ":customRecordProperties";
/** Logger */
- private static Log logger = LogFactory.getLog(ApplyDodCertModelFixesGet.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(ApplyDodCertModelFixesGet.class);
private ContentService contentService;
private NamespaceService namespaceService;
@@ -99,12 +99,15 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript
@Override
public Map executeImpl(WebScriptRequest req, Status status, Cache cache)
{
- if (logger.isInfoEnabled())
- {
- logger.info("Applying webscript-based patches to RM custom model in the repo.");
- }
+ LOGGER.info("Applying webscript-based patches to RM custom model in the repo.");
M2Model customModel = readCustomContentModel();
+ if (customModel == null)
+ {
+ final String msg = "Custom content model could not be read";
+ LOGGER.error(msg);
+ throw new AlfrescoRuntimeException(msg);
+ }
String customAspectName = ASPECT_CUSTOM_ASSOCIATIONS.toPrefixString(namespaceService);
M2Aspect customAssocsAspect = customModel.getAspect(customAspectName);
@@ -112,19 +115,12 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript
if (customAssocsAspect == null)
{
final String msg = "Unknown aspect: " + customAspectName;
- if (logger.isErrorEnabled())
- {
- logger.error(msg);
- }
+ LOGGER.error(msg);
throw new AlfrescoRuntimeException(msg);
}
-
// MOB-1573. All custom references should have many-many multiplicity.
- if (logger.isInfoEnabled())
- {
- logger.info("MOB-1573. All custom references should have many-many multiplicity.");
- }
+ LOGGER.info("MOB-1573. All custom references should have many-many multiplicity.");
for (M2ClassAssociation classAssoc : customAssocsAspect.getAssociations())
{
@@ -134,10 +130,7 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript
}
//MOB-1621. Custom fields should be created as untokenized by default.
- if (logger.isInfoEnabled())
- {
- logger.info("MOB-1621. Custom fields should be created as untokenized by default.");
- }
+ LOGGER.info("MOB-1621. Custom fields should be created as untokenized by default.");
List allCustomPropertiesAspects = new ArrayList(4);
allCustomPropertiesAspects.add(RMC_CUSTOM_RECORD_SERIES_PROPERTIES);
@@ -160,13 +153,10 @@ public class ApplyDodCertModelFixesGet extends DeclarativeWebScript
writeCustomContentModel(customModel);
- if (logger.isInfoEnabled())
- {
- logger.info("Completed application of webscript-based patches to RM custom model in the repo.");
- }
+ LOGGER.info("Completed application of webscript-based patches to RM custom model in the repo.");
Map model = new HashMap(1, 1.0f);
- model.put("success", true);
+ model.put("success", true);
return model;
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java
index d8dfabbd35..e4e28d66a7 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/ApplyFixMob1573Get.java
@@ -83,6 +83,10 @@ public class ApplyFixMob1573Get extends DeclarativeWebScript
public Map executeImpl(WebScriptRequest req, Status status, Cache cache)
{
M2Model customModel = readCustomContentModel();
+ if (customModel == null)
+ {
+ throw new AlfrescoRuntimeException("Custom content model could not be read");
+ }
// Go through every custom reference defined in the custom model and make sure that it
// has many-to-many multiplicity
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java
index f4f456035f..352ef597d3 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java
@@ -126,8 +126,10 @@ public class TransferReportGet extends BaseTransferWebScript
File generateJSONTransferReport(NodeRef transferNode) throws IOException
{
File report = TempFileProvider.createTempFile(REPORT_FILE_PREFIX, REPORT_FILE_SUFFIX);
- Writer writer = null;
- try
+
+ // create the writer
+ try (FileOutputStream fileOutputStream = new FileOutputStream(report);
+ Writer writer = new OutputStreamWriter(fileOutputStream, Charset.forName("UTF-8"));)
{
// get all 'transferred' nodes
NodeRef[] itemsToTransfer = getTransferNodes(transferNode);
@@ -138,9 +140,6 @@ public class TransferReportGet extends BaseTransferWebScript
" items into file: " + report.getAbsolutePath());
}
- // create the writer
- writer = new OutputStreamWriter(new FileOutputStream(report), Charset.forName("UTF-8"));
-
// use RMService to get disposition authority
String dispositionAuthority = null;
if (itemsToTransfer.length > 0)
@@ -170,13 +169,6 @@ public class TransferReportGet extends BaseTransferWebScript
// write the JSON footer
writer.write("\n\t\t]\n\t}\n}");
}
- finally
- {
- if (writer != null)
- {
- try { writer.close(); } catch (IOException ioe) {}
- }
- }
return report;
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java
index 673ffb8241..2d762e0d4c 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java
@@ -234,8 +234,10 @@ public class TransferReportPost extends BaseTransferWebScript
File generateHTMLTransferReport(NodeRef transferNode) throws IOException
{
File report = TempFileProvider.createTempFile(REPORT_FILE_PREFIX, REPORT_FILE_SUFFIX);
- Writer writer = null;
- try
+
+ // create the writer
+ try (FileOutputStream fileOutputStream = new FileOutputStream(report) ;
+ Writer writer = new OutputStreamWriter(fileOutputStream, Charset.forName("UTF-8"));)
{
// get all 'transferred' nodes
NodeRef[] itemsToTransfer = getTransferNodes(transferNode);
@@ -246,9 +248,6 @@ public class TransferReportPost extends BaseTransferWebScript
" items into file: " + report.getAbsolutePath());
}
- // create the writer
- writer = new OutputStreamWriter(new FileOutputStream(report), Charset.forName("UTF-8"));
-
// use RMService to get disposition authority
String dispositionAuthority = null;
if (itemsToTransfer.length > 0)
@@ -322,13 +321,6 @@ public class TransferReportPost extends BaseTransferWebScript
// write the HTML footer
writer.write("