aboutsummaryrefslogtreecommitdiffstats
path: root/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServer.java
blob: a20c125dab81b2a17a8731a4b2195742e0b09ef7 (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
/*
 * ============LICENSE_START=======================================================
 * ONAP
 * ================================================================================
 * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
 * Modifications Copyright (C) 2020, 2024 Nordix Foundation.
 * Modifications Copyright (C) 2021 Bell Canada. 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.common.endpoints.http.server;

import org.onap.policy.common.capabilities.Startable;

/**
 * Http Servlet Server interface.
 */
public interface HttpServletServer extends Startable {
    /**
     * Gets the server name.
     *
     * @return the server name
     */
    String getName();

    /**
     * Get the port.
     *
     * @return port
     */
    int getPort();

    /**
     * Enables basic authentication with user and password on the the relative path relativeUriPath.
     *
     * @param user user
     * @param password password
     * @param relativeUriPath relative path
     */
    void setBasicAuthentication(String user, String password, String relativeUriPath);

    /**
     * Sets the serialization provider to be used when classes are added to the service.
     *
     * @param provider the provider to use for message serialization and de-serialization
     */
    void setSerializationProvider(String provider);

    /**
     * Adds a filter at the specified path.
     *
     * @param filterPath filter path
     * @param filterClass filter class
     */
    void addFilterClass(String filterPath, String filterClass);

    /**
     * Adds a JAX-RS servlet class to serve REST requests.
     *
     * @param servletPath servlet path
     * @param restClass JAX-RS API Class
     *
     * @throws IllegalArgumentException unable to process because of invalid input
     * @throws IllegalStateException unable to process because of invalid state, for example
     *         different types of servlets map to the same servletPath
     */
    void addServletClass(String servletPath, String restClass);

    /**
     * Adds a Java Servlet.
     *
     * @param servletPath servlet path
     * @param plainServletClass servlet class
     */
    void addStdServletClass(String servletPath, String plainServletClass);

    /**
     * Adds a package containing JAX-RS classes to serve REST requests.
     *
     * @param servletPath servlet path
     * @param restPackage JAX-RS package to scan
     *
     * @throws IllegalArgumentException unable to process because of invalid input
     * @throws IllegalStateException unable to process because of invalid state, for example
     *         different types of servlets map to the same servletPath
     */
    void addServletPackage(String servletPath, String restPackage);

    /**
     * Add a static resource path to manage static resources.
     *
     * @param servletPath servlet path
     * @param resourceBase static resources folder
     *
     * @throws IllegalArgumentException unable to process because of invalid input
     * @throws IllegalStateException unable to process because of invalid state, for example
     *         different types of servlets map to the same servletPath
     */
    void addServletResource(String servletPath, String resourceBase);

    /**
     * Blocking start of the http server.
     *
     * @param maxWaitTime max time to wait for the start to take place
     * @return true if start was successful
     *
     * @throws IllegalArgumentException if arguments are invalid
     * @throws InterruptedException if the blocking operation is interrupted
     */
    boolean waitedStart(long maxWaitTime) throws InterruptedException;

    /**
     * Are prometheus metrics enabled?.
     */
    public boolean isPrometheus();

    /**
     * Enable prometheus metrics.
     */
    public void setPrometheus(String metricsPath);
}