* ============LICENSE_START=======================================================
* policy-endpoints
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
*/
package org.onap.policy.drools.http.server.internal;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
import java.util.HashMap;
-
import org.eclipse.jetty.servlet.ServletHolder;
-import org.slf4j.LoggerFactory;
+import org.onap.policy.drools.utils.NetworkUtil;
import org.slf4j.Logger;
-
+import org.slf4j.LoggerFactory;
import io.swagger.jersey.config.JerseyJaxrsConfig;
/**
* REST Jetty Server that uses Jersey Servlets to support JAX-RS Web Services
*/
public class JettyJerseyServer extends JettyServletServer {
+
+ /**
+ * Swagger API Base Path
+ */
+ protected static final String SWAGGER_API_BASEPATH = "swagger.api.basepath";
/**
- * Jersey Packages Init Param Name
+ * Swagger Context ID
*/
- protected static final String JERSEY_INIT_PACKAGES_PARAM_NAME = "jersey.config.server.provider.packages";
+ protected static final String SWAGGER_CONTEXT_ID = "swagger.context.id";
/**
- * Jersey Packages Init Param Value
+ * Swagger Scanner ID
*/
- protected static final String JERSEY_INIT_PACKAGES_PARAM_VALUE = "com.fasterxml.jackson.jaxrs.json";
+ protected static final String SWAGGER_SCANNER_ID = "swagger.scanner.id";
+
+ /**
+ * Swagger Pretty Print
+ */
+ protected static final String SWAGGER_PRETTY_PRINT = "swagger.pretty.print";
/**
* Swagger Packages
*/
protected static final String SWAGGER_INIT_PACKAGES_PARAM_VALUE = "io.swagger.jaxrs.listing";
+
+ /**
+ * Jersey Packages Init Param Name
+ */
+ protected static final String JERSEY_INIT_PACKAGES_PARAM_NAME = "jersey.config.server.provider.packages";
+
+ /**
+ * Jersey Packages Init Param Value
+ */
+ protected static final String JERSEY_INIT_PACKAGES_PARAM_VALUE = "com.fasterxml.jackson.jaxrs.json";
/**
* Jersey Classes Init Param Name
/**
* Container for servlets
*/
- protected HashMap<String, ServletHolder> servlets = new HashMap<String, ServletHolder>();
+ protected HashMap<String, ServletHolder> servlets = new HashMap<>();
/**
* Swagger ID
*
* @throws IllegalArgumentException in invalid arguments are provided
*/
- public JettyJerseyServer(String name, String host, int port, String contextPath, boolean swagger)
- throws IllegalArgumentException {
+ public JettyJerseyServer(String name, String host, int port, String contextPath, boolean swagger) {
super(name, host, port, contextPath);
if (swagger) {
ServletHolder swaggerServlet = context.addServlet(JerseyJaxrsConfig.class, "/");
String hostname = this.connector.getHost();
- if (hostname == null || hostname.isEmpty() || hostname.equals("0.0.0.0")) {
- try {
- hostname = InetAddress.getLocalHost().getHostName();
- } catch (UnknownHostException e) {
- logger.warn("{}: can't resolve connector's hostname: ", this);
- hostname = "localhost";
- }
+ if (hostname == null || hostname.isEmpty() || hostname.equals(NetworkUtil.IPv4_WILDCARD_ADDRESS)) {
+ hostname = NetworkUtil.getHostname();
}
- swaggerServlet.setInitParameter("swagger.api.basepath",
+ swaggerServlet.setInitParameter(SWAGGER_API_BASEPATH,
"http://" + hostname + ":" + this.connector.getPort() + "/");
- swaggerServlet.setInitParameter("swagger.context.id", swaggerId);
- swaggerServlet.setInitParameter("swagger.scanner.id", swaggerId);
- swaggerServlet.setInitParameter("swagger.pretty.print", "true");
+ swaggerServlet.setInitParameter(SWAGGER_CONTEXT_ID, swaggerId);
+ swaggerServlet.setInitParameter(SWAGGER_SCANNER_ID, swaggerId);
+ swaggerServlet.setInitParameter(SWAGGER_PRETTY_PRINT, "true");
swaggerServlet.setInitOrder(2);
if (logger.isDebugEnabled())
*
* @throws IllegalArgumentException if invalid arguments are provided
*/
- protected synchronized ServletHolder getServlet(String servletPath)
- throws IllegalArgumentException {
+ protected synchronized ServletHolder getServlet(String servletPath) {
ServletHolder jerseyServlet = servlets.get(servletPath);
if (jerseyServlet == null) {
}
@Override
- public synchronized void addServletPackage(String servletPath, String restPackage)
- throws IllegalArgumentException, IllegalStateException {
-
+ public synchronized void addServletPackage(String servletPath, String restPackage) {
+ String servPath = servletPath;
if (restPackage == null || restPackage.isEmpty())
throw new IllegalArgumentException("No discoverable REST package provided");
- if (servletPath == null || servletPath.isEmpty())
- servletPath = "/*";
+ if (servPath == null || servPath.isEmpty())
+ servPath = "/*";
- ServletHolder jerseyServlet = this.getServlet(servletPath);
+ ServletHolder jerseyServlet = this.getServlet(servPath);
String initClasses =
jerseyServlet.getInitParameter(JERSEY_INIT_CLASSNAMES_PARAM_NAME);
SWAGGER_INIT_PACKAGES_PARAM_VALUE + "," +
restPackage;
- jerseyServlet.setInitParameter("swagger.context.id", swaggerId);
- jerseyServlet.setInitParameter("swagger.scanner.id", swaggerId);
+ jerseyServlet.setInitParameter(SWAGGER_CONTEXT_ID, swaggerId);
+ jerseyServlet.setInitParameter(SWAGGER_SCANNER_ID, swaggerId);
} else {
initPackages = JERSEY_INIT_PACKAGES_PARAM_VALUE + "," +
restPackage;
}
@Override
- public synchronized void addServletClass(String servletPath, String restClass)
- throws IllegalArgumentException, IllegalStateException {
+ public synchronized void addServletClass(String servletPath, String restClass) {
if (restClass == null || restClass.isEmpty())
throw new IllegalArgumentException("No discoverable REST class provided");
SWAGGER_INIT_CLASSNAMES_PARAM_VALUE + "," +
restClass;
- jerseyServlet.setInitParameter("swagger.context.id", swaggerId);
- jerseyServlet.setInitParameter("swagger.scanner.id", swaggerId);
+ jerseyServlet.setInitParameter(SWAGGER_CONTEXT_ID, swaggerId);
+ jerseyServlet.setInitParameter(SWAGGER_SCANNER_ID, swaggerId);
} else {
initClasses = JERSEY_JACKSON_INIT_CLASSNAMES_PARAM_VALUE + "," + restClass;
}