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


Reply via email to