diff --git a/config/alfresco/transfer-service-context.xml b/config/alfresco/transfer-service-context.xml
index 6d4bb89cc9..996410da69 100644
--- a/config/alfresco/transfer-service-context.xml
+++ b/config/alfresco/transfer-service-context.xml
@@ -19,6 +19,9 @@
+
+
+
/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.transfers.childname}/${spaces.transfer_groups.childname}
diff --git a/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImplTest.java b/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImplTest.java
index 9e8d858546..84b2f9490c 100644
--- a/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImplTest.java
+++ b/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImplTest.java
@@ -896,6 +896,7 @@ public class RepoTransferReceiverImplTest extends BaseAlfrescoSpringTest
TransferManifestHeader header = new TransferManifestHeader();
header.setCreatedDate(new Date());
header.setNodeCount(nodes.size());
+ header.setRepositoryId("repo 1");
manifestWriter.writeTransferManifestHeader(header);
for (TransferManifestNode node : nodes)
{
diff --git a/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java b/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java
index 844e60be9b..825691160a 100644
--- a/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java
+++ b/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java
@@ -73,6 +73,8 @@ import org.alfresco.service.cmr.transfer.TransferException;
import org.alfresco.service.cmr.transfer.TransferProgress;
import org.alfresco.service.cmr.transfer.TransferService;
import org.alfresco.service.cmr.transfer.TransferTarget;
+import org.alfresco.service.descriptor.Descriptor;
+import org.alfresco.service.descriptor.DescriptorService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
import org.alfresco.service.transaction.TransactionService;
@@ -109,6 +111,7 @@ public class TransferServiceImpl implements TransferService
PropertyCheck.mandatory(this, "namespaceResolver", transmitter);
PropertyCheck.mandatory(this, "actionService", actionService);
PropertyCheck.mandatory(this, "transactionService", transactionService);
+ PropertyCheck.mandatory(this, "descriptorService", descriptorService);
}
private String transferSpaceQuery;
@@ -121,6 +124,7 @@ public class TransferServiceImpl implements TransferService
private TransferManifestNodeFactory transferManifestNodeFactory;
private TransferReporter transferReporter;
private TenantService tenantService;
+ private DescriptorService descriptorService;
/**
* How long to delay while polling for commit status.
@@ -557,6 +561,8 @@ public class TransferServiceImpl implements TransferService
// Write the manifest file
TransferManifestWriter formatter = new XMLTransferManifestWriter();
TransferManifestHeader header = new TransferManifestHeader();
+ Descriptor descriptor = descriptorService.getCurrentRepositoryDescriptor();
+ header.setRepositoryId(descriptor.getId());
header.setCreatedDate(new Date());
header.setNodeCount(nodes.size());
formatter.startTransferManifest(snapshotWriter);
@@ -1111,6 +1117,16 @@ public class TransferServiceImpl implements TransferService
return commitPollDelay;
}
+ public void setDescriptorService(DescriptorService descriptorService)
+ {
+ this.descriptorService = descriptorService;
+ }
+
+ public DescriptorService getDescriptorService()
+ {
+ return descriptorService;
+ }
+
private class TransferStatus
{
TransferStatus(String transferId)
diff --git a/source/java/org/alfresco/repo/transfer/manifest/ManifestModel.java b/source/java/org/alfresco/repo/transfer/manifest/ManifestModel.java
index 4483850755..bdcd8b366f 100644
--- a/source/java/org/alfresco/repo/transfer/manifest/ManifestModel.java
+++ b/source/java/org/alfresco/repo/transfer/manifest/ManifestModel.java
@@ -29,6 +29,7 @@ public interface ManifestModel extends TransferModel
static final String LOCALNAME_TRANSFER_HEADER = "transferManifestHeader";
static final String LOCALNAME_HEADER_CREATED_DATE = "createdDate";
static final String LOCALNAME_HEADER_NODE_COUNT = "nodeCount";
+ static final String LOCALNAME_HEADER_REPOSITORY_ID = "repositoryId";
static final String LOCALNAME_ELEMENT_NODES = "nodes";
static final String LOCALNAME_ELEMENT_NODE = "node";
static final String LOCALNAME_ELEMENT_DELETED_NODE = "deletedNode";
diff --git a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestHeader.java b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestHeader.java
index aeb4197421..50f37d1efc 100644
--- a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestHeader.java
+++ b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestHeader.java
@@ -30,7 +30,8 @@ public class TransferManifestHeader
{
private Date createdDate;
private int nodeCount;
-
+ private String repositoryId;
+
public void setCreatedDate(Date createDate)
{
this.createdDate = createDate;
@@ -57,4 +58,15 @@ public class TransferManifestHeader
this.nodeCount = nodeCount;
}
+ public void setRepositoryId(String repositoryId)
+ {
+ this.repositoryId = repositoryId;
+ }
+
+ public String getRepositoryId()
+ {
+ return repositoryId;
+ }
+
+
}
diff --git a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java
index 6c1893630f..c6bafab2dd 100644
--- a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java
+++ b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java
@@ -64,6 +64,7 @@ public class TransferManifestTest extends TestCase
*/
String prefix = "TRX-SNAP";
String suffix = ".xml";
+ String repoId = "repoId";
// where to put snapshot ?
File snapshotFile = TempFileProvider.createTempFile(prefix, suffix);
@@ -73,6 +74,7 @@ public class TransferManifestTest extends TestCase
TransferManifestWriter formatter = new XMLTransferManifestWriter();
TransferManifestHeader header = new TransferManifestHeader();
header.setCreatedDate(new Date());
+ header.setRepositoryId(repoId);
formatter.startTransferManifest(snapshotWriter);
formatter.writeTransferManifestHeader(header);
diff --git a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java
index 373d889a52..36f2e9b927 100644
--- a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java
+++ b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java
@@ -199,6 +199,10 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
{
buffer = new StringBuffer();
}
+ else if(elementName.equals(ManifestModel.LOCALNAME_HEADER_REPOSITORY_ID))
+ {
+ buffer = new StringBuffer();
+ }
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS))
{
TransferManifestNormalNode node = (TransferManifestNormalNode)props.get("node");
@@ -349,7 +353,7 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
{
TransferManifestDeletedNode node = (TransferManifestDeletedNode)props.get("node");
processor.processTransferManifestNode(node);
- }
+ }
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_ASPECTS))
{
@@ -383,6 +387,12 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
header.setNodeCount(Integer.parseInt(buffer.toString()));
buffer = null;
}
+ else if(elementName.equals(ManifestModel.LOCALNAME_HEADER_REPOSITORY_ID))
+ {
+ TransferManifestHeader header = (TransferManifestHeader)props.get("header");
+ header.setRepositoryId(buffer.toString());
+ buffer = null;
+ }
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS))
{
// No-op
diff --git a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java
index 0381f2a366..1f082394c5 100644
--- a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java
+++ b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java
@@ -140,6 +140,20 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_HEADER_NODE_COUNT, PREFIX + ":"
+ ManifestModel.LOCALNAME_HEADER_NODE_COUNT);
+
+ if(header.getRepositoryId() != null)
+ {
+ // Repository Id
+ writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
+ ManifestModel.LOCALNAME_HEADER_REPOSITORY_ID, PREFIX + ":"
+ + ManifestModel.LOCALNAME_HEADER_REPOSITORY_ID, EMPTY_ATTRIBUTES);
+ char[] repositoryId = header.getRepositoryId().toCharArray();
+ writer.characters(repositoryId, 0, repositoryId.length);
+ writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
+ ManifestModel.LOCALNAME_HEADER_REPOSITORY_ID, PREFIX + ":"
+ + ManifestModel.LOCALNAME_HEADER_REPOSITORY_ID);
+ }
+
// End Header
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,