in plugin/src/com/microsoft/alm/plugin/context/soap/CatalogServiceImpl.java [192:251]
private void readResponse(final HttpResponse httpResponse, final ElementDeserializable readFromElement) {
InputStream responseStream = null;
try {
final Header encoding = httpResponse.getFirstHeader("Content-Encoding"); //$NON-NLS-1$
if (encoding != null && encoding.getValue().equalsIgnoreCase("gzip")) //$NON-NLS-1$
{
responseStream = new GZIPInputStream(httpResponse.getEntity().getContent());
} else {
responseStream = httpResponse.getEntity().getContent();
}
XMLStreamReader reader = null;
try {
reader = XML_INPUT_FACTORY.createXMLStreamReader(responseStream);
final QName envelopeQName = new QName(SOAP, "Envelope", "soap"); //$NON-NLS-1$ //$NON-NLS-2$
final QName headerQName = new QName(SOAP, "Header", "soap"); //$NON-NLS-1$ //$NON-NLS-2$
final QName bodyQName = new QName(SOAP, "Body", "soap"); //$NON-NLS-1$ //$NON-NLS-2$
// Read the envelope.
if (reader.nextTag() == XMLStreamConstants.START_ELEMENT && reader.getName().equals(envelopeQName)) {
while (reader.nextTag() == XMLStreamConstants.START_ELEMENT) {
if (reader.getName().equals(headerQName)) {
// Ignore headers for now.
readUntilElementEnd(reader);
} else if (reader.getName().equals(bodyQName)) {
if (reader.nextTag() == XMLStreamConstants.START_ELEMENT && reader.getName().getLocalPart().equals(QUERY_NODE_RESPONSE)) {
readFromElement.readFromElement(reader);
return;
}
}
}
}
} catch (final XMLStreamException e) {
logger.warn("readResponse", e);
throw new RuntimeException(e);
} finally {
if (reader != null) {
try {
reader.close();
} catch (final XMLStreamException e) {
// Ignore and continue
}
}
}
} catch (IOException e) {
logger.warn("readResponse", e);
throw new RuntimeException(e);
} finally {
if (responseStream != null) {
try {
responseStream.close();
} catch (IOException e) {
// Ignore and continue
}
}
}
}