From 32ab41fa6a6998ff88cd9dbef31f7c65f39ee0e1 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Mon, 23 Aug 2021 12:27:41 -0400 Subject: Support multiple filters in RestServer Added an API to RestServer so that multiple Filters may be provided. Issue-ID: POLICY-3531 Change-Id: I21f474c01d58237c744d1d70f5b39c2c90fdb401 Signed-off-by: Jim Hahn --- .../common/endpoints/http/server/RestServer.java | 34 ++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'policy-endpoints/src/main/java/org/onap/policy/common/endpoints') diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/RestServer.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/RestServer.java index cb50bb33..133a1e7d 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/RestServer.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/RestServer.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Optional; import java.util.Properties; import java.util.stream.Collectors; +import javax.servlet.Filter; import lombok.ToString; import org.onap.policy.common.endpoints.http.server.aaf.AafAuthFilter; import org.onap.policy.common.endpoints.parameters.RestServerParameters; @@ -59,7 +60,28 @@ public class RestServer extends ServiceManagerContainer { public RestServer(final RestServerParameters restServerParameters, Class aafFilter, Class... jaxrsProviders) { - if (jaxrsProviders.length == 0) { + this(restServerParameters, makeFilterList(aafFilter), Arrays.asList(jaxrsProviders)); + } + + private static List> makeFilterList(Class aafFilter) { + if (aafFilter == null) { + return List.of(); + } else { + return List.of(aafFilter); + } + } + + /** + * Constructs the object. + * + * @param restServerParameters the rest server parameters + * @param filters class of object to use to filter requests, or {@code null} + * @param jaxrsProviders classes providing the services + */ + public RestServer(final RestServerParameters restServerParameters, List> filters, + List> jaxrsProviders) { + + if (jaxrsProviders.isEmpty()) { throw new IllegalArgumentException("no providers specified"); } @@ -67,8 +89,10 @@ public class RestServer extends ServiceManagerContainer { .build(getServerProperties(restServerParameters, getProviderClassNames(jaxrsProviders))); for (HttpServletServer server : this.servers) { - if (aafFilter != null && server.isAaf()) { - server.addFilterClass(null, aafFilter.getName()); + for (Class filter : filters) { + if (!AafAuthFilter.class.isAssignableFrom(filter) || server.isAaf()) { + server.addFilterClass(null, filter.getName()); + } } addAction("REST " + server.getName(), server::start, server::stop); @@ -123,8 +147,8 @@ public class RestServer extends ServiceManagerContainer { * @param jaxrsProviders classes providing the services * @return the provider class names */ - private String getProviderClassNames(Class[] jaxrsProviders) { - return String.join(",", Arrays.stream(jaxrsProviders).map(Class::getName).collect(Collectors.toList())); + private String getProviderClassNames(List> jaxrsProviders) { + return String.join(",", jaxrsProviders.stream().map(Class::getName).collect(Collectors.toList())); } private String getValue(final String value) { -- cgit 1.2.3-korg