X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-interactions%2Fmodel-actors%2Factor.aai%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fcontrolloop%2Factor%2Faai%2FAaiGetOperation.java;h=275f7168381f1cc02712d0b0a164469b8349421c;hb=938005505883cf7a636a8840e20e3dc8a0ad9176;hp=dd3a4d6c003ecd4e26da8b50e1358813c057ddf9;hpb=ef562e809d00aea6fbdaf845b7dd1ada26f40e22;p=policy%2Fmodels.git diff --git a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetOperation.java b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetOperation.java index dd3a4d6c0..275f71683 100644 --- a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetOperation.java +++ b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetOperation.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,21 +21,16 @@ package org.onap.policy.controlloop.actor.aai; +import jakarta.ws.rs.client.Invocation.Builder; +import jakarta.ws.rs.client.WebTarget; +import java.util.List; import java.util.Map; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import org.onap.policy.aai.AaiConstants; -import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; -import org.onap.policy.common.endpoints.utils.NetLoggerUtil.EventType; +import java.util.Map.Entry; import org.onap.policy.common.utils.coder.StandardCoderObject; -import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; +import org.onap.policy.controlloop.actorserviceprovider.OperationProperties; import org.onap.policy.controlloop.actorserviceprovider.impl.HttpOperation; -import org.onap.policy.controlloop.actorserviceprovider.impl.HttpOperator; import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig; /** * Superclass of A&AI operators that use "get" to perform their request and store their @@ -42,64 +38,54 @@ import org.slf4j.LoggerFactory; * which they are stored is ${actor}.${operation}.${targetEntity}. */ public class AaiGetOperation extends HttpOperation { - private static final Logger logger = LoggerFactory.getLogger(AaiGetOperation.class); - public static final int DEFAULT_RETRY = 3; - // operation names - public static final String TENANT = "Tenant"; - - // property prefixes - private static final String TENANT_KEY_PREFIX = AaiConstants.CONTEXT_PREFIX + TENANT + "."; - - /** - * Operation names supported by this operator. - */ - public static final Set OPERATIONS = Set.of(TENANT); - - - /** - * Responses that are retrieved from A&AI are placed in the operation context under - * the name "${propertyPrefix}.${targetEntity}". - */ - private final String propertyPrefix; + private static final List PROPERTY_NAMES = List.of(OperationProperties.AAI_TARGET_ENTITY); /** * Constructs the object. * * @param params operation parameters - * @param operator operator that created this operation + * @param config configuration for this operation */ - public AaiGetOperation(ControlLoopOperationParams params, HttpOperator operator) { - super(params, operator, StandardCoderObject.class); - this.propertyPrefix = operator.getFullName() + "."; + public AaiGetOperation(ControlLoopOperationParams params, HttpConfig config) { + super(params, config, StandardCoderObject.class, PROPERTY_NAMES); + } + + @Override + public void generateSubRequestId(int attempt) { + setSubRequestId(String.valueOf(attempt)); } /** - * Gets the "context key" for the tenant query response associated with the given - * target entity. + * Adds a query parameter to a web target. * - * @param targetEntity target entity - * @return the "context key" for the response associated with the given target + * @param web target to which the parameter should be added + * @param str the separator and parameter are appended here, for logging purposes + * @param separator separator to be added to "str"; that's its only use + * @param name parameter name + * @param value parameter value + * @return "web" */ - public static String getTenantKey(String targetEntity) { - return (TENANT_KEY_PREFIX + targetEntity); - } - - @Override - protected CompletableFuture startOperationAsync(int attempt, OperationOutcome outcome) { - - Map headers = makeHeaders(); + protected WebTarget addQuery(WebTarget web, StringBuilder str, String separator, String name, String value) { + str.append(separator); + str.append(name); + str.append('='); + str.append(value); - headers.put("Accept", MediaType.APPLICATION_JSON); - String url = makeUrl(); - - logMessage(EventType.OUT, CommInfrastructure.REST, url, null); + return web.queryParam(name, value); + } - // @formatter:off - return handleResponse(outcome, url, - callback -> getOperator().getClient().get(callback, makePath(), headers)); - // @formatter:on + /** + * Adds headers to the web builder. + * + * @param webldr builder to which the headers should be added + * @param headers headers to be added + */ + protected void addHeaders(Builder webldr, Map headers) { + for (Entry header : headers.entrySet()) { + webldr.header(header.getKey(), header.getValue()); + } } @Override @@ -107,26 +93,6 @@ public class AaiGetOperation extends HttpOperation { return AaiUtil.makeHeaders(params); } - @Override - public String makePath() { - return (getOperator().getPath() + "/" + params.getTargetEntity()); - } - - /** - * Injects the response into the context. - */ - @Override - protected CompletableFuture postProcessResponse(OperationOutcome outcome, String url, - Response rawResponse, StandardCoderObject response) { - String entity = params.getTargetEntity(); - - logger.info("{}: caching response of {} for {}", getFullName(), entity, params.getRequestId()); - - params.getContext().setProperty(propertyPrefix + entity, response); - - return super.postProcessResponse(outcome, url, rawResponse, response); - } - /** * Provides a default retry value, if none specified. */