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 md...@apache.org on 2012/04/12 12:43:18 UTC
svn commit: r1325199 - in
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr:
ItemImpl.java ItemStateProvider.java NodeImpl.java PropertyImpl.java
SessionImpl.java WorkspaceImpl.java query/QueryManagerImpl.java
Author: mduerig
Date: Thu Apr 12 10:43:17 2012
New Revision: 1325199
URL: http://svn.apache.org/viewvc?rev=1325199&view=rev
Log:
OAK-15: Clean up oak-jcr
- make ItemStateProvide package private
- synchronize state resolution
- better names for assertion
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java?rev=1325199&r1=1325198&r2=1325199&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java Thu Apr 12 10:43:17 2012
@@ -106,19 +106,20 @@ abstract class ItemImpl implements Item
*/
void checkStatus() throws RepositoryException {
// check session status
- sessionContext.getSession().checkIsAlive();
+ sessionContext.getSession().ensureIsAlive();
// TODO: validate item state.
}
/**
- * Checks if the associated session has pending changes.
+ * Ensure that the associated session has no pending changes and throw an
+ * exception otherwise.
*
* @throws InvalidItemStateException if this nodes session has pending changes
* @throws RepositoryException
*/
- void checkSessionHasPendingChanges() throws RepositoryException {
- sessionContext.getSession().checkHasPendingChanges();
+ void ensureNoPendingSessionChanges() throws RepositoryException {
+ sessionContext.getSession().ensureNoPendingChanges();
}
/**
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java?rev=1325199&r1=1325198&r2=1325199&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java Thu Apr 12 10:43:17 2012
@@ -3,7 +3,7 @@ package org.apache.jackrabbit.oak.jcr;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.TransientNodeState;
-public class ItemStateProvider {
+class ItemStateProvider {
private final TransientNodeState root;
ItemStateProvider(TransientNodeState root) {
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java?rev=1325199&r1=1325198&r2=1325199&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java Thu Apr 12 10:43:17 2012
@@ -634,7 +634,7 @@ public class NodeImpl extends ItemImpl i
@Override
public void update(String srcWorkspace) throws RepositoryException {
checkStatus();
- checkSessionHasPendingChanges();
+ ensureNoPendingSessionChanges();
// TODO
}
@@ -842,7 +842,7 @@ public class NodeImpl extends ItemImpl i
return sessionContext.getItemStateProvider();
}
- private TransientNodeState getNodeState() {
+ private synchronized TransientNodeState getNodeState() {
return nodeState = getItemStateProvider().getNodeState(nodeState.getPath());
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java?rev=1325199&r1=1325198&r2=1325199&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java Thu Apr 12 10:43:17 2012
@@ -628,7 +628,7 @@ public class PropertyImpl extends ItemIm
return getPropertyState().getName();
}
- private void resolve() {
+ private synchronized void resolve() {
parentState = getItemStateProvider().getNodeState(parentState.getPath());
propertyState = getItemStateProvider().getPropertyState(
Paths.concat(parentState.getPath(), propertyState.getName()));
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1325199&r1=1325198&r2=1325199&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Thu Apr 12 10:43:17 2012
@@ -101,7 +101,7 @@ public class SessionImpl extends Abstrac
*/
@Override
public Session impersonate(Credentials credentials) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// TODO
return null;
@@ -109,7 +109,7 @@ public class SessionImpl extends Abstrac
@Override
public ValueFactory getValueFactory() throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
return sessionContext.getValueFactory();
}
@@ -117,13 +117,13 @@ public class SessionImpl extends Abstrac
@Override
public Node getRootNode() throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
return new NodeImpl(sessionContext, itemStateProvider.getNodeState("/"));
}
@Override
public Node getNodeByUUID(String uuid) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// TODO
return null;
@@ -131,7 +131,7 @@ public class SessionImpl extends Abstrac
@Override
public Node getNodeByIdentifier(String id) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// TODO
return null;
@@ -141,7 +141,7 @@ public class SessionImpl extends Abstrac
@Override
public void move(String srcAbsPath, String destAbsPath) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
String srcPath = Paths.relativize("/", srcAbsPath);
String destPath = Paths.relativize("/", destAbsPath);
@@ -152,7 +152,7 @@ public class SessionImpl extends Abstrac
@Override
public void save() throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
try {
connection.commit(editor);
connection.refresh();
@@ -165,7 +165,7 @@ public class SessionImpl extends Abstrac
@Override
public void refresh(boolean keepChanges) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
connection.refresh();
if (!keepChanges) {
editor = connection.getNodeStateEditor(connection.getCurrentRoot());
@@ -175,7 +175,7 @@ public class SessionImpl extends Abstrac
@Override
public boolean hasPendingChanges() throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// todo implement hasPendingChanges
return false;
@@ -210,7 +210,7 @@ public class SessionImpl extends Abstrac
@Override
public ContentHandler getImportContentHandler(String parentAbsPath, int uuidBehavior) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// TODO
return null;
@@ -258,7 +258,7 @@ public class SessionImpl extends Abstrac
@Override
public boolean hasPermission(String absPath, String actions) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// TODO
return false;
@@ -276,7 +276,7 @@ public class SessionImpl extends Abstrac
@Override
public boolean hasCapability(String methodName, Object target, Object[] arguments) throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// TODO
return false;
@@ -284,7 +284,7 @@ public class SessionImpl extends Abstrac
@Override
public AccessControlManager getAccessControlManager() throws RepositoryException {
- checkIsAlive();
+ ensureIsAlive();
// TODO
return null;
@@ -300,12 +300,12 @@ public class SessionImpl extends Abstrac
//--------------------------------------------------------------------------
/**
- * Performs a sanity check on this session.
+ * Ensure that this session is alive and throw an exception otherwise.
*
* @throws RepositoryException if this session has been rendered invalid
* for some reason (e.g. if this session has been closed explicitly by logout)
*/
- void checkIsAlive() throws RepositoryException {
+ void ensureIsAlive() throws RepositoryException {
// check session status
if (!isAlive) {
throw new RepositoryException("This session has been closed.");
@@ -354,7 +354,8 @@ public class SessionImpl extends Abstrac
}
/**
- * Make sure the repository supports the option indicated by the given string.
+ * Make sure the repository supports the option indicated by the given string
+ * and throw an exception otherwise.
*
* @param option Any of the option constants defined by {@link Repository}
* that either returns 'true' or 'false'. I.e.
@@ -389,19 +390,20 @@ public class SessionImpl extends Abstrac
* @throws RepositoryException If another error occurs.
* @see javax.jcr.Repository#getDescriptorKeys()
*/
- void checkSupportedOption(String option) throws RepositoryException {
+ void ensureSupportsOption(String option) throws RepositoryException {
if (!isSupportedOption(option)) {
throw new UnsupportedRepositoryOperationException(option + " is not supported by this repository.");
}
}
/**
- * Checks if this session has pending changes.
+ * Ensure that this session has no pending changes and throw an exception
+ * otherwise.
*
* @throws InvalidItemStateException if this nodes session has pending changes
* @throws RepositoryException
*/
- void checkHasPendingChanges() throws RepositoryException {
+ void ensureNoPendingChanges() throws RepositoryException {
// check for pending changes
if (hasPendingChanges()) {
String msg = "Unable to perform operation. Session has pending changes.";
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java?rev=1325199&r1=1325198&r2=1325199&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java Thu Apr 12 10:43:17 2012
@@ -74,8 +74,8 @@ public class WorkspaceImpl implements Wo
@SuppressWarnings("deprecation")
@Override
public void copy(String srcWorkspace, String srcAbsPath, String destAbsPath) throws RepositoryException {
- getSessionImpl().checkSupportedOption(Repository.LEVEL_2_SUPPORTED);
- getSessionImpl().checkIsAlive();
+ ensureSupportedOption(Repository.LEVEL_2_SUPPORTED);
+ ensureIsAlive();
try {
Connection connection = sessionContext.getConnection();
@@ -95,8 +95,8 @@ public class WorkspaceImpl implements Wo
@SuppressWarnings("deprecation")
@Override
public void clone(String srcWorkspace, String srcAbsPath, String destAbsPath, boolean removeExisting) throws RepositoryException {
- getSessionImpl().checkSupportedOption(Repository.LEVEL_2_SUPPORTED);
- getSessionImpl().checkIsAlive();
+ ensureSupportedOption(Repository.LEVEL_2_SUPPORTED);
+ ensureIsAlive();
// TODO -> SPI
@@ -105,8 +105,8 @@ public class WorkspaceImpl implements Wo
@SuppressWarnings("deprecation")
@Override
public void move(String srcAbsPath, String destAbsPath) throws RepositoryException {
- getSessionImpl().checkSupportedOption(Repository.LEVEL_2_SUPPORTED);
- getSessionImpl().checkIsAlive();
+ ensureSupportedOption(Repository.LEVEL_2_SUPPORTED);
+ ensureIsAlive();
try {
Connection connection = sessionContext.getConnection();
@@ -130,8 +130,8 @@ public class WorkspaceImpl implements Wo
@Override
public LockManager getLockManager() throws RepositoryException {
- getSessionImpl().checkIsAlive();
- getSessionImpl().checkSupportedOption(Repository.OPTION_LOCKING_SUPPORTED);
+ ensureIsAlive();
+ ensureSupportedOption(Repository.OPTION_LOCKING_SUPPORTED);
// TODO
return null;
@@ -139,7 +139,7 @@ public class WorkspaceImpl implements Wo
@Override
public QueryManager getQueryManager() throws RepositoryException {
- getSessionImpl().checkIsAlive();
+ ensureIsAlive();
if (queryManager == null) {
queryManager = new QueryManagerImpl(this, sessionContext);
}
@@ -148,7 +148,7 @@ public class WorkspaceImpl implements Wo
@Override
public NamespaceRegistry getNamespaceRegistry() throws RepositoryException {
- getSessionImpl().checkIsAlive();
+ ensureIsAlive();
// TODO
return null;
@@ -156,7 +156,7 @@ public class WorkspaceImpl implements Wo
@Override
public NodeTypeManager getNodeTypeManager() throws RepositoryException {
- getSessionImpl().checkIsAlive();
+ ensureIsAlive();
// TODO
return null;
@@ -164,8 +164,8 @@ public class WorkspaceImpl implements Wo
@Override
public ObservationManager getObservationManager() throws RepositoryException {
- getSessionImpl().checkSupportedOption(Repository.OPTION_OBSERVATION_SUPPORTED);
- getSessionImpl().checkIsAlive();
+ ensureSupportedOption(Repository.OPTION_OBSERVATION_SUPPORTED);
+ ensureIsAlive();
// TODO
return null;
@@ -173,8 +173,8 @@ public class WorkspaceImpl implements Wo
@Override
public VersionManager getVersionManager() throws RepositoryException {
- getSessionImpl().checkIsAlive();
- getSessionImpl().checkSupportedOption(Repository.OPTION_VERSIONING_SUPPORTED);
+ ensureIsAlive();
+ ensureSupportedOption(Repository.OPTION_VERSIONING_SUPPORTED);
// TODO
return null;
@@ -182,7 +182,7 @@ public class WorkspaceImpl implements Wo
@Override
public String[] getAccessibleWorkspaceNames() throws RepositoryException {
- getSessionImpl().checkIsAlive();
+ ensureIsAlive();
// TODO -> SPI
return null;
@@ -191,8 +191,8 @@ public class WorkspaceImpl implements Wo
@SuppressWarnings("deprecation")
@Override
public ContentHandler getImportContentHandler(String parentAbsPath, int uuidBehavior) throws RepositoryException {
- getSessionImpl().checkSupportedOption(Repository.LEVEL_2_SUPPORTED);
- getSessionImpl().checkIsAlive();
+ ensureSupportedOption(Repository.LEVEL_2_SUPPORTED);
+ ensureIsAlive();
// TODO
return null;
@@ -201,38 +201,44 @@ public class WorkspaceImpl implements Wo
@SuppressWarnings("deprecation")
@Override
public void importXML(String parentAbsPath, InputStream in, int uuidBehavior) throws IOException, RepositoryException {
- getSessionImpl().checkSupportedOption(Repository.LEVEL_2_SUPPORTED);
- getSessionImpl().checkIsAlive();
+ ensureSupportedOption(Repository.LEVEL_2_SUPPORTED);
+ ensureIsAlive();
// TODO -> SPI
}
@Override
public void createWorkspace(String name) throws RepositoryException {
- getSessionImpl().checkIsAlive();
- getSessionImpl().checkSupportedOption(Repository.OPTION_WORKSPACE_MANAGEMENT_SUPPORTED);
+ ensureIsAlive();
+ ensureSupportedOption(Repository.OPTION_WORKSPACE_MANAGEMENT_SUPPORTED);
// TODO -> SPI
}
@Override
public void createWorkspace(String name, String srcWorkspace) throws RepositoryException {
- getSessionImpl().checkIsAlive();
- getSessionImpl().checkSupportedOption(Repository.OPTION_WORKSPACE_MANAGEMENT_SUPPORTED);
+ ensureIsAlive();
+ ensureSupportedOption(Repository.OPTION_WORKSPACE_MANAGEMENT_SUPPORTED);
// TODO -> SPI
}
@Override
public void deleteWorkspace(String name) throws RepositoryException {
- getSessionImpl().checkIsAlive();
- getSessionImpl().checkSupportedOption(Repository.OPTION_WORKSPACE_MANAGEMENT_SUPPORTED);
+ ensureIsAlive();
+ ensureSupportedOption(Repository.OPTION_WORKSPACE_MANAGEMENT_SUPPORTED);
// TODO -> SPI
}
//------------------------------------------------------------< private >---
- private SessionImpl getSessionImpl() {
- return sessionContext.getSession();
+
+ private void ensureIsAlive() throws RepositoryException {
+ sessionContext.getSession().ensureIsAlive();
+ }
+
+ private void ensureSupportedOption(String option) throws RepositoryException {
+ sessionContext.getSession().ensureSupportsOption(option);
}
+
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java?rev=1325199&r1=1325198&r2=1325199&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java Thu Apr 12 10:43:17 2012
@@ -101,7 +101,7 @@ public class QueryManagerImpl implements
private static HashMap<String, CoreValue> convertMap(HashMap<String, Value> bindVariableMap)
throws RepositoryException {
-
+
HashMap<String, CoreValue> map = new HashMap<String, CoreValue>();
for (Entry<String, Value> e : bindVariableMap.entrySet()) {
map.put(e.getKey(), ValueConverter.convert(e.getValue()));