Update Batch from Testing
Issue-ID: AAF-789
Change-Id: Ie26798de8b2afe2114f7712fb84798a7bff8e72b
Signed-off-by: Instrumental <jonathan.gathman@att.com>
diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/Batch.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/Batch.java
index d51ec60..36a88b6 100644
--- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/Batch.java
+++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/Batch.java
@@ -73,7 +73,7 @@
protected static final String STARS = "*****";
- protected final Cluster cluster;
+ protected static Cluster cluster;
protected static AuthzEnv env;
protected static Session session;
protected static Set<String> specialNames;
@@ -105,7 +105,8 @@
CassAccess.CASSANDRA_CLUSTERS_PASSWORD,
VERSION,GUI_URL,MAX_EMAILS,
LOG_DIR,
- "SPECIAL_NAMES"
+ "SPECIAL_NAMES",
+ "MAIL_TEST_TO"
}) {
if ((str = env.getProperty(batchEnv+'.'+key))!=null) {
env.setProperty(key, str);
@@ -114,7 +115,9 @@
}
// Setup for Dry Run
- cluster = CassAccess.cluster(env,batchEnv);
+ if(cluster==null) {
+ cluster = CassAccess.cluster(env,batchEnv);
+ }
env.info().log("cluster name - ",cluster.getClusterName());
String dryRunStr = env.getProperty( "DRY_RUN" );
if ( dryRunStr == null || "false".equals(dryRunStr.trim()) ) {
@@ -367,8 +370,9 @@
_close(trans);
if(session!=null) {
session.close();
+ session = null;
}
- if(cluster!=null) {
+ if(cluster!=null && !cluster.isClosed()) {
cluster.close();
}
}
@@ -515,7 +519,14 @@
}
if (batch != null) {
- batch.run(trans);
+ try {
+ batch.run(trans);
+ } catch (Exception e) {
+ if(cluster!=null && !cluster.isClosed()) {
+ cluster.close();
+ }
+ trans.error().log(e);
+ }
}
} finally {
tt.done();
@@ -531,9 +542,10 @@
}
} catch (Exception e) {
+ if(cluster!=null && !cluster.isClosed()) {
+ cluster.close();
+ }
e.printStackTrace(System.err);
- // Exceptions thrown by DB aren't stopping the whole process.
- System.exit(1);
}
}
diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/ApprovalSet.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/ApprovalSet.java
index 005397b..45617f8 100644
--- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/ApprovalSet.java
+++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/ApprovalSet.java
@@ -21,14 +21,11 @@
package org.onap.aaf.auth.batch.approvalsets;
import java.nio.ByteBuffer;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import java.util.UUID;
import org.onap.aaf.auth.dao.cass.ApprovalDAO;
import org.onap.aaf.auth.dao.cass.FutureDAO;
@@ -45,23 +42,12 @@
public ApprovalSet(final GregorianCalendar start, final String target, final DataView dv) throws CadiException {
dataview = dv;
fdd = new FutureDAO.Data();
- try {
- fdd.id = newID(target);
- } catch (NoSuchAlgorithmException e) {
- throw new CadiException(e);
- }
+ fdd.id = Chrono.dateToUUID(System.currentTimeMillis());
fdd.target = target;
fdd.start = start.getTime();
ladd = new ArrayList<>();
}
- protected UUID newID(String target) throws NoSuchAlgorithmException {
- StringBuilder sb = new StringBuilder(new String(SecureRandom.getInstanceStrong().generateSeed(10)));
- sb.append(target);
- sb.append(System.currentTimeMillis());
- return Chrono.dateToUUID(System.currentTimeMillis());
- }
-
protected void setConstruct(final ByteBuffer bytes) {
fdd.construct = bytes;
}
diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/URApprovalSet.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/URApprovalSet.java
index 7f7bff2..a25ad6e 100644
--- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/URApprovalSet.java
+++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/approvalsets/URApprovalSet.java
@@ -41,8 +41,6 @@
public class URApprovalSet extends ApprovalSet {
- private boolean ownerSuperApprove = true;
-
public URApprovalSet(final AuthzTrans trans, final GregorianCalendar start, final DataView dv, final Loader<UserRoleDAO.Data> lurdd) throws IOException, CadiException {
super(start, "user_role", dv);
Organization org = trans.org();
@@ -120,10 +118,6 @@
fdd.target_key = key;
}
- public void ownerSuperApprove(boolean set) {
- ownerSuperApprove = set;
- }
-
private ApprovalDAO.Data newApproval(UserRoleDAO.Data urdd) throws CadiException {
ApprovalDAO.Data add = new ApprovalDAO.Data();
add.id = Chrono.dateToUUID(System.currentTimeMillis());
diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/LastNotified.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/LastNotified.java
index 6af1cbe..e108ec8 100644
--- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/LastNotified.java
+++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/LastNotified.java
@@ -118,7 +118,7 @@
query.append(target);
query.append("' AND key='");
query.append(key);
- query.append("';");
+ query.append("';\n");
}
public static String newKey(UserRoleDAO.Data urdd) {
diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/Notify.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/Notify.java
index 5a0b70a..3c7634f 100644
--- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/Notify.java
+++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/Notify.java
@@ -73,7 +73,7 @@
public Notify(AuthzTrans trans) throws APIException, IOException, OrganizationException {
super(trans.env());
access = env.access();
- session = super.cluster.connect();
+ session = cluster.connect();
String mailerCls = env.getProperty("MAILER");
String mailFrom = env.getProperty("MAIL_FROM");
@@ -95,7 +95,11 @@
String line;
StringBuilder sb = new StringBuilder();
- BufferedReader br = new BufferedReader(new FileReader(header_html));
+ File fhh = new File(header_html);
+ if(!fhh.exists()) {
+ throw new APIException(header_html + " does not exist");
+ }
+ BufferedReader br = new BufferedReader(new FileReader(fhh));
try {
while((line=br.readLine())!=null) {
sb.append(line);
@@ -130,7 +134,12 @@
urgent = false;
sb.setLength(0);
- br = new BufferedReader(new FileReader(footer_html));
+ fhh = new File(footer_html);
+ if(!fhh.exists()) {
+ throw new APIException(footer_html + " does not exist");
+ }
+
+ br = new BufferedReader(new FileReader(fhh));
try {
while((line=br.readLine())!=null) {
sb.append(line);
@@ -142,7 +151,7 @@
}
noAvg = trans.env().newTransNoAvg();
- cqlBatch = new CQLBatch(noAvg.info(),session);
+ cqlBatch = new CQLBatch(noAvg.debug(),session);
}
/*
diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java
index 82c1f2c..947312f 100644
--- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java
+++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/bodies/NotifyBody.java
@@ -29,12 +29,15 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
import org.onap.aaf.auth.batch.reports.Notify;
import org.onap.aaf.auth.env.AuthzTrans;
@@ -160,39 +163,45 @@
Package pkg = NotifyBody.class.getPackage();
String path = pkg.getName().replace('.', '/');
URL url = cl.getResource(path);
- if(url == null) {
- throw new APIException("Cannot load resources from " + 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('/', '.'));
+ }
+ }
+ } 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));
+ }
+ }
}
- File dir;
- try {
- dir = new File(url.toURI());
- } catch (URISyntaxException e) {
- throw new APIException(e);
- }
- if(dir.exists()) {
- String[] files = dir.list();
- if(files!=null) {
- for(String sf : files) {
- int dot = sf.indexOf('.');
- if(dot>=0) {
- String cls = pkg.getName()+'.'+sf.substring(0,dot);
- try {
- Class<?> c = cl.loadClass(cls);
- if(c!=null) {
- if(!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);
- }
- }
- }
- } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
- e.printStackTrace();
+ for(String cls : classNames) {
+ try {
+ Class<?> c = cl.loadClass(cls);
+ if(c!=null) {
+ if(!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);
}
}
}
+ } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
}
}
}
diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Remove.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Remove.java
index 7a30dc5..4472a31 100644
--- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Remove.java
+++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Remove.java
@@ -51,6 +51,7 @@
import org.onap.aaf.misc.env.APIException;
import org.onap.aaf.misc.env.Env;
import org.onap.aaf.misc.env.TimeTaken;
+import org.onap.aaf.misc.env.Trans;
import org.onap.aaf.misc.env.util.Chrono;
public class Remove extends Batch {
@@ -74,7 +75,7 @@
} finally {
tt2.done();
}
- cqlBatch = new CQLBatch(noAvg.info(),session);
+ cqlBatch = new CQLBatch(noAvg.debug(),session);
} finally {
@@ -185,14 +186,19 @@
}
}
} finally {
- if(ur.get()) {
- cqlBatch.touch(UserRoleDAO.TABLE, 0, UserRoleDAO.CACHE_SEG, dryRun);
- }
- if(cred.get()) {
- cqlBatch.touch(CredDAO.TABLE, 0, CredDAO.CACHE_SEG, dryRun);
- }
- if(x509.get()) {
- cqlBatch.touch(CertDAO.TABLE, 0, CertDAO.CACHE_SEG, dryRun);
+ TimeTaken tt = trans.start("Touch UR,Cred and Cert Caches",Trans.REMOTE);
+ try {
+ if(ur.get()) {
+ cqlBatch.touch(UserRoleDAO.TABLE, 0, UserRoleDAO.CACHE_SEG, dryRun);
+ }
+ if(cred.get()) {
+ cqlBatch.touch(CredDAO.TABLE, 0, CredDAO.CACHE_SEG, dryRun);
+ }
+ if(x509.get()) {
+ cqlBatch.touch(CertDAO.TABLE, 0, CertDAO.CACHE_SEG, dryRun);
+ }
+ } finally {
+ tt.done();
}
}
}
diff --git a/auth/auth-core/src/main/java/org/onap/aaf/auth/org/FileMailer.java b/auth/auth-core/src/main/java/org/onap/aaf/auth/org/FileMailer.java
index 2e3801e..6a648a8 100644
--- a/auth/auth-core/src/main/java/org/onap/aaf/auth/org/FileMailer.java
+++ b/auth/auth-core/src/main/java/org/onap/aaf/auth/org/FileMailer.java
@@ -47,7 +47,10 @@
throw new APIException("MAIL_FROM property is required for Email Notifications");
}
String env = access.getProperty("CASS_ENV", "UNKNOWN");
- String logdir = access.getProperty(env+".LOG_DIR", "logs/"+env);
+ String logdir = access.getProperty("LOG_DIR",null);
+ if(logdir==null) {
+ logdir=access.getProperty(env+".LOG_DIR", "logs/"+env);
+ }
dir = Paths.get(logdir+"/email/"+Chrono.dateOnlyStamp());
if(!Files.exists(dir)) {
try {
diff --git a/pom.xml b/pom.xml
index 185d51c..f306f5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
<parent>
<groupId>org.onap.oparent</groupId>
<artifactId>oparent</artifactId>
- <version>2.0.0</version>
+ <version>1.2.3</version>
</parent>
<properties>