You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/05/28 18:45:34 UTC
svn commit: r779658 -
/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
Author: angela
Date: Thu May 28 16:45:34 2009
New Revision: 779658
URL: http://svn.apache.org/viewvc?rev=779658&view=rev
Log:
JCR-2115 new property types
JCR-1609 new Property Types
add constructor, create methods and special getters for Decimal and URI type
Modified:
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
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=779658&r1=779657&r2=779658&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 16:45:34 2009
@@ -143,9 +143,9 @@
case PropertyType.BINARY:
return new BinaryQValue(value.getBytes(DEFAULT_ENCODING));
case PropertyType.DECIMAL:
+ return new QValueImpl(new BigDecimal(value));
case PropertyType.URI:
- // TODO implement
- throw new UnsupportedOperationException("Not implemented yet, see JCR-1609: new Property Types");
+ return new QValueImpl(URI.create(value));
}
} catch (IllegalArgumentException ex) {
// given String value cannot be converted to Long/Double/Path/Name
@@ -194,25 +194,20 @@
* @see QValueFactory#create(URI)
*/
public QValue create(URI value) {
- // TODO implement
- throw new UnsupportedOperationException("Not implemented yet, see JCR-1609: new Property Types");
+ return new QValueImpl(value);
}
/**
* @see QValueFactory#create(BigDecimal)
*/
public QValue create(BigDecimal value) {
- // TODO implement
- throw new UnsupportedOperationException("Not implemented yet, see JCR-1609: new Property Types");
+ return new QValueImpl(value);
}
/**
* @see QValueFactory#create(Name)
*/
public QValue create(Name value) {
- if (value == null) {
- throw new IllegalArgumentException("Cannot create QValue from null value.");
- }
return new QValueImpl(value);
}
@@ -220,9 +215,6 @@
* @see QValueFactory#create(Path)
*/
public QValue create(Path value) {
- if (value == null) {
- throw new IllegalArgumentException("Cannot create QValue from null value.");
- }
return new QValueImpl(value);
}
@@ -295,6 +287,14 @@
super(value);
}
+ protected QValueImpl(BigDecimal value) {
+ super(value);
+ }
+
+ protected QValueImpl(URI value) {
+ super(value);
+ }
+
//---------------------------------------------------------< QValue >---
/**
* @see QValue#getString()
@@ -316,6 +316,27 @@
}
/**
+ * @see org.apache.jackrabbit.spi.QValue#getDecimal()
+ */
+ public BigDecimal getDecimal() throws RepositoryException {
+ if (val instanceof BigDecimal) {
+ return (BigDecimal) val;
+ } else if (val instanceof Double) {
+ return new BigDecimal((Double) val);
+ } else if (val instanceof Long) {
+ return new BigDecimal((Long) val);
+ } else if (val instanceof Calendar) {
+ return new BigDecimal(((Calendar) val).getTimeInMillis());
+ } else {
+ try {
+ return new BigDecimal(getString());
+ } catch (NumberFormatException e) {
+ throw new ValueFormatException("not a valid decimal string: " + getString(), e);
+ }
+ }
+ }
+
+ /**
* @see QValue#getCalendar()
*/
public Calendar getCalendar() throws RepositoryException {
@@ -329,6 +350,10 @@
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00"));
cal.setTimeInMillis(((Long) val).longValue());
return cal;
+ } else if (val instanceof BigDecimal) {
+ Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00"));
+ cal.setTimeInMillis(((BigDecimal) val).longValue());
+ return cal;
} else {
String str = getString();
Calendar cal = ISO8601.parse(str);
@@ -354,6 +379,8 @@
public double getDouble() throws RepositoryException {
if (val instanceof Double) {
return ((Double) val).doubleValue();
+ } else if (val instanceof BigDecimal) {
+ return ((BigDecimal) val).doubleValue();
} else if (val instanceof Calendar) {
return ((Calendar) val).getTimeInMillis();
} else {
@@ -380,6 +407,8 @@
return ((Long) val).longValue();
} else if (val instanceof Double) {
return ((Double) val).longValue();
+ } else if (val instanceof BigDecimal) {
+ return ((BigDecimal) val).longValue();
} else if (val instanceof Calendar) {
return ((Calendar) val).getTimeInMillis();
} else {