Detection of AAF enablement

Change-Id: I049e88bec2c83f6224ba1d1f24b93e0fb1aa807e
Issue-ID: POLICY-1216
Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServer.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServer.java
index 1f008a8..c4db9fb 100644
--- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServer.java
+++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServer.java
@@ -50,6 +50,18 @@
     void setBasicAuthentication(String user, String password, String relativeUriPath);
 
     /**
+     * Enables AAF based authentication.
+     *
+     * @param filterPath filter path
+     */
+    void setAafAuthentication(String filterPath);
+
+    /**
+     * Checks if AAF authentication has been enabled.
+     */
+    boolean isAaf();
+
+    /**
      * Adds a filter at the specified path.
      *
      * @param filterPath filter path
diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServerFactory.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServerFactory.java
index 488512f..4a33f56 100644
--- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServerFactory.java
+++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/HttpServletServerFactory.java
@@ -247,7 +247,7 @@
             /* authentication method either AAF or HTTP Basic Auth */
 
             if (aaf) {
-                service.addFilterClass(contextUriPath, CadiFilter.class.getCanonicalName());
+                service.setAafAuthentication(contextUriPath);
             } else if (userName != null && !userName.isEmpty() && password != null && !password.isEmpty()) {
                 service.setBasicAuthentication(userName, password, authUriPath);
             }
diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/internal/JettyServletServer.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/internal/JettyServletServer.java
index ebac41e..0c52aca 100644
--- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/internal/JettyServletServer.java
+++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/server/internal/JettyServletServer.java
@@ -37,10 +37,12 @@
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.Slf4jRequestLog;
+import org.eclipse.jetty.servlet.FilterHolder;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.util.security.Constraint;
 import org.eclipse.jetty.util.security.Credential;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.onap.aaf.cadi.filter.CadiFilter;
 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -234,6 +236,21 @@
     }
 
     @Override
+    public void setAafAuthentication(String filterPath) {
+        this.addFilterClass(filterPath, CadiFilter.class.getCanonicalName());
+    }
+
+    @Override
+    public boolean isAaf() {
+        for (FilterHolder filter : context.getServletHandler().getFilters()) {
+            if (CadiFilter.class.getCanonicalName().equals(filter.getClassName())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
     public void setBasicAuthentication(String user, String password, String servletPath) {
         String srvltPath = servletPath;
 
diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpServerTest.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpServerTest.java
index 4552109..084847c 100644
--- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpServerTest.java
+++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpServerTest.java
@@ -21,6 +21,7 @@
 package org.onap.policy.common.endpoints.http.server.test;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.io.BufferedReader;
@@ -56,6 +57,7 @@
         server.waitedStart(5000);
 
         assertTrue(HttpServletServer.factory.get(5678).isAlive());
+        assertFalse(HttpServletServer.factory.get(5678).isAaf());
 
         String response = http(HttpServletServer.factory.get(5678), "http://localhost:5678/junit/echo/hello");
         assertTrue("hello".equals(response));
@@ -74,6 +76,9 @@
         assertTrue(HttpServletServer.factory.get(5678).isAlive());
         assertTrue(HttpServletServer.factory.inventory().size() == 1);
 
+        server.setAafAuthentication("/*");
+        assertTrue(HttpServletServer.factory.get(5678).isAaf());
+
         HttpServletServer.factory.destroy(5678);
         assertTrue(HttpServletServer.factory.inventory().size() == 0);
     }