private static void addSchemaPathToFieldDef(SchemaPath path, FieldDef.Builder builder) { for (PathSegment p = path.getRootSegment(); ; p = p.getChild()) { NamePart.Builder b = NamePart.newBuilder(); if (p.isArray()) { b.setType(Type.ARRAY); } else { b.setName(p.getNameSegment().getPath().toString()); b.setType(Type.NAME); } builder.addName(b.build()); if (p.isLastPath()) break; } }
public boolean matches(SchemaPath path) { Iterator<NamePart> iter = def.getNameList().iterator(); for (PathSegment p = path.getRootSegment(); ; p = p.getChild()) { if (p == null) break; if (!iter.hasNext()) return false; NamePart n = iter.next(); if (p.isArray()) { if (n.getType() == Type.ARRAY) continue; return false; } else { if (p.getNameSegment().getPath().equals(n.getName())) continue; return false; } } // we've reviewed all path segments. confirm that we don't have any extra name parts. return !iter.hasNext(); }