aboutsummaryrefslogtreecommitdiffstats
path: root/a1-adapter/features/pom.xml
blob: c6031c7a27702cc882fe67a277c21596af86b578 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ ============LICENSE_START=======================================================
  ~ ONAP : ccsdk oran
  ~ ================================================================================
  ~ Copyright (C) 2020 Nordix Foundation. 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=======================================================
  ~
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.onap.ccsdk.parent</groupId>
        <artifactId>odlparent-lite</artifactId>
        <version>2.3.3</version>
        <relativePath/>
    </parent>

    <groupId>org.onap.ccsdk.oran</groupId>
    <artifactId>ccsdk-a1-adapter-feature-aggregator</artifactId>
    <version>1.3.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>ccsdk-oran :: ${project.artifactId}</name>

    <modules>
        <module>a1-adapter-northbound</module>
        <module>installer</module>
    </modules>
</project>
edoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/*-
 * ============LICENSE_START=======================================================
 * ONAP Policy API
 * ================================================================================
 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
 * Copyright (C) 2019 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.
 *
 * SPDX-License-Identifier: Apache-2.0
 * ============LICENSE_END=========================================================
 */

package org.onap.policy.api.main.startstop;

import org.onap.policy.api.main.exception.PolicyApiException;
import org.onap.policy.api.main.parameters.ApiParameterGroup;
import org.onap.policy.api.main.rest.ApiRestController;
import org.onap.policy.api.main.rest.aaf.AafApiFilter;
import org.onap.policy.common.endpoints.http.server.RestServer;
import org.onap.policy.common.parameters.ParameterService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * This class wraps a distributor so that it can be activated as a complete service together with all its api and
 * forwarding handlers.
 */
public class ApiActivator {

    private static final Logger LOGGER = LoggerFactory.getLogger(ApiActivator.class);

    private final ApiParameterGroup apiParameterGroup;

    private static boolean alive = false;

    private RestServer restServer;

    /**
     * Instantiate the activator for policy api as a complete service.
     *
     * @param apiParameterGroup the parameters for the api service
     */
    public ApiActivator(final ApiParameterGroup apiParameterGroup) {
        this.apiParameterGroup = apiParameterGroup;
    }

    /**
     * Initialize api as a complete service.
     *
     * @throws PolicyApiException on errors in initializing the service
     */
    public void initialize() throws PolicyApiException {
        LOGGER.debug("Policy api starting as a service . . .");
        startApiRestServer();
        registerToParameterService(apiParameterGroup);
        ApiActivator.setAlive(true);
        LOGGER.debug("Policy api started as a service");
    }

    /**
     * Starts the api rest server using configuration parameters.
     *
     * @throws PolicyApiException if server start fails
     */
    private void startApiRestServer() throws PolicyApiException {
        apiParameterGroup.getRestServerParameters().setName(apiParameterGroup.getName());
        restServer = new RestServer(apiParameterGroup.getRestServerParameters(), AafApiFilter.class,
                        ApiRestController.class);
        if (!restServer.start()) {
            throw new PolicyApiException("Failed to start api rest server. Check log for more details...");
        }
    }

    /**
     * Terminate policy api.
     *
     * @throws PolicyApiException on termination errors
     */
    public void terminate() throws PolicyApiException {
        try {
            deregisterToParameterService(apiParameterGroup);

            if (ApiActivator.isAlive()) {
                ApiActivator.setAlive(false);
            }

            // Stop the api rest server
            if (restServer.isAlive()) {
                restServer.stop();
            }
        } catch (final Exception exp) {
            throw new PolicyApiException("Policy api service termination failed", exp);
        }
    }

    /**
     * Get the parameters used by the activator.
     *
     * @return the parameters of the activator
     */
    public ApiParameterGroup getParameterGroup() {
        return apiParameterGroup;
    }

    /**
     * Method to register the parameters to Common Parameter Service.
     *
     * @param apiParameterGroup the api parameter group
     */
    public void registerToParameterService(final ApiParameterGroup apiParameterGroup) {
        ParameterService.register(apiParameterGroup, true);
    }

    /**
     * Method to deregister the parameters from Common Parameter Service.
     *
     * @param apiParameterGroup the api parameter group
     */
    public void deregisterToParameterService(final ApiParameterGroup apiParameterGroup) {
        if (ParameterService.contains(apiParameterGroup.getName())) {
            ParameterService.deregister(apiParameterGroup.getName());
        }
    }

    /**
     * Returns the alive status of api service.
     *
     * @return the alive
     */
    public static boolean isAlive() {
        return alive;
    }

    /**
     * Change the alive status of api service.
     *
     * @param status the status
     */
    public static void setAlive(final boolean status) {
        alive = status;
    }
}