Sonar Fixes, Formatting
[aaf/authz.git] / auth / auth-oauth / src / main / java / org / onap / aaf / auth / oauth / AAF_OAuth.java
index 846d1a5..6f04ed5 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
@@ -22,7 +22,6 @@
 
 package org.onap.aaf.auth.oauth;
 
-import java.io.File;
 import java.util.Map;
 
 import javax.servlet.Filter;
@@ -59,151 +58,149 @@ import org.onap.aaf.cadi.oauth.TokenMgr;
 import org.onap.aaf.cadi.oauth.TokenMgr.TokenPermLoader;
 import org.onap.aaf.cadi.register.Registrant;
 import org.onap.aaf.misc.env.APIException;
-import org.onap.aaf.misc.env.Env;
 import org.onap.aaf.misc.env.Data.TYPE;
+import org.onap.aaf.misc.env.Env;
 
 import com.datastax.driver.core.Cluster;
 
 import aafoauth.v2_0.Introspect;
 
 public class AAF_OAuth extends AbsService<AuthzEnv,AuthzTrans> {
-       private static final String DOT_OAUTH = ".oauth";
-       public Map<String, Dated> cacheUser;
-       public AAFAuthn<?> aafAuthn;
-       public AAFLurPerm aafLurPerm;
-       private final OAuthService service;
-       private OAFacade1_0 facade1_0;
-       private final Question question;
-       private TokenPermLoader tpLoader; 
-       private final Cluster cluster;
-       
-       /**
-        * Construct AuthzAPI with all the Context Supporting Routes that Authz needs
-        * 
-        * @param env
-        * @param si 
-        * @param dm 
-        * @param decryptor 
-        * @throws APIException 
-        */
-       public AAF_OAuth(final AuthzEnv env) throws Exception {
-               super(env.access(),env);
-               
-               String aaf_env = env.getProperty(Config.AAF_ENV);
-               if(aaf_env==null) {
-                       throw new APIException("aaf_env needs to be set");
-               }
-               
-               // Initialize Facade for all uses
-               AuthzTrans trans = env.newTrans();
-               cluster = org.onap.aaf.auth.dao.CassAccess.cluster(env,null);
-               
-               aafLurPerm = aafCon().newLur();
-               // Note: If you need both Authn and Authz construct the following:
-               aafAuthn = aafCon().newAuthn(aafLurPerm);
-
-               // Start Background Processing
-               //      Question question = 
-               question = new Question(trans, cluster, CassAccess.KEYSPACE, true);
-
-               // Have AAFLocator object Create DirectLocators for Location needs
-               AbsAAFLocator.setCreator(new DirectLocatorCreator(env, question.locateDAO));
-
-
-               service = new OAuthService(env.access(),trans,question);
-               facade1_0 = OAFacadeFactory.v1_0(this, trans, service, TYPE.JSON);
-               StringBuilder sb = new StringBuilder();
-               trans.auditTrail(2, sb);
-               trans.init().log(sb);
-               
-               API_Token.init(this, facade1_0);
-       }
-       
-       /**
-        * Setup XML and JSON implementations for each supported Version type
-        * 
-        * We do this by taking the Code passed in and creating clones of these with the appropriate Facades and properties
-        * to do Versions and Content switches
-        * 
-        */
-       public void route(HttpMethods meth, String path, API api, HttpCode<AuthzTrans, OAFacade<Introspect>> code) throws Exception {
-               String version = "1.0";
-               // Get Correct API Class from Mapper
-               Class<?> respCls = facade1_0.mapper().getClass(api); 
-               if(respCls==null) throw new Exception("Unknown class associated with " + api.getClass().getName() + ' ' + api.name());
-               // setup Application API HTML ContentTypes for JSON and Route
-               String application = applicationJSON(respCls, version);
-               if(meth.equals(HttpMethods.POST)) {
-                       route(env,meth,path,code,application,"application/json;version="+version,"application/x-www-form-urlencoded","*/*");
-               } else {
-                       route(env,meth,path,code,application,"application/json;version="+version,"*/*");
-               }
-       }
-       
-       @Override
-       public Filter[] filters() throws CadiException, LocatorException {
-               try {
-               DirectOAuthTAF doat;
-                       return new Filter[] {new AuthzTransFilter(env,aafCon(),
-                               new AAFTrustChecker((Env)env),
-                               doat = new DirectOAuthTAF(env,question,facade1_0),
-                               doat.directUserPass()
-                               )};
-               } catch (NumberFormatException | APIException e) {
-                       throw new CadiException("Invalid Property information", e);
-               }
-       }
-
-       
-       @SuppressWarnings("unchecked")
-       @Override
-       public Registrant<AuthzEnv>[] registrants(final int port) throws CadiException {
-               return new Registrant[] {
-                               new DirectRegistrar(access,question.locateDAO,app_name,app_version,port),
-                               new DirectRegistrar(access,question.locateDAO,app_name.replace(DOT_OAUTH, ".token"),app_version,port),
-                               new DirectRegistrar(access,question.locateDAO,app_name.replace(DOT_OAUTH, ".introspect"),app_version,port)
-
-               };
-       }
-
-
-       @Override
-       public void destroy() {
-               Cache.stopTimer();
-               if(service!=null) {
-                       service.close();
-               }
-               if(cluster!=null) {
-                       cluster.close();
-               }
-               super.destroy();
-       }
-       
-       // For use in CADI ONLY
-       public TokenMgr.TokenPermLoader tpLoader() {
-               return tpLoader;
-       }
-
-       public static void main(final String[] args) {
-               try {
-                       String propsFile = getArg(AAF_LOG4J_PREFIX, args, "org.osaaf")+".log4j.props";
-                       String log_dir = getArg(Config.CADI_LOGDIR,args,"./logs");
-                       String log_level = getArg(Config.CADI_LOGLEVEL,args,"INFO");
-                       File logs = new File(log_dir);
-                       if(!logs.isDirectory()) {
-                               logs.delete();
-                       }
-                       if(!logs.exists()) {
-                               logs.mkdirs();
-                       }
-                       Log4JLogIt logIt = new Log4JLogIt(log_dir,log_level,propsFile, "oauth");
-                       PropAccess propAccess = new PropAccess(logIt,args);
-               
-                       AAF_OAuth service = new AAF_OAuth(new AuthzEnv(propAccess));
-                       JettyServiceStarter<AuthzEnv,AuthzTrans> jss = new JettyServiceStarter<AuthzEnv,AuthzTrans>(service);
-                       jss.start();
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
-       }
+    public Map<String, Dated> cacheUser;
+    public AAFAuthn<?> aafAuthn;
+    public AAFLurPerm aafLurPerm;
+    private final OAuthService service;
+    private OAFacade1_0 facade1_0;
+    private final Question question;
+    private TokenPermLoader tpLoader;
+    private final Cluster cluster;
+
+    /**
+     * Construct AuthzAPI with all the Context Supporting Routes that Authz needs
+     *
+     * @param env
+     * @param si
+     * @param dm
+     * @param decryptor
+     * @throws APIException
+     */
+    public AAF_OAuth(final AuthzEnv env) throws Exception {
+        super(env.access(),env);
+
+        String aaf_env = env.getProperty(Config.AAF_ENV);
+        if (aaf_env==null) {
+            throw new APIException("aaf_env needs to be set");
+        }
+
+        // Initialize Facade for all uses
+        AuthzTrans trans = env.newTrans();
+        cluster = org.onap.aaf.auth.dao.CassAccess.cluster(env,null);
+
+        aafLurPerm = aafCon().newLur();
+        // Note: If you need both Authn and Authz construct the following:
+        aafAuthn = aafCon().newAuthn(aafLurPerm);
+
+        // Start Background Processing
+        //    Question question =
+        question = new Question(trans, cluster, CassAccess.KEYSPACE);
+        question.startTimers(env);
+
+        // Have AAFLocator object Create DirectLocators for Location needs
+        AbsAAFLocator.setCreator(new DirectLocatorCreator(env, question.locateDAO));
+
+
+        service = new OAuthService(env.access(),trans,question);
+        facade1_0 = OAFacadeFactory.v1_0(this, trans, service, TYPE.JSON);
+        StringBuilder sb = new StringBuilder();
+        trans.auditTrail(2, sb);
+        trans.init().log(sb);
+
+        API_Token.init(this, facade1_0);
+    }
+
+    /**
+     * Setup XML and JSON implementations for each supported Version type
+     *
+     * We do this by taking the Code passed in and creating clones of these with the appropriate Facades and properties
+     * to do Versions and Content switches
+     *
+     */
+    public void route(HttpMethods meth, String path, API api, HttpCode<AuthzTrans, OAFacade<Introspect>> code) throws Exception {
+        String version = "1.0";
+        // Get Correct API Class from Mapper
+        Class<?> respCls = facade1_0.mapper().getClass(api);
+        if (respCls==null) throw new Exception("Unknown class associated with " + api.getClass().getName() + ' ' + api.name());
+        // setup Application API HTML ContentTypes for JSON and Route
+        String application = applicationJSON(respCls, version);
+        if (meth.equals(HttpMethods.POST)) {
+            route(env,meth,path,code,application,"application/json;version="+version,"application/x-www-form-urlencoded","*/*");
+        } else {
+            route(env,meth,path,code,application,"application/json;version="+version,"*/*");
+        }
+    }
+
+    @Override
+    public Filter[] _filters(Object ... additionalTafLurs) throws CadiException, LocatorException {
+        try {
+            DirectOAuthTAF doat = new DirectOAuthTAF(env,question,facade1_0);
+            Object[] atl=new Object[additionalTafLurs.length+2];
+            atl[0] = doat;
+            atl[1] = doat.directUserPass();
+
+            if (additionalTafLurs.length>0) {
+                System.arraycopy(additionalTafLurs, 0, atl, 2, additionalTafLurs.length);
+            }
+
+            return new Filter[] {
+                new AuthzTransFilter(env,aafCon(),
+                    new AAFTrustChecker((Env)env),
+                    atl
+            )};
+        } catch (NumberFormatException | APIException e) {
+            throw new CadiException("Invalid Property information", e);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Registrant<AuthzEnv>[] registrants(final int port) throws CadiException {
+        return new Registrant[] {
+            new DirectRegistrar(access,question.locateDAO,port)
+        };
+    }
+
+
+    @Override
+    public void destroy() {
+        Cache.stopTimer();
+        if (service!=null) {
+            service.close();
+        }
+        if (cluster!=null) {
+            cluster.close();
+        }
+        super.destroy();
+    }
+
+    // For use in CADI ONLY
+    public TokenMgr.TokenPermLoader tpLoader() {
+        return tpLoader;
+    }
+
+    public static void main(final String[] args) {
+        try {
+            Log4JLogIt logIt = new Log4JLogIt(args, "oauth");
+            PropAccess propAccess = new PropAccess(logIt,args);
+
+            try {
+                new JettyServiceStarter<AuthzEnv,AuthzTrans>(
+                    new AAF_OAuth(new AuthzEnv(propAccess)),true)
+                        .start();
+            } catch (Exception e) {
+                propAccess.log(e);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }