mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Bug fix for primary parent assoc in XMLTransferManifestReader
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18900 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -25,11 +25,9 @@
|
||||
package org.alfresco.repo.transfer.manifest;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.Writer;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
@@ -54,7 +52,6 @@ import org.alfresco.service.cmr.repository.MLText;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.cmr.transfer.TransferException;
|
||||
import org.alfresco.service.cmr.transfer.TransferService;
|
||||
import org.alfresco.service.cmr.transfer.TransferTarget;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
@@ -70,7 +67,6 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
||||
{
|
||||
private TransferService transferService;
|
||||
private ContentService contentService;
|
||||
private SearchService searchService;
|
||||
|
||||
/**
|
||||
* Called during the transaction setup
|
||||
@@ -82,7 +78,6 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
||||
// Get the required services
|
||||
this.transferService = (TransferService)this.applicationContext.getBean("TransferService");
|
||||
this.contentService = (ContentService)this.applicationContext.getBean("ContentService");
|
||||
this.searchService = (SearchService)this.applicationContext.getBean("SearchService");
|
||||
}
|
||||
|
||||
public void testSnapshot() throws Exception
|
||||
@@ -137,12 +132,19 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
||||
|
||||
Set<NodeRef> nodes = new HashSet<NodeRef>();
|
||||
|
||||
/**
|
||||
* Write three nodes
|
||||
* a: the root node of the workspace store
|
||||
* b: the target node
|
||||
* c: child of the target node
|
||||
*/
|
||||
nodes.add(nodeService.getRootNode(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE));
|
||||
nodes.add(target.getNodeRef());
|
||||
nodes.add(childNodeRef);
|
||||
|
||||
TransferManifestWriter formatter = new XMLTransferManifestWriter();
|
||||
TransferManifestHeader header = new TransferManifestHeader();
|
||||
header.setNodeCount(nodes.size());
|
||||
header.setCreatedDate(new Date());
|
||||
formatter.startTransferManifest(snapshotWriter);
|
||||
formatter.writeTransferManifestHeader(header);
|
||||
@@ -230,7 +232,7 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
||||
assertEquals("parent q name", readNode.getParentAssocs().get(0).getQName(), QName.createQName(CONTENT_ASSOC_NAME));
|
||||
assertEquals("parent type q name", readNode.getParentAssocs().get(0).getTypeQName(), ContentModel.ASSOC_CONTAINS);
|
||||
assertEquals("child node ref", readNode.getParentAssocs().get(0).getChildRef(), childNodeRef);
|
||||
assertEquals("parent node ref", readNode.getParentAssocs().get(0).getParentRef(), readNode.getPrimaryParentAssoc());
|
||||
assertEquals("parent node ref", readNode.getParentAssocs().get(0).getParentRef(), target.getNodeRef());
|
||||
assertTrue("zero child assoc", readNode.getChildAssocs().size() == 0);
|
||||
|
||||
/**
|
||||
@@ -242,8 +244,6 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
||||
assertEquals("content not found", content.size(), 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
@@ -204,6 +204,10 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS))
|
||||
{
|
||||
TransferManifestNormalNode node = (TransferManifestNormalNode)props.get("node");
|
||||
ArrayList<ChildAssociationRef> parentAssocs = new ArrayList<ChildAssociationRef>();
|
||||
node.setParentAssocs(parentAssocs);
|
||||
// To receive the primary parent assoc.
|
||||
props.put("parentAssocs", parentAssocs);
|
||||
}
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS))
|
||||
{
|
||||
@@ -230,7 +234,6 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
||||
props.put("from", from);
|
||||
props.put("type", type);
|
||||
props.put("isPrimary", isPrimary);
|
||||
|
||||
}
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS))
|
||||
{
|
||||
@@ -245,7 +248,6 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
||||
List<AssociationRef> assocs = new ArrayList<AssociationRef>();
|
||||
node.setSourceAssocs(assocs);
|
||||
props.put("assocs", assocs);
|
||||
|
||||
}
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_ASSOC))
|
||||
{
|
||||
@@ -260,6 +262,10 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT))
|
||||
{
|
||||
buffer = new StringBuffer();
|
||||
|
||||
ArrayList<ChildAssociationRef> parentAssocs = new ArrayList<ChildAssociationRef>();
|
||||
// Synthetic element - To receive the primary parent assoc.
|
||||
props.put("parentAssocs", parentAssocs);
|
||||
}
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_VALUES))
|
||||
{
|
||||
@@ -406,24 +412,9 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
||||
QName type = (QName) props.get("type");
|
||||
Boolean isPrimary = (Boolean)props.get("isPrimary");
|
||||
TransferManifestNode node = (TransferManifestNode)props.get("node");
|
||||
|
||||
List<ChildAssociationRef> parentAssocs = (List<ChildAssociationRef>)props.get("parentAssocs");
|
||||
ChildAssociationRef childAssociationRef = new ChildAssociationRef(type, from, name, node.getNodeRef(), isPrimary, -1);
|
||||
|
||||
if (TransferManifestNormalNode.class.isAssignableFrom(node.getClass()))
|
||||
{
|
||||
TransferManifestNormalNode normalNode = (TransferManifestNormalNode)node;
|
||||
List<ChildAssociationRef> parents = normalNode.getParentAssocs();
|
||||
if (parents == null)
|
||||
{
|
||||
parents = new ArrayList<ChildAssociationRef>();
|
||||
normalNode.setParentAssocs(parents);
|
||||
}
|
||||
parents.add(childAssociationRef);
|
||||
}
|
||||
if (isPrimary)
|
||||
{
|
||||
node.setPrimaryParentAssoc(childAssociationRef);
|
||||
}
|
||||
parentAssocs.add(childAssociationRef);
|
||||
}
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS))
|
||||
{
|
||||
@@ -445,6 +436,17 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
||||
assocs.add(assoc);
|
||||
props.put("assoc", new AssociationRef(null, source, type, target));
|
||||
}
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT))
|
||||
{
|
||||
TransferManifestNode node = (TransferManifestNode)props.get("node");
|
||||
List<ChildAssociationRef> parentAssocs = (List<ChildAssociationRef>)props.get("parentAssocs");
|
||||
if(parentAssocs != null)
|
||||
{
|
||||
// Size should allways be 1.
|
||||
assert(parentAssocs.size() == 1);
|
||||
node.setPrimaryParentAssoc(parentAssocs.get(0));
|
||||
}
|
||||
}
|
||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH))
|
||||
{
|
||||
TransferManifestNode node = (TransferManifestNode)props.get("node");
|
||||
|
Reference in New Issue
Block a user