Index: engine/src/main/java/org/onehippo/cm/engine/PlainYamlObject.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- engine/src/main/java/org/onehippo/cm/engine/PlainYamlObject.java (revision af964f2bc19cc0cac33994d40027095857a5dc62) +++ engine/src/main/java/org/onehippo/cm/engine/PlainYamlObject.java (revision ) @@ -26,9 +26,9 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; /** - * Simple YAML parser which maps standard Java objects only using SnakeYaml {@link SafeConstructor} - * Once parsed these objects can (currently) be accessed as {@link #asMap(String)}, {@link #asList(String)} or {@link #asObject(String)} - * with an optional path parameter for direct navigating into the yaml object tree. + * Simple YAML parser which maps standard Java objects only using SnakeYaml {@link SafeConstructor}. + * Once parsed these objects can (currently) be accessed as {@link #asMap(String)}, {@link #asList(String)} + * or {@link #asObject(String)} with an optional path parameter for direct navigating into the yaml object tree. * The path navigation parameter for these methods assume (parent) Yaml keys separated with a / character. *

* Trivial usage example: @@ -60,9 +60,8 @@ } private Object mapPath(final String path) { - Object current = null; + Object current = yamlObject; final String[] paths = StringUtils.stripStart(path == null ? "" : path, "/").split("/"); - current = yamlObject; for (String p : paths) { if (current == null || !(current instanceof Map)) { break; Index: engine/src/test/java/org/onehippo/cm/engine/PlainYamlObjectTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- engine/src/test/java/org/onehippo/cm/engine/PlainYamlObjectTest.java (revision af964f2bc19cc0cac33994d40027095857a5dc62) +++ engine/src/test/java/org/onehippo/cm/engine/PlainYamlObjectTest.java (revision ) @@ -49,6 +49,7 @@ assertTrue(pyo.asObject().isPresent()); assertTrue(pyo.asObject(null).isPresent()); assertTrue(pyo.asObject("").isPresent()); + assertFalse(pyo.asList().isPresent()); assertTrue(Map.class.isInstance(pyo.asObject().get())); assertTrue(pyo.asMap().get().containsKey("foo")); assertFalse(pyo.asMap().get().containsKey("bar")); @@ -60,6 +61,8 @@ assertEquals(pyo.asObject("foo/two").get(), "two"); assertFalse(pyo.asMap("foo").get().containsKey("three")); assertFalse(pyo.asMap("bar").isPresent()); + + assertFalse(pyo.asObject("foo/one/bar").isPresent()); } @Test @@ -68,12 +71,13 @@ assertTrue(pyo.asObject().isPresent()); assertTrue(pyo.asObject(null).isPresent()); assertTrue(pyo.asObject("").isPresent()); + assertFalse(pyo.asMap().isPresent()); assertTrue(List.class.isInstance(pyo.asObject().get())); - assertTrue((pyo.asList().get().contains("foo"))); - assertTrue((pyo.asList().get().contains("bar"))); - assertTrue((pyo.asList().get().contains(3))); - assertFalse((pyo.asList().get().contains("one"))); - assertFalse((pyo.asList().get().contains(4))); + assertTrue(pyo.asList().get().contains("foo")); + assertTrue(pyo.asList().get().contains("bar")); + assertTrue(pyo.asList().get().contains(3)); + assertFalse(pyo.asList().get().contains("one")); + assertFalse(pyo.asList().get().contains(4)); } @Test @@ -81,14 +85,14 @@ // sequence mapped to list PlainYamlObject pyo = new PlainYamlObject("map:\n list:\n - foo\n - bar\n"); assertTrue(pyo.asList("map/list").isPresent()); - assertTrue((pyo.asList("map/list").get().contains("foo"))); - assertTrue((pyo.asList("map/list").get().contains("bar"))); - assertFalse((pyo.asList("map/list").get().contains("one"))); + assertTrue(pyo.asList("map/list").get().contains("foo")); + assertTrue(pyo.asList("map/list").get().contains("bar")); + assertFalse(pyo.asList("map/list").get().contains("one")); // array mapped to list pyo = new PlainYamlObject("map:\n list: [foo, bar]\n"); assertTrue(pyo.asList("map/list").isPresent()); - assertTrue((pyo.asList("map/list").get().contains("foo"))); - assertTrue((pyo.asList("map/list").get().contains("bar"))); - assertFalse((pyo.asList("map/list").get().contains("one"))); + assertTrue(pyo.asList("map/list").get().contains("foo")); + assertTrue(pyo.asList("map/list").get().contains("bar")); + assertFalse(pyo.asList("map/list").get().contains("one")); } }