application-tracer

Details

pom.xml 18(+0 -18)

diff --git a/pom.xml b/pom.xml
index d63edb6..02598d5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,24 +44,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>copy</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>copy-dependencies</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>
-                                ${project.build.directory}/lib
-                            </outputDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>aspectj-maven-plugin</artifactId>
                 <version>1.7</version>
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 d6debed..d7f3b01 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
@@ -49,30 +49,43 @@ public class TracerAspect {
             String methodName = modifiersReturnAndName[modifiersReturnAndName.length - 1];
             String returnType = modifiersReturnAndName[modifiersReturnAndName.length - 2];
             List<Parameter> parameters = new ArrayList<>();
+            List<Parameter> parametersDigested = new ArrayList<>();
             MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
             if (split.length > 1) {
                 String[] parameterTypes = split[1].split(", ");
                 Object[] parametersData = joinPoint.getArgs();
                 for (int i = 0; i < parametersData.length; i++) {
-                    JSONObject.resetCycleBreaker();
-                    String parameter = new JSONObject(parametersData[i]).toString();
-                    parameters.add(new Parameter(parameterTypes[i], messageDigest.digest(parameter.getBytes()).toString()));
+                    String parameter = JSONObject.createCyclicFields(parametersData[i]).toString();
+                    parametersDigested.add(new Parameter(parameterTypes[i], messageDigest.digest(parameter.getBytes()).toString()));
+                    parameters.add(new Parameter(parameterTypes[i], parametersData[i]));
                 }
             }
-            JSONObject.resetCycleBreaker();
-            Return returnValue = new Return(returnType, messageDigest.digest(new JSONObject(proceed).toString().getBytes()).toString());
-            Trace trace = new Trace(Arrays.asList(modifiers), returnValue, methodName, parameters, startTime, endTime);
-            JSONObject.resetCycleBreaker();
-            String signature = new JSONObject(trace).toString();
+            Return returnValueDigested = new Return(returnType, messageDigest.digest(JSONObject.createCyclicFields(proceed).toString().getBytes()).toString());
+            Return returnValue = new Return(returnType, proceed);
+            String instance;
+            try {
+                instance = String.valueOf(joinPoint.getThis().hashCode());
+            } catch (Exception ex) {
+                instance = "s";
+            }
+            Trace traceDigested = new Trace(instance, Arrays.asList(modifiers), returnValueDigested, methodName, parametersDigested, startTime, endTime);
+            Trace trace = new Trace(instance, Arrays.asList(modifiers), returnValue, methodName, parameters, startTime, endTime);
+            String signature = JSONObject.createAcyclicFields(trace).toString();
             signature += "\n";
+            String signatureDigested = JSONObject.createAcyclicFields(traceDigested).toString();
+            signatureDigested += "\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.print(signature);
+            try {
+                Files.write(Paths.get("./traceDigested"), signatureDigested.getBytes(), StandardOpenOption.APPEND);
+            } catch (NoSuchFileException e) {
+                Files.write(Paths.get("./traceDigested"), signatureDigested.getBytes(), StandardOpenOption.CREATE);
+            }
         } catch (Exception ex) {
-            System.err.println(ex);
+            System.err.println("[Application Tracer] exception: " + ex);
         }
         return proceed;
     }