Author: jsedding
Date: Thu Feb 4 09:28:48 2016
New Revision: 1728427
URL: http://svn.apache.org/viewvc?rev=1728427&view=rev
Log:
OAK-3979 - RepositoryUpgrade skip on error must skip non existing node bundle
- catch and skip NPE
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java?rev=1728427&r1=1728426&r2=1728427&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
Thu Feb 4 09:28:48 2016
@@ -291,20 +291,24 @@ class JackrabbitNodeState extends Abstra
try {
return createChildNodeState(id, name);
} catch (ItemStateException e) {
- if (!skipOnError) {
- throw new IllegalStateException(
- "Unable to access child node " + name, e);
- }
- warn("Skipping broken child node entry " + name + " and
changing the primary type to nt:unstructured", e);
- properties.put(JCR_PRIMARYTYPE, PropertyStates.createProperty(
- JCR_PRIMARYTYPE, NT_UNSTRUCTURED, Type.NAME));
-
+ handleChildNodeCreationException(name, e);
+ } catch (NullPointerException e) {
+ handleChildNodeCreationException(name, e);
}
}
checkValidName(name);
return EmptyNodeState.MISSING_NODE;
}
+ private void handleChildNodeCreationException(final @Nonnull String name,
final Exception e) {
+ if (!skipOnError) {
+ throw new IllegalStateException("Unable to access child node " +
name + " of " + getPath(), e);
+ }
+ warn("Skipping broken child node entry " + name + " and changing the
primary type to nt:unstructured", e);
+ properties.put(JCR_PRIMARYTYPE, PropertyStates.createProperty(
+ JCR_PRIMARYTYPE, NT_UNSTRUCTURED, Type.NAME));
+ }
+
@Override
public Iterable<String> getChildNodeNames() {
return nodes.keySet();