You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2009/05/28 15:03:46 UTC
svn commit: r779590 - in /jackrabbit/trunk:
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/
jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/
jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/c...
Author: stefan
Date: Thu May 28 13:03:45 2009
New Revision: 779590
URL: http://svn.apache.org/viewvc?rev=779590&view=rev
Log:
JCR-1609: new Property Types (WIP...)
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/QValueFactoryLogger.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueFactoryImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueValue.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/ValueFactoryQImpl.java
jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QValueFactory.java
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java Thu May 28 13:03:45 2009
@@ -133,6 +133,14 @@
return InternalValue.create(value);
}
+ public QValue create(URI value) throws RepositoryException {
+ return InternalValue.create(value);
+ }
+
+ public QValue create(BigDecimal value) throws RepositoryException {
+ return InternalValue.create(value);
+ }
+
public QValue create(byte[] value) throws RepositoryException {
return InternalValue.create(value);
}
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/QValueFactoryLogger.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/QValueFactoryLogger.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/QValueFactoryLogger.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/QValueFactoryLogger.java Thu May 28 13:03:45 2009
@@ -20,6 +20,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;
+import java.net.URI;
+import java.math.BigDecimal;
import javax.jcr.RepositoryException;
@@ -102,6 +104,20 @@
}}, "create(Path)", new Object[]{value});
}
+ public QValue create(final URI value) throws RepositoryException {
+ return (QValue) execute(new Callable() {
+ public Object call() throws RepositoryException {
+ return qValueFactory.create(value);
+ }}, "create(URI)", new Object[]{value});
+ }
+
+ public QValue create(final BigDecimal value) throws RepositoryException {
+ return (QValue) execute(new Callable() {
+ public Object call() throws RepositoryException {
+ return qValueFactory.create(value);
+ }}, "create(BigDecimal)", new Object[]{value});
+ }
+
public QValue create(final byte[] value) throws RepositoryException {
return (QValue) execute(new Callable() {
public Object call() throws RepositoryException {
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/AbstractQValue.java Thu May 28 13:03:45 2009
@@ -209,7 +209,7 @@
return cal;
} else if (type == PropertyType.LONG) {
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00"));
- cal.setTimeInMillis(((Long) val).longValue());
+ cal.setTimeInMillis((Long) val);
return cal;
} else if (type == PropertyType.DECIMAL) {
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00"));
@@ -231,6 +231,12 @@
public BigDecimal getDecimal() throws RepositoryException {
if (type == PropertyType.DECIMAL) {
return (BigDecimal) val;
+ } else if (type == PropertyType.DOUBLE) {
+ return new BigDecimal((Double) val);
+ } else if (type == PropertyType.LONG) {
+ return new BigDecimal((Long) val);
+ } else if (type == PropertyType.DATE) {
+ return new BigDecimal(((Calendar) val).getTimeInMillis());
} else {
try {
return new BigDecimal(getString());
@@ -260,7 +266,9 @@
*/
public double getDouble() throws RepositoryException {
if (type == PropertyType.DOUBLE) {
- return ((Double) val).doubleValue();
+ return (Double) val;
+ } else if (type == PropertyType.LONG) {
+ return ((Long) val).doubleValue();
} else if (type == PropertyType.DATE) {
return ((Calendar) val).getTimeInMillis();
} else if (type == PropertyType.DECIMAL) {
@@ -279,7 +287,7 @@
*/
public long getLong() throws RepositoryException {
if (type == PropertyType.LONG) {
- return ((Long) val).longValue();
+ return (Long) val;
} else if (type == PropertyType.DOUBLE) {
return ((Double) val).longValue();
} else if (type == PropertyType.DECIMAL) {
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueFactoryImpl.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueFactoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueFactoryImpl.java Thu May 28 13:03:45 2009
@@ -85,12 +85,17 @@
return new QValueImpl(Double.valueOf(value));
case PropertyType.LONG:
return new QValueImpl(Long.valueOf(value));
+ case PropertyType.DECIMAL:
+ return new QValueImpl(new BigDecimal(value));
+ case PropertyType.URI:
+ return new QValueImpl(URI.create(value));
case PropertyType.PATH:
return new QValueImpl(PATH_FACTORY.create(value));
case PropertyType.NAME:
return new QValueImpl(NAME_FACTORY.create(value));
case PropertyType.STRING:
case PropertyType.REFERENCE:
+ case PropertyType.WEAKREFERENCE:
return new QValueImpl(value, type);
case PropertyType.BINARY:
return new BinaryQValue(value.getBytes(DEFAULT_ENCODING));
@@ -164,6 +169,26 @@
}
/**
+ * @see QValueFactory#create(URI)
+ */
+ public QValue create(URI value) {
+ if (value == null) {
+ throw new IllegalArgumentException("Cannot create QValue from null value.");
+ }
+ return new QValueImpl(value);
+ }
+
+ /**
+ * @see QValueFactory#create(URI)
+ */
+ public QValue create(BigDecimal value) {
+ if (value == null) {
+ throw new IllegalArgumentException("Cannot create QValue from null value.");
+ }
+ return new QValueImpl(value);
+ }
+
+ /**
* @see QValueFactory#create(byte[])
*/
public QValue create(byte[] value) {
@@ -222,6 +247,10 @@
super(value);
}
+ private QValueImpl(BigDecimal value) {
+ super(value);
+ }
+
private QValueImpl(Boolean value) {
super(value);
}
@@ -234,6 +263,10 @@
super(value);
}
+ private QValueImpl(URI value) {
+ super(value);
+ }
+
//---------------------------------------------------------< QValue >---
/**
* @see QValue#getString()
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueValue.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueValue.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/QValueValue.java Thu May 28 13:03:45 2009
@@ -94,8 +94,16 @@
* @see javax.jcr.Value#getDecimal()
*/
public BigDecimal getDecimal() throws ValueFormatException, IllegalStateException, RepositoryException {
- // TODO
- throw new RuntimeException("Not implemented yet, see JCR-1609");
+ setValueConsumed();
+ switch (getType()) {
+ case PropertyType.DECIMAL:
+ case PropertyType.DOUBLE:
+ case PropertyType.LONG:
+ case PropertyType.DATE:
+ return qvalue.getDecimal();
+ default:
+ throw new ValueFormatException("incompatible type " + PropertyType.nameFromValue(qvalue.getType()));
+ }
}
/**
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/ValueFactoryQImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/ValueFactoryQImpl.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/ValueFactoryQImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/value/ValueFactoryQImpl.java Thu May 28 13:03:45 2009
@@ -165,8 +165,7 @@
* {@inheritDoc}
*/
public Value createValue(Node value) throws RepositoryException {
- QValue qvalue = qfactory.create(value.getUUID(), PropertyType.REFERENCE);
- return new QValueValue(qvalue, resolver);
+ return createValue(value, false);
}
/**
@@ -211,12 +210,16 @@
}
public Value createValue(BigDecimal value) {
- // TODO
- throw new RuntimeException("Not implemented yet, see JCR-1609");
+ try {
+ QValue qvalue = qfactory.create(value);
+ return new QValueValue(qvalue, resolver);
+ } catch (RepositoryException ex) {
+ throw new RuntimeException(ex);
+ }
}
public Value createValue(Node value, boolean weak) throws RepositoryException {
- // TODO
- throw new RuntimeException("Not implemented yet, see JCR-1609");
+ QValue qvalue = qfactory.create(value.getUUID(), weak ? PropertyType.WEAKREFERENCE : PropertyType.REFERENCE);
+ return new QValueValue(qvalue, resolver);
}
}
Modified: jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QValueFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QValueFactory.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QValueFactory.java (original)
+++ jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/QValueFactory.java Thu May 28 13:03:45 2009
@@ -20,6 +20,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;
+import java.math.BigDecimal;
+import java.net.URI;
import javax.jcr.RepositoryException;
import javax.jcr.ValueFormatException;
@@ -97,6 +99,21 @@
*/
public QValue create(Path value) throws RepositoryException;
+ /**
+ * Create a new <code>QValue</code> with type {@link javax.jcr.PropertyType#DECIMAL}.
+ *
+ * @param value A non-null <code>BigDecimal</code>.
+ * @return a new <code>QValue</code>.
+ */
+ public QValue create(BigDecimal value) throws RepositoryException;
+
+ /**
+ * Create a new <code>QValue</code> with type {@link javax.jcr.PropertyType#URI}.
+ *
+ * @param value A non-null <code>URI</code>.
+ * @return a new <code>QValue</code>.
+ */
+ public QValue create(URI value) throws RepositoryException;
/**
* Create a new <code>QValue</code> with type {@link javax.jcr.PropertyType#BINARY}.
Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java?rev=779590&r1=779589&r2=779590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java Thu May 28 13:03:45 2009
@@ -137,9 +137,14 @@
return new QValueImpl(NAME_FACTORY.create(value));
case PropertyType.STRING:
case PropertyType.REFERENCE:
+ case PropertyType.WEAKREFERENCE:
return new QValueImpl(value, type);
case PropertyType.BINARY:
return new BinaryQValue(value.getBytes(DEFAULT_ENCODING));
+ case PropertyType.DECIMAL:
+ case PropertyType.URI:
+ // TODO implement
+ throw new UnsupportedOperationException("Not implemented yet, see JCR-1609: new Property Types");
}
} catch (IllegalArgumentException ex) {
// given String value cannot be converted to Long/Double/Path/Name
@@ -185,6 +190,22 @@
}
/**
+ * @see QValueFactory#create(URI)
+ */
+ public QValue create(URI value) {
+ // TODO implement
+ throw new UnsupportedOperationException("Not implemented yet, see JCR-1609: new Property Types");
+ }
+
+ /**
+ * @see QValueFactory#create(BigDecimal)
+ */
+ public QValue create(BigDecimal value) {
+ // TODO implement
+ throw new UnsupportedOperationException("Not implemented yet, see JCR-1609: new Property Types");
+ }
+
+ /**
* @see QValueFactory#create(Name)
*/
public QValue create(Name value) {