Tidied up load() method to remove several static
[aaf/authz.git] / auth / auth-batch / src / main / java / org / onap / aaf / auth / batch / reports / bodies / NotifyBody.java
index ec8d145..b002dd8 100644 (file)
@@ -3,13 +3,14 @@
  * org.onap.aaf
  * ===========================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 IBM.
  * ===========================================================================
  * 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.
@@ -52,13 +53,13 @@ public abstract class NotifyBody {
     protected Map<String,List<List<String>>> rows;
     protected final String env;
     protected final String gui_url;
-    
+
     private final String name;
     private final String type;
     private String date;
     private int escalation;
     private int count;
-    
+
     public NotifyBody(Access access, final String type, final String name) {
         rows = new TreeMap<>();
         this.name = name;
@@ -69,7 +70,7 @@ public abstract class NotifyBody {
         env = access.getProperty("CASS_ENV","DEVL");
         gui_url = access.getProperty("GUI_URL", "");
     }
-    
+
     public void store(List<String> row) {
         if(!row.isEmpty()) {
             if("info".equals(row.get(0))) {
@@ -79,11 +80,10 @@ public abstract class NotifyBody {
                 if(row.size()>3) {
                     escalation = Integer.parseInt(row.get(3));
                 }
-                return;
             } else if(type.equals(row.get(0))) {
                 String user = user(row);
                 if(user!=null) {
-                    List<List<String>> lss = rows.get(user); 
+                    List<List<String>> lss = rows.get(user);
                     if(lss == null) {
                         lss = new ArrayList<>();
                         rows.put(user,lss);
@@ -97,25 +97,25 @@ public abstract class NotifyBody {
     public String name() {
         return name;
     }
-    
+
     public String type() {
         return type;
     }
-    
+
     public String date() {
         return date;
     }
     public int escalation() {
         return escalation;
     }
-    
+
     public Set<String> users() {
         return rows.keySet();
     }
-    
+
     /**
      * ID must be set from Row for Email lookup
-     * 
+     *
      * @param trans
      * @param n
      * @param id
@@ -123,30 +123,30 @@ public abstract class NotifyBody {
      * @return
      */
     public abstract boolean body(AuthzTrans trans, StringBuilder sb, int indent, Notify n, String id);
-    
+
     /**
      * Return "null" if user not found in row... Code will handle.
      * @param row
      * @return
      */
     protected abstract String user(List<String> row);
-    
+
     /**
      * Provide a context-sensitive Subject, which includes ENV as well as details
-     * 
+     *
      * @return
      */
     public abstract String subject();
 
     /**
      * Record the fact that a particular Notification was marked as "sent" by Emailer.
-     * 
+     *
      * @param trans
      * @param approver
      * @param ln
      */
     public abstract void record(AuthzTrans trans, StringBuilder query, String id, List<String> notified, LastNotified ln);
-    
+
     /**
      * Get Notify Body based on key of
      * type|name
@@ -154,10 +154,10 @@ public abstract class NotifyBody {
     public static NotifyBody get(String key) {
         return bodyMap.get(key);
     }
-    
+
     /**
      * Return set of loaded NotifyBodies
-     * 
+     *
      */
     public static Collection<NotifyBody> getAll() {
         // Note: The same Notify Body is entered several times with different keys.
@@ -166,11 +166,11 @@ public abstract class NotifyBody {
         set.addAll(bodyMap.values());
         return set;
     }
-    
+
     /**
-     * @param propAccess 
-     * @throws URISyntaxException 
-     * 
+     * @param propAccess
+     * @throws URISyntaxException
+     *
      */
     public static void load(Access access) throws APIException, IOException {
         // class load available NotifyBodies
@@ -179,57 +179,59 @@ public abstract class NotifyBody {
         String path = pkg.getName().replace('.', '/');
         URL url = cl.getResource(path);
         List<String> classNames = new ArrayList<>();
-        String urlString = url.toString();
-        if(urlString.startsWith("jar:file:")) {
-            int exclam = urlString.lastIndexOf('!');
-            JarFile jf = new JarFile(urlString.substring(9,exclam));
-            try {
-                Enumeration<JarEntry> jfe = jf.entries();
-                while(jfe.hasMoreElements()) {
-                    String name = jfe.nextElement().getName();
-                    if(name.startsWith(path) && name.endsWith(".class")) {
-                        classNames.add(name.substring(0,name.length()-6).replace('/', '.'));
+        String urlString;
+        if (url != null) {
+            urlString = url.toString();
+            if (urlString.startsWith("jar:file:")) {
+                int exclam = urlString.lastIndexOf('!');
+                JarFile jf = new JarFile(urlString.substring(9, exclam));
+                try {
+                    Enumeration<JarEntry> jfe = jf.entries();
+                    while (jfe.hasMoreElements()) {
+                        String name = jfe.nextElement().getName();
+                        if (name.startsWith(path) && name.endsWith(".class")) {
+                            classNames.add(name.substring(0, name.length() - 6).replace('/', '.'));
+                        }
                     }
+                } finally {
+                    jf.close();
                 }
-            } finally {
-                jf.close();
-            }
-        } else {
-            File dir = new File(url.getFile());
-            for( String f : dir.list()) {
-                if(f.endsWith(".class")) {
-                    classNames.add(pkg.getName()+'.'+f.substring(0,f.length()-6));
+            } else {
+                File dir = new File(url.getFile());
+                String[] dirs = dir.list();
+                if (dirs != null) {
+                    for (String f : dirs) {
+                        if (f.endsWith(".class")) {
+                            classNames.add(pkg.getName() + '.' + f.substring(0, f.length() - 6));
+                        }
+                    }
                 }
             }
-        }
-        for(String cls : classNames) {
-            try {
-                Class<?> c = cl.loadClass(cls);
-                if(c!=null) {
-                    if(!Modifier.isAbstract(c.getModifiers())) {
+            for (String cls : classNames) {
+                try {
+                    Class<?> c = cl.loadClass(cls);
+                    if ((c != null) && (!Modifier.isAbstract(c.getModifiers()))) {
                         Constructor<?> cst = c.getConstructor(Access.class);
-                        NotifyBody nb = (NotifyBody)cst.newInstance(access);
-                        if(nb!=null) {
-                            bodyMap.put("info|"+nb.name, nb);
-                            bodyMap.put(nb.type+'|'+nb.name, nb);
-                        }
+                        NotifyBody nb = (NotifyBody) cst.newInstance(access);
+                        bodyMap.put("info|" + nb.name, nb);
+                        bodyMap.put(nb.type + '|' + nb.name, nb);
                     }
+                } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+                    e.printStackTrace();
                 }
-            } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
-                e.printStackTrace();
             }
         }
     }
 
     protected void print(StringBuilder sb, int indent, Object ... objs) {
-        for(int i=0;i<indent;++i) {
+        for(int i = 0; i < indent; ++i) {
             sb.append(' ');
         }
         for(Object o : objs) {
             sb.append(o.toString());
         }
     }
-            
+
     protected void println(StringBuilder sb, int indent, Object ... objs) {
         print(sb,indent,objs);
         sb.append('\n');
@@ -247,15 +249,15 @@ public abstract class NotifyBody {
         }
         return current; // use to set prev...
     }
-    
+
     protected void printCell(StringBuilder sb, int indent, String current) {
         println(sb,indent,"<td>",current,"</td>");
     }
-    
+
     public synchronized void inc() {
         ++count;
     }
-    
+
     public int count() {
         return count;
     }