summaryrefslogtreecommitdiffstats
path: root/jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/common/ExceptionCollector.java
diff options
context:
space:
mode:
Diffstat (limited to 'jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/common/ExceptionCollector.java')
-rw-r--r--jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/common/ExceptionCollector.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/common/ExceptionCollector.java b/jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/common/ExceptionCollector.java
new file mode 100644
index 0000000..9bef6bc
--- /dev/null
+++ b/jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/common/ExceptionCollector.java
@@ -0,0 +1,80 @@
+package org.openecomp.sdc.toscaparser.api.common;
+
+import org.openecomp.sdc.toscaparser.api.elements.EntityType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+
+// Perfectly good enough...
+
+public class ExceptionCollector {
+
+ private static Logger log = LoggerFactory.getLogger(ExceptionCollector.class.getName());
+
+ private static boolean isCollecting = false;
+ private static ArrayList<String> exceptionStrings = null;
+ private static ArrayList<String> traceStrings = null;
+ private static boolean bWantTrace = true;
+
+ public static void start() {
+ if(exceptionStrings == null) {
+ exceptionStrings = new ArrayList<String>();
+ traceStrings = new ArrayList<String>();
+ }
+ isCollecting = true;
+ }
+
+ public static void stop() {
+ isCollecting = false;
+ }
+
+ public static void clear() {
+ exceptionStrings = null;
+ traceStrings = null;
+ }
+
+ public static void appendException(String strExc) { // throws Exception {
+
+ if(!isCollecting) {
+ // throw new Exception("Can't append exception " + strExc);
+ log.error("ExceptionCollector - appendException - Can't append exception {}", strExc);
+ }
+
+ if(!exceptionStrings.contains(strExc)) {
+ exceptionStrings.add(strExc);
+ // get stack trace
+ StackTraceElement[] ste = Thread.currentThread().getStackTrace();
+ StringBuilder sb = new StringBuilder();
+ // skip the last 2 (getStackTrace and this)
+ for(int i=2; i<ste.length; i++) {
+ sb.append(String.format(" %s(%s:%d)%s",ste[i].getClassName(),ste[i].getFileName(),
+ ste[i].getLineNumber(),i==ste.length-1?" ":"\n"));
+ }
+ traceStrings.add(sb.toString());
+ }
+ }
+
+ public static ArrayList<String> getExceptionReport() {
+ if(exceptionStrings.size() > 0) {
+ ArrayList<String> report = new ArrayList<>();
+ for(int i=0; i<exceptionStrings.size(); i++) {
+ report.add(exceptionStrings.get(i));
+ if(bWantTrace) {
+ report.add(traceStrings.get(i));
+ }
+ }
+ return report;
+ }
+ return null;
+ }
+
+ public static int errorsCaught() {
+ return exceptionStrings.size();
+ }
+
+ public static void setWantTrace(boolean b) {
+ bWantTrace = b;
+ }
+
+}