SLING-9408 do not throw IAE in case old value is array and new value is
not
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
index c5dc328..1e42ade 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
@@ -98,7 +98,7 @@
                 for(final String key : keysA ) {
                     final Object valA = a.get(key);
                     final Object valB = b.get(key);
-                    if ( valA.getClass().isArray() ) {
+                    if ( valA.getClass().isArray() && valB.getClass().isArray()) {
                         final Object[] arrA = convertToObjectArray(valA);
                         final Object[] arrB = convertToObjectArray(valB);
 
@@ -112,12 +112,16 @@
                                 break;
                             }
                         }
-                    } else {
-                        // we always do a string comparison
+                    } else if (!valA.getClass().isArray() && !valB.getClass().isArray()) {
+                        // if no arrays do a string comparison
                         if ( !(String.valueOf(valA).equals(String.valueOf(valB))) ) {
                             result = false;
                             break;
                         }
+                    } else {
+                        // one value is array the other is not!
+                        result = false;
+                        break;
                     }
                 }
             }
diff --git a/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java b/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
index e63eed8..57e0402 100644
--- a/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
+++ b/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
@@ -119,4 +119,16 @@
         Configuration cfg = ConfigUtil.getConfiguration(cm, "a.b.c", "c1");
         assertSame(c1, cfg);
     }
+    
+
+    @Test public void testIsSameDataWithSwitchFromArrayToSingleValue() throws Exception {
+        final Dictionary<String, Object> a = new Hashtable<>();
+        final Dictionary<String, Object> b = new Hashtable<>();
+
+        a.put("b", new int[] {1,2,3});
+        b.put("b", 1);
+
+        assertFalse(ConfigUtil.isSameData(a, b));
+        assertFalse(ConfigUtil.isSameData(b, a));
+    }
 }