Index: src/main/java/org/apache/jackrabbit/rmi/value/ReferenceValue.java
===================================================================
--- src/main/java/org/apache/jackrabbit/rmi/value/ReferenceValue.java (revision 1301440)
+++ src/main/java/org/apache/jackrabbit/rmi/value/ReferenceValue.java (working copy)
@@ -22,34 +22,36 @@
/**
* The ReferenceValue class implements the committed value state
- * for Reference values as a part of the State design pattern (Gof) used by
+ * for (weak) Reference values as a part of the State design pattern (Gof) used by
* this package.
*
* @since 0.16.4.1
*/
public class ReferenceValue extends AbstractValue {
- /**
+ /**
* Serial version UID.
*/
- private static final long serialVersionUID = 5245358709465803351L;
+ private static final long serialVersionUID = -7822995403591468011L;
/** The reference value */
private final String value;
+ private final boolean weak;
/**
* Creates an instance for the given reference value.
*/
- protected ReferenceValue(String value) throws ValueFormatException {
+ protected ReferenceValue(String value, boolean weak) throws ValueFormatException {
// TODO: check syntax
this.value = value;
+ this.weak = weak;
}
/**
- * Returns PropertyType.REFERENCE.
+ * Returns PropertyType.REFERENCE or PropertyType.WEAKREFERENCE.
*/
public int getType() {
- return PropertyType.REFERENCE;
+ return weak ? PropertyType.WEAKREFERENCE : PropertyType.REFERENCE;
}
/**
Index: src/main/java/org/apache/jackrabbit/rmi/value/SerialValueFactory.java
===================================================================
--- src/main/java/org/apache/jackrabbit/rmi/value/SerialValueFactory.java (revision 1301440)
+++ src/main/java/org/apache/jackrabbit/rmi/value/SerialValueFactory.java (working copy)
@@ -181,7 +181,9 @@
case PropertyType.PATH:
return new PathValue(value.getString());
case PropertyType.REFERENCE:
- return new ReferenceValue(value.getString());
+ return new ReferenceValue(value.getString(), false);
+ case PropertyType.WEAKREFERENCE:
+ return new ReferenceValue(value.getString(), true);
case PropertyType.STRING:
return createValue(value.getString());
default:
@@ -246,7 +248,7 @@
public Value createValue(Node value, boolean weak)
throws RepositoryException {
- return new ReferenceValue(value.getUUID());
+ return new ReferenceValue(value.getUUID(), weak);
}
}