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/10/05 14:07:53 UTC
svn commit: r1394472 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/api/
oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/
oak-core/src/main/jav...
Author: mduerig
Date: Fri Oct 5 12:07:52 2012
New Revision: 1394472
URL: http://svn.apache.org/viewvc?rev=1394472&view=rev
Log:
OAK-350: Unify PropertyState and CoreValue
- Replace PropertyState.getValue() with CoreValues.getValue(PropertyState)
- remove deprecated methods from PropertyState
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/CoreValues.java (with props)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/BinaryValue.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexDiff.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexUpdate.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyPropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryValue.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MultiPropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/SinglePropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/TypeValidator.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProviderImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java Fri Oct 5 12:07:52 2012
@@ -16,8 +16,6 @@
*/
package org.apache.jackrabbit.oak.api;
-import java.util.List;
-
import javax.annotation.Nonnull;
/**
@@ -60,27 +58,6 @@ public interface PropertyState {
boolean isArray();
/**
- * Value of this property.
- * @return the single value of this property.
- * @throws IllegalStateException if {@code isArray()} is {@code true}.
- */
- @Nonnull
- @Deprecated
- CoreValue getValue();
-
- /**
- * Values of this property. The returned list is immutable and contains
- * all the values of this property. If this is a single-valued property,
- * then the returned list will simply contain the single value returned
- * by the {@link #getValue()} method.
- *
- * @return immutable list of the values of this property
- */
- @Nonnull
- @Deprecated
- List<CoreValue> getValues();
-
- /**
* Determine the type of this property
* @return the type of this property
*/
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/BinaryValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/BinaryValue.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/BinaryValue.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/BinaryValue.java Fri Oct 5 12:07:52 2012
@@ -16,14 +16,14 @@
*/
package org.apache.jackrabbit.oak.kernel;
-import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.util.MicroKernelInputStream;
-import org.apache.jackrabbit.oak.plugins.memory.MemoryValue;
-
import java.io.InputStream;
import javax.jcr.PropertyType;
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.mk.util.MicroKernelInputStream;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryValue;
+
/**
* BinaryValue... TODO: review name (BlobValue? BlobCoreValue? BinaryCoreValue?)
*/
@@ -81,7 +81,7 @@ class BinaryValue extends MemoryValue {
return binaryID.equals(other.binaryID);
}
- return false;
+ return super.equals(o);
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneEditor.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneEditor.java Fri Oct 5 12:07:52 2012
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.api.Com
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.plugins.index.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.spi.commit.CommitHook;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -220,7 +221,7 @@ class LuceneEditor implements CommitHook
document.add(newPathField(path));
for (PropertyState property : state.getProperties()) {
String pname = property.getName();
- for (CoreValue value : property.getValues()) {
+ for (CoreValue value : CoreValues.getValues(property)) {
document.add(newPropertyField(pname,
parseStringValue(value)));
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexDiff.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexDiff.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexDiff.java Fri Oct 5 12:07:52 2012
@@ -19,16 +19,16 @@ package org.apache.jackrabbit.oak.plugin
import java.util.List;
import java.util.Map;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeState;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
class PropertyIndexDiff implements NodeStateDiff {
private final PropertyIndexDiff parent;
@@ -109,22 +109,22 @@ class PropertyIndexDiff implements NodeS
@Override
public void propertyAdded(PropertyState after) {
for (PropertyIndexUpdate update : getIndexes(after.getName())) {
- update.insert(getPath(), after.getValues());
+ update.insert(getPath(), CoreValues.getValues(after));
}
}
@Override
public void propertyChanged(PropertyState before, PropertyState after) {
for (PropertyIndexUpdate update : getIndexes(after.getName())) {
- update.remove(getPath(), before.getValues());
- update.insert(getPath(), after.getValues());
+ update.remove(getPath(), CoreValues.getValues(before));
+ update.insert(getPath(), CoreValues.getValues(after));
}
}
@Override
public void propertyDeleted(PropertyState before) {
for (PropertyIndexUpdate update : getIndexes(before.getName())) {
- update.remove(getPath(), before.getValues());
+ update.remove(getPath(), CoreValues.getValues(before));
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java Fri Oct 5 12:07:52 2012
@@ -21,6 +21,7 @@ import java.util.Set;
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.plugins.memory.StringValue;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -92,7 +93,7 @@ public class PropertyIndexLookup {
// No index available, so first check this node for a match
property = root.getProperty(name);
if (property != null) {
- for (CoreValue cv : property.getValues()) {
+ for (CoreValue cv : CoreValues.getValues(property)) {
if (cv.equals(value)) {
paths.add("");
break;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexUpdate.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexUpdate.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexUpdate.java Fri Oct 5 12:07:52 2012
@@ -25,6 +25,7 @@ import javax.jcr.PropertyType;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.plugins.memory.MultiPropertyState;
import org.apache.jackrabbit.oak.plugins.memory.StringValue;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -88,7 +89,7 @@ class PropertyIndexUpdate {
PropertyState property = index.getProperty(encoded);
if (property != null) {
List<CoreValue> values = Lists.newArrayList();
- for (CoreValue value : property.getValues()) {
+ for (CoreValue value : CoreValues.getValues(property)) {
if (!paths.contains(value.getString())) {
values.add(value);
}
@@ -107,7 +108,7 @@ class PropertyIndexUpdate {
List<CoreValue> values = Lists.newArrayList();
PropertyState property = index.getProperty(encoded);
if (property != null) {
- for (CoreValue value : property.getValues()) {
+ for (CoreValue value : CoreValues.getValues(property)) {
values.add(value);
paths.remove(value.getString());
}
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/CoreValues.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/CoreValues.java?rev=1394472&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/CoreValues.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/CoreValues.java Fri Oct 5 12:07:52 2012
@@ -0,0 +1,122 @@
+package org.apache.jackrabbit.oak.plugins.memory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+import javax.jcr.PropertyType;
+
+import com.google.common.collect.Lists;
+import com.google.common.io.ByteStreams;
+import org.apache.jackrabbit.oak.api.Blob;
+import org.apache.jackrabbit.oak.api.CoreValue;
+import org.apache.jackrabbit.oak.api.PropertyState;
+
+import static org.apache.jackrabbit.oak.api.Type.BINARIES;
+import static org.apache.jackrabbit.oak.api.Type.BINARY;
+import static org.apache.jackrabbit.oak.api.Type.BOOLEAN;
+import static org.apache.jackrabbit.oak.api.Type.BOOLEANS;
+import static org.apache.jackrabbit.oak.api.Type.DECIMAL;
+import static org.apache.jackrabbit.oak.api.Type.DECIMALS;
+import static org.apache.jackrabbit.oak.api.Type.DOUBLE;
+import static org.apache.jackrabbit.oak.api.Type.DOUBLES;
+import static org.apache.jackrabbit.oak.api.Type.LONG;
+import static org.apache.jackrabbit.oak.api.Type.LONGS;
+import static org.apache.jackrabbit.oak.api.Type.STRING;
+import static org.apache.jackrabbit.oak.api.Type.STRINGS;
+
+/**
+ * The methods of this class adapt a {@code PropertyState} to a {@code CoreValue}.
+ * TODO this is a temporary solution while resolving OAK-350
+ */
+public class CoreValues {
+ private CoreValues() {}
+
+ /**
+ * Value of the {@code property}
+ * @param property
+ * @return The single value of {@code property}.
+ * @throws IllegalStateException if {@code property.isArray()} is {@code true}.
+ */
+ @Nonnull
+ public static CoreValue getValue(PropertyState property) {
+ if (property.isArray()) {
+ throw new IllegalStateException("Not a single valued property");
+ }
+
+ int type = property.getType().tag();
+ switch (type) {
+ case PropertyType.STRING: return new StringValue(property.getValue(STRING));
+ case PropertyType.LONG: return new LongValue(property.getValue(LONG));
+ case PropertyType.DOUBLE: return new DoubleValue(property.getValue(DOUBLE));
+ case PropertyType.BOOLEAN: return property.getValue(BOOLEAN) ? BooleanValue.TRUE : BooleanValue.FALSE;
+ case PropertyType.DECIMAL: return new DecimalValue(property.getValue(DECIMAL));
+ case PropertyType.BINARY: return binaryValue(property.getValue(BINARY));
+ default: return new GenericValue(type, property.getValue(STRING));
+ }
+ }
+
+ /**
+ * Values of {@code property}. The returned list is immutable and contains
+ * all the values of the property. If {@code property} is a single-valued property,
+ * then the returned list will simply contain a single value.
+ * @param property
+ * @return immutable list of the values of this property
+ */
+ @Nonnull
+ public static List<CoreValue> getValues(PropertyState property) {
+ List<CoreValue> cvs = Lists.newArrayList();
+ int type = property.getType().tag();
+ switch (type) {
+ case PropertyType.STRING:
+ for (String value : property.getValue(STRINGS)) {
+ cvs.add(new StringValue(value));
+ }
+ break;
+ case PropertyType.LONG:
+ for (long value : property.getValue(LONGS)) {
+ cvs.add(new LongValue(value));
+ }
+ break;
+ case PropertyType.DOUBLE:
+ for (double value : property.getValue(DOUBLES)) {
+ cvs.add(new DoubleValue(value));
+ }
+ break;
+ case PropertyType.BOOLEAN:
+ for (boolean value : property.getValue(BOOLEANS)) {
+ cvs.add(value ? BooleanValue.TRUE : BooleanValue.FALSE);
+ }
+ break;
+ case PropertyType.DECIMAL:
+ for (BigDecimal value : property.getValue(DECIMALS)) {
+ cvs.add(new DecimalValue(value));
+ }
+ break;
+ case PropertyType.BINARY:
+ for (Blob value : property.getValue(BINARIES)) {
+ cvs.add(binaryValue(value));
+ }
+ break;
+ default:
+ for (String value : property.getValue(STRINGS)) {
+ cvs.add(new GenericValue(type, value));
+ }
+ }
+ return cvs;
+ }
+
+ private static CoreValue binaryValue(Blob blob) {
+ InputStream in = blob.getNewStream();
+ try {
+ return new BinaryValue(ByteStreams.toByteArray(in));
+ }
+ catch (IOException e) {
+ // TODO better return a stream which defers this exception until accessed
+ throw new IllegalStateException(e);
+ }
+ }
+
+}
Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/CoreValues.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/CoreValues.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyPropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyPropertyState.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyPropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyPropertyState.java Fri Oct 5 12:07:52 2012
@@ -19,9 +19,6 @@
package org.apache.jackrabbit.oak.plugins.memory;
import java.util.Collections;
-import java.util.List;
-
-import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.api.CoreValue;
@@ -59,20 +56,6 @@ class EmptyPropertyState implements Prop
}
@Override
- @Nonnull
- @Deprecated
- public CoreValue getValue() {
- throw new IllegalStateException("Not a single valued property");
- }
-
- @Override
- @Nonnull
- @Deprecated
- public List<CoreValue> getValues() {
- return Collections.emptyList();
- }
-
- @Override
public Type<?> getType() {
return type;
}
@@ -127,7 +110,7 @@ class EmptyPropertyState implements Prop
PropertyState other = (PropertyState) that;
return getName().equals(other.getName())
&& isArray() == other.isArray()
- && getValues().equals(other.getValues());
+ && CoreValues.getValues(this).equals(CoreValues.getValues(other));
} else {
return false;
}
@@ -149,7 +132,7 @@ class EmptyPropertyState implements Prop
@Override
public String toString() {
- return getName() + '=' + getValues();
+ return getName() + '=' + CoreValues.getValues(this);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryValue.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryValue.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryValue.java Fri Oct 5 12:07:52 2012
@@ -17,17 +17,23 @@
package org.apache.jackrabbit.oak.plugins.memory;
import java.io.ByteArrayInputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
+import java.util.Arrays;
import java.util.Calendar;
import javax.jcr.PropertyType;
+import com.google.common.io.ByteStreams;
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.util.ISO8601;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public abstract class MemoryValue implements CoreValue {
+ private static final Logger log = LoggerFactory.getLogger(MemoryValue.class);
@Override
public long getLong() {
@@ -90,11 +96,40 @@ public abstract class MemoryValue implem
} else {
return getString().compareTo(o.getString());
}
+ } else if (type == PropertyType.BINARY) {
+ return compare(getNewStream(), o.getNewStream()) ? 0 : 1;
} else {
return getString().compareTo(o.getString());
}
}
+ private static boolean compare(InputStream in2, InputStream in1) {
+ try {
+ try {
+ byte[] buf1 = new byte[0x1000];
+ byte[] buf2 = new byte[0x1000];
+
+ while (true) {
+ int read1 = ByteStreams.read(in1, buf1, 0, 0x1000);
+ int read2 = ByteStreams.read(in2, buf2, 0, 0x1000);
+ if (read1 != read2 || !Arrays.equals(buf1, buf2)) {
+ return false;
+ } else if (read1 != 0x1000) {
+ return true;
+ }
+ }
+ }
+ finally {
+ in1.close();
+ in2.close();
+ }
+ }
+ catch (IOException e) {
+ log.warn("Error comparing binary values", e);
+ return false;
+ }
+ }
+
//--------------------------------------------------------------< Object >
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MultiPropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MultiPropertyState.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MultiPropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MultiPropertyState.java Fri Oct 5 12:07:52 2012
@@ -23,7 +23,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import javax.annotation.Nonnull;
import javax.jcr.PropertyType;
import org.apache.jackrabbit.oak.api.Blob;
@@ -31,7 +30,7 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.Type;
import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.api.Type.*;
+import static org.apache.jackrabbit.oak.api.Type.STRINGS;
/**
* Multi-valued property state.
@@ -56,13 +55,6 @@ public class MultiPropertyState extends
}
@Override
- @Nonnull
- @Deprecated
- public List<CoreValue> getValues() {
- return values;
- }
-
- @Override
public long size(int index) {
return values.get(index).length();
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/SinglePropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/SinglePropertyState.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/SinglePropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/SinglePropertyState.java Fri Oct 5 12:07:52 2012
@@ -19,9 +19,7 @@
package org.apache.jackrabbit.oak.plugins.memory;
import java.util.Collections;
-import java.util.List;
-import javax.annotation.Nonnull;
import javax.jcr.PropertyType;
import org.apache.jackrabbit.oak.api.CoreValue;
@@ -63,20 +61,6 @@ public class SinglePropertyState extends
return false;
}
- @Override
- @Nonnull
- @Deprecated
- public CoreValue getValue() {
- return value;
- }
-
- @Override
- @Nonnull
- @Deprecated
- public List<CoreValue> getValues() {
- return Collections.singletonList(value);
- }
-
@SuppressWarnings("unchecked")
@Override
public <T> T getValue(Type<T> type) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/TypeValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/TypeValidator.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/TypeValidator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/TypeValidator.java Fri Oct 5 12:07:52 2012
@@ -36,6 +36,7 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.core.ReadOnlyTree;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.spi.commit.Validator;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.value.ValueImpl;
@@ -259,10 +260,10 @@ class TypeValidator implements Validator
return;
}
if (property.isArray()) {
- checkSetProperty(property.getName(), property.getValues());
+ checkSetProperty(property.getName(), CoreValues.getValues(property));
}
else {
- checkSetProperty(property.getName(), property.getValue());
+ checkSetProperty(property.getName(), CoreValues.getValue(property));
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java Fri Oct 5 12:07:52 2012
@@ -30,6 +30,7 @@ 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.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.query.ast.AstVisitorBase;
import org.apache.jackrabbit.oak.query.ast.BindVariableValueImpl;
import org.apache.jackrabbit.oak.query.ast.ChildNodeImpl;
@@ -612,7 +613,7 @@ public class Query {
for (int i = 0; i < columnCount; i++) {
ColumnImpl c = columns[i];
PropertyState p = c.currentProperty();
- values[i] = p == null ? null : p.getValue();
+ values[i] = p == null ? null : CoreValues.getValue(p);
}
CoreValue[][] orderValues;
if (orderings == null) {
@@ -626,10 +627,10 @@ public class Query {
if (p == null) {
x = null;
} else if (p.isArray()) {
- List<CoreValue> list = p.getValues();
+ List<CoreValue> list = CoreValues.getValues(p);
x = list.toArray(new CoreValue[list.size()]);
} else {
- x = new CoreValue[] { p.getValue() };
+ x = new CoreValue[] { CoreValues.getValue(p) };
}
orderValues[i] = x;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java Fri Oct 5 12:07:52 2012
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.query.Query;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
@@ -76,11 +77,11 @@ public class ComparisonImpl extends Cons
}
}
if (!isArray) {
- return evaluate(p1.getValue(), v2);
+ return evaluate(CoreValues.getValue(p1), v2);
}
// for multi-valued properties: if any of the value matches,
// then return true
- for (CoreValue v1 : p1.getValues()) {
+ for (CoreValue v1 : CoreValues.getValues(p1)) {
if (evaluate(v1, v2)) {
return true;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/EquiJoinConditionImpl.java Fri Oct 5 12:07:52 2012
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.query.
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.query.Query;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
@@ -71,12 +72,12 @@ public class EquiJoinConditionImpl exten
}
if (!p1.isArray() && !p2.isArray()) {
// both are single valued
- return p1.getValue().equals(p2.getValue());
+ return CoreValues.getValue(p1).equals(CoreValues.getValue(p2));
}
// TODO what is the expected result of an equi join for multi-valued properties?
if (!p1.isArray() && p2.isArray()) {
- CoreValue x = p1.getValue();
- for (CoreValue y : p2.getValues()) {
+ CoreValue x = CoreValues.getValue(p1);
+ for (CoreValue y : CoreValues.getValues(p2)) {
if (y.getType() != x.getType()) {
y = query.convert(y, x.getType());
}
@@ -86,8 +87,8 @@ public class EquiJoinConditionImpl exten
}
return false;
} else if (p1.isArray() && !p2.isArray()) {
- CoreValue x = p2.getValue();
- for (CoreValue y : p1.getValues()) {
+ CoreValue x = CoreValues.getValue(p2);
+ for (CoreValue y : CoreValues.getValues(p1)) {
if (y.getType() != x.getType()) {
y = query.convert(y, x.getType());
}
@@ -97,8 +98,8 @@ public class EquiJoinConditionImpl exten
}
return false;
}
- CoreValue[] l1 = p1.getValues().toArray(new CoreValue[p1.getValues().size()]);
- CoreValue[] l2 = p2.getValues().toArray(new CoreValue[p2.getValues().size()]);
+ CoreValue[] l1 = CoreValues.getValues(p1).toArray(new CoreValue[p1.count()]);
+ CoreValue[] l2 = CoreValues.getValues(p2).toArray(new CoreValue[p2.count()]);
return Query.compareValues(l1, l2) == 0;
}
@@ -109,13 +110,13 @@ public class EquiJoinConditionImpl exten
if (f.getSelector() == selector1 && p2 != null) {
if (!p2.isArray()) {
// TODO support join on multi-valued properties
- f.restrictProperty(property1Name, Operator.EQUAL, p2.getValue());
+ f.restrictProperty(property1Name, Operator.EQUAL, CoreValues.getValue(p2));
}
}
if (f.getSelector() == selector2 && p1 != null) {
if (!p1.isArray()) {
// TODO support join on multi-valued properties
- f.restrictProperty(property2Name, Operator.EQUAL, p1.getValue());
+ f.restrictProperty(property2Name, Operator.EQUAL, CoreValues.getValue(p1));
}
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java Fri Oct 5 12:07:52 2012
@@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.plugins.memory.MultiPropertyState;
import org.apache.jackrabbit.oak.query.SQL2Parser;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
@@ -118,9 +119,9 @@ public class PropertyValueImpl extends D
for (PropertyState p : tree.getProperties()) {
if (matchesPropertyType(p)) {
if (p.isArray()) {
- values.addAll(p.getValues());
+ values.addAll(CoreValues.getValues(p));
} else {
- values.add(p.getValue());
+ values.add(CoreValues.getValue(p));
}
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProviderImpl.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProviderImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProviderImpl.java Fri Oct 5 12:07:52 2012
@@ -35,6 +35,7 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.plugins.memory.MultiPropertyState;
import org.apache.jackrabbit.oak.spi.security.user.MembershipProvider;
import org.apache.jackrabbit.oak.spi.security.user.Type;
@@ -145,7 +146,7 @@ public class MembershipProviderImpl exte
} else {
PropertyState property = groupTree.getProperty(REP_MEMBERS);
if (property != null) {
- List<CoreValue> vs = property.getValues();
+ List<CoreValue> vs = CoreValues.getValues(property);
memberPaths = Iterables.transform(vs, new Function<CoreValue,String>() {
@Override
public String apply(@Nullable CoreValue value) {
@@ -210,7 +211,7 @@ public class MembershipProviderImpl exte
CoreValue toAdd = createCoreValue(newMemberTree);
PropertyState property = groupTree.getProperty(REP_MEMBERS);
if (property != null) {
- values = property.getValues();
+ values = CoreValues.getValues(property);
if (values.contains(toAdd)) {
return false;
} else {
@@ -237,7 +238,7 @@ public class MembershipProviderImpl exte
PropertyState property = groupTree.getProperty(REP_MEMBERS);
if (property != null) {
CoreValue toRemove = createCoreValue(memberTree);
- List<CoreValue> values = property.getValues();
+ List<CoreValue> values = CoreValues.getValues(property);
if (values.remove(toRemove)) {
if (values.isEmpty()) {
groupTree.removeProperty(REP_MEMBERS);
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java?rev=1394472&r1=1394471&r2=1394472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java Fri Oct 5 12:07:52 2012
@@ -29,6 +29,7 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.TreeLocation;
import org.apache.jackrabbit.oak.core.TreeImpl.PropertyLocation;
+import org.apache.jackrabbit.oak.plugins.memory.CoreValues;
import org.apache.jackrabbit.oak.plugins.memory.MultiPropertyState;
import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
import org.apache.jackrabbit.oak.util.TODO;
@@ -53,7 +54,7 @@ public class PropertyDelegate extends It
*/
@Nonnull
public CoreValue getValue() throws InvalidItemStateException {
- return getPropertyState().getValue();
+ return CoreValues.getValue(getPropertyState());
}
/**
@@ -63,7 +64,7 @@ public class PropertyDelegate extends It
*/
@Nonnull
public Iterable<CoreValue> getValues() throws InvalidItemStateException {
- return getPropertyState().getValues();
+ return CoreValues.getValues(getPropertyState());
}
/**