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); } }