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 ch...@apache.org on 2014/10/14 17:26:38 UTC
svn commit: r1631789 - in /jackrabbit/oak/branches/1.0: ./
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/
oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/value/ ...
Author: chetanm
Date: Tue Oct 14 15:26:37 2014
New Revision: 1631789
URL: http://svn.apache.org/r1631789
Log:
OAK-2052 - Node.setProperty(String, Value) fails for binary non ValueImpls
Added:
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/BinaryBasedBlob.java
- copied unchanged from r1621115, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/BinaryBasedBlob.java
jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/value/
- copied from r1621115, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/value/
Modified:
jackrabbit/oak/branches/1.0/ (props changed)
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/BinaryPropertyState.java
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/ValueImpl.java
jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
Merged /jackrabbit/oak/trunk:r1621115
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/BinaryPropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/BinaryPropertyState.java?rev=1631789&r1=1631788&r2=1631789&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/BinaryPropertyState.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/BinaryPropertyState.java Tue Oct 14 15:26:37 2014
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.plugin
import static com.google.common.base.Preconditions.checkNotNull;
import javax.annotation.Nonnull;
+import javax.jcr.RepositoryException;
import javax.jcr.Value;
import org.apache.jackrabbit.oak.api.Blob;
@@ -78,7 +79,7 @@ public class BinaryPropertyState extends
* @return The new property state of type {@link Type#BINARY}
*/
public static PropertyState binaryProperty(
- @Nonnull String name, @Nonnull Value value) {
+ @Nonnull String name, @Nonnull Value value) throws RepositoryException {
return new BinaryPropertyState(name, ValueImpl.getBlob(value));
}
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/ValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/ValueImpl.java?rev=1631789&r1=1631788&r2=1631789&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/ValueImpl.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/ValueImpl.java Tue Oct 14 15:26:37 2014
@@ -41,9 +41,12 @@ import org.apache.jackrabbit.oak.namepat
*/
public class ValueImpl implements JackrabbitValue {
- public static Blob getBlob(Value value) {
- checkState(value instanceof ValueImpl);
- return ((ValueImpl) value).getBlob();
+ public static Blob getBlob(Value value) throws RepositoryException {
+ if (value instanceof ValueImpl) {
+ return ((ValueImpl) value).getBlob();
+ } else {
+ return new BinaryBasedBlob(value.getBinary());
+ }
}
private final PropertyState propertyState;
Modified: jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1631789&r1=1631788&r2=1631789&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (original)
+++ jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Tue Oct 14 15:26:37 2014
@@ -75,19 +75,14 @@ import org.apache.jackrabbit.commons.jac
import org.apache.jackrabbit.core.data.RandomInputStream;
import org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl;
import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
+import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
+import org.apache.jackrabbit.spi.commons.value.QValueFactoryImpl;
+import org.apache.jackrabbit.spi.commons.value.QValueValue;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
-import static java.util.Arrays.asList;
-import static org.apache.jackrabbit.commons.JcrUtils.getChildNodes;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
-
public class RepositoryTest extends AbstractRepositoryTest {
private static final String TEST_NODE = "test_node";
private static final String TEST_PATH = '/' + TEST_NODE;
@@ -967,6 +962,18 @@ public class RepositoryTest extends Abst
}
@Test
+ public void addAlienBinaryProperty() throws RepositoryException, IOException {
+ Session session = getAdminSession();
+ QValue qValue = QValueFactoryImpl.getInstance().create("binaryValue".getBytes());
+ Value value = new QValueValue(qValue, new DefaultNamePathResolver(session));
+ getNode(TEST_PATH).setProperty("binary", value);
+ session.save();
+
+ Value valueAgain = getNode(TEST_PATH).getProperty("binary").getValue();
+ assertEqualStream(value.getBinary().getStream(), valueAgain.getBinary().getStream());
+ }
+
+ @Test
public void addMultiValuedBinary() throws RepositoryException {
Node parentNode = getNode(TEST_PATH);
Value[] values = new Value[2];