application-tracer
Details
.gitignore 34(+34 -0)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4a482b8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,34 @@
+# ignore eclipse project files
+.project
+.classpath
+
+# ignore Intellij Idea project files
+.idea
+*.iml
+
+# Netbeans
+/nbproject/
+/nbactions.xml
+
+# Netbeans deploy
+/build/
+
+# Maven deploy
+/target/
+
+# Ant deploy
+/dist/
+
+# Class files
+*.class
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
pom.xml 99(+99 -0)
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..9b22f04
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>br.ufrgs.inf.prosoft.applicationsdumpler</groupId>
+ <artifactId>ApplicationsDumpler</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
+ <dependencies>
+ <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.9.1</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>1.9.1</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>JSON-java</artifactId>
+ <version>1.0</version>
+ </dependency>
+ </dependencies>
+ <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.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.4</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <classpathPrefix>lib</classpathPrefix>
+ <mainClass>br.ufrgs.inf.prosoft.applicationsdumpler.NewClass</mainClass>
+ </manifest>
+ <manifestEntries>
+ <Class-Path>lib/</Class-Path>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>aspectj-maven-plugin</artifactId>
+ <version>1.7</version>
+ <configuration>
+ <complianceLevel>1.8</complianceLevel>
+ <source>1.8</source>
+ <target>1.8</target>
+ <showWeaveInfo>true</showWeaveInfo>
+ <verbose>true</verbose>
+ <Xlint>ignore</Xlint>
+ <encoding>UTF-8 </encoding>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>test-compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
diff --git a/src/main/java/br/ufrgs/inf/prosoft/applicationsdumpler/Dumpler.java b/src/main/java/br/ufrgs/inf/prosoft/applicationsdumpler/Dumpler.java
new file mode 100644
index 0000000..beb38bf
--- /dev/null
+++ b/src/main/java/br/ufrgs/inf/prosoft/applicationsdumpler/Dumpler.java
@@ -0,0 +1,59 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package br.ufrgs.inf.prosoft.applicationsdumpler;
+
+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;
+
+/**
+ *
+ * @author romulo
+ */
+@Aspect
+public class Dumpler {
+
+ @Pointcut("execution(!void *(..))")
+ public void anyMethodExecution() {
+ }
+
+ @Around("anyMethodExecution()")
+ public Object serializeMethodCall(ProceedingJoinPoint joinPoint) throws Throwable {
+ StringBuilder signature = new StringBuilder();
+ signature.append(joinPoint.getSignature().getDeclaringTypeName());
+ signature.append(".");
+ signature.append(joinPoint.getSignature().getName());
+ signature.append("(");
+ Object[] args = joinPoint.getArgs();
+ if (args.length != 0) {
+ int i = 0;
+ while (true) {
+ if (args[i] instanceof String) {
+ signature.append("\"").append(args[i]).append("\" ");
+ } else {
+ JSONObject jsonobject = new JSONObject(args[i]);
+ signature.append(jsonobject);
+ }
+ if (++i == args.length) {
+ break;
+ }
+ signature.append(", ");
+ }
+ }
+ signature.append(")");
+ Object proceed = joinPoint.proceed();
+ if (proceed instanceof String) {
+ signature.insert(0, "\"" + proceed + "\" ");
+ } else {
+ JSONObject jsonobject = new JSONObject(proceed);
+ signature.insert(0, jsonobject + " ");
+ }
+ System.out.println(signature);
+ return proceed;
+ }
+}