/*- * ============LICENSE_START======================================================= * ONAP * ================================================================================ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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========================================================= */ package org.onap.policy.controlloop.actor.aai; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.concurrent.CompletableFuture; import javax.ws.rs.client.Invocation.Builder; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; 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 org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig; /** * A&AI get-pnf operator. */ public class AaiGetPnfOperation extends AaiGetOperation { private static final String URI_SEP = "/"; public static final String NAME = "Pnf"; // property prefixes private static final String KEY_PREFIX = AaiConstants.CONTEXT_PREFIX + NAME + "."; /** * Constructs the object. * * @param params operation parameters * @param config configuration for this operation */ public AaiGetPnfOperation(ControlLoopOperationParams params, HttpConfig config) { super(params, config); } /** * Gets the "context key" for the PNF query response associated with the given * target entity. * * @param targetEntity target entity * @return the "context key" for the response associated with the given target */ public static String getKey(String targetEntity) { return (KEY_PREFIX + targetEntity); } @Override protected CompletableFuture startOperationAsync(int attempt, OperationOutcome outcome) { Map headers = makeHeaders(); headers.put("Accept", MediaType.APPLICATION_JSON); StringBuilder str = new StringBuilder(getClient().getBaseUrl()); String path = getPath() + URI_SEP + URLEncoder.encode(params.getTargetEntity(), StandardCharsets.UTF_8); WebTarget web = getClient().getWebTarget().path(path); str.append(path); web = addQuery(web, str, "?", "depth", "0"); Builder webldr = web.request(); addHeaders(webldr, headers); String url = str.toString(); logMessage(EventType.OUT, CommInfrastructure.REST, url, null); return handleResponse(outcome, url, callback -> webldr.async().get(callback)); } }