mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)
57038: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3) 56505: Merged HEAD-BUG-FIX to V4.2-BUG-FIX (4.2.1) 55928: <<NOT IN 4.1.6>> Merged V4.1-BUG-FIX (4.1.7) to HEAD-BUG-FIX (4.2) 55811: Merged DEV to V4.1-BUG-FIX (4.1.7) 55751: MNT-9076: Penultimate version cannot be accessed from Share when uploading using bulkimport The changes related to creating a version for HEAD revision of imported file. Added unit test. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@61672 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -188,10 +188,10 @@ public abstract class AbstractNodeImporter implements NodeImporter
|
||||
|
||||
result = importContentVersions(nodeRef, importableItem);
|
||||
}
|
||||
|
||||
if (logger.isDebugEnabled()) logger.debug("Creating head revision of node " + nodeRef.toString());
|
||||
|
||||
else
|
||||
{
|
||||
importContentAndMetadata(nodeRef, importableItem.getHeadRevision(), metadata);
|
||||
}
|
||||
|
||||
return(result);
|
||||
}
|
||||
@@ -199,26 +199,30 @@ public abstract class AbstractNodeImporter implements NodeImporter
|
||||
protected final int importContentVersions(NodeRef nodeRef, ImportableItem importableItem)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
for (final ImportableItem.VersionedContentAndMetadata versionEntry : importableItem.getVersionEntries())
|
||||
{
|
||||
Map<String, Serializable> versionProperties = new HashMap<String, Serializable>();
|
||||
MetadataLoader.Metadata metadata = loadMetadata(versionEntry);
|
||||
|
||||
importContentAndMetadata(nodeRef, versionEntry, metadata);
|
||||
|
||||
if (logger.isDebugEnabled()) logger.debug("Creating v" + String.valueOf(versionEntry.getVersion()) + " of node '" + nodeRef.toString() + "' (note: version label in Alfresco will not be the same - it is not currently possible to explicitly force a particular version label).");
|
||||
|
||||
// Note: PROP_VERSION_LABEL is a "reserved" property, and cannot be modified by custom code.
|
||||
// In other words, we can't use the version label on disk as the version label in Alfresco. :-(
|
||||
// See: http://code.google.com/p/alfresco-bulk-filesystem-import/issues/detail?id=85
|
||||
//versionProperties.put(ContentModel.PROP_VERSION_LABEL.toPrefixString(), String.valueOf(versionEntry.getVersion()));
|
||||
versionProperties.put(VersionModel.PROP_VERSION_TYPE, VersionType.MAJOR); // Load every version as a major version for now - see http://code.google.com/p/alfresco-bulk-filesystem-import/issues/detail?id=84
|
||||
versionService.createVersion(nodeRef, versionProperties);
|
||||
|
||||
for (final ImportableItem.VersionedContentAndMetadata versionEntry : importableItem.getVersionEntries())
|
||||
{
|
||||
MetadataLoader.Metadata metadata = loadMetadata(versionEntry);
|
||||
importContentAndMetadata(nodeRef, versionEntry, metadata);
|
||||
|
||||
if (logger.isDebugEnabled()) logger.debug("Creating v" + String.valueOf(versionEntry.getVersion()) + " of node '" + nodeRef.toString() + "' (note: version label in Alfresco will not be the same - it is not currently possible to explicitly force a particular version label).");
|
||||
|
||||
versionService.createVersion(nodeRef, versionProperties);
|
||||
result += metadata.getProperties().size() + 4; // Add 4 for "standard" metadata properties read from filesystem
|
||||
}
|
||||
|
||||
if (logger.isDebugEnabled()) logger.debug("Creating head revision of node " + nodeRef.toString());
|
||||
ImportableItem.ContentAndMetadata contentAndMetadata = importableItem.getHeadRevision();
|
||||
MetadataLoader.Metadata metadata = loadMetadata(contentAndMetadata);
|
||||
importContentAndMetadata(nodeRef, importableItem.getHeadRevision(), metadata);
|
||||
versionService.createVersion(nodeRef, versionProperties);
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
@@ -52,6 +52,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.service.cmr.rule.RuleService;
|
||||
import org.alfresco.service.cmr.version.VersionService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.service.transaction.TransactionService;
|
||||
import org.alfresco.util.ApplicationContextHelper;
|
||||
@@ -74,6 +75,7 @@ public class AbstractBulkImportTests
|
||||
protected UserTransaction txn = null;
|
||||
protected RuleService ruleService;
|
||||
protected ActionService actionService;
|
||||
protected VersionService versionService;
|
||||
protected MultiThreadedBulkFilesystemImporter bulkImporter;
|
||||
|
||||
protected NodeRef rootNodeRef;
|
||||
@@ -107,6 +109,7 @@ public class AbstractBulkImportTests
|
||||
contentService = (ContentService)ctx.getBean("contentService");
|
||||
actionService = (ActionService)ctx.getBean("actionService");
|
||||
ruleService = (RuleService)ctx.getBean("ruleService");
|
||||
versionService = (VersionService)ctx.getBean("versionService");
|
||||
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
|
||||
|
||||
|
@@ -25,6 +25,8 @@
|
||||
package org.alfresco.repo.bulkimport.impl;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -45,9 +47,12 @@ import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.service.cmr.action.Action;
|
||||
import org.alfresco.service.cmr.action.ActionCondition;
|
||||
import org.alfresco.service.cmr.model.FileInfo;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.rule.Rule;
|
||||
import org.alfresco.service.cmr.rule.RuleType;
|
||||
import org.alfresco.service.cmr.version.Version;
|
||||
import org.alfresco.service.cmr.version.VersionHistory;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
@@ -308,4 +313,66 @@ public class BulkImportTest extends AbstractBulkImportTests
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* MNT-9076: Penultimate version cannot be accessed from Share when uploading using bulkimport
|
||||
*
|
||||
* @throws Throwable
|
||||
*/
|
||||
@Test
|
||||
public void testMNT9076() throws Throwable
|
||||
{
|
||||
txn = transactionService.getUserTransaction();
|
||||
txn.begin();
|
||||
|
||||
NodeRef folderNode = topLevelFolder.getNodeRef();
|
||||
|
||||
try
|
||||
{
|
||||
NodeImporter nodeImporter = streamingNodeImporterFactory.getNodeImporter(ResourceUtils.getFile("classpath:bulkimport2"));
|
||||
BulkImportParameters bulkImportParameters = new BulkImportParameters();
|
||||
bulkImportParameters.setTarget(folderNode);
|
||||
bulkImportParameters.setReplaceExisting(true);
|
||||
bulkImportParameters.setDisableRulesService(true);
|
||||
bulkImportParameters.setBatchSize(40);
|
||||
bulkImporter.bulkImport(bulkImportParameters, nodeImporter);
|
||||
}
|
||||
catch(Throwable e)
|
||||
{
|
||||
fail(e.getMessage());
|
||||
}
|
||||
|
||||
System.out.println(bulkImporter.getStatus());
|
||||
assertEquals(false, bulkImporter.getStatus().inProgress());
|
||||
|
||||
List<FileInfo> files = getFiles(folderNode, null);
|
||||
assertEquals("One file is expected to be imported:", 1, files.size());
|
||||
FileInfo file = files.get(0);
|
||||
assertEquals("File name is not equal:", "fileWithVersions.txt", file.getName());
|
||||
|
||||
NodeRef file0NodeRef = file.getNodeRef();
|
||||
assertTrue("Imported file should be versioned:", versionService.isVersioned(file0NodeRef));
|
||||
|
||||
VersionHistory history = versionService.getVersionHistory(file0NodeRef);
|
||||
assertEquals("Imported file should have 4 versions:", 4, history.getAllVersions().size());
|
||||
Version[] versions = history.getAllVersions().toArray(new Version[4]);
|
||||
|
||||
//compare the content of each version
|
||||
ContentReader contentReader;
|
||||
contentReader = this.contentService.getReader(versions[0].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
|
||||
assertNotNull(contentReader);
|
||||
assertEquals("This is the final version of fileWithVersions.txt.", contentReader.getContentString());
|
||||
|
||||
contentReader = this.contentService.getReader(versions[1].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
|
||||
assertNotNull(contentReader);
|
||||
assertEquals("This is version 3 of fileWithVersions.txt.", contentReader.getContentString());
|
||||
|
||||
contentReader = this.contentService.getReader(versions[2].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
|
||||
assertNotNull(contentReader);
|
||||
assertEquals("This is version 2 of fileWithVersions.txt.", contentReader.getContentString());
|
||||
|
||||
contentReader = this.contentService.getReader(versions[3].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
|
||||
assertNotNull(contentReader);
|
||||
assertEquals("This is version 1 of fileWithVersions.txt.", contentReader.getContentString());
|
||||
}
|
||||
|
||||
}
|
||||
|
1
source/test-resources/bulkimport2/fileWithVersions.txt
Normal file
1
source/test-resources/bulkimport2/fileWithVersions.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is the final version of fileWithVersions.txt.
|
@@ -0,0 +1 @@
|
||||
This is version 1 of fileWithVersions.txt.
|
@@ -0,0 +1 @@
|
||||
This is version 2 of fileWithVersions.txt.
|
@@ -0,0 +1 @@
|
||||
This is version 3 of fileWithVersions.txt.
|
Reference in New Issue
Block a user