application-tracer

Details

pom.xml 4(+2 -2)

diff --git a/pom.xml b/pom.xml
index 02598d5..1c46302 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,8 +31,8 @@
             <version>2.8.5</version>
         </dependency>
         <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>JSON-java</artifactId>
+            <groupId>br.ufrgs.inf.prosoft.jsonserialiser</groupId>
+            <artifactId>JSONSerialiser</artifactId>
             <version>1.0</version>
         </dependency>
         <dependency>
diff --git a/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java b/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
index efd9a42..04e611c 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
@@ -5,13 +5,14 @@
  */
 package br.ufrgs.inf.prosoft.applicationtracer;
 
+import br.ufrgs.inf.prosoft.jsonserialiser.JSONSerialiser;
 import br.ufrgs.inf.prosoft.trace.Parameter;
 import br.ufrgs.inf.prosoft.trace.Return;
 import br.ufrgs.inf.prosoft.trace.Trace;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.nio.file.Files;
-import java.nio.file.NoSuchFileException;
 import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -19,7 +20,6 @@ import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Pointcut;
-import org.json.JSONObject;
 
 /**
  *
@@ -40,8 +40,19 @@ public class TracerAspect {
         if (startTime == endTime) {
             return proceed;
         }
+        List<String> blacklist;
+        try {
+            blacklist = Files.readAllLines(Paths.get("./blacklist"));
+        } catch (IOException ex) {
+            blacklist = new ArrayList<>();
+        }
         try {
             String longsignature = joinPoint.getSignature().toLongString();
+            if (blacklist.contains(longsignature)) {
+                System.out.println("[ApplicationTracer] skipping " + longsignature);
+                return proceed;
+            }
+            System.out.println("[ApplicationTracer] tracing " + longsignature);
             String[] split = longsignature.substring(0, longsignature.length() - 1).split("\\(");
             String[] modifiersReturnAndName = split[0].split(" ");
             String[] modifiers = Arrays.copyOf(modifiersReturnAndName, modifiersReturnAndName.length - 2);
@@ -64,16 +75,19 @@ public class TracerAspect {
             }
             Trace trace = new Trace(instance, Arrays.asList(modifiers), returnValue, methodName, parameters, startTime, endTime);
             synchronized (TracerAspect.class) {
-                String signature = JSONObject.createAcyclicFields(trace).toString();
-                signature += "\n";
-                try {
-                    Files.write(Paths.get("./trace"), signature.getBytes(), StandardOpenOption.APPEND);
-                } catch (NoSuchFileException e) {
-                    Files.write(Paths.get("./trace"), signature.getBytes(), StandardOpenOption.CREATE);
+                System.out.println("[ApplicationTracer] serialising " + System.currentTimeMillis());
+                try (FileWriter fileWriter = new FileWriter("./trace", true)) {
+                    try {
+                        JSONSerialiser.serialiseAcylicObject(trace, fileWriter);
+                    } catch (IOException ex) {
+                        System.err.println("[ApplicationTracer] Unable to serialise due IOException");
+                    }
+                    fileWriter.append("\n");
                 }
+                System.out.println("[ApplicationTracer] serialised " + System.currentTimeMillis());
             }
         } catch (Exception ex) {
-            System.err.println("[Application Tracer] exception: " + ex);
+            System.err.println("[ApplicationTracer] exception: " + ex);
         }
         return proceed;
     }