summaryrefslogtreecommitdiffstats
path: root/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ApexDeploymentRestParameters.java
blob: 70765ebc67b81b59b22583750680a66b3072bd6e (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*-
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2016-2018 Ericsson. 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.apex.client.deployment.rest;

import java.net.URI;

/**
 * This class reads and handles command line parameters to the Apex RESTful services.
 *
 * @author Michael Watkins (michael.watkins@ericsson.com)
 */
public class ApexDeploymentRestParameters {
    public static final int DEFAULT_REST_PORT = 18989;
    public static final int INFINITY_TIME_TO_LIVE = -1;

    // Base URI the HTTP server will listen on
    private static final String DEFAULT_SERVER_URI_ROOT = "http://localhost:";
    private static final String DEFAULT_REST_PATH = "/apexservices/";
    private static final String DEFAULT_STATIC_PATH = "/";

    // Package that will field REST requests
    private static final String[] DEFAULT_PACKAGES = new String[] {"org.onap.policy.apex.client.deployment.rest"};

    // The services parameters
    private boolean helpSet = false;
    private int restPort = DEFAULT_REST_PORT;
    private long timeToLive = INFINITY_TIME_TO_LIVE;

    /**
     * Validate the parameters.
     *
     * @return the result of the validation
     */
    public String validate() {
        String validationMessage = "";
        validationMessage += validatePort();
        validationMessage += validateTimeToLive();

        return validationMessage;
    }

    /**
     * Gets the base uri.
     *
     * @return the base uri
     */
    public URI getBaseUri() {
        return URI.create(DEFAULT_SERVER_URI_ROOT + restPort + DEFAULT_REST_PATH);
    }

    /**
     * Gets the rest packages.
     *
     * @return the rest packages
     */
    public String[] getRestPackages() {
        return DEFAULT_PACKAGES;
    }

    /**
     * Gets the static path.
     *
     * @return the static path
     */
    public String getStaticPath() {
        return DEFAULT_STATIC_PATH;
    }

    /**
     * Validate port.
     *
     * @return the string
     */
    private String validatePort() {
        if (restPort < 1024 || restPort > 65535) {
            return "port must be greater than 1023 and less than 65536\n";
        } else {
            return "";
        }
    }

    /**
     * Validate time to live.
     *
     * @return the string
     */
    private String validateTimeToLive() {
        if (timeToLive < -1) {
            return "time to live must be greater than -1 (set to -1 to wait forever)\n";
        } else {
            return "";
        }
    }

    /**
     * Checks if is help set.
     *
     * @return true, if is help set
     */
    public boolean isHelpSet() {
        return helpSet;
    }

    /**
     * Sets the help.
     *
     * @param helpSet the new help
     */
    public void setHelp(final boolean helpSet) {
        this.helpSet = helpSet;
    }

    /**
     * Gets the rest port.
     *
     * @return the rest port
     */
    public int getRestPort() {
        return restPort;
    }

    /**
     * Sets the rest port.
     *
     * @param restPort the new rest port
     */
    public void setRestPort(final int restPort) {
        this.restPort = restPort;
    }

    /**
     * Gets the time to live.
     *
     * @return the time to live
     */
    public long getTimeToLive() {
        return timeToLive;
    }

    /**
     * Sets the time to live.
     *
     * @param timeToLive the new time to live
     */
    public void setTimeToLive(final long timeToLive) {
        this.timeToLive = timeToLive;
    }

    /**
     * {@inheritDoc}.
     */
    @Override
    public String toString() {
        final StringBuilder ret = new StringBuilder();
        ret.append(this.getClass().getSimpleName()).append(": URI=").append(this.getBaseUri()).append(", TTL=")
                .append(this.getTimeToLive()).append("sec");
        return ret.toString();
    }
}