diff options
author | prakash.e <prakash.e@huawei.com> | 2020-03-07 15:45:42 +0530 |
---|---|---|
committer | prakash eswaramoorthy <prakash.e@huawei.com> | 2020-03-07 11:49:51 +0000 |
commit | a1b6e65e76682a322cfa32e885faff03bb6dcdf8 (patch) | |
tree | d99adb876ea5bb2cc394de18104636b187239185 /huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/restclient/RestHttpContentExchange.java | |
parent | 45841231f18ab3ee1e2e12a516a6823bb3a6e0f6 (diff) |
Fix SVNFM jetty-all vulnerability fix
Upgraded jetty-all version to vulnerability issue
Change-Id: I11d0c3ad92920f8c26bd92009e67820a2e541316
Issue-ID: VFC-1598
Signed-off-by: Prakash.E <prakash.e@huawei.com>
Diffstat (limited to 'huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/restclient/RestHttpContentExchange.java')
-rw-r--r-- | huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/restclient/RestHttpContentExchange.java | 208 |
1 files changed, 109 insertions, 99 deletions
diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/restclient/RestHttpContentExchange.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/restclient/RestHttpContentExchange.java index 64017c79..2f116f15 100644 --- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/restclient/RestHttpContentExchange.java +++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/restclient/RestHttpContentExchange.java @@ -16,22 +16,14 @@ package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStreamReader; +import java.io.*; import java.nio.charset.Charset; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.zip.GZIPInputStream; - -import org.apache.commons.lang.StringUtils; -import org.eclipse.jetty.client.ContentExchange; -import org.eclipse.jetty.client.HttpDestination; +import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.http.HttpFields; -import org.eclipse.jetty.http.HttpHeaders; -import org.eclipse.jetty.io.Buffer; -import org.eclipse.jetty.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,45 +32,51 @@ import org.slf4j.LoggerFactory; * <br/> * <p> * </p> - * + * * @author * @version 28-May-2016 */ -public class RestHttpContentExchange extends ContentExchange { +public class RestHttpContentExchange { + private static final int STATUS_PARSING_HEADERS = 500; + private static final int STATUS_PARSING_CONTENT = 500; + private String _encoding = "utf-8"; + private byte[] _responseContent; private static final Logger LOGGER = LoggerFactory.getLogger(RestHttpContentExchange.class); - private static final String PATH = "path:"; - private boolean gzip = false; + private HttpFields _responseFields; + private byte[] _responseContentByte; - private RestfulAsyncCallback callback = null; + String _responseContentString; + int _responseStatus; + Request request; + boolean _rsponseAbort; + +// private HttpFields setCacheFields(boolean cacheHeaders) { +// _responseFields = cacheHeaders ? new HttpFields() : null; +// return _responseFields; +// } /** - * Constructor<br/> - * <p> - * </p> - * - * @since - * @param cacheFields whether to cache response header. - * @param asyncCallback callback method. + * @return the scheme of the URL */ - RestHttpContentExchange(final boolean cacheFields, final RestfulAsyncCallback asyncCallback) { - super(cacheFields); - this.callback = asyncCallback; - } +// public Buffer getScheme() +// { +// return _scheme; +// } /** * Extract message. * <br/> - * + * * @param data GZipped data. * @return Uncompressed data. * @throws IOException * @since */ public String decompressGzipToStr(final byte[] data) throws IOException { - if(data == null) { + if (data == null) { return ""; } final StringBuilder out = new StringBuilder(); @@ -86,7 +84,7 @@ public class RestHttpContentExchange extends ContentExchange { GZIPInputStream gzis = new GZIPInputStream(input); InputStreamReader reader = new InputStreamReader(gzis, Charset.forName(RestfulClientConst.ENCODING));) { final char[] buff = new char[1024]; - for(int n; (n = reader.read(buff)) != -1;) { + for (int n; (n = reader.read(buff)) != -1; ) { out.append(new String(buff, 0, n)); } } @@ -94,108 +92,74 @@ public class RestHttpContentExchange extends ContentExchange { } - /** - * View response headers Content-Encoding values if you need to extract data.<br/> - * - * @param name buffer - * @param value value - * @throws IOException - * @since - */ - @Override - protected synchronized void onResponseHeader(final Buffer name, final Buffer value) throws IOException { - super.onResponseHeader(name, value); - final int header = HttpHeaders.CACHE.getOrdinal(name); - if(header == HttpHeaders.CONTENT_ENCODING_ORDINAL) { - final String encoding = StringUtil.asciiToLowerCase(value.toString()); - gzip = encoding != null && StringUtils.contains(encoding, "gzip"); - } - + private boolean isGzip() { + return gzip; } - @Override - protected void onResponseComplete() throws IOException { - if(LOGGER.isInfoEnabled()) { - LOGGER.info("Response has Complete:" + PATH + this.getRequestURI().replace("\n", "0x0A")); - } - super.onResponseComplete(); - if(callback != null) { - final RestfulResponse rsp = getResponse(); - callback.callback(rsp); - } + public void setResponseContentString(String responseContentString){ + this._responseContentString=responseContentString; } - - @Override - protected void onRequestCommitted() throws IOException { - if(LOGGER.isInfoEnabled()) { - LOGGER.info("Request Header has been send:" + PATH + this.getRequestURI().replace("\n", "0x0A")); - } - super.onRequestCommitted(); + public void setResponseContentBytes (byte[] responseContentBytes){ + this._responseContentByte=responseContentBytes ; } - - @Override - protected void onRequestComplete() throws IOException { - if(LOGGER.isInfoEnabled()) { - LOGGER.info("Request has bend send complete:" + PATH + this.getRequestURI().replace("\n", "0x0A")); - } - super.onRequestComplete(); + public void setResponseStatus ( int responseStatus ){ + this._responseStatus = responseStatus ; } - - @Override - protected void onException(final Throwable x) { - LOGGER.warn("onException:", x); - super.onException(x); - if(callback != null) { - callback.handleExcepion(x); - } + public void setResponseFields ( HttpFields responseFields ){ + this._responseFields= responseFields ; + } + public synchronized String getResponseContentString() throws UnsupportedEncodingException { + if (_responseContentString != null) + return _responseContentString; + return null; } - @Override - protected void onConnectionFailed(final Throwable x) { - LOGGER.warn("onConnectionFailed:", x); - super.onConnectionFailed(x); - if(callback != null) { - callback.handleExcepion(x); - } + synchronized byte[] getResponseContentBytes() { + if (_responseContentByte != null) + return _responseContentByte; + return null; } - @Override - protected void expire(final HttpDestination destination) { - super.expire(destination); - if(callback != null) { - callback.handleExcepion(new ServiceException("request is expired, status:" + toState(getStatus()))); - } + + synchronized int getResponseStatus() { +// if (_responseStatus >= 500) +// throw new IllegalStateException("internal server error"); + return _responseStatus; } - public boolean isGzip() { - return gzip; + + synchronized HttpFields getResponseFields() { +// if (_responseStatus >= STATUS_PARSING_CONTENT) +// throw new IllegalStateException("Headers not completely received yet"); + return _responseFields; } /** * Get the response as RestfulResponse. * <br/> - * + * * @return response object. * @throws IOException * @since */ public RestfulResponse getResponse() throws IOException { final RestfulResponse rsp = new RestfulResponse(); - rsp.setStatus(this.getResponseStatus()); - if(isGzip()) { + + rsp.setStatus(getResponseStatus()); + if (isGzip()) { final String responseString = decompressGzipToStr(getResponseContentBytes()); rsp.setResponseJson(responseString); } else { - rsp.setResponseJson(this.getResponseContent()); + rsp.setResponseJson(this.getResponseContentString()); } final HttpFields field = this.getResponseFields(); - if(field != null) { + if (field != null) { final Map<String, String> header = new HashMap<>(); final Enumeration<String> names = field.getFieldNames(); - for(final Enumeration<String> e = names; e.hasMoreElements();) { + for (final Enumeration<String> e = names; e.hasMoreElements(); ) { final String fieldName = e.nextElement(); final String fieldValue = field.getStringField(fieldName); header.put(fieldName, fieldValue); @@ -206,4 +170,50 @@ public class RestHttpContentExchange extends ContentExchange { return rsp; } + +// @Override +// public void onContent(Response response, ByteBuffer content, Callback callback) { +// System.out.println("ContentExchange inside " + response.getStatus()); +// super.onContent(response, content, callback); +// this._responseContentString = StandardCharsets.UTF_8.decode(content).toString(); +// this._responseContent = content.array(); +// } +// +// @Override +// public void onBegin(Response response) { +// +// } +// +// @Override +// public void onComplete(Result result) { +// +// } +// +// @Override +// public void onContent(Response response, ByteBuffer content) { +// +// } +// +// @Override +// public void onFailure(Response response, Throwable failure) { +// this._responseStatus = response.getStatus(); +// this._rsponseAbort = response.abort(failure); +// } +// +// @Override +// public boolean onHeader(Response response, HttpField field) { +// this._responseFields = response.getHeaders(); +// return false; +// } +// +// @Override +// public void onHeaders(Response response) { +// +// } +// +// @Override +// public void onSuccess(Response response) { +// this._responseStatus = response.getStatus(); +// } + } |