ItemPathNormalizingIterator(ItemPath path) { this.path = path != null ? path : ItemPath.EMPTY_PATH; this.components = this.path.getSegments(); }
@Override default void shortDump(StringBuilder sb) { Iterator<?> iterator = getSegments().iterator(); while (iterator.hasNext()) { sb.append(iterator.next()); if (iterator.hasNext()) { sb.append("/"); } } } //endregion
default boolean containsSpecialSymbols() { for (Object segment : getSegments()) { if (isSpecial(segment)) { return true; } } return false; }
public UniformItemPathImpl(@NotNull ItemPath itemPath) { if (itemPath instanceof UniformItemPathImpl) { UniformItemPathImpl itemPathImpl = (UniformItemPathImpl) itemPath; this.segments = new ArrayList<>(itemPathImpl.size()); this.segments.addAll(itemPathImpl.segments); } else { List<?> components = itemPath.getSegments(); this.segments = new ArrayList<>(); // todo addAll(components); } }
/** * Returns true if the path contains the specified name (requires exact match). */ default boolean containsNameExactly(QName name) { return getSegments().stream().anyMatch(component -> isName(component) && name.equals(toName(component))); }
private void add(Object component) { if (component instanceof ItemPath && !(component instanceof ItemName)) { addAll(((ItemPath) component).getSegments()); } else if (component instanceof Object[]) { addAll((Object[]) component); } else if (component instanceof String) { segments.add(new ItemName((String) component)); } else if (component != null) { segments.add(component); } else { segments.add(IdItemPathSegment.NULL); } }
default boolean containsSpecialSymbolsExceptParent() { for (Object segment : getSegments()) { if (isSpecial(segment) && !isParent(segment)) { return true; } } return false; } //endregion
private static boolean isMetadata(ItemPathType itemPath) { boolean retMeta = false; for (Object ips : itemPath.getItemPath().getSegments()) { if (ItemPath.isName(ips) && ObjectType.F_METADATA.getLocalPart().equals(ItemPath.toName(ips).getLocalPart())) { return true; } } return retMeta; }
private String formatPath(ItemDelta itemDelta) { if (itemDelta.getDefinition() != null && itemDelta.getDefinition().getDisplayName() != null) { return itemDelta.getDefinition().getDisplayName(); } StringBuilder sb = new StringBuilder(); for (Object segment : itemDelta.getPath().getSegments()) { if (ItemPath.isName(segment)) { if (sb.length() > 0) { sb.append("/"); } sb.append(ItemPath.toName(segment).getLocalPart()); } } return sb.toString(); }
private void add(Object object) { if (object instanceof UniformItemPathImpl) { segments.addAll(((UniformItemPathImpl) object).segments); } else if (object instanceof ItemPath) { addAll(((ItemPath) object).getSegments()); } else if (object instanceof ItemPathSegment) { add((ItemPathSegment) object); } else if (object instanceof QName) { add((QName) object); } else if (object instanceof String) { add(stringToQName((String) object)); } else if (object == null || object instanceof Long) { this.segments.add(new IdItemPathSegment((Long) object)); } else if (object instanceof Integer) { this.segments.add(new IdItemPathSegment(((Integer) object).longValue())); } else if (object instanceof Collection) { addAll((Collection<?>) object); } else if (object instanceof Object[]) { // todo what about other kinds of array ? addAll((Object[]) object); } else { throw new IllegalArgumentException("Invalid item path segment value: " + object); } }
ItemPath itemPath = ((ItemPathType) value).getItemPath(); StringBuilder sb = new StringBuilder(); itemPath.getSegments().forEach(segment -> { if (ItemPath.isName(segment)) { sb.append(PrettyPrinter.prettyPrint(ItemPath.toName(segment)));
private boolean isDynamic(ItemPath path) { for (Object segment : path.getSegments()) { if (ItemPath.isName(segment)) { QName name = ItemPath.toName(segment); if (QNameUtil.match(name, ShadowType.F_ATTRIBUTES) || QNameUtil.match(name, ObjectType.F_EXTENSION)) { return true; } } } return false; }
attributeStep.bean = object; Iterator<?> segments = path.getSegments().iterator(); while (segments.hasNext()) { Object segment = segments.next();