diff --git a/src/main/java/br/ufrgs/inf/prosoft/applicationsdumpler/Dumpler.java b/src/main/java/br/ufrgs/inf/prosoft/applicationsdumpler/Dumpler.java
index beb38bf..69ac1d1 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/applicationsdumpler/Dumpler.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/applicationsdumpler/Dumpler.java
@@ -5,6 +5,16 @@
*/
package br.ufrgs.inf.prosoft.applicationsdumpler;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@@ -24,17 +34,27 @@ public class Dumpler {
@Around("anyMethodExecution()")
public Object serializeMethodCall(ProceedingJoinPoint joinPoint) throws Throwable {
+ String longsignature = joinPoint.getSignature().toLongString();
+ int indexOfParenthesis = longsignature.lastIndexOf("(");
+ String[] argumentClassesName = longsignature.substring(indexOfParenthesis + 1, longsignature.length() - 1).split(", ");
+ String returnClassName = longsignature.substring(0, indexOfParenthesis);
+ returnClassName = returnClassName.substring(0, returnClassName.lastIndexOf(" "));
+ int indexOfEndOfModifiersSpace = returnClassName.lastIndexOf(" ");
+ String modifiers = returnClassName.substring(0, indexOfEndOfModifiersSpace);
+ returnClassName = returnClassName.substring(indexOfEndOfModifiersSpace + 1, returnClassName.length());
StringBuilder signature = new StringBuilder();
signature.append(joinPoint.getSignature().getDeclaringTypeName());
signature.append(".");
signature.append(joinPoint.getSignature().getName());
- signature.append("(");
+ signature.append("(").append("[");
Object[] args = joinPoint.getArgs();
if (args.length != 0) {
int i = 0;
while (true) {
+ signature.append("\"").append(argumentClassesName[i]).append("\":");
if (args[i] instanceof String) {
- signature.append("\"").append(args[i]).append("\" ");
+ String argument = (String) args[i];
+ signature.append("\"").append(argument.replace("\n", "\\n")).append("\"");
} else {
JSONObject jsonobject = new JSONObject(args[i]);
signature.append(jsonobject);
@@ -45,15 +65,20 @@ public class Dumpler {
signature.append(", ");
}
}
- signature.append(")");
+ signature.append("]").append(")");
Object proceed = joinPoint.proceed();
if (proceed instanceof String) {
- signature.insert(0, "\"" + proceed + "\" ");
+ String proceedCast = (String) proceed;
+ signature.insert(0, "\"" + proceedCast.replace("\n", "\\n") + "\" ");
} else {
JSONObject jsonobject = new JSONObject(proceed);
signature.insert(0, jsonobject + " ");
}
- System.out.println(signature);
+ signature.insert(0, "\"" + returnClassName + "\":");
+ signature.insert(0, modifiers + " ");
+ signature.append("\n");
+ Files.write(Paths.get("./trace"), signature.toString().getBytes(), StandardOpenOption.APPEND);
+ System.out.print(signature);
return proceed;
}
}