diff options
author | 2017-09-26 14:00:57 -0400 | |
---|---|---|
committer | 2017-09-26 14:01:41 -0400 | |
commit | c593dfe4c59d37d5d4ea14e3ac31da3318029562 (patch) | |
tree | 76cc5a494f02e14b809caad9c050fbfd6cd61a51 /src/main/java/org/openecomp/sparky/dal/rest | |
parent | 6777c6092050a0271c5d7de9c239cf1580d41fa8 (diff) |
Renaming openecomp to onap
Issue-ID: AAI-208
Change-Id: I2bd02287bed376111156aca0100e2b7b74e368e3
Signed-off-by: Arul.Nambi <arul.nambi@amdocs.com>
Diffstat (limited to 'src/main/java/org/openecomp/sparky/dal/rest')
6 files changed, 0 insertions, 1087 deletions
diff --git a/src/main/java/org/openecomp/sparky/dal/rest/HttpMethod.java b/src/main/java/org/openecomp/sparky/dal/rest/HttpMethod.java deleted file mode 100644 index 5c28771..0000000 --- a/src/main/java/org/openecomp/sparky/dal/rest/HttpMethod.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.sparky.dal.rest; - - -/** - * The Enum HttpMethod. - */ -public enum HttpMethod { - GET, PUT, POST, DELETE, PATCH, HEAD -} diff --git a/src/main/java/org/openecomp/sparky/dal/rest/OperationResult.java b/src/main/java/org/openecomp/sparky/dal/rest/OperationResult.java deleted file mode 100644 index c727739..0000000 --- a/src/main/java/org/openecomp/sparky/dal/rest/OperationResult.java +++ /dev/null @@ -1,195 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.sparky.dal.rest; - -/** - * The Class OperationResult. - */ -public class OperationResult { - - private String result; - - private String objectId; - private String requestLink; - private String requestPayload; - - private int resultCode; - - private boolean resolvedLinkFromCache; - - private boolean resolvedLinkFromServer; - - private boolean resolvedLinkFailure; - - private int numRequestRetries; - - private long responseTimeInMs; - - /** - * Reset. - */ - public void reset() { - this.objectId = null; - this.result = null; - this.requestLink = null; - this.requestPayload = null; - this.resultCode = -1; - this.resolvedLinkFailure = false; - this.resolvedLinkFromServer = false; - this.resolvedLinkFromCache = false; - this.responseTimeInMs = 0; - this.numRequestRetries = 0; - } - - public String getObjectId() { - return objectId; - } - - public void setObjectId(String objectId) { - this.objectId = objectId; - } - - public boolean isResolvedLinkFromCache() { - return resolvedLinkFromCache; - } - - /** - * Was successful. - * - * @return true, if successful - */ - public boolean wasSuccessful() { - return (resultCode > 199 && resultCode < 300); - } - - public String getRequestLink() { - return requestLink; - } - - public void setRequestLink(String requestLink) { - this.requestLink = requestLink; - } - - public String getRequestPayload() { - return requestPayload; - } - - public void setRequestPayload(String requestPayload) { - this.requestPayload = requestPayload; - } - - public void setResolvedLinkFromCache(boolean resolvedLinkFromCache) { - this.resolvedLinkFromCache = resolvedLinkFromCache; - } - - public boolean isResolvedLinkFromServer() { - return resolvedLinkFromServer; - } - - public void setResolvedLinkFromServer(boolean resolvedLinkFromServer) { - this.resolvedLinkFromServer = resolvedLinkFromServer; - } - - public boolean isResolvedLinkFailure() { - return resolvedLinkFailure; - } - - public void setResolvedLinkFailure(boolean resolvedLinkFailure) { - this.resolvedLinkFailure = resolvedLinkFailure; - } - - public String getResult() { - return result; - } - - public int getResultCode() { - return resultCode; - } - - public void setResultCode(int resultCode) { - this.resultCode = resultCode; - } - - public void setResult(String result) { - this.result = result; - } - - /** - * Sets the result. - * - * @param resultCode the result code - * @param result the result - */ - public void setResult(int resultCode, String result) { - this.resultCode = resultCode; - this.result = result; - } - - /** - * Instantiates a new operation result. - */ - public OperationResult() { - super(); - } - - /** - * Instantiates a new operation result. - * - * @param resultCode the result code - * @param result the result - */ - public OperationResult(int resultCode, String result) { - super(); - this.resultCode = resultCode; - this.result = result; - } - - public long getResponseTimeInMs() { - return responseTimeInMs; - } - - public void setResponseTimeInMs(long responseTimeInMs) { - this.responseTimeInMs = responseTimeInMs; - } - - public int getNumRequestRetries() { - return numRequestRetries; - } - - public void setNumRequestRetries(int numRequestRetries) { - this.numRequestRetries = numRequestRetries; - } - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return "OperationResult [result=" + result + ", resultCode=" + resultCode - + ", resolvedLinkFromCache=" + resolvedLinkFromCache + ", resolvedLinkFromServer=" - + resolvedLinkFromServer + ", resolvedLinkFailure=" + resolvedLinkFailure - + ", numRequestRetries=" + numRequestRetries + ", responseTimeInMs=" + responseTimeInMs - + "]"; - } - -} diff --git a/src/main/java/org/openecomp/sparky/dal/rest/RestClientBuilder.java b/src/main/java/org/openecomp/sparky/dal/rest/RestClientBuilder.java deleted file mode 100644 index 9a8c4c9..0000000 --- a/src/main/java/org/openecomp/sparky/dal/rest/RestClientBuilder.java +++ /dev/null @@ -1,145 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.sparky.dal.rest; - -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.config.ClientConfig; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.client.urlconnection.HTTPSProperties; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; - -import org.openecomp.sparky.security.SecurityContextFactory; -import org.openecomp.sparky.security.SecurityContextFactoryImpl; - -/** - * This is a generic REST Client builder with flexible security validation. Sometimes it's nice to - * be able to disable server chain cert validation and hostname validation to work-around lab - * issues, but at the same time be able to provide complete validation with client cert + hostname + - * server cert chain validation. - * I used the ModelLoader REST client as a base and merged in the TSUI client I wrote which also - * validates the server hostname and server certificate chain. - * - * @author DAVEA - * - */ -public class RestClientBuilder { - - /* - * TODO: implement fluent interface? - */ - - private boolean useHttps; - private boolean validateServerHostname; - private int connectTimeoutInMs; - private int readTimeoutInMs; - protected SecurityContextFactory sslContextFactory; - - /** - * Instantiates a new rest client builder. - */ - public RestClientBuilder() { - validateServerHostname = false; - connectTimeoutInMs = 60000; - readTimeoutInMs = 60000; - useHttps = true; - sslContextFactory = new SecurityContextFactoryImpl(); - } - - public SecurityContextFactory getSslContextFactory() { - return sslContextFactory; - } - - public void setSslContextFactory(SecurityContextFactory sslContextFactory) { - this.sslContextFactory = sslContextFactory; - } - - public boolean isUseHttps() { - return useHttps; - } - - public void setUseHttps(boolean useHttps) { - this.useHttps = useHttps; - } - - public int getConnectTimeoutInMs() { - return connectTimeoutInMs; - } - - public void setConnectTimeoutInMs(int connectTimeoutInMs) { - this.connectTimeoutInMs = connectTimeoutInMs; - } - - public int getReadTimeoutInMs() { - return readTimeoutInMs; - } - - public void setReadTimeoutInMs(int readTimeoutInMs) { - this.readTimeoutInMs = readTimeoutInMs; - } - - public boolean isValidateServerHostname() { - return validateServerHostname; - } - - public void setValidateServerHostname(boolean validateServerHostname) { - this.validateServerHostname = validateServerHostname; - } - - public Client getClient() throws Exception { - - Client client = null; - ClientConfig clientConfig = new DefaultClientConfig(); - - if (useHttps) { - SSLContext sslContext = sslContextFactory.getSecureContext(); - - if (validateServerHostname) { - - clientConfig.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, - new HTTPSProperties(null, sslContext)); - - } else { - clientConfig.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, - new HTTPSProperties(new HostnameVerifier() { - @Override - public boolean verify(String string, SSLSession sslSession) { - return true; - } - }, sslContext)); - - } - } - - client = Client.create(clientConfig); - - client.setConnectTimeout(connectTimeoutInMs); - client.setReadTimeout(readTimeoutInMs); - - return client; - - } - -} diff --git a/src/main/java/org/openecomp/sparky/dal/rest/RestDataProvider.java b/src/main/java/org/openecomp/sparky/dal/rest/RestDataProvider.java deleted file mode 100644 index 6c022a9..0000000 --- a/src/main/java/org/openecomp/sparky/dal/rest/RestDataProvider.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.sparky.dal.rest; - -/** - * The Interface RestDataProvider. - */ -public interface RestDataProvider { - - /** - * Do get. - * - * @param url the url - * @param acceptContentType the accept content type - * @return the operation result - */ - OperationResult doGet(String url, String acceptContentType); - - /** - * Do delete. - * - * @param url the url - * @param acceptContentType the accept content type - * @return the operation result - */ - OperationResult doDelete(String url, String acceptContentType); - - /** - * Do post. - * - * @param url the url - * @param jsonPayload the json payload - * @param acceptContentType the accept content type - * @return the operation result - */ - OperationResult doPost(String url, String jsonPayload, String acceptContentType); - - /** - * Do put. - * - * @param url the url - * @param jsonPayload the json payload - * @param acceptContentType the accept content type - * @return the operation result - */ - OperationResult doPut(String url, String jsonPayload, String acceptContentType); - - /** - * Do patch. - * - * @param url the url - * @param jsonPayload the json payload - * @param acceptContentType the accept content type - * @return the operation result - */ - OperationResult doPatch(String url, String jsonPayload, String acceptContentType); - - /** - * Do head. - * - * @param url the url - * @param acceptContentType the accept content type - * @return the operation result - */ - OperationResult doHead(String url, String acceptContentType); - - /** - * Do restful operation. - * - * @param method the method - * @param url the url - * @param payload the payload - * @param payloadType the payload type - * @param acceptContentType the accept content type - * @return the operation result - */ - OperationResult doRestfulOperation(HttpMethod method, String url, String payload, - String payloadType, String acceptContentType); - - /** - * Shutdown. - */ - void shutdown(); - - /** - * Clear cache. - */ - void clearCache(); -} diff --git a/src/main/java/org/openecomp/sparky/dal/rest/RestOperationalStatistics.java b/src/main/java/org/openecomp/sparky/dal/rest/RestOperationalStatistics.java deleted file mode 100644 index 227d8f2..0000000 --- a/src/main/java/org/openecomp/sparky/dal/rest/RestOperationalStatistics.java +++ /dev/null @@ -1,253 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.sparky.dal.rest; - -import org.openecomp.sparky.analytics.AbstractStatistics; -import org.openecomp.sparky.dal.NetworkTransaction; - -/** - * The Class RestOperationalStatistics. - */ -public class RestOperationalStatistics extends AbstractStatistics { - - private static final String GET_1XX = "GET_1XX"; - private static final String GET_2XX = "GET_2XX"; - private static final String GET_3XX = "GET_3XX"; - private static final String GET_4XX = "GET_4XX"; - private static final String GET_5XX = "GET_5XX"; - private static final String GET_6XX = "GET_6XX"; - - private static final String PUT_1XX = "PUT_1XX"; - private static final String PUT_2XX = "PUT_2XX"; - private static final String PUT_3XX = "PUT_3XX"; - private static final String PUT_4XX = "PUT_4XX"; - private static final String PUT_5XX = "PUT_5XX"; - private static final String PUT_6XX = "PUT_6XX"; - - private static final String POST_1XX = "POST_1XX"; - private static final String POST_2XX = "POST_2XX"; - private static final String POST_3XX = "POST_3XX"; - private static final String POST_4XX = "POST_4XX"; - private static final String POST_5XX = "POST_5XX"; - private static final String POST_6XX = "POST_6XX"; - - private static final String DELETE_1XX = "DELETE_1XX"; - private static final String DELETE_2XX = "DELETE_2XX"; - private static final String DELETE_3XX = "DELETE_3XX"; - private static final String DELETE_4XX = "DELETE_4XX"; - private static final String DELETE_5XX = "DELETE_5XX"; - private static final String DELETE_6XX = "DELETE_6XX"; - - /** - * Creates the counters. - */ - private void createCounters() { - - addCounter(GET_1XX); - addCounter(GET_2XX); - addCounter(GET_3XX); - addCounter(GET_4XX); - addCounter(GET_5XX); - addCounter(GET_6XX); - - addCounter(PUT_1XX); - addCounter(PUT_2XX); - addCounter(PUT_3XX); - addCounter(PUT_4XX); - addCounter(PUT_5XX); - addCounter(PUT_6XX); - - addCounter(POST_1XX); - addCounter(POST_2XX); - addCounter(POST_3XX); - addCounter(POST_4XX); - addCounter(POST_5XX); - addCounter(POST_6XX); - - addCounter(DELETE_1XX); - addCounter(DELETE_2XX); - addCounter(DELETE_3XX); - addCounter(DELETE_4XX); - addCounter(DELETE_5XX); - addCounter(DELETE_6XX); - - - } - - /** - * Gets the result code. - * - * @param txn the txn - * @return the result code - */ - private int getResultCode(NetworkTransaction txn) { - - if (txn == null) { - return -1; - } - - if (txn.getOperationResult() == null) { - return -1; - } - - return txn.getOperationResult().getResultCode(); - - } - - /** - * Update counters. - * - * @param txn the txn - */ - public void updateCounters(NetworkTransaction txn) { - - if (txn == null) { - return; - } - - int rc = getResultCode(txn); - - switch (txn.getOperationType()) { - - case GET: { - - if (100 <= rc && rc <= 199) { - pegCounter(GET_1XX); - } else if (200 <= rc && rc <= 299) { - pegCounter(GET_2XX); - } else if (300 <= rc && rc <= 399) { - pegCounter(GET_3XX); - } else if (400 <= rc && rc <= 499) { - pegCounter(GET_4XX); - } else if (500 <= rc && rc <= 599) { - pegCounter(GET_5XX); - } else if (600 <= rc && rc <= 699) { - pegCounter(GET_6XX); - } - - break; - } - - case PUT: { - - if (100 <= rc && rc <= 199) { - pegCounter(PUT_1XX); - } else if (200 <= rc && rc <= 299) { - pegCounter(PUT_2XX); - } else if (300 <= rc && rc <= 399) { - pegCounter(PUT_3XX); - } else if (400 <= rc && rc <= 499) { - pegCounter(PUT_4XX); - } else if (500 <= rc && rc <= 599) { - pegCounter(PUT_5XX); - } else if (600 <= rc && rc <= 699) { - pegCounter(PUT_6XX); - } - - break; - } - - case POST: { - - if (100 <= rc && rc <= 199) { - pegCounter(POST_1XX); - } else if (200 <= rc && rc <= 299) { - pegCounter(POST_2XX); - } else if (300 <= rc && rc <= 399) { - pegCounter(POST_3XX); - } else if (400 <= rc && rc <= 499) { - pegCounter(POST_4XX); - } else if (500 <= rc && rc <= 599) { - pegCounter(POST_5XX); - } else if (600 <= rc && rc <= 699) { - pegCounter(POST_6XX); - } - - break; - } - - case DELETE: { - - if (100 <= rc && rc <= 199) { - pegCounter(DELETE_1XX); - } else if (200 <= rc && rc <= 299) { - pegCounter(DELETE_2XX); - } else if (300 <= rc && rc <= 399) { - pegCounter(DELETE_3XX); - } else if (400 <= rc && rc <= 499) { - pegCounter(DELETE_4XX); - } else if (500 <= rc && rc <= 599) { - pegCounter(DELETE_5XX); - } else if (600 <= rc && rc <= 699) { - pegCounter(DELETE_6XX); - } - - break; - } - - default: { - // not expecting anything else yet - } - - } - - } - - /** - * Instantiates a new rest operational statistics. - */ - public RestOperationalStatistics() { - createCounters(); - } - - public String getStatisticsReport() { - - StringBuilder sb = new StringBuilder(128); - - sb.append("\n ") - .append(String.format( - "%-12s 1XX: %-12d 2XX: %-12d 3XX: %-12d 4XX: %-12d 5XX: %-12d 6XX: %-12d ", - HttpMethod.DELETE, getCounterValue(DELETE_1XX), getCounterValue(DELETE_2XX), - getCounterValue(DELETE_3XX), getCounterValue(DELETE_4XX), getCounterValue(DELETE_5XX), - getCounterValue(DELETE_6XX))); - - sb.append("\n ").append(String.format( - "%-12s 1XX: %-12d 2XX: %-12d 3XX: %-12d 4XX: %-12d 5XX: %-12d 6XX: %-12d ", HttpMethod.PUT, - getCounterValue(PUT_1XX), getCounterValue(PUT_2XX), getCounterValue(PUT_3XX), - getCounterValue(PUT_4XX), getCounterValue(PUT_5XX), getCounterValue(PUT_6XX))); - - sb.append("\n ").append(String.format( - "%-12s 1XX: %-12d 2XX: %-12d 3XX: %-12d 4XX: %-12d 5XX: %-12d 6XX: %-12d ", HttpMethod.POST, - getCounterValue(POST_1XX), getCounterValue(POST_2XX), getCounterValue(POST_3XX), - getCounterValue(POST_4XX), getCounterValue(POST_5XX), getCounterValue(POST_6XX))); - - sb.append("\n ").append(String.format( - "%-12s 1XX: %-12d 2XX: %-12d 3XX: %-12d 4XX: %-12d 5XX: %-12d 6XX: %-12d ", HttpMethod.GET, - getCounterValue(GET_1XX), getCounterValue(GET_2XX), getCounterValue(GET_3XX), - getCounterValue(GET_4XX), getCounterValue(GET_5XX), getCounterValue(GET_6XX))); - - return sb.toString(); - } - - -} diff --git a/src/main/java/org/openecomp/sparky/dal/rest/RestfulDataAccessor.java b/src/main/java/org/openecomp/sparky/dal/rest/RestfulDataAccessor.java deleted file mode 100644 index 7d5e1cf..0000000 --- a/src/main/java/org/openecomp/sparky/dal/rest/RestfulDataAccessor.java +++ /dev/null @@ -1,354 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.sparky.dal.rest; - -import java.security.SecureRandom; - -import org.openecomp.cl.api.Logger; -import org.openecomp.cl.eelf.LoggerFactory; -import org.openecomp.sparky.dal.cache.EntityCache; -import org.openecomp.sparky.logging.AaiUiMsgs; -import org.openecomp.sparky.util.NodeUtils; - -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.WebResource.Builder; - -/** - * The Class RestfulDataAccessor. - */ -public class RestfulDataAccessor implements RestDataProvider { - - protected SecureRandom txnIdGenerator; - - protected RestClientBuilder clientBuilder; - - protected EntityCache entityCache; - private boolean cacheEnabled; - private static final Logger LOG = - LoggerFactory.getInstance().getLogger(RestfulDataAccessor.class); - - private boolean resourceNotFoundErrorsSurpressed; - - public static final String APPLICATION_JSON = "application/json"; - public static final String APPLICATION_MERGE_PATCH_JSON = "application/merge-patch+json"; - public static final String APPLICATION_X_WWW_FORM_URL_ENCODED = - "application/x-www-form-urlencoded"; - - - /** - * Instantiates a new restful data accessor. - * - * @param clientBuilder the client builder - */ - public RestfulDataAccessor(RestClientBuilder clientBuilder) { - this.clientBuilder = clientBuilder; - txnIdGenerator = new SecureRandom(); - resourceNotFoundErrorsSurpressed = false; - cacheEnabled = false; - entityCache = null; - } - - protected boolean isCacheEnabled() { - return cacheEnabled; - } - - public void setCacheEnabled(boolean cacheEnabled) { - this.cacheEnabled = cacheEnabled; - } - - protected EntityCache getEntityCache() { - return entityCache; - } - - public void setEntityCache(EntityCache entityCache) { - this.entityCache = entityCache; - } - - /** - * Cache result. - * - * @param result the result - */ - private void cacheResult(OperationResult result) { - if (cacheEnabled && entityCache != null) { - final String id = - NodeUtils.generateUniqueShaDigest(result.getRequestLink(), result.getRequestPayload()); - entityCache.put(id, result); - } - } - - /** - * Populate operation result. - * - * @param response the response - * @param opResult the op result - */ - protected void populateOperationResult(ClientResponse response, OperationResult opResult) { - - if (response == null) { - opResult.setResult(500, "Client response was null"); - return; - } - - int statusCode = response.getStatus(); - String payload = response.getEntity(String.class); - - opResult.setResult(statusCode, payload); - - } - - /** - * Gets the cached data. - * - * @param link the link - * @param payload the payload - * @return the cached data - */ - private OperationResult getCachedData(String link, String payload) { - if (cacheEnabled && entityCache != null) { - final String id = NodeUtils.generateUniqueShaDigest(link, payload); - return entityCache.get(id, link); - } - return null; - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#doRestfulOperation(org.openecomp.sparky.dal.rest.HttpMethod, java.lang.String, java.lang.String, java.lang.String, java.lang.String) - */ - @Override - public OperationResult doRestfulOperation(HttpMethod method, String url, String payload, - String payloadType, String acceptContentType) { - - ClientResponse clientResponse = null; - - long startTimeInMs = System.currentTimeMillis(); - Client client = null; - Builder builder = null; - - OperationResult operationResult = null; - - /* - * Attempt to get cached data for the requested URL. We don't currently cache the other - * operations. - */ - - operationResult = getCachedData(url, payload); - - if (operationResult != null) { - - /* - * cache-hit, return what we found - */ - - // System.out.println("operationResult = " + operationResult.getResultCode()); - // System.out.println("opresult = " + operationResult.getResult()); - return operationResult; - } - - /* - * else cache miss / cache disabled (default operation) - */ - - operationResult = new OperationResult(); - operationResult.setRequestLink(url); - - try { - - client = clientBuilder.getClient(); - - switch (method) { - case GET: { - builder = setClientDefaults(client, url, null, acceptContentType); - clientResponse = builder.get(ClientResponse.class); - break; - } - - case PUT: { - builder = setClientDefaults(client, url, payloadType, acceptContentType); - clientResponse = builder.put(ClientResponse.class, payload); - break; - } - - case POST: { - builder = setClientDefaults(client, url, payloadType, acceptContentType); - clientResponse = builder.post(ClientResponse.class, payload); - break; - } - - case DELETE: { - builder = setClientDefaults(client, url, null, acceptContentType); - clientResponse = builder.delete(ClientResponse.class); - break; - } - - case PATCH: { - builder = setClientDefaults(client, url, payloadType, acceptContentType); - builder = builder.header("X-HTTP-Method-Override", "PATCH"); - clientResponse = builder.post(ClientResponse.class, payload); - break; - } - - case HEAD: { - builder = setClientDefaults(client, url, null, acceptContentType); - clientResponse = builder.head(); - break; - } - - - default: { - operationResult.setResult(500, "Unhandled HTTP Method operation = " + method); - return operationResult; - } - - } - - } catch (Exception ex) { - LOG.error(AaiUiMsgs.RESTFULL_OP_ERROR_VERBOSE, url, ex.getLocalizedMessage()); - operationResult.setResult(500, - String.format("Error retrieving link = '%s' from restful endpoint due to error = '%s'", - url, ex.getLocalizedMessage())); - return operationResult; - } - - populateOperationResult(clientResponse, operationResult); - - if (operationResult.getResultCode() != 404 - || (operationResult.getResultCode() == 404 && !isResourceNotFoundErrorsSurpressed())) { - LOG.info(AaiUiMsgs.RESTFULL_OP_COMPLETE, method.toString(), - String.valueOf(System.currentTimeMillis() - startTimeInMs), url, - String.valueOf(operationResult.getResultCode())); - } - - cacheResult(operationResult); - - return operationResult; - - } - - public boolean isResourceNotFoundErrorsSurpressed() { - return resourceNotFoundErrorsSurpressed; - } - - public void setResourceNotFoundErrorsSurpressed(boolean resourceNotFoundErrorsSurpressed) { - this.resourceNotFoundErrorsSurpressed = resourceNotFoundErrorsSurpressed; - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#doGet(java.lang.String, java.lang.String) - */ - @Override - public OperationResult doGet(String url, String acceptContentType) { - return doRestfulOperation(HttpMethod.GET, url, null, null, acceptContentType); - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#doDelete(java.lang.String, java.lang.String) - */ - @Override - public OperationResult doDelete(String url, String acceptContentType) { - return doRestfulOperation(HttpMethod.DELETE, url, null, null, acceptContentType); - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#doPost(java.lang.String, java.lang.String, java.lang.String) - */ - @Override - public OperationResult doPost(String url, String jsonPayload, String acceptContentType) { - return doRestfulOperation(HttpMethod.POST, url, jsonPayload, APPLICATION_JSON, - acceptContentType); - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#doPut(java.lang.String, java.lang.String, java.lang.String) - */ - @Override - public OperationResult doPut(String url, String jsonPayload, String acceptContentType) { - return doRestfulOperation(HttpMethod.PUT, url, jsonPayload, APPLICATION_JSON, - acceptContentType); - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#doPatch(java.lang.String, java.lang.String, java.lang.String) - */ - @Override - public OperationResult doPatch(String url, String jsonPayload, String acceptContentType) { - return doRestfulOperation(HttpMethod.PATCH, url, jsonPayload, APPLICATION_MERGE_PATCH_JSON, - acceptContentType); - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#doHead(java.lang.String, java.lang.String) - */ - @Override - public OperationResult doHead(String url, String acceptContentType) { - return doRestfulOperation(HttpMethod.HEAD, url, null, null, acceptContentType); - } - - /** - * Sets the client defaults. - * - * @param client the client - * @param url the url - * @param payloadContentType the payload content type - * @param acceptContentType the accept content type - * @return the builder - */ - protected Builder setClientDefaults(Client client, String url, String payloadContentType, - String acceptContentType) { - WebResource resource = client.resource(url); - Builder builder = null; - builder = resource.accept(acceptContentType); - - if (payloadContentType != null) { - builder = builder.header("Content-Type", payloadContentType); - } - - return builder; - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#shutdown() - */ - @Override - public void shutdown() { - - if (entityCache != null) { - entityCache.shutdown(); - } - - } - - /* (non-Javadoc) - * @see org.openecomp.sparky.dal.rest.RestDataProvider#clearCache() - */ - @Override - public void clearCache() { - if (cacheEnabled) { - entityCache.clear(); - } - - } - -} |