private void parseResource(List<Resource> resources) throws Exception { ResourceBuilder resourceBuilder = new ResourceBuilder(); next(); while (reader.isStartElement()) { parseCapabilityOrRequirement(resourceBuilder); } Resource resource = resourceBuilder.build(); resources.add(resource); tagEnd(TAG_RESOURCE); }
private void parseResource(List<Resource> resources) throws Exception { ResourceBuilder resourceBuilder = new ResourceBuilder(); next(); while (reader.isStartElement()) { parseCapabilityOrRequirement(resourceBuilder); } Resource resource = resourceBuilder.build(); resources.add(resource); tagEnd(TAG_RESOURCE); }
private void parseReferral() throws Exception { if (--depth < 0) error("Too deep, traversed %s", traversed); else { String depthString = reader.getAttributeValue(null, ATTR_REFERRAL_DEPTH); String urlString = reader.getAttributeValue(null, ATTR_REFERRAL_URL); if (check(urlString != null, "Expected URL in referral")) { // TODO resolve url URI url = this.url.resolve(urlString); traversed.add(url); int depth = 100; if (depthString != null) { depth = Integer.parseInt(depthString); } InputStream in = url.toURL() .openStream(); try (XMLResourceParser referralParser = new XMLResourceParser(in, urlString, depth, traversed, url)) { referralParser.parse(); resources.addAll(referralParser.resources); } } } next(); tagEnd(TAG_REFERRAL); }
private void parseCapabilityOrRequirement(ResourceBuilder resourceBuilder) throws Exception { String name = reader.getLocalName(); check(TAG_REQUIREMENT.equals(name) || TAG_CAPABILITY.equals(name), "Expected <%s> or <%s> tag, got <%s>", TAG_REQUIREMENT, TAG_CAPABILITY, name); String namespace = reader.getAttributeValue(null, ATTR_NAMESPACE); CapReqBuilder capReqBuilder = new CapReqBuilder(namespace); next(); while (reader.isStartElement()) { parseAttributesOrDirectives(capReqBuilder); } if (TAG_REQUIREMENT.equals(name)) { resourceBuilder.addRequirement(capReqBuilder); } else { resourceBuilder.addCapability(capReqBuilder); } tagEnd(name); }
private void parseReferral() throws Exception { if (--depth < 0) error("Too deep, traversed %s", traversed); else { String depthString = reader.getAttributeValue(null, ATTR_REFERRAL_DEPTH); String urlString = reader.getAttributeValue(null, ATTR_REFERRAL_URL); if (check(urlString != null, "Expected URL in referral")) { // TODO resolve url URI url = this.url.resolve(urlString); traversed.add(url); int depth = 100; if (depthString != null) { depth = Integer.parseInt(depthString); } InputStream in = url.toURL() .openStream(); try (XMLResourceParser referralParser = new XMLResourceParser(in, urlString, depth, traversed, url)) { referralParser.parse(); resources.addAll(referralParser.resources); } } } next(); tagEnd(TAG_REFERRAL); }
private void parseCapabilityOrRequirement(ResourceBuilder resourceBuilder) throws Exception { String name = reader.getLocalName(); check(TAG_REQUIREMENT.equals(name) || TAG_CAPABILITY.equals(name), "Expected <%s> or <%s> tag, got <%s>", TAG_REQUIREMENT, TAG_CAPABILITY, name); String namespace = reader.getAttributeValue(null, ATTR_NAMESPACE); CapReqBuilder capReqBuilder = new CapReqBuilder(namespace); next(); while (reader.isStartElement()) { parseAttributesOrDirectives(capReqBuilder); } if (TAG_REQUIREMENT.equals(name)) { resourceBuilder.addRequirement(capReqBuilder); } else { resourceBuilder.addCapability(capReqBuilder); } tagEnd(name); }
private void parseAttributesOrDirectives(CapReqBuilder capReqBuilder) throws Exception { String name = reader.getLocalName(); switch (name) { case TAG_ATTRIBUTE : parseAttribute(capReqBuilder); break; case TAG_DIRECTIVE : parseDirective(capReqBuilder); break; default : check(false, "Invalid tag, expected either <%s> or <%s>, got <%s>", TAG_ATTRIBUTE, TAG_DIRECTIVE); } next(); tagEnd(name); }
private void parseAttributesOrDirectives(CapReqBuilder capReqBuilder) throws Exception { String name = reader.getLocalName(); switch (name) { case TAG_ATTRIBUTE : parseAttribute(capReqBuilder); break; case TAG_DIRECTIVE : parseDirective(capReqBuilder); break; default : check(false, "Invalid tag, expected either <%s> or <%s>, got <%s>", TAG_ATTRIBUTE, TAG_DIRECTIVE); } next(); tagEnd(name); }