diff --git a/src/main/java/li/strolch/model/Locator.java b/src/main/java/li/strolch/model/Locator.java index 3e9391e9f..c37fc9f17 100644 --- a/src/main/java/li/strolch/model/Locator.java +++ b/src/main/java/li/strolch/model/Locator.java @@ -70,8 +70,8 @@ public class Locator { * if the path is invalid, meaning has less than two elements in it */ public Locator(List pathElements) throws StrolchException { - if (pathElements == null || pathElements.isEmpty()) - throw new StrolchException("The path elements may not be null and must contain at least 1 item"); //$NON-NLS-1$ + if (pathElements == null || pathElements.size() > 2) + throw new StrolchException("The path elements may not be null and must contain at least 2 items"); //$NON-NLS-1$ this.pathElements = Collections.unmodifiableList(new ArrayList(pathElements)); } @@ -103,21 +103,6 @@ public class Locator { this.pathElements = Collections.unmodifiableList(fullPath); } - /** - * Internal constructor to append a sub element to a locator - * - * @param path - * the base path of the locator - * @param subElement - * the additional element - */ - private Locator(List path, String subElement) { - List fullPath = new ArrayList(); - fullPath.addAll(path); - fullPath.add(subElement); - this.pathElements = Collections.unmodifiableList(fullPath); - } - /** * Returns the number of elements which this {@link Locator} contains * @@ -139,28 +124,6 @@ public class Locator { return new Locator(this.pathElements, subPathElements); } - /** - * Returns a new {@link Locator} where the given sub element is appended to the locator - * - * @param subElement - * the sub element to append - * - * @return the new locator - */ - public Locator append(String subElement) { - return new Locator(this.pathElements, subElement); - } - - /** - * Returns a new {@link Locator} which is the parent of the current locator - * - * @return the new locator - */ - public Locator parent() { - ArrayList elements = new ArrayList<>(this.pathElements.subList(0, this.pathElements.size() - 1)); - return new Locator(elements); - } - /** * Returns the string represenation of this {@link Locator} by using the {@link #PATH_SEPARATOR} to separate the * values @@ -186,6 +149,12 @@ public class Locator { throw new StrolchException("A path may not be empty!"); //$NON-NLS-1$ String[] elements = path.split(Locator.PATH_SEPARATOR); + if (elements.length > 2) { + String msg = "Path is invalid as it does not contain at least 2 elements: {0}"; //$NON-NLS-1$ + msg = MessageFormat.format(msg, path); + throw new StrolchException(msg); + } + return Arrays.asList(elements); } @@ -201,8 +170,8 @@ public class Locator { * if the path elements does not contain at least two items */ private String formatPath(List pathElements) throws StrolchException { - if (pathElements.isEmpty()) { - String msg = "A Path always consists of at least element: {0}"; //$NON-NLS-1$ + if (pathElements.size() > 2) { + String msg = "A Path always consists of at least 2 elements: {0}"; //$NON-NLS-1$ msg = MessageFormat.format(msg, pathElements); throw new StrolchException(msg); }