Author: angela
Date: Wed Jun 7 14:08:50 2017
New Revision: 1797929
URL: http://svn.apache.org/viewvc?rev=1797929&view=rev
Log:
OAK-6311 : Move generic part of PropertyStateValue and PropertyValues to
oak-store-spi (cleanup oversight wrt canConvert and fix indention)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ValueConverter.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/InImpl.java
jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/PropertyValues.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ValueConverter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ValueConverter.java?rev=1797929&r1=1797928&r2=1797929&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ValueConverter.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ValueConverter.java
Wed Jun 7 14:08:50 2017
@@ -36,6 +36,47 @@ public class ValueConverter {
private ValueConverter() {}
+ public static boolean canConvert(int sourceType, int targetType) {
+ if (sourceType == targetType ||
+ sourceType == PropertyType.UNDEFINED ||
+ targetType == PropertyType.UNDEFINED) {
+ return true;
+ }
+ switch (targetType) {
+ case PropertyType.BINARY:
+ case PropertyType.BOOLEAN:
+ case PropertyType.DATE:
+ case PropertyType.DOUBLE:
+ case PropertyType.LONG:
+ case PropertyType.DECIMAL:
+ case PropertyType.STRING:
+ return true;
+ case PropertyType.NAME:
+ case PropertyType.PATH:
+ case PropertyType.URI:
+ switch (sourceType) {
+ case PropertyType.NAME:
+ case PropertyType.PATH:
+ case PropertyType.URI:
+ return true;
+ }
+ break;
+ case PropertyType.REFERENCE:
+ case PropertyType.WEAKREFERENCE:
+ switch (sourceType) {
+ case PropertyType.REFERENCE:
+ case PropertyType.WEAKREFERENCE:
+ return true;
+ }
+ break;
+ }
+ if (sourceType == PropertyType.STRING ||
+ sourceType == PropertyType.BINARY) {
+ return true;
+ }
+ return false;
+ }
+
/**
* Converts the given value to a value of the specified target type. The
* conversion is performed according to the rules described in
@@ -53,95 +94,95 @@ public class ValueConverter {
return value;
}
switch (targetType) {
- case PropertyType.BINARY:
- Blob blob = value.getValue(Type.BINARY);
- return PropertyValues.newBinary(blob);
- case PropertyType.BOOLEAN:
- return PropertyValues.newBoolean(value.getValue(Type.BOOLEAN));
- case PropertyType.DATE:
- return PropertyValues.newDate(value.getValue(Type.DATE));
- case PropertyType.DOUBLE:
- return PropertyValues.newDouble(value.getValue(Type.DOUBLE));
- case PropertyType.LONG:
- return PropertyValues.newLong(value.getValue(Type.LONG));
- case PropertyType.DECIMAL:
- return PropertyValues.newDecimal(value.getValue(Type.DECIMAL));
+ case PropertyType.BINARY:
+ Blob blob = value.getValue(Type.BINARY);
+ return PropertyValues.newBinary(blob);
+ case PropertyType.BOOLEAN:
+ return PropertyValues.newBoolean(value.getValue(Type.BOOLEAN));
+ case PropertyType.DATE:
+ return PropertyValues.newDate(value.getValue(Type.DATE));
+ case PropertyType.DOUBLE:
+ return PropertyValues.newDouble(value.getValue(Type.DOUBLE));
+ case PropertyType.LONG:
+ return PropertyValues.newLong(value.getValue(Type.LONG));
+ case PropertyType.DECIMAL:
+ return PropertyValues.newDecimal(value.getValue(Type.DECIMAL));
}
// for other types, the value is first converted to a string
String v = value.getValue(Type.STRING);
switch (targetType) {
- case PropertyType.STRING:
- return PropertyValues.newString(v);
- case PropertyType.PATH:
- switch (sourceType) {
- case PropertyType.BINARY:
- case PropertyType.STRING:
- case PropertyType.NAME:
- return PropertyValues.newPath(v);
- case PropertyType.URI:
- URI uri = URI.create(v);
- if (uri.isAbsolute()) {
- // uri contains scheme
- throw new IllegalArgumentException(
- "Failed to convert URI " + v + " to PATH");
- }
- String p = uri.getPath();
- if (p.startsWith("./")) {
- p = p.substring(2);
- }
- return PropertyValues.newPath(v);
- }
- break;
- case PropertyType.NAME:
- switch (sourceType) {
- case PropertyType.BINARY:
case PropertyType.STRING:
+ return PropertyValues.newString(v);
case PropertyType.PATH:
- // path might be a name (relative path of length 1)
- // try conversion via string
- return PropertyValues.newName(getOakPath(v, mapper));
- case PropertyType.URI:
- URI uri = URI.create(v);
- if (uri.isAbsolute()) {
- // uri contains scheme
- throw new IllegalArgumentException(
- "Failed to convert URI " + v + " to PATH");
- }
- String p = uri.getPath();
- if (p.startsWith("./")) {
- p = p.substring(2);
- }
- return PropertyValues.newName(getOakPath(v, mapper));
- }
- break;
- case PropertyType.REFERENCE:
- switch (sourceType) {
- case PropertyType.BINARY:
- case PropertyType.STRING:
- case PropertyType.WEAKREFERENCE:
- return PropertyValues.newReference(v);
- }
- break;
- case PropertyType.WEAKREFERENCE:
- switch (sourceType) {
- case PropertyType.BINARY:
- case PropertyType.STRING:
- case PropertyType.REFERENCE:
- return PropertyValues.newWeakReference(v);
- }
- break;
- case PropertyType.URI:
- switch (sourceType) {
- case PropertyType.BINARY:
- case PropertyType.STRING:
- return PropertyValues.newUri(v);
+ switch (sourceType) {
+ case PropertyType.BINARY:
+ case PropertyType.STRING:
+ case PropertyType.NAME:
+ return PropertyValues.newPath(v);
+ case PropertyType.URI:
+ URI uri = URI.create(v);
+ if (uri.isAbsolute()) {
+ // uri contains scheme
+ throw new IllegalArgumentException(
+ "Failed to convert URI " + v + " to PATH");
+ }
+ String p = uri.getPath();
+ if (p.startsWith("./")) {
+ p = p.substring(2);
+ }
+ return PropertyValues.newPath(v);
+ }
+ break;
case PropertyType.NAME:
- // prefix name with "./" (JCR 2.0 spec 3.6.4.8)
- return PropertyValues.newUri("./" + v);
- case PropertyType.PATH:
- // prefix name with "./" (JCR 2.0 spec 3.6.4.9)
- return PropertyValues.newUri("./" + v);
- }
+ switch (sourceType) {
+ case PropertyType.BINARY:
+ case PropertyType.STRING:
+ case PropertyType.PATH:
+ // path might be a name (relative path of length 1)
+ // try conversion via string
+ return PropertyValues.newName(getOakPath(v, mapper));
+ case PropertyType.URI:
+ URI uri = URI.create(v);
+ if (uri.isAbsolute()) {
+ // uri contains scheme
+ throw new IllegalArgumentException(
+ "Failed to convert URI " + v + " to PATH");
+ }
+ String p = uri.getPath();
+ if (p.startsWith("./")) {
+ p = p.substring(2);
+ }
+ return PropertyValues.newName(getOakPath(v, mapper));
+ }
+ break;
+ case PropertyType.REFERENCE:
+ switch (sourceType) {
+ case PropertyType.BINARY:
+ case PropertyType.STRING:
+ case PropertyType.WEAKREFERENCE:
+ return PropertyValues.newReference(v);
+ }
+ break;
+ case PropertyType.WEAKREFERENCE:
+ switch (sourceType) {
+ case PropertyType.BINARY:
+ case PropertyType.STRING:
+ case PropertyType.REFERENCE:
+ return PropertyValues.newWeakReference(v);
+ }
+ break;
+ case PropertyType.URI:
+ switch (sourceType) {
+ case PropertyType.BINARY:
+ case PropertyType.STRING:
+ return PropertyValues.newUri(v);
+ case PropertyType.NAME:
+ // prefix name with "./" (JCR 2.0 spec 3.6.4.8)
+ return PropertyValues.newUri("./" + v);
+ case PropertyType.PATH:
+ // prefix name with "./" (JCR 2.0 spec 3.6.4.9)
+ return PropertyValues.newUri("./" + v);
+ }
}
throw new IllegalArgumentException(
"Unsupported conversion from property type " +
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=1797929&r1=1797928&r2=1797929&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
Wed Jun 7 14:08:50 2017
@@ -144,8 +144,8 @@ public class ComparisonImpl extends Cons
@Override
public void restrict(FilterImpl f) {
PropertyValue v = operand2.currentValue();
- if (!PropertyValues.canConvert(
- operand2.getPropertyType(),
+ if (!ValueConverter.canConvert(
+ operand2.getPropertyType(),
operand1.getPropertyType())) {
throw new IllegalArgumentException(
"Unsupported conversion from property type " +
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/InImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/InImpl.java?rev=1797929&r1=1797928&r2=1797929&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/InImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/InImpl.java
Wed Jun 7 14:08:50 2017
@@ -29,6 +29,7 @@ import java.util.Set;
import javax.jcr.PropertyType;
import org.apache.jackrabbit.oak.api.PropertyValue;
+import org.apache.jackrabbit.oak.query.ValueConverter;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
import org.apache.jackrabbit.oak.plugins.memory.PropertyValues;
@@ -133,8 +134,8 @@ public class InImpl extends ConstraintIm
public void restrict(FilterImpl f) {
ArrayList<PropertyValue> list = new ArrayList<PropertyValue>();
for (StaticOperandImpl s : operand2) {
- if (!PropertyValues.canConvert(
- s.getPropertyType(),
+ if (!ValueConverter.canConvert(
+ s.getPropertyType(),
operand1.getPropertyType())) {
throw new IllegalArgumentException(
"Unsupported conversion from property type " +
Modified:
jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/PropertyValues.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/PropertyValues.java?rev=1797929&r1=1797928&r2=1797929&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/PropertyValues.java
(original)
+++
jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/PropertyValues.java
Wed Jun 7 14:08:50 2017
@@ -227,45 +227,4 @@ public final class PropertyValues {
// --
- public static boolean canConvert(int sourceType, int targetType) {
- if (sourceType == targetType ||
- sourceType == PropertyType.UNDEFINED ||
- targetType == PropertyType.UNDEFINED) {
- return true;
- }
- switch (targetType) {
- case PropertyType.BINARY:
- case PropertyType.BOOLEAN:
- case PropertyType.DATE:
- case PropertyType.DOUBLE:
- case PropertyType.LONG:
- case PropertyType.DECIMAL:
- case PropertyType.STRING:
- return true;
- case PropertyType.NAME:
- case PropertyType.PATH:
- case PropertyType.URI:
- switch (sourceType) {
- case PropertyType.NAME:
- case PropertyType.PATH:
- case PropertyType.URI:
- return true;
- }
- break;
- case PropertyType.REFERENCE:
- case PropertyType.WEAKREFERENCE:
- switch (sourceType) {
- case PropertyType.REFERENCE:
- case PropertyType.WEAKREFERENCE:
- return true;
- }
- break;
- }
- if (sourceType == PropertyType.STRING ||
- sourceType == PropertyType.BINARY) {
- return true;
- }
- return false;
- }
-
}