Index: src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java (revision 802697) +++ src/main/java/org/apache/jackrabbit/core/value/InternalValueFactory.java (working copy) @@ -18,39 +18,27 @@ import org.apache.jackrabbit.core.data.DataStore; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.spi.Name; -import org.apache.jackrabbit.spi.Path; import org.apache.jackrabbit.spi.QValue; import org.apache.jackrabbit.spi.QValueFactory; -import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl; -import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl; +import org.apache.jackrabbit.spi.Name; +import org.apache.jackrabbit.spi.Path; import org.apache.jackrabbit.spi.commons.value.AbstractQValueFactory; -import org.apache.jackrabbit.util.ISO8601; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import javax.jcr.PropertyType; import javax.jcr.RepositoryException; -import javax.jcr.ValueFormatException; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; import java.io.FileInputStream; import java.util.Calendar; -import java.math.BigDecimal; import java.net.URI; +import java.math.BigDecimal; /** - * InternalValueFactory... + * InternalValueFactory implements a {@link QValueFactory} that + * creates {@link InternalValue} instances for binary values. */ public final class InternalValueFactory extends AbstractQValueFactory { - /** - * logger instance - */ - private static final Logger log = LoggerFactory.getLogger(InternalValueFactory.class); - private static final QValueFactory INSTANCE = new InternalValueFactory(null); private final DataStore store; @@ -63,56 +51,6 @@ return INSTANCE; } - public QValue create(String value, int type) throws ValueFormatException, RepositoryException { - if (value == null) { - throw new IllegalArgumentException("Cannot create QValue from null value."); - } - try { - switch (type) { - case PropertyType.BOOLEAN: - return InternalValue.create(Boolean.valueOf(value).booleanValue()); - case PropertyType.DATE: { - Calendar cal = ISO8601.parse(value); - if (cal == null) { - throw new ValueFormatException("not a valid date: " + value); - } - return InternalValue.create(cal); - } - case PropertyType.DOUBLE: - return InternalValue.create(Double.parseDouble(value)); - case PropertyType.LONG: - return InternalValue.create(Long.parseLong(value)); - case PropertyType.DECIMAL: - return InternalValue.create(new BigDecimal(value)); - case PropertyType.PATH: - return InternalValue.create(PathFactoryImpl.getInstance().create(value)); - case PropertyType.NAME: - return InternalValue.create(NameFactoryImpl.getInstance().create(value)); - case PropertyType.STRING: - return InternalValue.create(value); - case PropertyType.URI: - return InternalValue.create(URI.create(value)); - case PropertyType.REFERENCE: - return InternalValue.create(new NodeId(value)); - case PropertyType.WEAKREFERENCE: - return InternalValue.create(new NodeId(value), true); - case PropertyType.BINARY: - return InternalValue.create(value.getBytes("UTF-8")); - // default: invalid type specified -> see below. - } - } catch (NumberFormatException ex) { - // given String value cannot be converted to Decimal - throw new ValueFormatException(ex); - } catch (IllegalArgumentException ex) { - // given String value cannot be converted to Long/Double/Path/Name - throw new ValueFormatException(ex); - } catch (UnsupportedEncodingException ex) { - throw new RepositoryException(ex); - } - - // invalid type specified: - throw new IllegalArgumentException("illegal type " + type); } - public QValue create(Calendar value) throws RepositoryException { return InternalValue.create(value); } @@ -161,4 +99,12 @@ InputStream in = new FileInputStream(value); return InternalValue.createTemporary(in); } + + protected QValue createReference(String ref, boolean weak) { + return InternalValue.create(new NodeId(ref), weak); + } + + protected QValue createString(String value) { + return InternalValue.create(value); + } } \ No newline at end of file