diff --git oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java index f1dbb89..b4a513b 100644 --- oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java +++ oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java @@ -599,24 +599,26 @@ class JackrabbitNodeState extends AbstractNodeState { try { return value.getLength(); } catch (RepositoryException e) { warn("Unable to access blob length", e); return 0; } } + @Nonnull @Override public InputStream getNewStream() { try { return value.getStream(); } catch (RepositoryException e) { warn("Unable to access blob contents", e); return new ByteArrayInputStream(new byte[0]); } } + @Override public String getReference() { if (!useBinaryReferences) { return null; } try { Binary binary = value.getBinary(); @@ -630,14 +632,30 @@ class JackrabbitNodeState extends AbstractNodeState { binary.dispose(); } } catch (RepositoryException e) { warn("Unable to get blob reference", e); return null; } } + + @Override + public String getContentIdentity() { + final String reference = getReference(); + if (reference != null) { + final int pos = reference.indexOf(":"); + final String blobHash; + if (pos > -1) { + blobHash = reference.substring(0, pos); + } else { + blobHash = reference; + } + return blobHash + "#" + length(); + } + return super.getContentIdentity(); + } }; } private String createName(Name name) { String uri = name.getNamespaceURI(); String local = name.getLocalName(); if (uri == null || uri.isEmpty()) {