You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2013/05/15 00:07:01 UTC
svn commit: r1482615 -
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/ReadWriteVersionManager.java
Author: angela
Date: Tue May 14 22:07:01 2013
New Revision: 1482615
URL: http://svn.apache.org/r1482615
Log:
OAK-168: version mgt (throw more subclasses of repositoryexception)
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/ReadWriteVersionManager.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/ReadWriteVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/ReadWriteVersionManager.java?rev=1482615&r1=1482614&r2=1482615&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/ReadWriteVersionManager.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/ReadWriteVersionManager.java Tue May 14 22:07:01 2013
@@ -16,12 +16,13 @@
*/
package org.apache.jackrabbit.oak.jcr.version;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import javax.annotation.Nonnull;
+import javax.jcr.AccessDeniedException;
import javax.jcr.InvalidItemStateException;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.version.VersionException;
import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -33,6 +34,8 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.version.ReadOnlyVersionManager;
import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
+import static com.google.common.base.Preconditions.checkNotNull;
+
/**
* {@code ReadWriteVersionManager}...
*/
@@ -112,13 +115,7 @@ public class ReadWriteVersionManager ext
refresh();
} catch (CommitFailedException e) {
getWorkspaceRoot().refresh();
- // FIXME: hardcoded exception code
- if (e.getType().equals(CommitFailedException.VERSION)
- && e.getCode() == 1) {
- throw new VersionException(e.getMessage());
- } else {
- throw new RepositoryException(e);
- }
+ throw newRepositoryException(e);
}
}
return getBaseVersion(getWorkspaceRoot().getTree(versionable.getPath()));
@@ -155,10 +152,34 @@ public class ReadWriteVersionManager ext
refresh();
} catch (CommitFailedException e) {
getWorkspaceRoot().refresh();
- throw new RepositoryException(e);
+ throw newRepositoryException(e);
}
}
}
// TODO: more methods that modify versions
+
+ /**
+ * Wraps the given {@link CommitFailedException} instance using the
+ * appropriate {@link RepositoryException} subclass based on the
+ * {@link CommitFailedException#getType() type} of the given exception.
+ *
+ * @param exception typed commit failure exception
+ * @return matching repository exception
+ */
+ private static RepositoryException newRepositoryException(@Nonnull CommitFailedException exception) {
+ if (exception.isConstraintViolation()) {
+ return new ConstraintViolationException(exception);
+ } else if (exception.isAccessViolation()) {
+ return new AccessDeniedException(exception);
+ } else if (exception.isOfType("State")) {
+ return new InvalidItemStateException(exception);
+ } else if (exception.isOfType(CommitFailedException.VERSION) && exception.getCode() == 1) { // FIXME: hardcoded exception code
+ return new VersionException(exception);
+ } else if (exception.isOfType("Lock")) {
+ return new LockException(exception);
+ } else {
+ return new RepositoryException(exception);
+ }
+ }
}