You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2012/10/23 12:44:01 UTC
svn commit: r1401243 - in /jackrabbit/branches/2.2: ./
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/
jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit...
Author: jukka
Date: Tue Oct 23 10:44:00 2012
New Revision: 1401243
URL: http://svn.apache.org/viewvc?rev=1401243&view=rev
Log:
2.2: Merged revision 1400935 (JCR-3447)
Modified:
jackrabbit/branches/2.2/ (props changed)
jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleWriter.java
jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValue.java
jackrabbit/branches/2.2/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java
Propchange: jackrabbit/branches/2.2/
------------------------------------------------------------------------------
Merged /jackrabbit/trunk:r1400935
Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleWriter.java?rev=1401243&r1=1401242&r2=1401243&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleWriter.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleWriter.java Tue Oct 23 10:44:00 2012
@@ -30,7 +30,6 @@ import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.core.data.DataStore;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.value.InternalValue;
import org.apache.jackrabbit.core.persistence.util.NodePropBundle.ChildNodeEntry;
@@ -208,27 +207,20 @@ class BundleWriter {
case PropertyType.BINARY:
try {
long size = val.getLength();
- DataStore dataStore = binding.dataStore;
- if (dataStore != null) {
- int maxMemorySize = dataStore.getMinRecordLength() - 1;
- if (size < maxMemorySize) {
- writeSmallBinary(val, state, i);
- } else {
- out.writeInt(BundleBinding.BINARY_IN_DATA_STORE);
- val.store(dataStore);
- writeString(val.toString());
- }
- break;
- }
- // special handling required for binary value:
- // spool binary value to file in blob store
- if (size < 0) {
+ if (val.isInDataStore()) {
+ out.writeInt(BundleBinding.BINARY_IN_DATA_STORE);
+ writeString(val.toString());
+ } else if (binding.dataStore != null) {
+ writeSmallBinary(val, state, i);
+ } else if (size < 0) {
log.warn("Blob has negative size. Potential loss of data. "
+ "id={} idx={}", state.getId(), String.valueOf(i));
out.writeInt(0);
values[i] = InternalValue.create(new byte[0]);
val.discard();
} else if (size > binding.getMinBlobSize()) {
+ // special handling required for binary value:
+ // spool binary value to file in blob store
out.writeInt(BundleBinding.BINARY_IN_BLOB_STORE);
String blobId = state.getBlobId(i);
if (blobId == null) {
Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValue.java?rev=1401243&r1=1401242&r2=1401243&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValue.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValue.java Tue Oct 23 10:44:00 2012
@@ -25,7 +25,6 @@ import java.math.BigDecimal;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Calendar;
-import java.util.TimeZone;
import javax.jcr.Binary;
import javax.jcr.PropertyType;
@@ -322,9 +321,7 @@ public class InternalValue extends Abstr
* @return the created value
*/
public static InternalValue createDate(String value) {
- InternalValue iv = new InternalValue(Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00")));
- iv.val = value;
- return iv;
+ return new InternalValue(value, PropertyType.DATE);
}
/**
@@ -641,23 +638,8 @@ public class InternalValue extends Abstr
}
}
- /**
- * Store a value in the data store. This will store temporary files or in-memory objects
- * in the data store.
- *
- * @param dataStore the data store
- * @throws RepositoryException
- */
- public void store(DataStore dataStore) throws RepositoryException {
- assert dataStore != null;
- assert type == PropertyType.BINARY;
- BLOBFileValue v = (BLOBFileValue) val;
- if (v instanceof BLOBInDataStore) {
- // already in the data store, OK
- return;
- }
- // store it in the data store
- val = BLOBInDataStore.getInstance(dataStore, getStream());
+ public boolean isInDataStore() {
+ return val instanceof BLOBInDataStore;
}
//-------------------------------------------------------------< QValue >---
Modified: jackrabbit/branches/2.2/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java?rev=1401243&r1=1401242&r2=1401243&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java Tue Oct 23 10:44:00 2012
@@ -42,7 +42,7 @@ public abstract class AbstractQValue imp
private static final long serialVersionUID = 6976433831974695272L;
- protected Object val;
+ protected final Object val;
protected final int type;
/**
@@ -57,7 +57,7 @@ public abstract class AbstractQValue imp
if (value == null) {
throw new IllegalArgumentException("null value");
}
- val = value;
+ this.val = value;
this.type = type;
}
@@ -74,10 +74,13 @@ public abstract class AbstractQValue imp
if (value == null) {
throw new IllegalArgumentException("null value");
}
- if (!(type == PropertyType.STRING || type == PropertyType.REFERENCE || type == PropertyType.WEAKREFERENCE)) {
+ if (!(type == PropertyType.STRING
+ || type == PropertyType.DATE // JCR-3083
+ || type == PropertyType.REFERENCE
+ || type == PropertyType.WEAKREFERENCE)) {
throw new IllegalArgumentException();
}
- val = value;
+ this.val = value;
this.type = type;
}