if (0 < clusterName.length()) {
metaData.addValue("Scsp-Proxy-Cluster", clusterName);
}
ScspRequestHandler client = new ScspRequestHandler(httpCli, new LocatorRedirectHandler(subLocator), 3, 300, null);
BasicScspResponseOutputStream output = new BasicScspResponseOutputStream(null);
try {
client.read("", metaData, "", output);
}
catch (Exception ex) {
throw new NoCastorNodesLocatedException(String.format("Exception when communicating with SCSP Proxy (%s)", ex.toString()));
}
HashMap<String, String> proxyNodesInfo = new HashMap<String, String>();
String nodesInfo = output.getHeader("Scsp-Proxy-Nodes");
for (HeaderElement elem : HeaderElement.parseElements(nodesInfo)) {
proxyNodesInfo.put(elem.getName(), elem.getValue());
}
Integer nodeCount = Integer.parseInt(proxyNodesInfo.get("count"));
String outputBody = output.getBodyString();
if ((0 == nodeCount) || (0 == outputBody.length())) {
String reason = proxyNodesInfo.get("reason");
throw new NoCastorNodesLocatedException(reason);
}