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 2013/03/13 17:25:05 UTC
svn commit: r1456026 - in
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr:
NodeImpl.java PropertyImpl.java delegate/PropertyDelegate.java
delegate/VersionHistoryDelegate.java version/VersionImpl.java
Author: mduerig
Date: Wed Mar 13 16:25:05 2013
New Revision: 1456026
URL: http://svn.apache.org/r1456026
Log:
OAK-672: Avoid JCR APIs calling other JCR APIs
- Simplify value access
Modified:
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/delegate/PropertyDelegate.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/VersionHistoryDelegate.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
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=1456026&r1=1456025&r2=1456026&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 Wed Mar 13 16:25:05 2013
@@ -75,7 +75,6 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Tree.Status;
-import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.core.IdentifierManager;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
@@ -995,13 +994,7 @@ public class NodeImpl<T extends NodeDele
nodeModified = true;
dlg.setProperty(JcrConstants.JCR_MIXINTYPES, Collections.singletonList(value));
} else {
- PropertyState property = mixins.getPropertyState();
- if (property == null) {
- throw new InvalidItemStateException();
- }
- if (!property.isArray()) {
- throw new ValueFormatException(mixins + " is single-valued.");
- }
+ PropertyState property = mixins.getMulti();
List<Value> values = getValueFactory().createValues(property);
if (!values.contains(value)) {
values.add(value);
@@ -1225,9 +1218,8 @@ public class NodeImpl<T extends NodeDele
while (parent != null) {
if (parent.getProperty(lockOwner) != null) {
PropertyDelegate isDeep = parent.getProperty(lockIsDeep);
- if (isDeep != null) {
- PropertyState p = isDeep.getPropertyState();
- if (p != null && !p.isArray() && p.getValue(Type.BOOLEAN)) {
+ if (isDeep != null && !isDeep.isArray()) {
+ if (isDeep.getBoolean()) {
return true;
}
}
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=1456026&r1=1456025&r2=1456026&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 Wed Mar 13 16:25:05 2013
@@ -26,7 +26,6 @@ import java.util.List;
import javax.annotation.Nonnull;
import javax.jcr.AccessDeniedException;
import javax.jcr.Binary;
-import javax.jcr.InvalidItemStateException;
import javax.jcr.ItemNotFoundException;
import javax.jcr.ItemVisitor;
import javax.jcr.Node;
@@ -40,7 +39,6 @@ import javax.jcr.nodetype.PropertyDefini
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
-import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree.Status;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
import org.apache.jackrabbit.oak.jcr.delegate.PropertyDelegate;
@@ -355,14 +353,6 @@ public class PropertyImpl extends ItemIm
}
}
- private PropertyState getPropertyState() throws InvalidItemStateException {
- PropertyState property = dlg.getPropertyState();
- if (property == null) {
- throw new InvalidItemStateException();
- }
- return property;
- }
-
@Override
@Nonnull
public Value getValue() throws RepositoryException {
@@ -374,11 +364,7 @@ public class PropertyImpl extends ItemIm
@Override
public Value perform() throws RepositoryException {
- PropertyState property = getPropertyState();
- if (property.isArray()) {
- throw new ValueFormatException(dlg + " is multi-valued.");
- }
- return getValueFactory().createValue(property);
+ return getValueFactory().createValue(dlg.getSingle());
}
});
}
@@ -394,14 +380,7 @@ public class PropertyImpl extends ItemIm
@Override
public List<Value> perform() throws RepositoryException {
- PropertyState property = dlg.getPropertyState();
- if (property == null) {
- throw new InvalidItemStateException();
- }
- if (!property.isArray()) {
- throw new ValueFormatException(dlg + " is single-valued.");
- }
- return getValueFactory().createValues(property);
+ return getValueFactory().createValues(dlg.getMulti());
}
}).toArray(NO_VALUES);
}
@@ -614,7 +593,7 @@ public class PropertyImpl extends ItemIm
@Override
public Boolean perform() throws RepositoryException {
- return getPropertyState().isArray();
+ return dlg.isArray();
}
});
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/PropertyDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/PropertyDelegate.java?rev=1456026&r1=1456025&r2=1456026&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/PropertyDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/PropertyDelegate.java Wed Mar 13 16:25:05 2013
@@ -16,13 +16,15 @@
*/
package org.apache.jackrabbit.oak.jcr.delegate;
-import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
import javax.jcr.InvalidItemStateException;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
+import javax.jcr.ValueFormatException;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.TreeLocation;
+import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
/**
@@ -37,6 +39,45 @@ public class PropertyDelegate extends It
super(sessionDelegate, location);
}
+ @Nonnull
+ private PropertyState getPropertyState() throws InvalidItemStateException {
+ PropertyState p = getLocation().getProperty();
+ if (p == null) {
+ throw new InvalidItemStateException();
+ }
+ return p;
+ }
+
+ public boolean isArray() throws InvalidItemStateException {
+ return getPropertyState().isArray();
+ }
+
+ @Nonnull
+ public PropertyState getSingle() throws InvalidItemStateException, ValueFormatException {
+ PropertyState p = getPropertyState();
+ if (p.isArray()) {
+ throw new ValueFormatException(p + " is multi-valued.");
+ }
+ return p;
+ }
+
+ public boolean getBoolean() throws ValueFormatException, InvalidItemStateException {
+ return getSingle().getValue(Type.BOOLEAN);
+ }
+
+ public String getString() throws ValueFormatException, InvalidItemStateException {
+ return getSingle().getValue(Type.STRING);
+ }
+
+ @Nonnull
+ public PropertyState getMulti() throws InvalidItemStateException, ValueFormatException {
+ PropertyState p = getPropertyState();
+ if (!p.isArray()) {
+ throw new ValueFormatException(p + " is single-valued.");
+ }
+ return p;
+ }
+
/**
* Set the value of the property
*
@@ -66,9 +107,4 @@ public class PropertyDelegate extends It
getLocation().remove();
}
- @CheckForNull
- public PropertyState getPropertyState() throws InvalidItemStateException {
- return getLocation().getProperty();
- }
-
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/VersionHistoryDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/VersionHistoryDelegate.java?rev=1456026&r1=1456025&r2=1456026&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/VersionHistoryDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/VersionHistoryDelegate.java Wed Mar 13 16:25:05 2013
@@ -26,7 +26,6 @@ import java.util.TreeMap;
import javax.annotation.Nonnull;
import javax.jcr.InvalidItemStateException;
import javax.jcr.RepositoryException;
-import javax.jcr.ValueFormatException;
import javax.jcr.version.VersionException;
import com.google.common.base.Function;
@@ -126,23 +125,12 @@ public class VersionHistoryDelegate exte
SortedMap<Calendar, String> versions = new TreeMap<Calendar, String>();
for (Iterator<NodeDelegate> it = getChildren(); it.hasNext(); ) {
NodeDelegate n = it.next();
- PropertyState propertyState = n.getProperty(JcrConstants.JCR_PRIMARYTYPE).getPropertyState();
- if (propertyState == null) {
- throw new InvalidItemStateException();
- }
- String primaryType = propertyState.getValue(Type.STRING);
+ String primaryType = n.getProperty(JcrConstants.JCR_PRIMARYTYPE).getString();
if (primaryType.equals(VersionConstants.NT_VERSION)) {
PropertyDelegate created = n.getProperty(JcrConstants.JCR_CREATED);
if (created != null) {
- PropertyState property = created.getPropertyState();
- if (property == null) {
- throw new InvalidItemStateException();
- }
- if (property.isArray()) {
- throw new ValueFormatException(created + " is multi-valued.");
- }
ValueFactoryImpl f = SessionContextProvider.getValueFactory(sessionDelegate);
- versions.put(f.createValue(property).getDate(), n.getName());
+ versions.put(f.createValue(created.getSingle()).getDate(), n.getName());
}
}
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java?rev=1456026&r1=1456025&r2=1456026&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java Wed Mar 13 16:25:05 2013
@@ -30,7 +30,6 @@ import javax.jcr.version.Version;
import javax.jcr.version.VersionHistory;
import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.jcr.NodeImpl;
import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
@@ -62,14 +61,7 @@ class VersionImpl extends NodeImpl<Versi
@Override
public Calendar getCreated() throws RepositoryException {
PropertyDelegate dlg = getPropertyOrThrow(JcrConstants.JCR_CREATED);
- PropertyState property = dlg.getPropertyState();
- if (property == null) {
- throw new InvalidItemStateException();
- }
- if (property.isArray()) {
- throw new ValueFormatException(dlg + " is multi-valued.");
- }
- return getValueFactory().createValue(property).getDate();
+ return getValueFactory().createValue(dlg.getSingle()).getDate();
}
@Override
@@ -83,14 +75,7 @@ class VersionImpl extends NodeImpl<Versi
}
private List<Value> getValues(PropertyDelegate p) throws InvalidItemStateException, ValueFormatException {
- PropertyState property = p.getPropertyState();
- if (property == null) {
- throw new InvalidItemStateException();
- }
- if (!property.isArray()) {
- throw new ValueFormatException(p + " is single-valued.");
- }
- return getValueFactory().createValues(property);
+ return getValueFactory().createValues(p.getMulti());
}
@Override