public void write(Path path, ByteArrayOutputStream os) throws IOException { boolean first = true; for (Part p : path.parts) { if (!first) { path_seperator.writeTo(os); } new AsciiBuffer(p.toString(this)).writeTo(os); first = false; } }
/** * Converts the path back to the string representation. * * @return */ public String toString(Path path) { StringBuffer buffer = new StringBuffer(); boolean first = true; for (Part p : path.parts) { if (!first) { buffer.append(path_seperator); } buffer.append(p.toString(this)); first = false; } return buffer.toString(); }
public PathFilter parseFilter(AsciiBuffer path) { ArrayList<Part> parts = new ArrayList<Part>(parsePath(path).parts); Collections.reverse(parts); PartFilter last = null; for (Part p : parts) { if (p.isLiteral()) { last = new LitteralPathFilter(last, (LiteralPart) p); } else if (p == ANY_CHILD) { last = new AnyChildPathFilter(last); } else if (p == ANY_DESCENDANT) { last = new AnyDecendentPathFilter(last); } } final PartFilter filter = last; return new PathFilter() { public boolean matches(Path path) { return filter.matches(new LinkedList(path.parts)); } }; }