mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.3-BUG-FIX to HEAD
21384: ALF-2879: XAM Connector changes - Added callbacks for code to modify the XSet fields - Changed XAMArchivedAspect to use callback (moved code out of XAMContentStore) - Added XAMNodePropertyWriter to set metadata including some global properties and node-specific values - See readme.txt for details 21393: ALF-2879: XAM Connector changes - Sprinkled DEBUG logging around - Updated readme.txt with logging details - Metadata writing tested and no changes required 21403: ALF-2879: XAM Connector changes - Workaround ContentStoreSelector bug present in V3.3.2 - NodeRef context not present during write - Added bug back into ContentStoreSelector for testing and verified that metadata is written to XSet 21487: Merged V3.3 to V3.3-BUG-FIX 21374: ALF-4028: In "createNode", save the ScriptNode before calling cmis.applyVersioningState to ensure updated properties have been saved. 21389: Add main to run index check against current repository by hand 21390: ALF-4016: Files uploaded to ts are not visible - multi-threaded tracking never abandons an index chunk - warns of long running transaction chunks - logging change 21392: ALF-4016: Files uploaded to ts are not visible - make sure FTS update exceptions can not lead to a TX commit and deletions 21428: NFS fixes to return the current file size in the post op attributes if the file is open, fixes to rename to close the current file if open before the rename, also delete the target file for a rename if it exists as per NFS v3 spec. ALF-3181, ALF-3954, ALF-3955, ALF-3956, ALF-3957. 21443: Merged PATCHES/V3.2.1 to V3.3 21396: ALF-3779, ALF-4025: Corrected driving column in alf_node_status --FOREACH statement to handle null node_ids and added --FOREACH for building of t_summary_nstat 21455: Remove old language pack pieces 21458: Fix linux install for some distros (ALF-4000) 21467: Merged DEV/TEMPORARY to V3.3 21444: ALF-3962 : Message 'The current implementation of the version service does not support the creation of branches.' being thrown from Version2ServiceImpl 1. Change AbstractVersionServiceImpl.invokeCalculateVersionLabel to make SerialVersionLabelPolicy behaviour default rather than the versionNumber when calculating new version label. 2. Change Version2ServiceImpl to handle any existing corrupted version histories that are marked with version label "0" (see Version2ServiceImpl. checkForCorruptedVersions method). 3. Unit tests was updated. 21464: Reimplemented according to David's review. 1. Update logic of checkForCorruptedVersions method in Version2ServiceImpl. A reusable protected method (getAllVersions) was created containing the shared code. 2. Update unit test to include tests for the corrupt version fixing behaviour. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21488 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -40,10 +40,10 @@ INSERT INTO alf_node_status (protocol, identifier, guid, node_id, transaction_id
|
|||||||
);
|
);
|
||||||
DROP TABLE t_node_status;
|
DROP TABLE t_node_status;
|
||||||
|
|
||||||
--FOREACH alf_node_status.node_id system.upgrade.alf_node_status.batchsize
|
--FOREACH alf_transaction.id system.upgrade.alf_transaction.batchsize
|
||||||
DELETE FROM alf_node_status
|
DELETE FROM alf_node_status
|
||||||
WHERE node_id IS NULL
|
WHERE node_id IS NULL
|
||||||
AND node_id >= ${LOWERBOUND} AND node_id <= ${UPPERBOUND};
|
AND transaction_id >= ${LOWERBOUND} AND transaction_id <= ${UPPERBOUND};
|
||||||
|
|
||||||
--FOREACH alf_node_status.node_id system.upgrade.alf_node_status.batchsize
|
--FOREACH alf_node_status.node_id system.upgrade.alf_node_status.batchsize
|
||||||
UPDATE alf_node_status ns SET ns.protocol =
|
UPDATE alf_node_status ns SET ns.protocol =
|
||||||
|
@@ -278,8 +278,12 @@ CREATE TABLE t_summary_nstat
|
|||||||
transaction_id BIGINT(20) DEFAULT NULL,
|
transaction_id BIGINT(20) DEFAULT NULL,
|
||||||
PRIMARY KEY (node_id)
|
PRIMARY KEY (node_id)
|
||||||
) TYPE=InnoDB;
|
) TYPE=InnoDB;
|
||||||
|
--FOREACH alf_node_status.node_id system.upgrade.t_summary_nstat.batchsize
|
||||||
INSERT INTO t_summary_nstat (node_id, transaction_id)
|
INSERT INTO t_summary_nstat (node_id, transaction_id)
|
||||||
SELECT node_id, transaction_id FROM alf_node_status WHERE node_id IS NOT NULL;
|
SELECT node_id, transaction_id
|
||||||
|
FROM alf_node_status
|
||||||
|
WHERE node_id IS NOT NULL
|
||||||
|
AND node_id >= ${LOWERBOUND} AND node_id <= ${UPPERBOUND};
|
||||||
|
|
||||||
-- Copy data over
|
-- Copy data over
|
||||||
--FOREACH alf_node.id system.upgrade.t_alf_node.batchsize
|
--FOREACH alf_node.id system.upgrade.t_alf_node.batchsize
|
||||||
|
@@ -70,8 +70,12 @@ CREATE TABLE t_summary_nstat
|
|||||||
transaction_id BIGINT(20) DEFAULT NULL,
|
transaction_id BIGINT(20) DEFAULT NULL,
|
||||||
PRIMARY KEY (node_id)
|
PRIMARY KEY (node_id)
|
||||||
) TYPE=InnoDB;
|
) TYPE=InnoDB;
|
||||||
|
--FOREACH alf_node_status.node_id system.upgrade.t_summary_nstat.batchsize
|
||||||
INSERT INTO t_summary_nstat (node_id, transaction_id)
|
INSERT INTO t_summary_nstat (node_id, transaction_id)
|
||||||
SELECT node_id, transaction_id FROM alf_node_status WHERE node_id IS NOT NULL;
|
SELECT node_id, transaction_id
|
||||||
|
FROM alf_node_status
|
||||||
|
WHERE node_id IS NOT NULL
|
||||||
|
AND node_id >= ${LOWERBOUND} AND node_id <= ${UPPERBOUND};
|
||||||
|
|
||||||
-- Copy data over
|
-- Copy data over
|
||||||
--FOREACH alf_node.id system.upgrade.t_alf_node.batchsize
|
--FOREACH alf_node.id system.upgrade.t_alf_node.batchsize
|
||||||
|
@@ -1108,7 +1108,7 @@ public abstract class AbstractReindexComponent implements IndexRecovery
|
|||||||
// to prevent the queue from getting locked up.
|
// to prevent the queue from getting locked up.
|
||||||
if (lastRunnable == currentRunnable)
|
if (lastRunnable == currentRunnable)
|
||||||
{
|
{
|
||||||
if (currentTimestamp - lastTimestamp > 60E9)
|
if (currentTimestamp - lastTimestamp > 600E9)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -1122,9 +1122,9 @@ public abstract class AbstractReindexComponent implements IndexRecovery
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
loggerOnThread.info("Terminating reindex thread for inactivity: " + currentRunnable);
|
loggerOnThread.warn("Detected reindex thread inactivity: " + currentRunnable);
|
||||||
reindexThreadQueue.remove(currentRunnable);
|
//reindexThreadQueue.remove(currentRunnable);
|
||||||
currentRunnable.kill();
|
//currentRunnable.kill();
|
||||||
}
|
}
|
||||||
// Reset
|
// Reset
|
||||||
lastRunnable = null;
|
lastRunnable = null;
|
||||||
|
@@ -1608,10 +1608,6 @@ public class ADMLuceneIndexerImpl extends AbstractLuceneIndexerImpl<NodeRef> imp
|
|||||||
remainingCount = count - done;
|
remainingCount = count - done;
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
catch (LuceneIndexException e)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
if (writer != null)
|
if (writer != null)
|
||||||
|
@@ -221,15 +221,15 @@ public abstract class BaseVersionStoreTest extends BaseSpringTest
|
|||||||
*/
|
*/
|
||||||
protected NodeRef createNewVersionableNode()
|
protected NodeRef createNewVersionableNode()
|
||||||
{
|
{
|
||||||
return createNode(true);
|
return createNode(true, TEST_TYPE_QNAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected NodeRef createNewNode()
|
protected NodeRef createNewNode()
|
||||||
{
|
{
|
||||||
return createNode(false);
|
return createNode(false, TEST_TYPE_QNAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected NodeRef createNode(boolean versionable)
|
protected NodeRef createNode(boolean versionable, QName nodeType)
|
||||||
{
|
{
|
||||||
// Use this map to retrive the versionable nodes in later tests
|
// Use this map to retrive the versionable nodes in later tests
|
||||||
this.versionableNodes = new HashMap<String, NodeRef>();
|
this.versionableNodes = new HashMap<String, NodeRef>();
|
||||||
@@ -239,7 +239,7 @@ public abstract class BaseVersionStoreTest extends BaseSpringTest
|
|||||||
rootNodeRef,
|
rootNodeRef,
|
||||||
ContentModel.ASSOC_CHILDREN,
|
ContentModel.ASSOC_CHILDREN,
|
||||||
QName.createQName("{test}MyVersionableNode"),
|
QName.createQName("{test}MyVersionableNode"),
|
||||||
TEST_TYPE_QNAME,
|
nodeType,
|
||||||
this.nodeProperties).getChildRef();
|
this.nodeProperties).getChildRef();
|
||||||
if (versionable)
|
if (versionable)
|
||||||
{
|
{
|
||||||
@@ -263,7 +263,7 @@ public abstract class BaseVersionStoreTest extends BaseSpringTest
|
|||||||
nodeRef,
|
nodeRef,
|
||||||
TEST_CHILD_ASSOC_1,
|
TEST_CHILD_ASSOC_1,
|
||||||
TEST_CHILD_ASSOC_1,
|
TEST_CHILD_ASSOC_1,
|
||||||
TEST_TYPE_QNAME,
|
nodeType,
|
||||||
this.nodeProperties).getChildRef();
|
this.nodeProperties).getChildRef();
|
||||||
|
|
||||||
if (versionable)
|
if (versionable)
|
||||||
@@ -277,7 +277,7 @@ public abstract class BaseVersionStoreTest extends BaseSpringTest
|
|||||||
nodeRef,
|
nodeRef,
|
||||||
TEST_CHILD_ASSOC_2,
|
TEST_CHILD_ASSOC_2,
|
||||||
TEST_CHILD_ASSOC_2,
|
TEST_CHILD_ASSOC_2,
|
||||||
TEST_TYPE_QNAME,
|
nodeType,
|
||||||
this.nodeProperties).getChildRef();
|
this.nodeProperties).getChildRef();
|
||||||
|
|
||||||
if (versionable)
|
if (versionable)
|
||||||
@@ -293,7 +293,7 @@ public abstract class BaseVersionStoreTest extends BaseSpringTest
|
|||||||
rootNodeRef,
|
rootNodeRef,
|
||||||
ContentModel.ASSOC_CHILDREN,
|
ContentModel.ASSOC_CHILDREN,
|
||||||
QName.createQName("{test}MyAssocNode"),
|
QName.createQName("{test}MyAssocNode"),
|
||||||
TEST_TYPE_QNAME,
|
nodeType,
|
||||||
this.nodeProperties).getChildRef();
|
this.nodeProperties).getChildRef();
|
||||||
assertNotNull(assocNode);
|
assertNotNull(assocNode);
|
||||||
this.dbNodeService.createAssociation(nodeRef, assocNode, TEST_ASSOC);
|
this.dbNodeService.createAssociation(nodeRef, assocNode, TEST_ASSOC);
|
||||||
|
@@ -37,6 +37,7 @@ import org.alfresco.repo.version.common.VersionHistoryImpl;
|
|||||||
import org.alfresco.repo.version.common.VersionImpl;
|
import org.alfresco.repo.version.common.VersionImpl;
|
||||||
import org.alfresco.repo.version.common.VersionUtil;
|
import org.alfresco.repo.version.common.VersionUtil;
|
||||||
import org.alfresco.repo.version.common.VersionHistoryImpl.VersionComparatorAsc;
|
import org.alfresco.repo.version.common.VersionHistoryImpl.VersionComparatorAsc;
|
||||||
|
import org.alfresco.repo.version.common.versionlabel.SerialVersionLabelPolicy;
|
||||||
import org.alfresco.service.cmr.repository.AspectMissingException;
|
import org.alfresco.service.cmr.repository.AspectMissingException;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
@@ -50,6 +51,7 @@ import org.alfresco.service.cmr.version.VersionService;
|
|||||||
import org.alfresco.service.cmr.version.VersionServiceException;
|
import org.alfresco.service.cmr.version.VersionServiceException;
|
||||||
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.util.VersionNumber;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.extensions.surf.util.ParameterCheck;
|
import org.springframework.extensions.surf.util.ParameterCheck;
|
||||||
@@ -265,6 +267,10 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// ALF-3962 fix
|
||||||
|
// check for corrupted version histories that are marked with version label "0"
|
||||||
|
checkForCorruptedVersions(versionHistoryRef, nodeRef);
|
||||||
|
|
||||||
// Since we have an existing version history we should be able to lookup
|
// Since we have an existing version history we should be able to lookup
|
||||||
// the current version
|
// the current version
|
||||||
currentVersionRef = getCurrentVersionNodeRef(versionHistoryRef, nodeRef);
|
currentVersionRef = getCurrentVersionNodeRef(versionHistoryRef, nodeRef);
|
||||||
@@ -684,6 +690,30 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all versions in version history
|
||||||
|
*
|
||||||
|
* @param versionHistoryRef the version history nodeRef
|
||||||
|
* @return list of all versions
|
||||||
|
*/
|
||||||
|
protected List<Version> getAllVersions(NodeRef versionHistoryRef)
|
||||||
|
{
|
||||||
|
List<ChildAssociationRef> versionsAssoc = this.dbNodeService.getChildAssocs(versionHistoryRef, Version2Model.CHILD_QNAME_VERSIONS, RegexQNamePattern.MATCH_ALL);
|
||||||
|
|
||||||
|
List<Version> versions = new ArrayList<Version>(versionsAssoc.size());
|
||||||
|
|
||||||
|
for (ChildAssociationRef versionAssoc : versionsAssoc)
|
||||||
|
{
|
||||||
|
String localName = versionAssoc.getQName().getLocalName();
|
||||||
|
if (localName.indexOf(Version2Model.CHILD_VERSIONS+"-") != -1) // TODO - could remove this belts-and-braces, should match correctly above !
|
||||||
|
{
|
||||||
|
versions.add(getVersion(versionAssoc.getChildRef()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return versions;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds a version history object from the version history reference.
|
* Builds a version history object from the version history reference.
|
||||||
* <p>
|
* <p>
|
||||||
@@ -703,18 +733,7 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
|
|
||||||
VersionHistory versionHistory = null;
|
VersionHistory versionHistory = null;
|
||||||
|
|
||||||
List<ChildAssociationRef> versionsAssoc = this.dbNodeService.getChildAssocs(versionHistoryRef, Version2Model.CHILD_QNAME_VERSIONS, RegexQNamePattern.MATCH_ALL);
|
List<Version> versions = getAllVersions(versionHistoryRef);
|
||||||
|
|
||||||
List<Version> versions = new ArrayList<Version>(versionsAssoc.size());
|
|
||||||
|
|
||||||
for (ChildAssociationRef versionAssoc : versionsAssoc)
|
|
||||||
{
|
|
||||||
String localName = versionAssoc.getQName().getLocalName();
|
|
||||||
if (localName.indexOf(Version2Model.CHILD_VERSIONS+"-") != -1) // TODO - could remove this belts-and-braces, should match correctly above !
|
|
||||||
{
|
|
||||||
versions.add(getVersion(versionAssoc.getChildRef()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Collections.sort(versions, versionComparatorAsc);
|
Collections.sort(versions, versionComparatorAsc);
|
||||||
|
|
||||||
@@ -879,6 +898,63 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if versions are marked with invalid version label, if true > apply default serial version label (e.g. "1.0", "1.1")
|
||||||
|
*
|
||||||
|
* @param versionHistory a version histore node reference
|
||||||
|
* @param nodeRef a node reference
|
||||||
|
*/
|
||||||
|
private void checkForCorruptedVersions(NodeRef versionHistory, NodeRef nodeRef)
|
||||||
|
{
|
||||||
|
// get the current version label in live store
|
||||||
|
String versionLabel = (String) this.nodeService.getProperty(nodeRef, ContentModel.PROP_VERSION_LABEL);
|
||||||
|
|
||||||
|
if (versionLabel != null && versionLabel.equals("0"))
|
||||||
|
{
|
||||||
|
// need to correct version labels
|
||||||
|
List<Version> versions = getAllVersions(versionHistory);
|
||||||
|
|
||||||
|
// sort versions by node id
|
||||||
|
Collections.sort(versions, new Comparator<Version>()
|
||||||
|
{
|
||||||
|
|
||||||
|
public int compare(Version v1, Version v2)
|
||||||
|
{
|
||||||
|
int result = v1.getFrozenModifiedDate().compareTo(v2.getFrozenModifiedDate());
|
||||||
|
if (result == 0)
|
||||||
|
{
|
||||||
|
result = v1.getFrozenStateNodeRef().getId().compareTo(v2.getFrozenStateNodeRef().getId());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
SerialVersionLabelPolicy serialVersionLabelPolicy = new SerialVersionLabelPolicy();
|
||||||
|
QName classRef = this.nodeService.getType(nodeRef);
|
||||||
|
Version preceedingVersion = null;
|
||||||
|
|
||||||
|
for (Version version : versions)
|
||||||
|
{
|
||||||
|
// re-calculate version label
|
||||||
|
versionLabel = serialVersionLabelPolicy.calculateVersionLabel(classRef, preceedingVersion, 0, version.getVersionProperties());
|
||||||
|
|
||||||
|
// update version with new version label
|
||||||
|
NodeRef versionNodeRef = new NodeRef(StoreRef.PROTOCOL_WORKSPACE, version.getFrozenStateNodeRef().getStoreRef().getIdentifier(), version.getFrozenStateNodeRef()
|
||||||
|
.getId());
|
||||||
|
this.dbNodeService.setProperty(versionNodeRef, Version2Model.PROP_QNAME_VERSION_LABEL, versionLabel);
|
||||||
|
|
||||||
|
version.getVersionProperties().put(VersionBaseModel.PROP_VERSION_LABEL, versionLabel);
|
||||||
|
|
||||||
|
// remember preceding version
|
||||||
|
preceedingVersion = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update current version label in live store
|
||||||
|
this.nodeService.setProperty(nodeRef, ContentModel.PROP_VERSION_LABEL, versionLabel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.cms.version.VersionService#revert(NodeRef)
|
* @see org.alfresco.cms.version.VersionService#revert(NodeRef)
|
||||||
*/
|
*/
|
||||||
|
@@ -1164,6 +1164,41 @@ public class VersionServiceImplTest extends BaseVersionStoreTest
|
|||||||
assertEquals(AccessStatus.DENIED, permissionService.hasPermission(versionNodeRef, PermissionService.READ));
|
assertEquals(AccessStatus.DENIED, permissionService.hasPermission(versionNodeRef, PermissionService.READ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testALF_3962()
|
||||||
|
{
|
||||||
|
NodeRef versionableNode = createNode(true, QName.createQName("http://www.alfresco.org/model/action/1.0", "action"));
|
||||||
|
// crete some versions of content without version label policy
|
||||||
|
createVersion(versionableNode);
|
||||||
|
createVersion(versionableNode);
|
||||||
|
createVersion(versionableNode);
|
||||||
|
|
||||||
|
// corrupt versions
|
||||||
|
Collection<Version> versions = versionService.getVersionHistory(versionableNode).getAllVersions();
|
||||||
|
|
||||||
|
for (Version version : versions)
|
||||||
|
{
|
||||||
|
// update version with corrupted label
|
||||||
|
NodeRef versionNodeRef = new NodeRef(StoreRef.PROTOCOL_WORKSPACE, version.getFrozenStateNodeRef().getStoreRef().getIdentifier(), version.getFrozenStateNodeRef()
|
||||||
|
.getId());
|
||||||
|
this.dbNodeService.setProperty(versionNodeRef, Version2Model.PROP_QNAME_VERSION_LABEL, "0");
|
||||||
|
}
|
||||||
|
this.nodeService.setProperty(versionableNode, ContentModel.PROP_VERSION_LABEL, "0");
|
||||||
|
|
||||||
|
// should correct version labels
|
||||||
|
versionService.createVersion(versionableNode, this.versionProperties);
|
||||||
|
|
||||||
|
versions = versionService.getVersionHistory(versionableNode).getAllVersions();
|
||||||
|
|
||||||
|
for (Version version : versions)
|
||||||
|
{
|
||||||
|
assertFalse(version.getVersionLabel().equals("0"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// check live node
|
||||||
|
assertFalse(this.nodeService.getProperty(versionableNode, ContentModel.PROP_VERSION_LABEL).toString().equals("0"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String ... args)
|
public static void main(String ... args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@@ -31,6 +31,7 @@ import org.alfresco.repo.version.VersionServicePolicies.AfterCreateVersionPolicy
|
|||||||
import org.alfresco.repo.version.VersionServicePolicies.BeforeCreateVersionPolicy;
|
import org.alfresco.repo.version.VersionServicePolicies.BeforeCreateVersionPolicy;
|
||||||
import org.alfresco.repo.version.VersionServicePolicies.CalculateVersionLabelPolicy;
|
import org.alfresco.repo.version.VersionServicePolicies.CalculateVersionLabelPolicy;
|
||||||
import org.alfresco.repo.version.VersionServicePolicies.OnCreateVersionPolicy;
|
import org.alfresco.repo.version.VersionServicePolicies.OnCreateVersionPolicy;
|
||||||
|
import org.alfresco.repo.version.common.versionlabel.SerialVersionLabelPolicy;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
@@ -236,8 +237,9 @@ public abstract class AbstractVersionServiceImpl
|
|||||||
Collection<CalculateVersionLabelPolicy> behaviours = this.calculateVersionLabelDelegate.getList(classRef);
|
Collection<CalculateVersionLabelPolicy> behaviours = this.calculateVersionLabelDelegate.getList(classRef);
|
||||||
if (behaviours.size() == 0)
|
if (behaviours.size() == 0)
|
||||||
{
|
{
|
||||||
// Default the version label to the version numbder
|
// Default the version label to the SerialVersionLabelPolicy
|
||||||
versionLabel = Integer.toString(versionNumber);
|
SerialVersionLabelPolicy defaultVersionLabelPolicy = new SerialVersionLabelPolicy();
|
||||||
|
versionLabel = defaultVersionLabelPolicy.calculateVersionLabel(classRef, preceedingVersion, versionNumber, versionProperties);
|
||||||
}
|
}
|
||||||
else if (behaviours.size() == 1)
|
else if (behaviours.size() == 1)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user