本文整理了Java中javax.jcr.Node.doneMerge()
方法的一些代码示例,展示了Node.doneMerge()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Node.doneMerge()
方法的具体详情如下:
包路径:javax.jcr.Node
类名称:Node
方法名:doneMerge
[英]Support for this method is only required under full versioning.
Completes the merge process with respect to this node and the specified version
.
When the #merge method is called on a node, every versionable node in that subgraph is compared with its corresponding node in the indicated other workspace and a "merge test result" is determined indicating one of the following:
In the last case the merging of the subgraph of the versionable node in question must be done by the application (for example, by providing a merge tool for the user).
Additionally, once the subgraphs of the nodes has been merged, their version graph branches must also be merged. The JCR versioning system provides for this by keeping a record, for each versionable node that fails the merge test, of the base version of the corresponding node that caused the merge failure. This record is kept in the jcr:mergeFailed
property of this node. After a merge
, this property will contain one or more (if multiple merges have been performed) REFERENCE
s that point to the "failed versions".
To complete the merge process, the client calls doneMerge(Version v)
passing the version object referred to be the jcr:mergeFailed
property that the client wishes to connect to this
node in the version graph. This has the effect of moving the reference to the indicated version from the jcr:mergeFailed
property of this
node to the jcr:predecessors
.
If the client chooses not to connect this node to a particular version referenced in the jcr:mergeFailed
property, he calls #cancelMerge(Version version). This has the effect of removing the reference to the specified version
from jcr:mergeFailed
without adding it to jcr:predecessors
.
Once the last reference in jcr:mergeFailed
has been either moved to jcr:predecessors
(with doneMerge
) or just removed from jcr:mergeFailed
(with cancelMerge
) the jcr:mergeFailed
property is automatically removed, thus enabling this
node to be checked-in, creating a new version (note that before the jcr:mergeFailed
is removed, its OnParentVersion
setting of ABORT
prevents checkin). This new version will have a predecessor connection to each version for which doneMerge
was called, thus joining those branches of the version graph.
If successful, these changes are persisted immediately, there is no need to call save
.
[中]只有在完全版本控制下才需要支持此方法。
完成有关此节点和指定version
的合并过程。
在节点上调用#merge方法时,该子图中的每个可版本化节点都将与其在指定的其他工作区中的对应节点进行比较,并确定“merge test result”(合并测试结果),指示以下情况之一:
1.此节点将被更新为其对应方的状态(如果对应方的基本版本在版本历史中是最新的)。
1.此节点将不受影响(如果此节点的基本版本在版本历史记录方面较新)。
1.此节点将被标记为未通过合并测试(如果此节点的基本版本位于版本历史记录的另一个分支上,与另一个工作区中其对应节点的基本版本不同,从而阻止自动确定哪个是最新版本)。
(有关更多详细信息,请参见#合并)
在最后一种情况下,所讨论的可版本化节点的子图的合并必须由应用程序完成(例如,通过为用户提供合并工具)。
此外,一旦合并了节点的子图,它们的版本图分支也必须合并。JCR版本控制系统通过为每个未能通过合并测试的可版本化节点记录导致合并失败的相应节点的基本版本来实现这一点。此记录保存在此节点的jcr:mergeFailed
属性中。在merge
之后,此属性将包含一个或多个(如果已执行多个合并)REFERENCE
指向“失败版本”。
要完成合并过程,客户端调用doneMerge(Version v)
,传递版本对象,该版本对象是客户端希望连接到版本图中this
节点的jcr:mergeFailed
属性。这会将对指定版本的引用从this
节点的jcr:mergeFailed
属性移动到jcr:predecessors
。
如果客户端选择不将此节点连接到jcr:mergeFailed
属性中引用的特定版本,则会调用#cancelMerge(version version)。这样做的效果是从jcr:mergeFailed
中删除对指定version
的引用,而不将其添加到jcr:predecessors
。jcr:mergeFailed
中的最后一个引用被移动到jcr:predecessors
(使用doneMerge
)或刚从jcr:mergeFailed
(使用cancelMerge
)中删除后,jcr:mergeFailed
属性将自动删除,从而允许签入this
节点,创建一个新版本(请注意,在删除jcr:mergeFailed
之前,OnParentVersion
设置为ABORT
会阻止签入)。此新版本将有一个到调用doneMerge
的每个版本的前置连接,从而连接到版本图的这些分支。
如果成功,这些更改将立即持久化,无需调用save
。
代码示例来源:origin: net.adamcin.commons/net.adamcin.commons.jcr
public void doneMerge(Version version) throws RepositoryException {
this.item.doneMerge(version);
}
代码示例来源:origin: org.onehippo.cms7/hippo-repository-connector
/**
* @inheritDoc
*/
public void doneMerge(Version version) throws VersionException, InvalidItemStateException,
UnsupportedRepositoryOperationException, RepositoryException {
node.doneMerge(VersionDecorator.unwrap(version));
}
代码示例来源:origin: nl.vpro/jcr-criteria
@Override
@Deprecated
public void doneMerge(Version version) throws RepositoryException {
getNode().doneMerge(version);
}
代码示例来源:origin: apache/jackrabbit
/** {@inheritDoc} */
public void doneMerge(String versionUUID)
throws RepositoryException, RemoteException {
try {
node.doneMerge(getVersionByUUID(versionUUID));
} catch (RepositoryException ex) {
throw getRepositoryException(ex);
}
}
代码示例来源:origin: brix-cms/brix-cms
public void execute() throws Exception {
getDelegate().doneMerge(unwrap(version));
}
});
代码示例来源:origin: org.apache.jackrabbit/jackrabbit-jcr2spi
/**
* @see javax.jcr.version.VersionManager#doneMerge(String, Version)
*/
public void doneMerge(String absPath, Version version) throws VersionException, InvalidItemStateException, UnsupportedRepositoryOperationException, RepositoryException {
session.checkIsAlive();
Node n = itemManager.getNode(resolver.getQPath(absPath));
n.doneMerge(version);
}
代码示例来源:origin: apache/jackrabbit
/**
* @see javax.jcr.version.VersionManager#doneMerge(String, Version)
*/
public void doneMerge(String absPath, Version version) throws VersionException, InvalidItemStateException, UnsupportedRepositoryOperationException, RepositoryException {
session.checkIsAlive();
Node n = itemManager.getNode(resolver.getQPath(absPath));
n.doneMerge(version);
}
代码示例来源:origin: apache/jackrabbit
public Object run() throws RepositoryException {
Node node = getNode(nodeId, sInfo);
Version version = null;
boolean cancel;
NamePathResolver resolver = sInfo.getNamePathResolver();
List<NodeId> l = Arrays.asList(mergeFailedIds);
Property mergeFailed = node.getProperty(resolver.getJCRName(NameConstants.JCR_MERGEFAILED));
for (Value value : mergeFailed.getValues()) {
String uuid = value.getString();
if (!l.contains(idFactory.createNodeId(uuid))) {
version = (Version) sInfo.getSession().getNodeByIdentifier(uuid);
break;
}
}
l = new ArrayList<NodeId>(predecessorIds.length);
l.addAll(Arrays.asList(predecessorIds));
Property predecessors = node.getProperty(resolver.getJCRName(NameConstants.JCR_PREDECESSORS));
for (Value value : predecessors.getValues()) {
NodeId vId = idFactory.createNodeId(value.getString());
l.remove(vId);
}
cancel = l.isEmpty();
if (cancel) {
node.cancelMerge(version);
} else {
node.doneMerge(version);
}
return null;
}
}, sInfo);
代码示例来源:origin: org.apache.jackrabbit/jackrabbit-spi2jcr
public Object run() throws RepositoryException {
Node node = getNode(nodeId, sInfo);
Version version = null;
boolean cancel;
NamePathResolver resolver = sInfo.getNamePathResolver();
List<NodeId> l = Arrays.asList(mergeFailedIds);
Property mergeFailed = node.getProperty(resolver.getJCRName(NameConstants.JCR_MERGEFAILED));
for (Value value : mergeFailed.getValues()) {
String uuid = value.getString();
if (!l.contains(idFactory.createNodeId(uuid))) {
version = (Version) sInfo.getSession().getNodeByIdentifier(uuid);
break;
}
}
l = new ArrayList<NodeId>(predecessorIds.length);
l.addAll(Arrays.asList(predecessorIds));
Property predecessors = node.getProperty(resolver.getJCRName(NameConstants.JCR_PREDECESSORS));
for (Value value : predecessors.getValues()) {
NodeId vId = idFactory.createNodeId(value.getString());
l.remove(vId);
}
cancel = l.isEmpty();
if (cancel) {
node.cancelMerge(version);
} else {
node.doneMerge(version);
}
return null;
}
}, sInfo);
代码示例来源:origin: brix-cms/brix-cms
/**
* @deprecated
*/
@Deprecated
public void doneMerge(Version version) throws RepositoryException {
getActionHandler().beforeNodeDoneMerge(this, version);
getDelegate().doneMerge(unwrap(version));
getActionHandler().afterNodeDoneMerge(this, version);
}
代码示例来源:origin: apache/jackrabbit
nodeToMerge.doneMerge((Version) superuser.getNodeByUUID(uuid));
代码示例来源:origin: apache/jackrabbit
n1.checkout();
n1.merge(n2.getSession().getWorkspace().getName(), true);
n1.doneMerge(v122);
Version v17 = n1.checkin();
内容来源于网络,如有侵权,请联系作者删除!