log.debug("XRI: " + xri);
String resolveXri = (xri.startsWith("=") || xri.startsWith("@")) ? xri : "=" + xri;
resolveXri = resolveXri.replace("-", "*");
XRD xrd = null;
// resolve the XRI
log.debug("Resolving " + resolveXri);
try {
xrd = resolver.resolveSEPToXRD(new XRI(resolveXri), serviceString, null, resolverFlags, new ResolverState());
} catch (PartialResolutionException ex) {
log.error("Problem while resolving " + resolveXri + ": " + ex.getMessage(), ex);
sendResponse(response, HttpServletResponse.SC_NOT_FOUND);
return;
}
if (xrd == null || (! Status.SUCCESS.equals(xrd.getStatusCode()))) {
log.error("No XRD or bad status code for " + resolveXri + ": " + (xrd != null ? xrd.getStatusCode() : null));
sendResponse(response, HttpServletResponse.SC_NOT_FOUND);
return;
}
// construct the JSON
StringBuffer buffer = new StringBuffer();
buffer.append("{\n");
buffer.append(" \"locations\": [ ");
String canonical;
if (xrd.getCanonicalID() != null) {
canonical = xrd.getCanonicalID().getValue();
} else {
canonical = resolveXri;
}
List<String> jsonLocations = new ArrayList<String>();
for (int i=0; i<xrd.getSelectedServices().getList().size(); i++) {
Service service = (Service) xrd.getSelectedServices().getList().get(i);
if (service == null) continue;
for (int ii=0; ii<service.getNumURIs(); ii++) {