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 2012/04/25 10:45:57 UTC
svn commit: r1330157 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/core/
oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/
oak-core/src/main/java/org/apache/jackrabbit/oak/util/
oak-core/src/test/java/org/apache/ja...
Author: angela
Date: Wed Apr 25 08:45:56 2012
New Revision: 1330157
URL: http://svn.apache.org/viewvc?rev=1330157&view=rev
Log:
OAK-16 : Proper ValueFactory implementation and Value handling (WIP)
OAK-33 : Values in oak-core (WIP)
- add support for 'special' property types
- add support for binaries
- move conversion between jsop + corevalue to a utility
- remove @ignore for some special property types in RepositoryTest
- move jcr-value related stuff to value package
TODO:
- type-hint with value arrays
- empty arrays
- (weak) reference properties
- enable TCK test and fix issues that may come up then
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/CoreValueUtil.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/CoreValueUtilTest.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/DummyNamePathResolver.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java
- copied, changed from r1329741, jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueFactoryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java
- copied, changed from r1329727, jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueImpl.java
Removed:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueFactoryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueImpl.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueFactoryImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.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/query/QueryResultImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/RowImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueFactoryImpl.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueFactoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueFactoryImpl.java Wed Apr 25 08:45:56 2012
@@ -77,7 +77,6 @@ public class CoreValueFactoryImpl implem
@Override
public CoreValue createValue(String value, int type) {
- // TODO check again...
if (type == PropertyType.BINARY) {
BinaryValue bv = new BinaryValue(value, mk);
return new CoreValueImpl(bv);
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueImpl.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/CoreValueImpl.java Wed Apr 25 08:45:56 2012
@@ -75,13 +75,25 @@ class CoreValueImpl implements CoreValue
case PropertyType.WEAKREFERENCE:
case PropertyType.URI:
this.value = value;
- this.type = type;
break;
-
+ case PropertyType.BOOLEAN:
+ this.value = Boolean.parseBoolean(value);
+ break;
+ case PropertyType.DOUBLE:
+ this.value = Double.parseDouble(value);
+ break;
+ case PropertyType.DECIMAL:
+ this.value = new BigDecimal(value);
+ break;
+ case PropertyType.LONG:
+ this.value = Long.parseLong(value);
+ break;
default:
+ // undefined property type or binary.
+ // NOTE: binary must be constructed using BinaryValue -> see CoreValueFactory
throw new IllegalArgumentException("Illegal type " + PropertyType.nameFromValue(type));
}
-
+ this.type = type;
}
/**
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java Wed Apr 25 08:45:56 2012
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.mk.json.Jso
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.CoreValueFactory;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.util.CoreValueUtil;
import java.util.ArrayList;
import java.util.Iterator;
@@ -95,9 +96,9 @@ class KernelNodeState extends AbstractNo
}
childNodes.put(name, new KernelNodeState(kernel, valueFactory, childPath, revision));
} else if (reader.matches('[')) {
- properties.put(name, new KernelPropertyState(name, readArray(reader)));
+ properties.put(name, new KernelPropertyState(name, CoreValueUtil.listFromJsopReader(reader, valueFactory)));
} else {
- CoreValue cv = readValue(reader);
+ CoreValue cv = CoreValueUtil.fromJsopReader(reader, valueFactory);
properties.put(name, new KernelPropertyState(name, cv));
}
} while (reader.matches(','));
@@ -219,34 +220,9 @@ class KernelNodeState extends AbstractNo
private List<CoreValue> readArray(JsopReader reader) {
List<CoreValue> values = new ArrayList<CoreValue>();
while (!reader.matches(']')) {
- values.add(readValue(reader));
+ values.add(CoreValueUtil.fromJsopReader(reader, valueFactory));
reader.matches(',');
}
return values;
}
-
- private CoreValue readValue(JsopReader reader) {
- CoreValue value;
- // TODO properly handle property types not covered by JSON: Binary, double, decimal, date, name, path, (weak)ref, uri
- if (reader.matches(JsopTokenizer.NUMBER)) {
- String number = reader.getToken();
- // TODO: property deal with different number types (double, BigDecimal)
- if (number.indexOf('.') > -1) {
- value = valueFactory.createValue(Double.valueOf(number));
- } else {
- value = valueFactory.createValue(Long.valueOf(number));
- }
- } else if (reader.matches(JsopTokenizer.TRUE)) {
- value = valueFactory.createValue(true);
- } else if (reader.matches(JsopTokenizer.FALSE)) {
- value = valueFactory.createValue(false);
- } else if (reader.matches(JsopTokenizer.STRING)) {
- // TODO: deal with other property types
- value = valueFactory.createValue(reader.getToken());
- } else {
- throw new IllegalArgumentException("Unexpected token: " + reader.getToken());
- }
- return value;
- }
-
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java Wed Apr 25 08:45:56 2012
@@ -19,14 +19,13 @@
package org.apache.jackrabbit.oak.kernel;
import org.apache.jackrabbit.mk.api.MicroKernelException;
-import org.apache.jackrabbit.mk.json.JsonBuilder;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.kernel.KernelTree.Listener;
+import org.apache.jackrabbit.oak.util.CoreValueUtil;
-import javax.jcr.PropertyType;
import java.util.List;
import static org.apache.jackrabbit.mk.util.PathUtils.elements;
@@ -160,33 +159,6 @@ public class KernelRoot implements Root
return path.isEmpty() ? name : path + '/' + name;
}
- private static String encode(CoreValue value) {
- switch (value.getType()) {
- // TODO: deal with all property types.
- case PropertyType.BOOLEAN: return JsonBuilder.encode(value.getBoolean());
- case PropertyType.LONG: return JsonBuilder.encode(value.getLong());
- case PropertyType.DOUBLE: return JsonBuilder.encode(value.getDouble());
- case PropertyType.BINARY: return null; // TODO implement encoding of binaries
- case PropertyType.STRING: return JsonBuilder.encode(value.getString());
- default: return JsonBuilder.encode(value.getString());
- //case NULL: return "null"; // TODO
- }
- }
-
- private static String encode(Iterable<CoreValue> values) {
- StringBuilder sb = new StringBuilder();
- sb.append('[');
- for (CoreValue cv : values) {
- sb.append(encode(cv));
- sb.append(',');
- }
- if (sb.length() > 1) {
- sb.deleteCharAt(sb.length() - 1);
- }
- sb.append(']');
- return sb.toString();
- }
-
/**
* This {@code Listener} implementation records all changes to
* a associated tree as JSOP.
@@ -206,12 +178,12 @@ public class KernelRoot implements Root
@Override
public void setProperty(KernelTree tree, String name, CoreValue value) {
- jsop.append("^\"").append(path(tree, name)).append("\":").append(encode(value));
+ jsop.append("^\"").append(path(tree, name)).append("\":").append(CoreValueUtil.toJsonValue(value));
}
@Override
public void setProperty(KernelTree tree, String name, List<CoreValue> values) {
- jsop.append("^\"").append(path(tree, name)).append("\":").append(encode(values));
+ jsop.append("^\"").append(path(tree, name)).append("\":").append(CoreValueUtil.toJsonArray(values));
}
@Override
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/CoreValueUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/CoreValueUtil.java?rev=1330157&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/CoreValueUtil.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/CoreValueUtil.java Wed Apr 25 08:45:56 2012
@@ -0,0 +1,163 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.util;
+
+import org.apache.jackrabbit.mk.json.JsonBuilder;
+import org.apache.jackrabbit.mk.json.JsopReader;
+import org.apache.jackrabbit.mk.json.JsopTokenizer;
+import org.apache.jackrabbit.oak.api.CoreValue;
+import org.apache.jackrabbit.oak.api.CoreValueFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.PropertyType;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * CoreValueUtil...
+ *
+ * TODO: review if this should be added to CoreValue/*Factory interfaces
+ */
+public class CoreValueUtil {
+
+ /**
+ * logger instance
+ */
+ private static final Logger log = LoggerFactory.getLogger(CoreValueUtil.class);
+
+ private static final Map<Integer, String> TYPE2HINT = new HashMap<Integer, String>();
+ private static final Map<String, Integer> HINT2TYPE = new HashMap<String, Integer>();
+ static {
+ for (int type = PropertyType.UNDEFINED; type <= PropertyType.DECIMAL; type++) {
+ String hint = PropertyType.nameFromValue(type).substring(0,3).toLowerCase();
+ TYPE2HINT.put(type, hint);
+ HINT2TYPE.put(hint, type);
+ }
+ }
+
+ public static String toJsonValue(CoreValue value) {
+ String jsonString;
+ switch (value.getType()) {
+ case PropertyType.BOOLEAN:
+ jsonString = JsonBuilder.encode(value.getBoolean());
+ break;
+ case PropertyType.LONG:
+ jsonString = JsonBuilder.encode(value.getLong());
+ break;
+ case PropertyType.STRING:
+ String str = value.getString();
+ if (startsWithHint(str)) {
+ jsonString = buildJsonStringWithType(value);
+ } else {
+ jsonString = JsonBuilder.encode(value.getString());
+ }
+ break;
+ default:
+ // any other type
+ jsonString = buildJsonStringWithType(value);
+ }
+ return jsonString;
+ }
+
+ public static String toJsonArray(Iterable<CoreValue> values) {
+ StringBuilder sb = new StringBuilder();
+ sb.append('[');
+ for (CoreValue cv : values) {
+ sb.append(toJsonValue(cv));
+ sb.append(',');
+ }
+ if (sb.length() > 1) {
+ sb.deleteCharAt(sb.length() - 1);
+ }
+ sb.append(']');
+ return sb.toString();
+ }
+
+ public static CoreValue fromJsopReader(JsopReader reader, CoreValueFactory valueFactory) {
+ CoreValue value;
+ if (reader.matches(JsopTokenizer.NUMBER)) {
+ String number = reader.getToken();
+ value = fromJsonString(number, JsopTokenizer.NUMBER, valueFactory);
+ } else if (reader.matches(JsopTokenizer.TRUE)) {
+ value = valueFactory.createValue(true);
+ } else if (reader.matches(JsopTokenizer.FALSE)) {
+ value = valueFactory.createValue(false);
+ } else if (reader.matches(JsopTokenizer.STRING)) {
+ String strValue = reader.getToken();
+ value = fromJsonString(strValue, JsopTokenizer.STRING, valueFactory);
+ } else {
+ throw new IllegalArgumentException("Unexpected token: " + reader.getToken());
+ }
+ return value;
+ }
+
+ public static List<CoreValue> listFromJsopReader(JsopReader reader, CoreValueFactory valueFactory) {
+ if (!reader.matches('[')) {
+ List<CoreValue> values = new ArrayList<CoreValue>();
+ while (!reader.matches(']')) {
+ values.add(fromJsopReader(reader, valueFactory));
+ reader.matches(',');
+ }
+ return values;
+ } else {
+ throw new IllegalArgumentException("Unexpected token: " + reader.getToken());
+ }
+ }
+
+ // TODO remove again
+ public static CoreValue fromJsonString(String jsonString, int jsopType, CoreValueFactory valueFactory) {
+ CoreValue value;
+ switch (jsopType) {
+ case JsopTokenizer.NUMBER:
+ value = valueFactory.createValue(Long.valueOf(jsonString));
+ break;
+ case JsopTokenizer.FALSE:
+ value = valueFactory.createValue(false);
+ break;
+ case JsopTokenizer.TRUE:
+ value = valueFactory.createValue(true);
+ break;
+ case JsopTokenizer.STRING:
+ if (startsWithHint(jsonString)) {
+ int type = HINT2TYPE.get(jsonString.substring(0,3));
+ value = valueFactory.createValue(jsonString.substring(4), type);
+ } else {
+ value = valueFactory.createValue(jsonString);
+ }
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid jsop type: " + jsopType);
+ }
+ return value;
+ }
+
+
+ private static String buildJsonStringWithType(CoreValue value) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(TYPE2HINT.get(value.getType()));
+ sb.append(':');
+ sb.append(value.getString());
+ return JsonBuilder.encode(sb.toString());
+ }
+
+ private static boolean startsWithHint(String jsonString) {
+ return jsonString.length() >= 4 && jsonString.charAt(3) == ':';
+ }
+}
\ No newline at end of file
Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/CoreValueUtilTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/CoreValueUtilTest.java?rev=1330157&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/CoreValueUtilTest.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/CoreValueUtilTest.java Wed Apr 25 08:45:56 2012
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.util;
+
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.mk.json.JsopTokenizer;
+import org.apache.jackrabbit.mk.simple.SimpleKernelImpl;
+import org.apache.jackrabbit.oak.api.CoreValue;
+import org.apache.jackrabbit.oak.api.CoreValueFactory;
+import org.apache.jackrabbit.oak.core.CoreValueFactoryImpl;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.PropertyType;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * CoreValueUtilTest...
+ */
+public class CoreValueUtilTest {
+
+ /**
+ * logger instance
+ */
+ private static final Logger log = LoggerFactory.getLogger(CoreValueUtilTest.class);
+
+ // TODO: use regular oak-repo setup
+ private MicroKernel microKernel;
+ private CoreValueFactory valueFactory;
+
+ private Map<CoreValue, String> map;
+
+ @Before
+ public void setUp() throws IOException {
+ microKernel = new SimpleKernelImpl("mem:" + getClass().getName());
+ valueFactory = new CoreValueFactoryImpl(microKernel);
+
+ map = new HashMap<CoreValue, String>();
+ map.put(valueFactory.createValue("abc"), "\"abc\"");
+ map.put(valueFactory.createValue("a:bc"), "\"a:bc\"");
+ map.put(valueFactory.createValue("a:bc"), "\"a:bc\"");
+ map.put(valueFactory.createValue("boo:abc"), "\"str:boo:abc\"");
+ map.put(valueFactory.createValue("str:abc"), "\"str:str:abc\"");
+ map.put(valueFactory.createValue("str:"), "\"str:str:\"");
+
+ map.put(valueFactory.createValue(true), "true");
+ map.put(valueFactory.createValue(false), "false");
+
+ map.put(valueFactory.createValue(12345), "12345");
+ map.put(valueFactory.createValue(1.23), "\"dou:1.23\"");
+ BigDecimal bd = new BigDecimal("12345678901234567890");
+ map.put(valueFactory.createValue(bd), "\"dec:" + bd.toString() + '\"');
+
+ map.put(valueFactory.createValue("2012-05-01T12:00.000:00GMT", PropertyType.DATE), "\"dat:2012-05-01T12:00.000:00GMT\"");
+
+ map.put(valueFactory.createValue("jcr:primaryType", PropertyType.NAME), "\"nam:jcr:primaryType\"");
+ map.put(valueFactory.createValue("/jcr:system", PropertyType.PATH), "\"pat:/jcr:system\"");
+
+ map.put(valueFactory.createValue("http://jackrabbit.apache.org", PropertyType.URI), "\"uri:http://jackrabbit.apache.org\"");
+
+ String uuid = UUID.randomUUID().toString();
+ map.put(valueFactory.createValue(uuid, PropertyType.REFERENCE), "\"ref:" +uuid+ '\"');
+ map.put(valueFactory.createValue(uuid, PropertyType.WEAKREFERENCE), "\"wea:" +uuid+ '\"');
+
+ CoreValue binary = valueFactory.createValue(new ByteArrayInputStream("123".getBytes()));
+ map.put(binary, "\"bin:"+ binary.getString()+ '\"');
+ }
+
+ @Test
+ public void testToJsonValue() throws IOException {
+ for (CoreValue v : map.keySet()) {
+ String json = map.get(v);
+ assertEquals(json, CoreValueUtil.toJsonValue(v));
+ }
+ }
+
+ @Test
+ public void testFromJsonValue() throws IOException {
+ for (CoreValue v : map.keySet()) {
+ String json = map.get(v);
+ int jsopType;
+ if (v.getType() == PropertyType.BOOLEAN) {
+ jsopType = (v.getBoolean()) ? JsopTokenizer.TRUE : JsopTokenizer.FALSE;
+ } else if (v.getType() == PropertyType.LONG) {
+ jsopType = JsopTokenizer.NUMBER;
+ } else {
+ jsopType = JsopTokenizer.STRING;
+ // remove quotes
+ json = json.substring(1, json.length()-1);
+ }
+ assertEquals(v, CoreValueUtil.fromJsonString(json, jsopType, valueFactory));
+ }
+ }
+}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java Wed Apr 25 08:45:56 2012
@@ -22,6 +22,7 @@ package org.apache.jackrabbit.oak.jcr;
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
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=1330157&r1=1330156&r2=1330157&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 Wed Apr 25 08:45:56 2012
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.api.Com
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl;
import org.apache.jackrabbit.oak.namepath.Paths;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java Wed Apr 25 08:45:56 2012
@@ -21,7 +21,7 @@ package org.apache.jackrabbit.oak.jcr.qu
import org.apache.jackrabbit.commons.iterator.RowIteratorAdapter;
import org.apache.jackrabbit.oak.api.Result;
import org.apache.jackrabbit.oak.api.ResultRow;
-import org.apache.jackrabbit.oak.jcr.ValueFactoryImpl;
+import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl;
import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/RowImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/RowImpl.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/RowImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/RowImpl.java Wed Apr 25 08:45:56 2012
@@ -20,7 +20,7 @@ package org.apache.jackrabbit.oak.jcr.qu
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.ResultRow;
-import org.apache.jackrabbit.oak.jcr.ValueFactoryImpl;
+import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java Wed Apr 25 08:45:56 2012
@@ -22,7 +22,7 @@ package org.apache.jackrabbit.oak.jcr.ut
import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.jcr.SessionContext;
import org.apache.jackrabbit.oak.jcr.SessionImpl;
-import org.apache.jackrabbit.oak.jcr.ValueFactoryImpl;
+import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl;
import javax.jcr.Value;
import javax.jcr.ValueFormatException;
Added: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java?rev=1330157&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java (added)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java Wed Apr 25 08:45:56 2012
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.jcr.value;
+
+import javax.jcr.Binary;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * BinaryImpl...
+ */
+class BinaryImpl implements Binary {
+
+ private final ValueImpl value;
+
+ BinaryImpl(ValueImpl value) {
+ this.value = value;
+ }
+
+ //-------------------------------------------------------------< Binary >---
+ @Override
+ public InputStream getStream() throws RepositoryException {
+ switch (value.getType()) {
+ case PropertyType.NAME:
+ case PropertyType.PATH:
+ // need to respect namespace remapping
+ try {
+ final String strValue = value.getString();
+ return new ByteArrayInputStream(strValue.getBytes("utf-8"));
+ } catch (UnsupportedEncodingException e) {
+ throw new RepositoryException(e.getMessage());
+ }
+ default:
+ return value.unwrap().getNewStream();
+ }
+ }
+
+ @Override
+ public int read(byte[] b, long position) throws IOException, RepositoryException {
+ // TODO
+ throw new UnsupportedOperationException("implementation missing");
+ }
+
+ @Override
+ public long getSize() throws RepositoryException {
+ switch (value.getType()) {
+ case PropertyType.NAME:
+ case PropertyType.PATH:
+ // need to respect namespace remapping
+ return value.getString().length();
+ default:
+ return value.unwrap().length();
+ }
+ }
+
+ @Override
+ public void dispose() {
+ // nothing to do
+ }
+}
\ No newline at end of file
Added: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/DummyNamePathResolver.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/DummyNamePathResolver.java?rev=1330157&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/DummyNamePathResolver.java (added)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/DummyNamePathResolver.java Wed Apr 25 08:45:56 2012
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.jcr.value;
+
+/**
+ * DummyNamePathResolver...
+ * TODO: replace by reasonable implementation taking namespace mappings etc. into account.
+ */
+class DummyNamePathResolver {
+ String getJCRPath(String internalPath) {
+ return internalPath;
+ }
+
+ String getInternalPath(String jcrPath) {
+ return jcrPath;
+ }
+
+ String getJCRName(String internalName) {
+ return internalName;
+ }
+
+ String getInternalName(String jcrName) {
+ return jcrName;
+ }
+}
\ No newline at end of file
Copied: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java (from r1329741, jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueFactoryImpl.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java?p2=jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java&p1=jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueFactoryImpl.java&r1=1329741&r2=1330157&rev=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueFactoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueFactoryImpl.java Wed Apr 25 08:45:56 2012
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.jcr;
+package org.apache.jackrabbit.oak.jcr.value;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.oak.api.CoreValue;
@@ -36,7 +36,7 @@ import java.math.BigDecimal;
import java.util.Calendar;
/**
- * CoreValueFactoryImpl...
+ * ValueFactoryImpl...
*/
public class ValueFactoryImpl implements ValueFactory {
@@ -153,15 +153,8 @@ public class ValueFactoryImpl implements
@Override
public Binary createBinary(InputStream stream) throws RepositoryException {
- try {
- CoreValue value = factory.createValue(stream);
- // TODO: BINARY implementation missing
- throw new UnsupportedOperationException("BINARY handling");
- } catch (IOException ex) {
- throw new RuntimeException(ex);
- } finally {
- IOUtils.closeQuietly(stream);
- }
+ ValueImpl value = (ValueImpl) createValue(stream);
+ return new BinaryImpl(value);
}
@Override
@@ -184,25 +177,4 @@ public class ValueFactoryImpl implements
CoreValue cv = factory.createValue(value.getUUID(), weak ? PropertyType.WEAKREFERENCE : PropertyType.REFERENCE);
return new ValueImpl(cv, resolver);
}
-
-
- //--------------------------------------------------------------------------
- // TODO: replace by reasonable implementation taking namespace mappings etc. into account.
- public class DummyNamePathResolver {
- String getJCRPath(String internalPath) {
- return internalPath;
- }
-
- String getInternalPath(String jcrPath) {
- return jcrPath;
- }
-
- String getJCRName(String internalName) {
- return internalName;
- }
-
- String getInternalName(String jcrName) {
- return jcrName;
- }
- }
}
\ No newline at end of file
Copied: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java (from r1329727, jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueImpl.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java?p2=jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java&p1=jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueImpl.java&r1=1329727&r2=1330157&rev=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ValueImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java Wed Apr 25 08:45:56 2012
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.jcr;
+package org.apache.jackrabbit.oak.jcr.value;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.oak.api.CoreValue;
@@ -48,16 +48,15 @@ class ValueImpl implements Value {
private final CoreValue value;
// TODO need utility to convert the internal NAME/PATH format to JCR format
- private final ValueFactoryImpl.DummyNamePathResolver resolver;
+ private final DummyNamePathResolver resolver;
/**
- * Constructs a <code>ValueImpl</code> object representing an SPI
- * <codeQValue</code>.
+ * Constructs a {@code ValueImpl} object based on a {@code CoreValue}
*
- * @param value the value object this <code>ValueImpl</code> should represent
+ * @param value the value object this {@code ValueImpl} should represent
* @param resolver
*/
- public ValueImpl(CoreValue value, ValueFactoryImpl.DummyNamePathResolver resolver) {
+ public ValueImpl(CoreValue value, DummyNamePathResolver resolver) {
this.value = value;
this.resolver = resolver;
}
@@ -70,6 +69,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getType()
*/
+ @Override
public int getType() {
return value.getType();
}
@@ -77,6 +77,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getBoolean()
*/
+ @Override
public boolean getBoolean() throws RepositoryException {
if (getType() == PropertyType.STRING || getType() == PropertyType.BINARY || getType() == PropertyType.BOOLEAN) {
return value.getBoolean();
@@ -88,6 +89,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getDate()
*/
+ @Override
public Calendar getDate() throws RepositoryException {
Calendar cal;
switch (getType()) {
@@ -109,6 +111,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getDecimal()
*/
+ @Override
public BigDecimal getDecimal() throws RepositoryException {
try {
return value.getDecimal();
@@ -120,6 +123,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getDouble()
*/
+ @Override
public double getDouble() throws RepositoryException {
try {
return value.getDouble();
@@ -131,6 +135,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getLong()
*/
+ @Override
public long getLong() throws RepositoryException {
try {
return value.getLong();
@@ -142,6 +147,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getString()
*/
+ @Override
public String getString() throws RepositoryException {
switch (getType()) {
case PropertyType.NAME :
@@ -166,6 +172,7 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getStream()
*/
+ @Override
public InputStream getStream() throws IllegalStateException, RepositoryException {
InputStream stream;
switch (getType()) {
@@ -186,8 +193,9 @@ class ValueImpl implements Value {
/**
* @see javax.jcr.Value#getBinary()
*/
+ @Override
public Binary getBinary() throws RepositoryException {
- return new BinaryImpl();
+ return new BinaryImpl(this);
}
//-------------------------------------------------------------< Object >---
@@ -210,48 +218,4 @@ class ValueImpl implements Value {
public int hashCode() {
return value.hashCode();
}
-
- //------------------------------------------------------------< Binary >----
- private class BinaryImpl implements Binary {
-
- @Override
- public InputStream getStream() throws RepositoryException {
- switch (value.getType()) {
- case PropertyType.NAME:
- case PropertyType.PATH:
- // need to respect namespace remapping
- try {
- final String strValue = getString();
- return new ByteArrayInputStream(strValue.getBytes("utf-8"));
- } catch (UnsupportedEncodingException e) {
- throw new RepositoryException(e.getMessage());
- }
- default:
- return value.getNewStream();
- }
- }
-
- @Override
- public int read(byte[] b, long position) throws IOException, RepositoryException {
- // TODO
- throw new UnsupportedOperationException("implementation missing");
- }
-
- @Override
- public long getSize() throws RepositoryException {
- switch (value.getType()) {
- case PropertyType.NAME:
- case PropertyType.PATH:
- // need to respect namespace remapping
- return getString().length();
- default:
- return value.length();
- }
- }
-
- @Override
- public void dispose() {
- // nothing to do
- }
- }
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1330157&r1=1330156&r2=1330157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Wed Apr 25 08:45:56 2012
@@ -489,14 +489,12 @@ public class RepositoryTest extends Abst
}
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addDecimalProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
addProperty(parentNode, "decimal", getSession().getValueFactory().createValue(BigDecimal.valueOf(21)));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addMultiValuedDecimal() throws RepositoryException {
Node parentNode = getNode(TEST_PATH);
@@ -522,14 +520,12 @@ public class RepositoryTest extends Abst
}
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addDateProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
addProperty(parentNode, "date", getSession().getValueFactory().createValue(Calendar.getInstance()));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addMultiValuedDate() throws RepositoryException {
Node parentNode = getNode(TEST_PATH);
@@ -557,14 +553,12 @@ public class RepositoryTest extends Abst
}
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addURIProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
addProperty(parentNode, "uri", getSession().getValueFactory().createValue("http://www.day.com/", PropertyType.URI));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addMultiValuedURI() throws RepositoryException {
Node parentNode = getNode(TEST_PATH);
@@ -590,14 +584,12 @@ public class RepositoryTest extends Abst
}
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addNameProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
addProperty(parentNode, "name", getSession().getValueFactory().createValue("jcr:something\"", PropertyType.NAME));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addMultiValuedName() throws RepositoryException {
Node parentNode = getNode(TEST_PATH);
@@ -623,14 +615,12 @@ public class RepositoryTest extends Abst
}
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addPathProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
addProperty(parentNode, "path", getSession().getValueFactory().createValue("/jcr:foo/bar\"", PropertyType.PATH));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addMultiValuedPath() throws RepositoryException {
Node parentNode = getNode(TEST_PATH);
@@ -656,7 +646,6 @@ public class RepositoryTest extends Abst
}
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addBinaryProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
@@ -665,7 +654,6 @@ public class RepositoryTest extends Abst
addProperty(parentNode, "binary", getSession().getValueFactory().createValue(bin));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addSmallBinaryProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
@@ -674,7 +662,6 @@ public class RepositoryTest extends Abst
addProperty(parentNode, "bigBinary", getSession().getValueFactory().createValue(bin));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addBigBinaryProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);
@@ -683,7 +670,6 @@ public class RepositoryTest extends Abst
addProperty(parentNode, "bigBinary", getSession().getValueFactory().createValue(bin));
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void addMultiValuedBinary() throws RepositoryException {
Node parentNode = getNode(TEST_PATH);
@@ -904,7 +890,6 @@ public class RepositoryTest extends Abst
}
}
- @Ignore // TODO implement value coding in ValueConverter
@Test
public void setDoubleNaNProperty() throws RepositoryException, IOException {
Node parentNode = getNode(TEST_PATH);