diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
index 95e771046d..67e4db32c9 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
@@ -180,7 +180,6 @@
class="org.alfresco.module.org_alfresco_module_rm.script.AuditLogPost"
parent="webscript">
-
@@ -205,10 +204,10 @@
class="org.alfresco.module.org_alfresco_module_rm.script.ExportPost"
parent="webscript">
-
+
@@ -226,7 +225,6 @@
-
@@ -236,6 +234,7 @@
+
@@ -245,6 +244,7 @@
+
@@ -255,6 +255,7 @@
+
@@ -513,7 +514,7 @@
-
+
@@ -522,10 +523,10 @@
-
+
@@ -558,6 +559,6 @@
-
+
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java
index fae34d324a..4ab3f4263e 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/AuditLogGet.java
@@ -23,35 +23,47 @@ import java.io.IOException;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.WebScriptResponse;
+import org.alfresco.repo.web.scripts.content.ContentStreamer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Implementation for Java backed webscript to return audit
* log of RM events, optionally scoped to an RM node.
- *
+ *
* @author Gavin Cornwell
*/
public class AuditLogGet extends BaseAuditRetrievalWebScript
{
/** Logger */
private static Log logger = LogFactory.getLog(AuditLogGet.class);
-
+
protected final static String PARAM_EXPORT = "export";
+ /** Content Streamer */
+ protected ContentStreamer contentStreamer;
+
+ /**
+ * @param contentStreamer
+ */
+ public void setContentStreamer(ContentStreamer contentStreamer)
+ {
+ this.contentStreamer = contentStreamer;
+ }
+
@Override
public void execute(WebScriptRequest req, WebScriptResponse res) throws IOException
{
File auditTrail = null;
-
+
try
{
// parse the parameters and get a file containing the audit trail
auditTrail = this.rmAuditService.getAuditTrailFile(parseQueryParameters(req), parseReportFormat(req));
-
+
if (logger.isDebugEnabled())
logger.debug("Streaming audit trail from file: " + auditTrail.getAbsolutePath());
-
+
boolean attach = false;
String attachFileName = null;
String export = req.getParameter(PARAM_EXPORT);
@@ -59,13 +71,13 @@ public class AuditLogGet extends BaseAuditRetrievalWebScript
{
attach = true;
attachFileName = auditTrail.getName();
-
+
if (logger.isDebugEnabled())
logger.debug("Exporting audit trail using file name: " + attachFileName);
}
-
+
// stream the file back to the client
- streamContent(req, res, auditTrail, attach, attachFileName);
+ contentStreamer.streamContent(req, res, auditTrail, null, attach, attachFileName, null);
}
finally
{
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java
index 38cb3daf17..a23f17b16a 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/ExportPost.java
@@ -28,6 +28,7 @@ import org.alfresco.model.RenditionModel;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.RecordsManagementSearchBehaviour;
import org.alfresco.repo.exporter.ACPExportPackageHandler;
+import org.alfresco.repo.web.scripts.content.ContentStreamer;
import org.alfresco.repo.web.scripts.content.StreamACP;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.view.ExporterCrawlerParameters;
@@ -46,7 +47,7 @@ import org.springframework.extensions.webscripts.WebScriptResponse;
/**
* Creates an RM specific ACP file of nodes to export then streams it back
* to the client.
- *
+ *
* @author Gavin Cornwell
*/
public class ExportPost extends StreamACP
@@ -55,7 +56,18 @@ public class ExportPost extends StreamACP
private static Log logger = LogFactory.getLog(ExportPost.class);
protected static final String PARAM_TRANSFER_FORMAT = "transferFormat";
-
+
+ /** Content Streamer */
+ private ContentStreamer contentStreamer;
+
+ /**
+ * @param contentStreamer
+ */
+ public void setContentStreamer(ContentStreamer contentStreamer)
+ {
+ this.contentStreamer = contentStreamer;
+ }
+
/**
* @see org.alfresco.web.scripts.WebScript#execute(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.WebScriptResponse)
*/
@@ -73,7 +85,7 @@ public class ExportPost extends StreamACP
{
// get nodeRefs parameter from form
nodeRefs = getNodeRefs(req.getParameter(PARAM_NODE_REFS));
-
+
// look for the transfer format
String transferFormatParam = req.getParameter(PARAM_TRANSFER_FORMAT);
if (transferFormatParam != null && transferFormatParam.length() > 0)
@@ -86,39 +98,39 @@ public class ExportPost extends StreamACP
// presume the request is a JSON request so get nodeRefs from JSON body
JSONObject json = new JSONObject(new JSONTokener(req.getContent().getContent()));
nodeRefs = getNodeRefs(json);
-
+
if (json.has(PARAM_TRANSFER_FORMAT))
{
transferFormat = json.getBoolean(PARAM_TRANSFER_FORMAT);
}
}
-
+
// setup the ACP parameters
ExporterCrawlerParameters params = new ExporterCrawlerParameters();
params.setCrawlSelf(true);
params.setCrawlChildNodes(true);
params.setExportFrom(new Location(nodeRefs));
-
+
// if transfer format has been requested we need to exclude certain aspects
if (transferFormat)
{
// restrict specific aspects from being returned
- QName[] excludedAspects = new QName[] {
+ QName[] excludedAspects = new QName[] {
RenditionModel.ASPECT_RENDITIONED,
ContentModel.ASPECT_THUMBNAILED,
RecordsManagementModel.ASPECT_DISPOSITION_LIFECYCLE,
RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH};
params.setExcludeAspects(excludedAspects);
}
-
+
// create an ACP of the nodes
- tempACPFile = createACP(params,
- transferFormat ? ZIP_EXTENSION : ACPExportPackageHandler.ACP_EXTENSION,
+ tempACPFile = createACP(params,
+ transferFormat ? ZIP_EXTENSION : ACPExportPackageHandler.ACP_EXTENSION,
transferFormat);
-
+
// stream the ACP back to the client as an attachment (forcing save as)
- streamContent(req, res, tempACPFile, true, tempACPFile.getName());
- }
+ contentStreamer.streamContent(req, res, tempACPFile, null, true, tempACPFile.getName(), null);
+ }
catch (IOException ioe)
{
throw new WebScriptException(Status.STATUS_BAD_REQUEST,
@@ -147,7 +159,7 @@ public class ExportPost extends StreamACP
{
if (logger.isDebugEnabled())
logger.debug("Deleting temporary archive: " + tempACPFile.getAbsolutePath());
-
+
tempACPFile.delete();
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferGet.java
index c5f2b38716..562b458909 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferGet.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferGet.java
@@ -25,6 +25,7 @@ import org.alfresco.model.ContentModel;
import org.alfresco.model.RenditionModel;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.RecordsManagementSearchBehaviour;
+import org.alfresco.repo.web.scripts.content.ContentStreamer;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.view.ExporterCrawlerParameters;
import org.alfresco.service.cmr.view.Location;
@@ -39,23 +40,34 @@ import org.springframework.extensions.webscripts.WebScriptResponse;
/**
* Streams the nodes of a transfer object to the client in the form of an
* ACP file.
- *
+ *
* @author Gavin Cornwell
*/
public class TransferGet extends BaseTransferWebScript
{
/** Logger */
private static Log logger = LogFactory.getLog(TransferGet.class);
-
+
+ /** Content Streamer */
+ private ContentStreamer contentStreamer;
+
+ /**
+ * @param contentStreamer
+ */
+ public void setContentStreamer(ContentStreamer contentStreamer)
+ {
+ this.contentStreamer = contentStreamer;
+ }
+
@SuppressWarnings("deprecation")
@Override
protected File executeTransfer(NodeRef transferNode,
- WebScriptRequest req, WebScriptResponse res,
+ WebScriptRequest req, WebScriptResponse res,
Status status, Cache cache) throws IOException
{
// get all 'transferred' nodes
NodeRef[] itemsToTransfer = getTransferNodes(transferNode);
-
+
// setup the ACP parameters
ExporterCrawlerParameters params = new ExporterCrawlerParameters();
params.setCrawlSelf(true);
@@ -67,19 +79,19 @@ public class TransferGet extends BaseTransferWebScript
RecordsManagementModel.ASPECT_DISPOSITION_LIFECYCLE,
RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH};
params.setExcludeAspects(excludedAspects);
-
+
// create an archive of all the nodes to transfer
File tempFile = createACP(params, ZIP_EXTENSION, true);
-
+
if (logger.isDebugEnabled())
{
- logger.debug("Creating transfer archive for " + itemsToTransfer.length +
+ logger.debug("Creating transfer archive for " + itemsToTransfer.length +
" items into file: " + tempFile.getAbsolutePath());
}
-
+
// stream the archive back to the client as an attachment (forcing save as)
- streamContent(req, res, tempFile, true, tempFile.getName());
-
+ contentStreamer.streamContent(req, res, tempFile, null, true, tempFile.getName(), null);
+
// return the temp file for deletion
return tempFile;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java
index ed8706224a..35359155cf 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportGet.java
@@ -31,6 +31,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedul
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
+import org.alfresco.repo.web.scripts.content.ContentStreamer;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -46,69 +47,78 @@ import org.springframework.extensions.webscripts.WebScriptResponse;
/**
* Returns a JSON representation of a transfer report.
- *
+ *
* @author Gavin Cornwell
*/
public class TransferReportGet extends BaseTransferWebScript
{
/** Logger */
private static Log logger = LogFactory.getLog(TransferReportGet.class);
-
+
protected static final String REPORT_FILE_PREFIX = "report_";
protected static final String REPORT_FILE_SUFFIX = ".json";
protected DictionaryService ddService;
protected RecordsManagementService rmService;
protected DispositionService dispositionService;
-
+ protected ContentStreamer contentStreamer;
+
/**
* Sets the DictionaryService instance
- *
+ *
* @param ddService The DictionaryService instance
*/
public void setDictionaryService(DictionaryService ddService)
{
this.ddService = ddService;
}
-
+
/**
* Sets the disposition service
- *
+ *
* @param dispositionService the disposition service
*/
public void setDispositionService(DispositionService dispositionService)
{
this.dispositionService = dispositionService;
}
-
+
/**
* Sets the RecordsManagementService instance
- *
+ *
* @param rmService RecordsManagementService instance
*/
public void setRecordsManagementService(RecordsManagementService rmService)
{
this.rmService = rmService;
}
-
+
+ /**
+ * @param contentStreamer
+ */
+ public void setContentStreamer(ContentStreamer contentStreamer)
+ {
+ this.contentStreamer = contentStreamer;
+ }
+
@Override
protected File executeTransfer(NodeRef transferNode,
- WebScriptRequest req, WebScriptResponse res,
+ WebScriptRequest req, WebScriptResponse res,
Status status, Cache cache) throws IOException
{
// generate the report (will be in JSON format)
File report = generateJSONTransferReport(transferNode);
-
+
// stream the report back to the client
- streamContent(req, res, report, false);
-
+ contentStreamer.streamContent(req, res, report, null, false, null, null);
+
// return the file for deletion
return report;
}
-
+
/**
* Generates a File containing the JSON representation of a transfer report.
- *
+ *
* @param transferNode The transfer node
* @return File containing JSON representation of a transfer report
* @throws IOException
@@ -121,16 +131,16 @@ public class TransferReportGet extends BaseTransferWebScript
{
// get all 'transferred' nodes
NodeRef[] itemsToTransfer = getTransferNodes(transferNode);
-
+
if (logger.isDebugEnabled())
{
- logger.debug("Generating JSON transfer report for " + itemsToTransfer.length +
+ logger.debug("Generating JSON transfer report for " + itemsToTransfer.length +
" items into file: " + report.getAbsolutePath());
}
-
+
// create the writer
writer = new FileWriter(report);
-
+
// use RMService to get disposition authority
String dispositionAuthority = null;
if (itemsToTransfer.length > 0)
@@ -142,7 +152,7 @@ public class TransferReportGet extends BaseTransferWebScript
dispositionAuthority = ds.getDispositionAuthority();
}
}
-
+
// write the JSON header
writer.write("{\n\t\"data\":\n\t{");
writer.write("\n\t\t\"transferDate\": \"");
@@ -153,10 +163,10 @@ public class TransferReportGet extends BaseTransferWebScript
writer.write("\",\n\t\t\"dispositionAuthority\": \"");
writer.write(dispositionAuthority != null ? dispositionAuthority : "");
writer.write("\",\n\t\t\"items\":\n\t\t[");
-
+
// write out JSON representation of items to transfer
generateTransferItemsJSON(writer, itemsToTransfer);
-
+
// write the JSON footer
writer.write("\n\t\t]\n\t}\n}");
}
@@ -167,13 +177,13 @@ public class TransferReportGet extends BaseTransferWebScript
try { writer.close(); } catch (IOException ioe) {}
}
}
-
+
return report;
}
-
+
/**
* Generates the JSON to represent the given NodeRefs
- *
+ *
* @param writer Writer to write to
* @param itemsToTransfer NodeRefs being transferred
* @throws IOException
@@ -192,7 +202,7 @@ public class TransferReportGet extends BaseTransferWebScript
{
writer.write(",");
}
-
+
if (ddService.isSubClass(nodeService.getType(item), ContentModel.TYPE_FOLDER))
{
generateTransferFolderJSON(writer, item);
@@ -203,10 +213,10 @@ public class TransferReportGet extends BaseTransferWebScript
}
}
}
-
+
/**
* Generates the JSON to represent the given folder.
- *
+ *
* @param writer Writer to write to
* @param folderNode Folder being transferred
* @throws IOException
@@ -215,7 +225,7 @@ public class TransferReportGet extends BaseTransferWebScript
throws IOException
{
// TODO: Add identation
-
+
writer.write("\n{\n\"type\":\"folder\",\n");
writer.write("\"name\":\"");
writer.write((String)nodeService.getProperty(folderNode, ContentModel.PROP_NAME));
@@ -224,9 +234,9 @@ public class TransferReportGet extends BaseTransferWebScript
writer.write("\",\n\"id\":\"");
writer.write((String)nodeService.getProperty(folderNode, RecordsManagementModel.PROP_IDENTIFIER));
writer.write("\",\n\"children\":\n[");
-
+
boolean first = true;
- List assocs = this.nodeService.getChildAssocs(folderNode,
+ List assocs = this.nodeService.getChildAssocs(folderNode,
ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
for (ChildAssociationRef child : assocs)
{
@@ -238,7 +248,7 @@ public class TransferReportGet extends BaseTransferWebScript
{
writer.write(",");
}
-
+
NodeRef childRef = child.getChildRef();
if (ddService.isSubClass(nodeService.getType(childRef), ContentModel.TYPE_FOLDER))
{
@@ -249,13 +259,13 @@ public class TransferReportGet extends BaseTransferWebScript
generateTransferRecordJSON(writer, childRef);
}
}
-
+
writer.write("\n]\n}");
}
-
+
/**
* Generates the JSON to represent the given record.
- *
+ *
* @param writer Writer to write to
* @param recordNode Record being transferred
* @throws IOException
@@ -271,7 +281,7 @@ public class TransferReportGet extends BaseTransferWebScript
writer.write("\",\n\"id\":\"");
writer.write((String)nodeService.getProperty(recordNode, RecordsManagementModel.PROP_IDENTIFIER));
writer.write("\"");
-
+
if (this.nodeService.hasAspect(recordNode, RecordsManagementModel.ASPECT_DECLARED_RECORD))
{
writer.write(",\n\"declaredBy\":\"");
@@ -281,7 +291,7 @@ public class TransferReportGet extends BaseTransferWebScript
(Date)this.nodeService.getProperty(recordNode, RecordsManagementModel.PROP_DECLARED_AT)));
writer.write("\"");
}
-
+
writer.write("\n}");
}
}
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java
index 76c25d05e4..b6cf3de032 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/TransferReportPost.java
@@ -39,6 +39,7 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
+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;
@@ -78,6 +79,7 @@ public class TransferReportPost extends BaseTransferWebScript
protected RecordsManagementActionService rmActionService;
protected RecordsManagementService rmService;
protected DispositionService dispositionService;
+ protected ContentService contentService;
/**
* Sets the DictionaryService instance
@@ -119,6 +121,16 @@ public class TransferReportPost extends BaseTransferWebScript
this.rmActionService = rmActionService;
}
+ /**
+ * Sets the ContentSerivce instance
+ *
+ * @param contentService ContentService instance
+ */
+ public void setContentService(ContentService contentService)
+ {
+ this.contentService = contentService;
+ }
+
@Override
protected File executeTransfer(NodeRef transferNode,
WebScriptRequest req, WebScriptResponse res,
@@ -436,10 +448,10 @@ public class TransferReportPost extends BaseTransferWebScript
ContentModel.TYPE_CONTENT, properties).getChildRef();
// Set the content
- ContentWriter writer = this.contentService.getWriter(record, ContentModel.PROP_CONTENT, true);
+ ContentWriter writer = contentService.getWriter(record, ContentModel.PROP_CONTENT, true);
writer.setMimetype(MimetypeMap.MIMETYPE_HTML);
writer.setEncoding("UTF-8");
- writer.putContent(report);
+ writer.putContent(report);
return record;
}