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;
|
package org.alfresco.repo.transfer.manifest;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.BufferedWriter;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.Writer;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
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.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.service.cmr.search.SearchService;
|
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.TransferService;
|
||||||
import org.alfresco.service.cmr.transfer.TransferTarget;
|
import org.alfresco.service.cmr.transfer.TransferTarget;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
@@ -70,7 +67,6 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
|||||||
{
|
{
|
||||||
private TransferService transferService;
|
private TransferService transferService;
|
||||||
private ContentService contentService;
|
private ContentService contentService;
|
||||||
private SearchService searchService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called during the transaction setup
|
* Called during the transaction setup
|
||||||
@@ -82,7 +78,6 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
|||||||
// Get the required services
|
// Get the required services
|
||||||
this.transferService = (TransferService)this.applicationContext.getBean("TransferService");
|
this.transferService = (TransferService)this.applicationContext.getBean("TransferService");
|
||||||
this.contentService = (ContentService)this.applicationContext.getBean("ContentService");
|
this.contentService = (ContentService)this.applicationContext.getBean("ContentService");
|
||||||
this.searchService = (SearchService)this.applicationContext.getBean("SearchService");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSnapshot() throws Exception
|
public void testSnapshot() throws Exception
|
||||||
@@ -137,12 +132,19 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
|||||||
|
|
||||||
Set<NodeRef> nodes = new HashSet<NodeRef>();
|
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(nodeService.getRootNode(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE));
|
||||||
nodes.add(target.getNodeRef());
|
nodes.add(target.getNodeRef());
|
||||||
nodes.add(childNodeRef);
|
nodes.add(childNodeRef);
|
||||||
|
|
||||||
TransferManifestWriter formatter = new XMLTransferManifestWriter();
|
TransferManifestWriter formatter = new XMLTransferManifestWriter();
|
||||||
TransferManifestHeader header = new TransferManifestHeader();
|
TransferManifestHeader header = new TransferManifestHeader();
|
||||||
|
header.setNodeCount(nodes.size());
|
||||||
header.setCreatedDate(new Date());
|
header.setCreatedDate(new Date());
|
||||||
formatter.startTransferManifest(snapshotWriter);
|
formatter.startTransferManifest(snapshotWriter);
|
||||||
formatter.writeTransferManifestHeader(header);
|
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 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("parent type q name", readNode.getParentAssocs().get(0).getTypeQName(), ContentModel.ASSOC_CONTAINS);
|
||||||
assertEquals("child node ref", readNode.getParentAssocs().get(0).getChildRef(), childNodeRef);
|
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);
|
assertTrue("zero child assoc", readNode.getChildAssocs().size() == 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -242,8 +244,6 @@ public class ManifestIntegrationTest extends BaseAlfrescoSpringTest
|
|||||||
assertEquals("content not found", content.size(), 1);
|
assertEquals("content not found", content.size(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@@ -204,6 +204,10 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
|||||||
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");
|
||||||
|
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))
|
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("from", from);
|
||||||
props.put("type", type);
|
props.put("type", type);
|
||||||
props.put("isPrimary", isPrimary);
|
props.put("isPrimary", isPrimary);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS))
|
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>();
|
List<AssociationRef> assocs = new ArrayList<AssociationRef>();
|
||||||
node.setSourceAssocs(assocs);
|
node.setSourceAssocs(assocs);
|
||||||
props.put("assocs", assocs);
|
props.put("assocs", assocs);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_ASSOC))
|
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))
|
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT))
|
||||||
{
|
{
|
||||||
buffer = new StringBuffer();
|
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))
|
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");
|
QName type = (QName) props.get("type");
|
||||||
Boolean isPrimary = (Boolean)props.get("isPrimary");
|
Boolean isPrimary = (Boolean)props.get("isPrimary");
|
||||||
TransferManifestNode node = (TransferManifestNode)props.get("node");
|
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);
|
ChildAssociationRef childAssociationRef = new ChildAssociationRef(type, from, name, node.getNodeRef(), isPrimary, -1);
|
||||||
|
parentAssocs.add(childAssociationRef);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS))
|
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS))
|
||||||
{
|
{
|
||||||
@@ -445,6 +436,17 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
|
|||||||
assocs.add(assoc);
|
assocs.add(assoc);
|
||||||
props.put("assoc", new AssociationRef(null, source, type, target));
|
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))
|
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH))
|
||||||
{
|
{
|
||||||
TransferManifestNode node = (TransferManifestNode)props.get("node");
|
TransferManifestNode node = (TransferManifestNode)props.get("node");
|
||||||
|
Reference in New Issue
Block a user