You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/05/27 12:48:30 UTC
svn commit: r779101 - in /jackrabbit/trunk:
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ ...
Author: angela
Date: Wed May 27 10:48:29 2009
New Revision: 779101
URL: http://svn.apache.org/viewvc?rev=779101&view=rev
Log:
JCR-2104: JSR 283 Versioning (intermediate commit, work in progress)
Added:
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateActivity.java
- copied, changed from r778693, jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateConfiguration.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveActivity.java
- copied, changed from r779022, jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/TransientOperationVisitor.java
Modified:
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/OperationVisitor.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java
jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java Wed May 27 10:48:29 2009
@@ -20,7 +20,9 @@
import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.jcr2spi.state.NodeState;
import org.apache.jackrabbit.jcr2spi.version.VersionManager;
+import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
import org.apache.jackrabbit.spi.commons.conversion.PathResolver;
+import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
import javax.jcr.version.Version;
import javax.jcr.version.VersionException;
@@ -37,6 +39,7 @@
import javax.jcr.Node;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.lock.LockException;
+import java.util.Iterator;
/**
* <code>VersionManagerImpl</code>...
@@ -166,9 +169,19 @@
* @see javax.jcr.version.VersionManager#merge(String, String, boolean, boolean)
*/
public NodeIterator merge(String absPath, String srcWorkspace, boolean bestEffort, boolean isShallow) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException {
- // TODO: improve
NodeImpl n = (NodeImpl) itemManager.getNode(resolver.getQPath(absPath));
- return n.merge(srcWorkspace, bestEffort, isShallow);
+ n.checkIsWritable();
+ session.checkHasPendingChanges();
+
+ // if same workspace, ignore
+ if (session.getWorkspace().getName().equals(srcWorkspace)) {
+ return NodeIteratorAdapter.EMPTY;
+ }
+ // make sure the workspace exists and is accessible for this session.
+ session.checkAccessibleWorkspace(srcWorkspace);
+
+ Iterator failedIds = session.getVersionStateManager().merge((NodeState) n.getItemState(), srcWorkspace, bestEffort, isShallow);
+ return new LazyItemIterator(itemManager, session.getHierarchyManager(), failedIds);
}
/**
@@ -191,8 +204,10 @@
* @see javax.jcr.version.VersionManager#createConfiguration(String, Version)
*/
public Node createConfiguration(String absPath, Version baseline) throws UnsupportedRepositoryOperationException, RepositoryException {
- // TODO
- throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
+ // TODO: add validation
+ NodeImpl n = (NodeImpl) itemManager.getNode(resolver.getQPath(absPath));
+ NodeEntry entry = vMgr.createConfiguration((NodeState) n.getItemState(), (NodeState) ((NodeImpl) baseline).getItemState());
+ return (Node) itemManager.getItem(entry);
}
/**
@@ -215,15 +230,17 @@
* @see javax.jcr.version.VersionManager#createActivity(String)
*/
public Node createActivity(String title) throws UnsupportedRepositoryOperationException, RepositoryException {
- // TODO
- throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
+ // TODO: add validation
+ NodeEntry entry = vMgr.createActivity(title);
+ return (Node) itemManager.getItem(entry);
}
/**
* @see javax.jcr.version.VersionManager#removeActivity(String)
*/
public Node removeActivity(String title) throws UnsupportedRepositoryOperationException, RepositoryException {
- // TODO
+ // TODO uncomment as soon as jsr 283 is fixed
+ // vMgr.removeActivity((NodeState) ((NodeImpl) activityNode).getItemState());
throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
}
@@ -231,7 +248,8 @@
* @see javax.jcr.version.VersionManager#merge(Node)
*/
public NodeIterator merge(Node activityNode) throws VersionException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException {
- // TODO
- throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
+ // TODO: add validation
+ Iterator failedIds = vMgr.mergeActivity((NodeState) ((NodeImpl) activityNode).getItemState());
+ return new LazyItemIterator(itemManager, session.getHierarchyManager(), failedIds);
}
}
\ No newline at end of file
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java Wed May 27 10:48:29 2009
@@ -983,7 +983,7 @@
* @see Node#merge(String, boolean)
*/
public NodeIterator merge(String srcWorkspace, boolean bestEffort) throws NoSuchWorkspaceException, AccessDeniedException, VersionException, LockException, InvalidItemStateException, RepositoryException {
- return merge(srcWorkspace, bestEffort, false);
+ return session.getWorkspace().getVersionManager().merge(getPath(), srcWorkspace, bestEffort);
}
@@ -992,18 +992,7 @@
* -> change to package protected then
*/
public NodeIterator merge(String srcWorkspace, boolean bestEffort, boolean isShallow) throws RepositoryException {
- checkIsWritable();
- checkSessionHasPendingChanges();
-
- // if same workspace, ignore
- if (session.getWorkspace().getName().equals(srcWorkspace)) {
- return NodeIteratorAdapter.EMPTY;
- }
- // make sure the workspace exists and is accessible for this session.
- session.checkAccessibleWorkspace(srcWorkspace);
-
- Iterator failedIds = session.getVersionStateManager().merge(getNodeState(), srcWorkspace, bestEffort, isShallow);
- return new LazyItemIterator(getItemManager(), session.getHierarchyManager(), failedIds);
+ return session.getWorkspace().getVersionManager().merge(getPath(), srcWorkspace, bestEffort, isShallow);
}
/**
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Wed May 27 10:48:29 2009
@@ -57,6 +57,9 @@
import org.apache.jackrabbit.jcr2spi.operation.RemoveVersion;
import org.apache.jackrabbit.jcr2spi.operation.WorkspaceImport;
import org.apache.jackrabbit.jcr2spi.operation.Checkpoint;
+import org.apache.jackrabbit.jcr2spi.operation.CreateActivity;
+import org.apache.jackrabbit.jcr2spi.operation.CreateConfiguration;
+import org.apache.jackrabbit.jcr2spi.operation.RemoveActivity;
import org.apache.jackrabbit.jcr2spi.security.AccessManager;
import org.apache.jackrabbit.jcr2spi.observation.InternalEventListener;
import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
@@ -961,7 +964,12 @@
*/
public void visit(Merge operation) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException {
NodeId nId = operation.getNodeId();
- Iterator failed = service.merge(sessionInfo, nId, operation.getSourceWorkspaceName(), operation.bestEffort(), operation.isShallow());
+ Iterator failed;
+ if (operation.isActivityMerge()) {
+ failed = service.mergeActivity(sessionInfo, nId);
+ } else {
+ failed = service.merge(sessionInfo, nId, operation.getSourceWorkspaceName(), operation.bestEffort(), operation.isShallow());
+ }
operation.setFailedIds(failed);
}
@@ -1038,6 +1046,29 @@
public void visit(WorkspaceImport operation) throws RepositoryException {
service.importXml(sessionInfo, operation.getNodeId(), operation.getXmlStream(), operation.getUuidBehaviour());
}
+
+ /**
+ * @see OperationVisitor#visit(CreateActivity)
+ */
+ public void visit(CreateActivity operation) throws RepositoryException {
+ NodeId activityId = service.createActivity(sessionInfo, operation.getTitle());
+ operation.setNewActivityId(activityId);
+ }
+
+ /**
+ * @see OperationVisitor#visit(RemoveActivity)
+ */
+ public void visit(RemoveActivity operation) throws RepositoryException {
+ service.removeActivity(sessionInfo, (NodeId) operation.getRemoveId());
+ }
+
+ /**
+ * @see OperationVisitor#visit(CreateConfiguration)
+ */
+ public void visit(CreateConfiguration operation) throws RepositoryException {
+ NodeId configId = service.createConfiguration(sessionInfo, operation.getNodeId(), operation.getBaselineId());
+ operation.setNewConfigurationId(configId);
+ }
}
//------------------------------------------------------< ChangePolling >---
Copied: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateActivity.java (from r778693, jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateActivity.java?p2=jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateActivity.java&p1=jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java&r1=778693&r2=779101&rev=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateActivity.java Wed May 27 10:48:29 2009
@@ -16,9 +16,6 @@
*/
package org.apache.jackrabbit.jcr2spi.operation;
-import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
-import org.apache.jackrabbit.jcr2spi.hierarchy.PropertyEntry;
-import org.apache.jackrabbit.jcr2spi.state.NodeState;
import org.apache.jackrabbit.jcr2spi.version.VersionManager;
import org.apache.jackrabbit.spi.NodeId;
import org.slf4j.Logger;
@@ -31,22 +28,21 @@
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.version.VersionException;
-import java.util.Iterator;
/**
* <code>Checkout</code>...
*/
-public class Checkpoint extends AbstractOperation {
+public class CreateActivity extends AbstractOperation {
- private static Logger log = LoggerFactory.getLogger(Checkpoint.class);
+ private static Logger log = LoggerFactory.getLogger(CreateActivity.class);
- private final NodeState nodeState;
+ private final String title;
private final VersionManager mgr;
-
- private NodeId newVersionId;
- private Checkpoint(NodeState nodeState, VersionManager mgr) {
- this.nodeState = nodeState;
+ private NodeId newActivityId;
+
+ private CreateActivity(String title, VersionManager mgr) {
+ this.title = title;
this.mgr = mgr;
// NOTE: affected-states only needed for transient modifications
}
@@ -60,27 +56,13 @@
/**
* Invalidate the target <code>NodeState</code>.
*
- * @see org.apache.jackrabbit.jcr2spi.operation.Operation#persisted()
+ * @see Operation#persisted()
*/
public void persisted() {
assert status == STATUS_PENDING;
status = STATUS_PERSISTED;
- try {
- NodeEntry vhe = mgr.getVersionHistoryEntry(nodeState);
- if (vhe != null) {
- vhe.invalidate(true);
- }
- } catch (RepositoryException e) {
- log.warn("Failed to access Version history entry -> skip invalidation.", e);
- }
- // non-recursive invalidation (but including all properties)
- NodeEntry nodeEntry = (NodeEntry) nodeState.getHierarchyEntry();
- Iterator entries = nodeEntry.getPropertyEntries();
- while (entries.hasNext()) {
- PropertyEntry pe = (PropertyEntry) entries.next();
- pe.invalidate(false);
- }
- nodeEntry.invalidate(false);
+
+ // TODO: check if invaliation of the activity store is required.
}
//----------------------------------------< Access Operation Parameters >---
@@ -88,20 +70,20 @@
*
* @return
*/
- public NodeId getNodeId() throws RepositoryException {
- return nodeState.getNodeEntry().getWorkspaceId();
+ public String getTitle() throws RepositoryException {
+ return title;
}
- public void setNewVersionId(NodeId newVersionId) {
- this.newVersionId = newVersionId;
+ public void setNewActivityId(NodeId newActivityId) {
+ this.newActivityId = newActivityId;
}
- public NodeId getNewVersionId() {
- return this.newVersionId;
+ public NodeId getNewActivityId() {
+ return this.newActivityId;
}
//------------------------------------------------------------< Factory >---
- public static Checkpoint create(NodeState nodeState, VersionManager mgr) {
- return new Checkpoint(nodeState, mgr);
+ public static CreateActivity create(String title, VersionManager mgr) {
+ return new CreateActivity(title, mgr);
}
}
\ No newline at end of file
Added: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateConfiguration.java?rev=779101&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateConfiguration.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/CreateConfiguration.java Wed May 27 10:48:29 2009
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.jcr2spi.operation;
+
+import org.apache.jackrabbit.jcr2spi.version.VersionManager;
+import org.apache.jackrabbit.jcr2spi.state.NodeState;
+import org.apache.jackrabbit.spi.NodeId;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.ItemExistsException;
+import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.version.VersionException;
+
+/**
+ * <code>Checkout</code>...
+ */
+public class CreateConfiguration extends AbstractOperation {
+
+ private static Logger log = LoggerFactory.getLogger(CreateConfiguration.class);
+
+ private final NodeState nodeState;
+ private final NodeState baselineState;
+ private final VersionManager mgr;
+
+ private NodeId newConfigurationId;
+
+ private CreateConfiguration(NodeState nodeState, NodeState baselineState, VersionManager mgr) {
+ this.nodeState = nodeState;
+ this.baselineState = baselineState;
+ this.mgr = mgr;
+ // NOTE: affected-states only needed for transient modifications
+ }
+
+ //----------------------------------------------------------< Operation >---
+ public void accept(OperationVisitor visitor) throws RepositoryException, ConstraintViolationException, AccessDeniedException, ItemExistsException, NoSuchNodeTypeException, UnsupportedRepositoryOperationException, VersionException {
+ assert status == STATUS_PENDING;
+ visitor.visit(this);
+ }
+
+ /**
+ * Invalidate the target <code>NodeState</code>.
+ *
+ * @see org.apache.jackrabbit.jcr2spi.operation.Operation#persisted()
+ */
+ public void persisted() {
+ assert status == STATUS_PENDING;
+ status = STATUS_PERSISTED;
+
+ // TODO: check if the configuration store needs to be invalidated.
+
+ nodeState.getHierarchyEntry().invalidate(false);
+ }
+
+ //----------------------------------------< Access Operation Parameters >---
+ /**
+ *
+ * @return
+ * @throws RepositoryException
+ */
+ public NodeId getNodeId() throws RepositoryException {
+ return nodeState.getNodeEntry().getWorkspaceId();
+ }
+
+ public NodeId getBaselineId() throws RepositoryException {
+ return baselineState.getNodeEntry().getWorkspaceId();
+ }
+
+ public void setNewConfigurationId(NodeId newConfigurationId) {
+ this.newConfigurationId = newConfigurationId;
+ }
+
+ public NodeId getNewConfigurationId() {
+ return newConfigurationId;
+ }
+
+ //------------------------------------------------------------< Factory >---
+ public static CreateConfiguration create(NodeState nodeState, NodeState baselineState, VersionManager mgr) {
+ return new CreateConfiguration(nodeState, baselineState, mgr);
+ }
+}
\ No newline at end of file
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java Wed May 27 10:48:29 2009
@@ -74,15 +74,19 @@
public void persisted() {
assert status == STATUS_PENDING;
status = STATUS_PERSISTED;
- try {
- NodeEntry vhe = mgr.getVersionHistoryEntry(nodeState);
- if (vhe != null) {
- vhe.invalidate(true);
+ if (isActivityMerge()) {
+ // TODO invalidate
+ } else {
+ try {
+ NodeEntry vhe = mgr.getVersionHistoryEntry(nodeState);
+ if (vhe != null) {
+ vhe.invalidate(true);
+ }
+ } catch (RepositoryException e) {
+ log.warn("Error while retrieving VersionHistory entry:", e.getMessage());
}
- } catch (RepositoryException e) {
- log.warn("Error while retrieving VersionHistory entry:", e.getMessage());
+ nodeState.getHierarchyEntry().invalidate(true);
}
- nodeState.getHierarchyEntry().invalidate(true);
}
//----------------------------------------< Access Operation Parameters >---
@@ -102,6 +106,10 @@
return isShallow;
}
+ public boolean isActivityMerge() {
+ return srcWorkspaceName == null;
+ }
+
public void setFailedIds(Iterator failedIds) {
if (failedIds == null) {
throw new IllegalArgumentException("IdIterator must not be null.");
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/OperationVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/OperationVisitor.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/OperationVisitor.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/OperationVisitor.java Wed May 27 10:48:29 2009
@@ -79,4 +79,10 @@
public void visit(RemoveVersion operation) throws VersionException, AccessDeniedException, ReferentialIntegrityException, RepositoryException;
public void visit(WorkspaceImport operation) throws RepositoryException;
+
+ public void visit(CreateActivity operation) throws RepositoryException;
+
+ public void visit(RemoveActivity operation) throws RepositoryException;
+
+ public void visit(CreateConfiguration operation) throws RepositoryException;
}
\ No newline at end of file
Copied: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveActivity.java (from r779022, jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveActivity.java?p2=jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveActivity.java&p1=jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java&r1=779022&r2=779101&rev=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveActivity.java Wed May 27 10:48:29 2009
@@ -16,12 +16,11 @@
*/
package org.apache.jackrabbit.jcr2spi.operation;
-import org.apache.jackrabbit.jcr2spi.state.ItemState;
import org.apache.jackrabbit.jcr2spi.state.NodeState;
-import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
-import org.apache.jackrabbit.jcr2spi.hierarchy.PropertyEntry;
-import org.apache.jackrabbit.jcr2spi.version.VersionManager;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry;
import org.apache.jackrabbit.spi.ItemId;
+import org.apache.jackrabbit.spi.PropertyId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,30 +28,27 @@
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.RepositoryException;
import javax.jcr.version.VersionException;
-import java.util.Iterator;
/**
* <code>RemoveVersion</code>...
*/
-public class RemoveVersion extends Remove {
+public class RemoveActivity extends Remove {
- private static Logger log = LoggerFactory.getLogger(RemoveVersion.class);
+ private static Logger log = LoggerFactory.getLogger(RemoveActivity.class);
- private NodeEntry versionableEntry = null;
+ private final PropertyId[] refs;
+ private final HierarchyManager hMgr;
- protected RemoveVersion(ItemState removeState, NodeState parent, VersionManager mgr)
+ private RemoveActivity(NodeState removeActivity, HierarchyManager hierarchyMgr)
throws RepositoryException {
- super(removeState, parent);
- try {
- versionableEntry = mgr.getVersionableNodeEntry((NodeState) removeState);
- } catch (RepositoryException e) {
- log.warn("Failed to retrieve the hierarchy entry of the versionable node.", e);
- }
+ super(removeActivity, removeActivity.getParent());
+ refs = removeActivity.getNodeReferences();
+ hMgr = hierarchyMgr;
}
//----------------------------------------------------------< Operation >---
/**
- * @see Operation#accept(OperationVisitor)
+ * @see org.apache.jackrabbit.jcr2spi.operation.Operation#accept(org.apache.jackrabbit.jcr2spi.operation.OperationVisitor)
*/
public void accept(OperationVisitor visitor) throws AccessDeniedException, UnsupportedRepositoryOperationException, VersionException, RepositoryException {
assert status == STATUS_PENDING;
@@ -63,24 +59,22 @@
* Invalidates the <code>NodeState</code> that has been updated and all
* its decendants. Second, the parent state gets invalidated.
*
- * @see Operation#persisted()
+ * @see org.apache.jackrabbit.jcr2spi.operation.Operation#persisted()
*/
public void persisted() {
assert status == STATUS_PENDING;
status = STATUS_PERSISTED;
- // invaliate the versionable node as well (version related properties)
- if (versionableEntry != null) {
- Iterator propEntries = versionableEntry.getPropertyEntries();
- while (propEntries.hasNext()) {
- PropertyEntry pe = (PropertyEntry) propEntries.next();
- pe.invalidate(false);
+
+ // invalidate all references to the removed activity
+ for (int i = 0; i < refs.length; i++) {
+ HierarchyEntry entry = hMgr.lookup(refs[i]);
+ if (entry != null) {
+ entry.invalidate(false);
}
- versionableEntry.invalidate(false);
}
- // invalidate the versionhistory entry and all its children
- // in order to the the v-graph recalculated
- removeState.getHierarchyEntry().getParent().invalidate(true);
+ // invalidate the activities parent
+ parent.getNodeEntry().invalidate(false);
}
//----------------------------------------< Access Operation Parameters >---
@@ -89,9 +83,9 @@
}
//------------------------------------------------------------< Factory >---
- public static Operation create(NodeState versionState, NodeState vhState, VersionManager mgr)
+ public static Operation create(NodeState activityState, HierarchyManager hierarchyMgr)
throws RepositoryException {
- RemoveVersion rm = new RemoveVersion(versionState, vhState, mgr);
+ RemoveActivity rm = new RemoveActivity(activityState, hierarchyMgr);
return rm;
}
-}
+}
\ No newline at end of file
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java Wed May 27 10:48:29 2009
@@ -40,7 +40,7 @@
private NodeEntry versionableEntry = null;
- protected RemoveVersion(ItemState removeState, NodeState parent, VersionManager mgr)
+ private RemoveVersion(ItemState removeState, NodeState parent, VersionManager mgr)
throws RepositoryException {
super(removeState, parent);
try {
@@ -79,8 +79,8 @@
}
// invalidate the versionhistory entry and all its children
- // in order to the the v-graph recalculated
- removeState.getHierarchyEntry().getParent().invalidate(true);
+ // in order to have the v-graph recalculated
+ parent.getNodeEntry().invalidate(true);
}
//----------------------------------------< Access Operation Parameters >---
Added: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/TransientOperationVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/TransientOperationVisitor.java?rev=779101&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/TransientOperationVisitor.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/TransientOperationVisitor.java Wed May 27 10:48:29 2009
@@ -0,0 +1,188 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.jcr2spi.operation;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.ItemExistsException;
+import javax.jcr.MergeException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.ReferentialIntegrityException;
+import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.version.VersionException;
+
+/**
+ * <code>TransientOperationVisitor</code>...
+ */
+public abstract class TransientOperationVisitor implements OperationVisitor {
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Clone)
+ */
+ public void visit(Clone operation) throws NoSuchWorkspaceException, LockException, ConstraintViolationException, AccessDeniedException, ItemExistsException, UnsupportedRepositoryOperationException, VersionException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Clone isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Copy)
+ */
+ public void visit(Copy operation) throws NoSuchWorkspaceException, LockException, ConstraintViolationException, AccessDeniedException, ItemExistsException, UnsupportedRepositoryOperationException, VersionException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Copy isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Checkout)
+ */
+ public void visit(Checkout operation) throws RepositoryException, UnsupportedRepositoryOperationException {
+ throw new UnsupportedOperationException("Internal error: Checkout isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Checkin)
+ */
+ public void visit(Checkin operation) throws UnsupportedRepositoryOperationException, LockException, InvalidItemStateException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Checkin isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Checkpoint)
+ */
+ public void visit(Checkpoint operation) throws UnsupportedRepositoryOperationException, LockException, InvalidItemStateException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Checkin isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Update)
+ */
+ public void visit(Update operation) throws NoSuchWorkspaceException, AccessDeniedException, LockException, InvalidItemStateException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Update isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Restore)
+ */
+ public void visit(Restore operation) throws VersionException, PathNotFoundException, ItemExistsException, UnsupportedRepositoryOperationException, LockException, InvalidItemStateException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Restore isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(Merge)
+ */
+ public void visit(Merge operation) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Merge isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(ResolveMergeConflict)
+ */
+ public void visit(ResolveMergeConflict operation) throws VersionException, InvalidItemStateException, UnsupportedRepositoryOperationException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: ResolveMergeConflict isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(LockOperation)
+ */
+ public void visit(LockOperation operation) throws AccessDeniedException, InvalidItemStateException, UnsupportedRepositoryOperationException, LockException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: Lock isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(LockRefresh)
+ */
+ public void visit(LockRefresh operation) throws AccessDeniedException, InvalidItemStateException, UnsupportedRepositoryOperationException, LockException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: LockRefresh isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(LockRelease)
+ */
+ public void visit(LockRelease operation) throws AccessDeniedException, InvalidItemStateException, UnsupportedRepositoryOperationException, LockException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: LockRelease isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(AddLabel)
+ */
+ public void visit(AddLabel operation) throws VersionException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: AddLabel isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(RemoveLabel)
+ */
+ public void visit(RemoveLabel operation) throws VersionException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: RemoveLabel isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(RemoveVersion)
+ */
+ public void visit(RemoveVersion operation) throws VersionException, AccessDeniedException, ReferentialIntegrityException, RepositoryException {
+ throw new UnsupportedOperationException("Internal error: RemoveVersion isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(WorkspaceImport)
+ */
+ public void visit(WorkspaceImport operation) throws RepositoryException {
+ throw new UnsupportedOperationException("Internal error: WorkspaceImport isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(CreateActivity)
+ */
+ public void visit(CreateActivity operation) throws RepositoryException {
+ throw new UnsupportedOperationException("Internal error: CreateActivity isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(RemoveActivity)
+ */
+ public void visit(RemoveActivity operation) throws RepositoryException {
+ throw new UnsupportedOperationException("Internal error: RemoveActivity isn't a transient operation.");
+ }
+
+ /**
+ * @throws UnsupportedOperationException
+ * @see OperationVisitor#visit(CreateConfiguration)
+ */
+ public void visit(CreateConfiguration operation) throws RepositoryException {
+ throw new UnsupportedOperationException("Internal error: CreateConfiguration isn't a transient operation.");
+ }
+}
\ No newline at end of file
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java Wed May 27 10:48:29 2009
@@ -16,72 +16,53 @@
*/
package org.apache.jackrabbit.jcr2spi.state;
-import org.apache.jackrabbit.jcr2spi.util.ReferenceChangeTracker;
+import org.apache.jackrabbit.jcr2spi.ManagerProvider;
+import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
+import org.apache.jackrabbit.jcr2spi.hierarchy.PropertyEntry;
import org.apache.jackrabbit.jcr2spi.nodetype.EffectiveNodeType;
import org.apache.jackrabbit.jcr2spi.nodetype.ItemDefinitionProvider;
-import org.apache.jackrabbit.jcr2spi.operation.Operation;
-import org.apache.jackrabbit.jcr2spi.operation.OperationVisitor;
import org.apache.jackrabbit.jcr2spi.operation.AddNode;
import org.apache.jackrabbit.jcr2spi.operation.AddProperty;
-import org.apache.jackrabbit.jcr2spi.operation.Clone;
-import org.apache.jackrabbit.jcr2spi.operation.Copy;
import org.apache.jackrabbit.jcr2spi.operation.Move;
+import org.apache.jackrabbit.jcr2spi.operation.Operation;
+import org.apache.jackrabbit.jcr2spi.operation.OperationVisitor;
import org.apache.jackrabbit.jcr2spi.operation.Remove;
+import org.apache.jackrabbit.jcr2spi.operation.ReorderNodes;
import org.apache.jackrabbit.jcr2spi.operation.SetMixin;
import org.apache.jackrabbit.jcr2spi.operation.SetPropertyValue;
-import org.apache.jackrabbit.jcr2spi.operation.ReorderNodes;
-import org.apache.jackrabbit.jcr2spi.operation.Checkout;
-import org.apache.jackrabbit.jcr2spi.operation.Checkin;
-import org.apache.jackrabbit.jcr2spi.operation.Update;
-import org.apache.jackrabbit.jcr2spi.operation.Restore;
-import org.apache.jackrabbit.jcr2spi.operation.ResolveMergeConflict;
-import org.apache.jackrabbit.jcr2spi.operation.Merge;
-import org.apache.jackrabbit.jcr2spi.operation.LockOperation;
-import org.apache.jackrabbit.jcr2spi.operation.LockRefresh;
-import org.apache.jackrabbit.jcr2spi.operation.LockRelease;
-import org.apache.jackrabbit.jcr2spi.operation.AddLabel;
-import org.apache.jackrabbit.jcr2spi.operation.RemoveLabel;
-import org.apache.jackrabbit.jcr2spi.operation.RemoveVersion;
-import org.apache.jackrabbit.jcr2spi.operation.WorkspaceImport;
-import org.apache.jackrabbit.jcr2spi.operation.Checkpoint;
-import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
-import org.apache.jackrabbit.jcr2spi.hierarchy.PropertyEntry;
-import org.apache.jackrabbit.jcr2spi.ManagerProvider;
-import org.slf4j.LoggerFactory;
-import org.slf4j.Logger;
-
+import org.apache.jackrabbit.jcr2spi.operation.TransientOperationVisitor;
+import org.apache.jackrabbit.jcr2spi.util.ReferenceChangeTracker;
import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.QPropertyDefinition;
import org.apache.jackrabbit.spi.QNodeDefinition;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.QValueFactory;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import javax.jcr.AccessDeniedException;
import javax.jcr.InvalidItemStateException;
+import javax.jcr.ItemExistsException;
+import javax.jcr.PropertyType;
import javax.jcr.ReferentialIntegrityException;
import javax.jcr.RepositoryException;
-import javax.jcr.AccessDeniedException;
-import javax.jcr.ItemExistsException;
+import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.ValueFormatException;
-import javax.jcr.NoSuchWorkspaceException;
-import javax.jcr.PropertyType;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.Session;
-import javax.jcr.MergeException;
-import javax.jcr.version.VersionException;
+import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
-import javax.jcr.lock.LockException;
+import javax.jcr.version.VersionException;
+import java.io.InputStream;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.ArrayList;
-import java.io.InputStream;
/**
* <code>SessionItemStateManager</code> ...
*/
-public class SessionItemStateManager implements UpdatableItemStateManager, OperationVisitor {
+public class SessionItemStateManager extends TransientOperationVisitor implements UpdatableItemStateManager {
private static Logger log = LoggerFactory.getLogger(SessionItemStateManager.class);
@@ -407,134 +388,6 @@
transientStateMgr.addOperation(operation);
}
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Clone)
- */
- public void visit(Clone operation) throws NoSuchWorkspaceException, LockException, ConstraintViolationException, AccessDeniedException, ItemExistsException, UnsupportedRepositoryOperationException, VersionException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Clone cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Copy)
- */
- public void visit(Copy operation) throws NoSuchWorkspaceException, LockException, ConstraintViolationException, AccessDeniedException, ItemExistsException, UnsupportedRepositoryOperationException, VersionException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Copy cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Checkout)
- */
- public void visit(Checkout operation) throws RepositoryException, UnsupportedRepositoryOperationException {
- throw new UnsupportedOperationException("Internal error: Checkout cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Checkin)
- */
- public void visit(Checkin operation) throws UnsupportedRepositoryOperationException, LockException, InvalidItemStateException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Checkin cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Checkpoint)
- */
- public void visit(Checkpoint operation) throws UnsupportedRepositoryOperationException, LockException, InvalidItemStateException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Checkin cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Update)
- */
- public void visit(Update operation) throws NoSuchWorkspaceException, AccessDeniedException, LockException, InvalidItemStateException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Update cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Restore)
- */
- public void visit(Restore operation) throws VersionException, PathNotFoundException, ItemExistsException, UnsupportedRepositoryOperationException, LockException, InvalidItemStateException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Restore cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(Merge)
- */
- public void visit(Merge operation) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Merge cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(ResolveMergeConflict)
- */
- public void visit(ResolveMergeConflict operation) throws VersionException, InvalidItemStateException, UnsupportedRepositoryOperationException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Update cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(LockOperation)
- */
- public void visit(LockOperation operation) throws AccessDeniedException, InvalidItemStateException, UnsupportedRepositoryOperationException, LockException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: Lock cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(LockRefresh)
- */
- public void visit(LockRefresh operation) throws AccessDeniedException, InvalidItemStateException, UnsupportedRepositoryOperationException, LockException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: LockRefresh cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(LockRelease)
- */
- public void visit(LockRelease operation) throws AccessDeniedException, InvalidItemStateException, UnsupportedRepositoryOperationException, LockException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: LockRelease cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(AddLabel)
- */
- public void visit(AddLabel operation) throws VersionException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: AddLabel cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(RemoveLabel)
- */
- public void visit(RemoveLabel operation) throws VersionException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: RemoveLabel cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(RemoveVersion)
- */
- public void visit(RemoveVersion operation) throws VersionException, AccessDeniedException, ReferentialIntegrityException, RepositoryException {
- throw new UnsupportedOperationException("Internal error: RemoveVersion cannot be handled by session ItemStateManager.");
- }
-
- /**
- * @throws UnsupportedOperationException
- * @see OperationVisitor#visit(WorkspaceImport)
- */
- public void visit(WorkspaceImport operation) throws RepositoryException {
- throw new UnsupportedOperationException("Internal error: WorkspaceImport cannot be handled by session ItemStateManager.");
- }
-
//--------------------------------------------< Internal State Handling >---
/**
*
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java Wed May 27 10:48:29 2009
@@ -199,6 +199,42 @@
/**
*
+ * @param nodeState
+ * @param baselineState
+ * @return
+ * @throws UnsupportedRepositoryOperationException
+ * @throws RepositoryException
+ */
+ public NodeEntry createConfiguration(NodeState nodeState, NodeState baselineState) throws UnsupportedRepositoryOperationException, RepositoryException;
+
+ /**
+ *
+ * @param title
+ * @return
+ * @throws UnsupportedRepositoryOperationException
+ * @throws RepositoryException
+ */
+ public NodeEntry createActivity(String title) throws UnsupportedRepositoryOperationException, RepositoryException;
+
+ /**
+ *
+ * @param activityState
+ * @throws UnsupportedRepositoryOperationException
+ * @throws RepositoryException
+ */
+ public void removeActivity(NodeState activityState) throws UnsupportedRepositoryOperationException, RepositoryException;
+
+ /**
+ *
+ * @param activityState
+ * @return
+ * @throws UnsupportedRepositoryOperationException
+ * @throws RepositoryException
+ */
+ public Iterator mergeActivity(NodeState activityState) throws UnsupportedRepositoryOperationException, RepositoryException;
+
+ /**
+ *
* @param versionState
* @return
*/
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java Wed May 27 10:48:29 2009
@@ -29,6 +29,9 @@
import org.apache.jackrabbit.jcr2spi.operation.RemoveLabel;
import org.apache.jackrabbit.jcr2spi.operation.RemoveVersion;
import org.apache.jackrabbit.jcr2spi.operation.Checkpoint;
+import org.apache.jackrabbit.jcr2spi.operation.CreateActivity;
+import org.apache.jackrabbit.jcr2spi.operation.CreateConfiguration;
+import org.apache.jackrabbit.jcr2spi.operation.RemoveActivity;
import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
import org.slf4j.LoggerFactory;
@@ -40,6 +43,7 @@
import javax.jcr.AccessDeniedException;
import javax.jcr.MergeException;
import javax.jcr.InvalidItemStateException;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.lock.LockException;
import javax.jcr.version.VersionException;
@@ -197,6 +201,29 @@
workspaceManager.execute(op);
}
+ public NodeEntry createConfiguration(NodeState nodeState, NodeState baselineState) throws UnsupportedRepositoryOperationException, RepositoryException {
+ CreateConfiguration op = CreateConfiguration.create(nodeState, baselineState, this);
+ workspaceManager.execute(op);
+ return workspaceManager.getHierarchyManager().getNodeEntry(op.getNewConfigurationId());
+ }
+
+ public NodeEntry createActivity(String title) throws UnsupportedRepositoryOperationException, RepositoryException {
+ CreateActivity op = CreateActivity.create(title, this);
+ workspaceManager.execute(op);
+ return workspaceManager.getHierarchyManager().getNodeEntry(op.getNewActivityId());
+ }
+
+ public void removeActivity(NodeState activityState) throws UnsupportedRepositoryOperationException, RepositoryException {
+ Operation op = RemoveActivity.create(activityState, workspaceManager.getHierarchyManager());
+ workspaceManager.execute(op);
+ }
+
+ public Iterator mergeActivity(NodeState activityState) throws UnsupportedRepositoryOperationException, RepositoryException {
+ Merge op = Merge.create(activityState, null, false, false, this);
+ workspaceManager.execute(op);
+ return op.getFailedIds();
+ }
+
public NodeEntry getVersionableNodeEntry(NodeState versionState) throws RepositoryException {
NodeState ns = versionState.getChildNodeState(NameConstants.JCR_FROZENNODE, Path.INDEX_DEFAULT);
PropertyState ps = ns.getPropertyState(NameConstants.JCR_FROZENUUID);
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java Wed May 27 10:48:29 2009
@@ -649,6 +649,36 @@
throw new UnsupportedRepositoryOperationException();
}
+ /**
+ * @throws UnsupportedRepositoryOperationException always.
+ */
+ public NodeId createActivity(SessionInfo sessionInfo, String title) throws UnsupportedRepositoryOperationException, RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
+ /**
+ * @throws UnsupportedRepositoryOperationException always.
+ */
+ public void removeActivity(SessionInfo sessionInfo, NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+
+ }
+
+ /**
+ * @throws UnsupportedRepositoryOperationException always.
+ */
+ public Iterator mergeActivity(SessionInfo sessionInfo, NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+
+ }
+
+ /**
+ * @throws UnsupportedRepositoryOperationException always.
+ */
+ public NodeId createConfiguration(SessionInfo sessionInfo, NodeId nodeId, NodeId baselineId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
//-----------------------------< observation >------------------------------
/**
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java Wed May 27 10:48:29 2009
@@ -491,6 +491,40 @@
new Object[]{unwrap(sessionInfo), versionHistoryId, versionId, label});
}
+ public NodeId createActivity(final SessionInfo sessionInfo, final String title) throws UnsupportedRepositoryOperationException, RepositoryException {
+ return (NodeId) execute(new Callable() {
+ public Object call() throws RepositoryException {
+ return service.createActivity(unwrap(sessionInfo), title);
+ }
+ }, "createActivity(SessionInfo, String)", new Object[]{unwrap(sessionInfo), title});
+ }
+
+ public void removeActivity(final SessionInfo sessionInfo, final NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ execute(new Callable() {
+ public Object call() throws RepositoryException {
+ service.removeActivity(unwrap(sessionInfo), activityId);
+ return null;
+ }
+ }, "removeActivity(SessionInfo, NodeId)",
+ new Object[]{unwrap(sessionInfo), activityId});
+ }
+
+ public Iterator mergeActivity(final SessionInfo sessionInfo, final NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ return (Iterator) execute(new Callable() {
+ public Object call() throws RepositoryException {
+ return service.mergeActivity(unwrap(sessionInfo), activityId);
+ }
+ }, "mergeActivity(SessionInfo, NodeId)", new Object[]{unwrap(sessionInfo), activityId});
+ }
+
+ public NodeId createConfiguration(final SessionInfo sessionInfo, final NodeId nodeId, final NodeId baselineId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ return (NodeId) execute(new Callable() {
+ public Object call() throws RepositoryException {
+ return service.createConfiguration(unwrap(sessionInfo), nodeId, baselineId);
+ }
+ }, "createConfiguration(SessionInfo, NodeId, NodeId)", new Object[]{unwrap(sessionInfo), nodeId, baselineId});
+ }
+
public String[] getSupportedQueryLanguages(final SessionInfo sessionInfo) throws RepositoryException {
return (String[]) execute(new Callable() {
public Object call() throws RepositoryException {
Modified: jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java (original)
+++ jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java Wed May 27 10:48:29 2009
@@ -579,13 +579,13 @@
*
* @param sessionInfo
* @param nodeId
+ * @return <code>NodeId</code> of newly created version
* @throws javax.jcr.version.VersionException
* @throws javax.jcr.UnsupportedRepositoryOperationException
* @throws javax.jcr.InvalidItemStateException
* @throws javax.jcr.lock.LockException
* @throws javax.jcr.RepositoryException
* @see javax.jcr.Node#checkin()
- * @return <code>NodeId</code> of newly created version
*/
public NodeId checkin(SessionInfo sessionInfo, NodeId nodeId) throws VersionException, UnsupportedRepositoryOperationException, InvalidItemStateException, LockException, RepositoryException;
@@ -608,8 +608,8 @@
*
* @param sessionInfo
* @param nodeId
+ * @return <code>NodeId</code> of newly created version
* @throws javax.jcr.UnsupportedRepositoryOperationException
- * @throws javax.jcr.lock.LockException
* @throws javax.jcr.RepositoryException
* @see javax.jcr.version.VersionManager#checkpoint(String)
* @since JCR 2.0
@@ -781,6 +781,54 @@
*/
public void removeVersionLabel(SessionInfo sessionInfo, NodeId versionHistoryId, NodeId versionId, Name label) throws VersionException, RepositoryException;
+ /**
+ * Create a new activity.
+ *
+ * @param sessionInfo
+ * @param title
+ * @return the <code>NodeId</code> of the new activity node.
+ * @throws javax.jcr.UnsupportedRepositoryOperationException
+ * @throws javax.jcr.RepositoryException
+ * @see javax.jcr.version.VersionManager#createActivity(String)
+ * @since JCR 2.0
+ */
+ public NodeId createActivity(SessionInfo sessionInfo, String title) throws UnsupportedRepositoryOperationException, RepositoryException;
+
+ /**
+ * Removes the activity identified by the specified <code>activityId</code>.
+ *
+ * @param sessionInfo
+ * @param activityId
+ * @throws javax.jcr.UnsupportedRepositoryOperationException
+ * @throws javax.jcr.RepositoryException
+ * @see javax.jcr.version.VersionManager#removeActivity(String)
+ * @since JCR 2.0
+ */
+ public void removeActivity(SessionInfo sessionInfo, NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException;
+
+ /**
+ * Merges the activity identified by the given <code>activityId</code> into
+ * the workspace the specified <code>sessionInfo</code> has been created for.
+ *
+ * @param sessionInfo
+ * @param activityId
+ * @return an <code>Iterator</code> over the {@link NodeId}s of all nodes that
+ * received a merge result of "fail" in the course of this operation.
+ * @throws UnsupportedRepositoryOperationException
+ * @throws RepositoryException
+ */
+ public Iterator mergeActivity(SessionInfo sessionInfo, NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException;
+
+ /**
+ *
+ * @param sessionInfo
+ * @param nodeId
+ * @param baselineId @return @throws UnsupportedRepositoryOperationException
+ * @throws RepositoryException
+ * @see javax.jcr.version.VersionManager#createConfiguration(String, Version)
+ */
+ public NodeId createConfiguration(SessionInfo sessionInfo, NodeId nodeId, NodeId baselineId) throws UnsupportedRepositoryOperationException, RepositoryException;
+
//----------------------------------------------------------< Searching >---
/**
* Returns a String array identifying all query languages supported by this
Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Wed May 27 10:48:29 2009
@@ -1547,6 +1547,38 @@
}
/**
+ * @see RepositoryService#createActivity(SessionInfo, String)
+ */
+ public NodeId createActivity(SessionInfo sessionInfo, String title) throws UnsupportedRepositoryOperationException, RepositoryException {
+ // TODO
+ throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
+ }
+
+ /**
+ * @see RepositoryService#removeActivity(SessionInfo, NodeId)
+ */
+ public void removeActivity(SessionInfo sessionInfo, NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ // TODO
+ throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
+ }
+
+ /**
+ * @see RepositoryService#mergeActivity(SessionInfo, NodeId)
+ */
+ public Iterator mergeActivity(SessionInfo sessionInfo, NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ // TODO
+ throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
+ }
+
+ /**
+ * @see RepositoryService#createConfiguration(SessionInfo, NodeId, NodeId)
+ */
+ public NodeId createConfiguration(SessionInfo sessionInfo, NodeId nodeId, NodeId baselineId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ // TODO
+ throw new UnsupportedOperationException("JCR-2104: JSR 283 Versioning. Implementation missing");
+ }
+
+ /**
* @see RepositoryService#getSupportedQueryLanguages(SessionInfo)
*/
public String[] getSupportedQueryLanguages(SessionInfo sessionInfo) throws RepositoryException {
Modified: jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java?rev=779101&r1=779100&r2=779101&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java Wed May 27 10:48:29 2009
@@ -791,8 +791,8 @@
final SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
return (Iterator) executeWithLocalEvents(new Callable() {
public Object run() throws RepositoryException {
- Node n = getNode(nodeId, sInfo);
- NodeIterator it = n.merge(srcWorkspaceName, bestEffort);
+ String nodePath = getNodePath(nodeId, sInfo);
+ NodeIterator it = getVersionManager(sInfo).merge(nodePath, srcWorkspaceName, bestEffort);
List ids = new ArrayList();
while (it.hasNext()) {
ids.add(idFactory.createNodeId(it.nextNode(),
@@ -815,8 +815,8 @@
final SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
return (Iterator) executeWithLocalEvents(new Callable() {
public Object run() throws RepositoryException {
- VersionManager vMgr = sInfo.getSession().getWorkspace().getVersionManager();
- NodeIterator it = vMgr.merge(getNodePath(nodeId, sInfo), srcWorkspaceName, bestEffort, isShallow);
+ String nodePath = getNodePath(nodeId, sInfo);
+ NodeIterator it = getVersionManager(sInfo).merge(nodePath, srcWorkspaceName, bestEffort, isShallow);
List ids = new ArrayList();
while (it.hasNext()) {
ids.add(idFactory.createNodeId(it.nextNode(),
@@ -924,6 +924,68 @@
/**
* {@inheritDoc}
*/
+ public NodeId createActivity(SessionInfo sessionInfo, final String title) throws UnsupportedRepositoryOperationException, RepositoryException {
+ final SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
+ final VersionManager vMgr = getVersionManager(sInfo);
+ Node activity = (Node) executeWithLocalEvents(new Callable() {
+ public Object run() throws RepositoryException {
+ return vMgr.createActivity(title);
+ }
+ }, getSessionInfoImpl(sessionInfo));
+ return idFactory.createNodeId(activity, sInfo.getNamePathResolver());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void removeActivity(SessionInfo sessionInfo, final NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ final SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
+ final VersionManager vMgr = getVersionManager(sInfo);
+ Node activity = (Node) executeWithLocalEvents(new Callable() {
+ public Object run() throws RepositoryException {
+ // TODO: uncomment as soon as removeActivity method is fixed in jsr 283
+ // return vMgr.removeActivity(getNode(activityId, sInfo));
+ throw new UnsupportedOperationException("Impl missing... waiting for updated jsr 283 jar.");
+ }
+ }, getSessionInfoImpl(sessionInfo));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Iterator mergeActivity(SessionInfo sessionInfo, final NodeId activityId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ final SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
+ return (Iterator) executeWithLocalEvents(new Callable() {
+ public Object run() throws RepositoryException {
+ Node node = getNode(activityId, sInfo);
+ NodeIterator it = getVersionManager(sInfo).merge(node);
+ List ids = new ArrayList();
+ while (it.hasNext()) {
+ ids.add(idFactory.createNodeId(it.nextNode(),
+ sInfo.getNamePathResolver()));
+ }
+ return ids.iterator();
+ }
+ }, sInfo);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public NodeId createConfiguration(SessionInfo sessionInfo, final NodeId nodeId, final NodeId baselineId) throws UnsupportedRepositoryOperationException, RepositoryException {
+ final SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
+ final VersionManager vMgr = getVersionManager(sInfo);
+ Node configuration = (Node) executeWithLocalEvents(new Callable() {
+ public Object run() throws RepositoryException {
+ return vMgr.createConfiguration(getNodePath(nodeId, sInfo), (Version) getNode(baselineId, sInfo));
+ }
+ }, getSessionInfoImpl(sessionInfo));
+ return idFactory.createNodeId(configuration, sInfo.getNamePathResolver());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public String[] getSupportedQueryLanguages(SessionInfo sessionInfo)
throws RepositoryException {
SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
@@ -1570,6 +1632,10 @@
return n.getProperty(jcrPath);
}
+ private VersionManager getVersionManager(SessionInfoImpl sessionInfo) throws RepositoryException {
+ return sessionInfo.getSession().getWorkspace().getVersionManager();
+ }
+
private Query createQuery(Session session,
String statement,
String language,