Merge "Annotate the "Visitor" interface with the @FunctionalInterface annotation"
[aaf/authz.git] / auth / auth-core / src / main / java / org / onap / aaf / auth / env / AuthzTransImpl.java
index ee90f28..037ce4e 100644 (file)
@@ -24,6 +24,7 @@ package org.onap.aaf.auth.env;
 import java.util.Date;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.onap.aaf.auth.org.Organization;
 import org.onap.aaf.auth.org.OrganizationFactory;
@@ -34,38 +35,38 @@ import org.onap.aaf.misc.env.LogTarget;
 import org.onap.aaf.misc.env.impl.BasicTrans;
 
 public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
+    private static final String N_A = "n/a";
+    private static final String BLANK = "";
+    private HttpServletRequest hreq;
+    private HttpServletResponse hresp;
     private TaggedPrincipal user;
-    private String ip,agent,meth,path;
-    private int port;
     private Lur lur;
     private Organization org;
     private int mask;
     private Date now;
+    private String tag;
     public AuthzTransImpl(AuthzEnv env) {
         super(env);
-        ip="n/a";
         org=null;
         mask=0;
+        tag=null;
     }
 
     /**
      * @see org.onap.aaf.auth.env.test.AuthTrans#set(javax.servlet.http.HttpServletRequest)
      */
     @Override
-    public AuthzTrans set(HttpServletRequest req) {
+    public AuthzTrans set(HttpServletRequest req, HttpServletResponse resp) {
+        hreq = req;
+        hresp = resp;
         user = (TaggedPrincipal)req.getUserPrincipal();
-        ip = req.getRemoteAddr();
-        port = req.getRemotePort();
-        agent = req.getHeader("User-Agent");
-        meth = req.getMethod();
-        path = req.getPathInfo();
         
-        for(REQD_TYPE rt : REQD_TYPE.values()) {
+        for (REQD_TYPE rt : REQD_TYPE.values()) {
             requested(rt,req);
         }
         // Handle alternate "request" for "future"
         String request = req.getParameter("request");
-        if(request!=null) {
+        if (request!=null) {
             requested(REQD_TYPE.future,(request.length()==0 || "true".equalsIgnoreCase(request)));
         }
 
@@ -73,6 +74,16 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
         return this;
     }
     
+    @Override
+    public HttpServletRequest hreq() {
+        return hreq;
+    }
+
+    @Override
+    public HttpServletResponse hresp() {
+        return hresp;
+    }
+
     @Override
     public void setUser(TaggedPrincipal p) {
         user = p;
@@ -83,7 +94,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public String user() {
-        return user==null?"n/a":user.getName();
+        return user==null?N_A:user.getName();
     }
     
     /**
@@ -99,7 +110,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public String ip() {
-        return ip;
+        return hreq==null?N_A:hreq.getRemoteAddr();
     }
 
     /**
@@ -107,7 +118,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public int port() {
-        return port;
+        return hreq==null?0:hreq.getRemotePort();
     }
 
 
@@ -116,7 +127,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public String meth() {
-        return meth;
+        return hreq==null?"":hreq.getMethod();
     }
 
     /* (non-Javadoc)
@@ -124,7 +135,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public String path() {
-        return path;
+        return hreq==null?"":hreq.getPathInfo();
     }
 
     /**
@@ -132,7 +143,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public String agent() {
-        return agent;
+        return hreq==null?BLANK:hreq.getHeader("User-Agent");
     }
 
     @Override
@@ -146,7 +157,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
     }
     
     public void requested(REQD_TYPE requested, boolean b) {
-        if(b) {
+        if (b) {
             mask|=requested.bit;
         } else {
             mask&=~requested.bit;
@@ -155,7 +166,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
     
     private void requested(REQD_TYPE reqtype, HttpServletRequest req) {
         String p = req.getParameter(reqtype.name());
-        if(p!=null) {
+        if (p!=null) {
             requested(reqtype,p.length()==0 || "true".equalsIgnoreCase(p));
         }
     }
@@ -165,22 +176,27 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
         this.lur = lur;
     }
     
+    @Override
+    public Lur getLur() {
+       return lur;
+    }
+    
     @Override
     public boolean fish(Permission ... pond) {
-        if(lur!=null) {
+        if (lur!=null) {
             return lur.fish(user, pond);
         }
         return false;
     }
-
+    
     /* (non-Javadoc)
      * @see org.onap.aaf.auth.env.test.AuthzTrans#org()
      */
     @Override
     public Organization org() {
-        if(org==null) {
+        if (org==null) {
             try {
-                if((org = OrganizationFactory.obtain(env(), user()))==null) {
+                if ((org = OrganizationFactory.obtain(env(), user()))==null) {
                     org = Organization.NULL;
                 }
             } catch (Exception e) {
@@ -196,7 +212,7 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public void logAuditTrail(LogTarget lt) {
-        if(lt.isLoggable()) {
+        if (lt.isLoggable()) {
             StringBuilder sb = new StringBuilder();
             auditTrail(1, sb);
             lt.log(sb);
@@ -208,9 +224,32 @@ public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
      */
     @Override
     public Date now() {
-        if(now==null) {
+        if (now==null) {
             now = new Date();
         }
         return now;
     }
+    
+    /*
+     * (non-Javadoc)
+     * @see org.onap.aaf.auth.env.AuthzTrans#setTag(java.lang.String)
+     */
+    @Override
+    public void setTag(String tag) {
+        this.tag = tag;
+    }
+
+    @Override
+    public String getTag() {
+        return tag;
+    }
+
+    @Override
+    public void clearCache() {
+        if (lur!=null) {
+            StringBuilder report = new StringBuilder();
+            lur.clear(user, report);
+            info().log(report);
+        }
+    }
 }