Add the repositoryId to the transfer format.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@20841 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mark Rogers
2010-06-28 12:38:17 +00:00
parent 052668e809
commit e54ae4f5ae
8 changed files with 61 additions and 2 deletions

View File

@@ -18,6 +18,9 @@
</property> </property>
<property name="tenantService"> <property name="tenantService">
<ref bean="tenantService" /> <ref bean="tenantService" />
</property>
<property name="descriptorService">
<ref bean="DescriptorService" />
</property> </property>
<property name="transferSpaceQuery"> <property name="transferSpaceQuery">
<value>/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.transfers.childname}/${spaces.transfer_groups.childname}</value> <value>/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.transfers.childname}/${spaces.transfer_groups.childname}</value>

View File

@@ -896,6 +896,7 @@ public class RepoTransferReceiverImplTest extends BaseAlfrescoSpringTest
TransferManifestHeader header = new TransferManifestHeader(); TransferManifestHeader header = new TransferManifestHeader();
header.setCreatedDate(new Date()); header.setCreatedDate(new Date());
header.setNodeCount(nodes.size()); header.setNodeCount(nodes.size());
header.setRepositoryId("repo 1");
manifestWriter.writeTransferManifestHeader(header); manifestWriter.writeTransferManifestHeader(header);
for (TransferManifestNode node : nodes) for (TransferManifestNode node : nodes)
{ {

View File

@@ -73,6 +73,8 @@ import org.alfresco.service.cmr.transfer.TransferException;
import org.alfresco.service.cmr.transfer.TransferProgress; import org.alfresco.service.cmr.transfer.TransferProgress;
import org.alfresco.service.cmr.transfer.TransferService; import org.alfresco.service.cmr.transfer.TransferService;
import org.alfresco.service.cmr.transfer.TransferTarget; 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.QName;
import org.alfresco.service.namespace.RegexQNamePattern; import org.alfresco.service.namespace.RegexQNamePattern;
import org.alfresco.service.transaction.TransactionService; import org.alfresco.service.transaction.TransactionService;
@@ -109,6 +111,7 @@ public class TransferServiceImpl implements TransferService
PropertyCheck.mandatory(this, "namespaceResolver", transmitter); PropertyCheck.mandatory(this, "namespaceResolver", transmitter);
PropertyCheck.mandatory(this, "actionService", actionService); PropertyCheck.mandatory(this, "actionService", actionService);
PropertyCheck.mandatory(this, "transactionService", transactionService); PropertyCheck.mandatory(this, "transactionService", transactionService);
PropertyCheck.mandatory(this, "descriptorService", descriptorService);
} }
private String transferSpaceQuery; private String transferSpaceQuery;
@@ -121,6 +124,7 @@ public class TransferServiceImpl implements TransferService
private TransferManifestNodeFactory transferManifestNodeFactory; private TransferManifestNodeFactory transferManifestNodeFactory;
private TransferReporter transferReporter; private TransferReporter transferReporter;
private TenantService tenantService; private TenantService tenantService;
private DescriptorService descriptorService;
/** /**
* How long to delay while polling for commit status. * How long to delay while polling for commit status.
@@ -557,6 +561,8 @@ public class TransferServiceImpl implements TransferService
// Write the manifest file // Write the manifest file
TransferManifestWriter formatter = new XMLTransferManifestWriter(); TransferManifestWriter formatter = new XMLTransferManifestWriter();
TransferManifestHeader header = new TransferManifestHeader(); TransferManifestHeader header = new TransferManifestHeader();
Descriptor descriptor = descriptorService.getCurrentRepositoryDescriptor();
header.setRepositoryId(descriptor.getId());
header.setCreatedDate(new Date()); header.setCreatedDate(new Date());
header.setNodeCount(nodes.size()); header.setNodeCount(nodes.size());
formatter.startTransferManifest(snapshotWriter); formatter.startTransferManifest(snapshotWriter);
@@ -1111,6 +1117,16 @@ public class TransferServiceImpl implements TransferService
return commitPollDelay; return commitPollDelay;
} }
public void setDescriptorService(DescriptorService descriptorService)
{
this.descriptorService = descriptorService;
}
public DescriptorService getDescriptorService()
{
return descriptorService;
}
private class TransferStatus private class TransferStatus
{ {
TransferStatus(String transferId) TransferStatus(String transferId)

View File

@@ -29,6 +29,7 @@ public interface ManifestModel extends TransferModel
static final String LOCALNAME_TRANSFER_HEADER = "transferManifestHeader"; static final String LOCALNAME_TRANSFER_HEADER = "transferManifestHeader";
static final String LOCALNAME_HEADER_CREATED_DATE = "createdDate"; static final String LOCALNAME_HEADER_CREATED_DATE = "createdDate";
static final String LOCALNAME_HEADER_NODE_COUNT = "nodeCount"; 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_NODES = "nodes";
static final String LOCALNAME_ELEMENT_NODE = "node"; static final String LOCALNAME_ELEMENT_NODE = "node";
static final String LOCALNAME_ELEMENT_DELETED_NODE = "deletedNode"; static final String LOCALNAME_ELEMENT_DELETED_NODE = "deletedNode";

View File

@@ -30,6 +30,7 @@ public class TransferManifestHeader
{ {
private Date createdDate; private Date createdDate;
private int nodeCount; private int nodeCount;
private String repositoryId;
public void setCreatedDate(Date createDate) public void setCreatedDate(Date createDate)
{ {
@@ -57,4 +58,15 @@ public class TransferManifestHeader
this.nodeCount = nodeCount; this.nodeCount = nodeCount;
} }
public void setRepositoryId(String repositoryId)
{
this.repositoryId = repositoryId;
}
public String getRepositoryId()
{
return repositoryId;
}
} }

View File

@@ -64,6 +64,7 @@ public class TransferManifestTest extends TestCase
*/ */
String prefix = "TRX-SNAP"; String prefix = "TRX-SNAP";
String suffix = ".xml"; String suffix = ".xml";
String repoId = "repoId";
// where to put snapshot ? // where to put snapshot ?
File snapshotFile = TempFileProvider.createTempFile(prefix, suffix); File snapshotFile = TempFileProvider.createTempFile(prefix, suffix);
@@ -73,6 +74,7 @@ public class TransferManifestTest extends TestCase
TransferManifestWriter formatter = new XMLTransferManifestWriter(); TransferManifestWriter formatter = new XMLTransferManifestWriter();
TransferManifestHeader header = new TransferManifestHeader(); TransferManifestHeader header = new TransferManifestHeader();
header.setCreatedDate(new Date()); header.setCreatedDate(new Date());
header.setRepositoryId(repoId);
formatter.startTransferManifest(snapshotWriter); formatter.startTransferManifest(snapshotWriter);
formatter.writeTransferManifestHeader(header); formatter.writeTransferManifestHeader(header);

View File

@@ -199,6 +199,10 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
{ {
buffer = new StringBuffer(); buffer = new StringBuffer();
} }
else if(elementName.equals(ManifestModel.LOCALNAME_HEADER_REPOSITORY_ID))
{
buffer = new StringBuffer();
}
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS)) else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS))
{ {
TransferManifestNormalNode node = (TransferManifestNormalNode)props.get("node"); TransferManifestNormalNode node = (TransferManifestNormalNode)props.get("node");
@@ -383,6 +387,12 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
header.setNodeCount(Integer.parseInt(buffer.toString())); header.setNodeCount(Integer.parseInt(buffer.toString()));
buffer = null; 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)) else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS))
{ {
// No-op // No-op

View File

@@ -141,6 +141,20 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
ManifestModel.LOCALNAME_HEADER_NODE_COUNT, PREFIX + ":" ManifestModel.LOCALNAME_HEADER_NODE_COUNT, PREFIX + ":"
+ ManifestModel.LOCALNAME_HEADER_NODE_COUNT); + 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 // End Header
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_TRANSFER_HEADER, PREFIX + ":" ManifestModel.LOCALNAME_TRANSFER_HEADER, PREFIX + ":"