Skip to content

Commit fdd9f36

Browse files
committed
2 parents d43848c + d7c2628 commit fdd9f36

8 files changed

Lines changed: 109 additions & 33 deletions

File tree

src/edu/rosehulman/cjjb/JavaModelClassVisitor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import edu.rosehulman.cjjb.asm.ClassDeclarationVisitor;
1212
import edu.rosehulman.cjjb.asm.ClassFieldVisitor;
13-
import edu.rosehulman.cjjb.asm.ClassMethodLineVisitor;
1413
import edu.rosehulman.cjjb.asm.ClassMethodVisitor;
1514
import edu.rosehulman.cjjb.asm.ClassSequnceClassVisitor;
1615
import edu.rosehulman.cjjb.asm.QualifiedMethod;
@@ -33,6 +32,10 @@ public JavaModelClassVisitor(Set<String> classes, OutputStream out) {
3332
this(classes, out, null, null, 0);
3433
}
3534

35+
public JavaModelClassVisitor(OutputStream out, String classSearch, QualifiedMethod methodSearch, int depth) {
36+
this(null, out, classSearch, methodSearch, depth);
37+
}
38+
3639
public JavaModelClassVisitor(Set<String> classes, OutputStream out, String classSearch, QualifiedMethod methodSearch, int depth) {
3740
this.classes = classes;
3841
this.out = out;

src/edu/rosehulman/cjjb/Main.java

Lines changed: 105 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414

1515
import edu.rosehulman.cjjb.asm.QualifiedMethod;
1616
import edu.rosehulman.cjjb.javaModel.visitor.ISequenceVisitor;
17+
import edu.rosehulman.cjjb.javaModel.visitor.IUMLVisitor;
1718
import edu.rosehulman.cjjb.javaModel.visitor.SDSequenceVisitor;
19+
import edu.rosehulman.cjjb.javaModel.visitor.UMLDotVisitor;
1820

1921
public class Main {
2022

@@ -35,28 +37,120 @@ public class Main {
3537
public static final String boilerPlate = "digraph G { fontname = \"Bitstream Vera Sans\" fontsize = 8 node [ fontname = \"Bitstream Vera Sans\" fontsize = 8 shape = \"record\" ] edge [ fontname = \"Bitstream Vera Sans\" fontsize = 8 ]";
3638

3739
public static void main(String[] args) throws IOException, ClassNotFoundException {
40+
if(args.length == 0) {
41+
System.out.println("Calls shown bellow");
42+
System.out.println("UML -c <List of Classes> -p <List of Packages>");
43+
System.out.println("SEQ -c <Class> -m <Method> -d <ASM Desc>");
44+
System.out.println("EXAMPLE");
45+
return;
46+
}
3847
OutputStream out = new FileOutputStream("output.txt");
48+
switch (args[0]) {
49+
case "SEQ":
50+
QualifiedMethod qm = new QualifiedMethod(getMethodFromArgs(args), getDescFromArgs(args));
51+
// QualifiedMethod qm = new QualifiedMethod("shuffle", "(Ljava/util/List;)V");
52+
String clazz = getClassFromArgs(args);
53+
JavaModelClassVisitor visitor = new JavaModelClassVisitor(out, clazz, qm, 2);
54+
55+
visitor.buildSeqModel();
56+
ISequenceVisitor seqVisitor = new SDSequenceVisitor(clazz, qm, 2, out);
57+
visitor.getModel().accept(seqVisitor);
58+
break;
59+
case "UML":
60+
Set<String> classesToVisit = new HashSet<String>();
61+
classesToVisit.addAll(getClassesFromArgs(args));
62+
63+
for (String s : getPackagesFromArgs(args)) {
64+
classesToVisit.addAll(getClasses(s));
65+
}
66+
67+
visitor = new JavaModelClassVisitor(classesToVisit, out);
68+
visitor.buildUMLModel();
69+
IUMLVisitor umlVisitor = new UMLDotVisitor(out);
70+
visitor.getModel().accept(umlVisitor);
71+
break;
72+
case "EXAMPLE":
73+
exampleCall(new FileOutputStream("output.txt"));
74+
break;
75+
default:
76+
System.out.println("Not a valid diagram type. Valid Types: SEQ|UML|EXAMPLE");
77+
}
78+
}
79+
80+
private static String getClassFromArgs(String[] args) {
81+
int index = 0;
82+
while(index < args.length && !args[index++].equals("-c")) { }
83+
84+
return args[index];
85+
}
86+
87+
88+
private static String getDescFromArgs(String[] args) {
89+
int index = 0;
90+
while(index < args.length && !args[index++].equals("-d")) { }
91+
92+
return args[index];
93+
}
94+
95+
private static String getMethodFromArgs(String[] args) {
96+
int index = 0;
97+
while(index < args.length && !args[index++].equals("-m")) { }
98+
99+
return args[index];
100+
}
39101

102+
private static List<String> getPackagesFromArgs(String[] args) {
103+
List<String> toReturn = new ArrayList<String>();
104+
105+
int index = 0;
106+
while(index < args.length && !args[index++].equals("-p")) { }
107+
108+
for(int i = index; i < args.length; i++) {
109+
if(args[i].equals("-c")) {
110+
break;
111+
}
112+
113+
toReturn.add(args[i]);
114+
}
115+
116+
return toReturn;
117+
}
118+
119+
private static List<String> getClassesFromArgs(String[] args) {
120+
List<String> toReturn = new ArrayList<String>();
121+
122+
int index = 0;
123+
while(index < args.length && !args[index++].equals("-c")) { }
124+
125+
for(int i = index; i < args.length; i++) {
126+
if(args[i].equals("-p")) {
127+
break;
128+
}
129+
130+
toReturn.add(args[i]);
131+
}
132+
133+
return toReturn;
134+
}
135+
136+
private static void exampleCall(OutputStream out ) throws IOException, ClassNotFoundException {
40137
Set<String> classesToVisit = new HashSet<String>();
41138
classesToVisit.addAll(Arrays.asList(CLASSES));
42-
139+
43140
for (String s : PACKAGES) {
44141
classesToVisit.addAll(getClasses(s));
45142
}
46-
143+
47144
QualifiedMethod qm = new QualifiedMethod("shuffle", "(Ljava/util/List;)V");
48145
JavaModelClassVisitor visitor = new JavaModelClassVisitor(classesToVisit, out, "java.util.Collections", qm, 2);
49146

50-
// visitor.buildUMLModel();
51-
// IUMLVisitor umlVisitor = new UMLDotVisitor(out);
52-
// visitor.getModel().accept(umlVisitor);
53-
147+
visitor.buildUMLModel();
148+
IUMLVisitor umlVisitor = new UMLDotVisitor(out);
149+
visitor.getModel().accept(umlVisitor);
150+
54151
visitor.buildSeqModel();
55152
ISequenceVisitor seqVisitor = new SDSequenceVisitor("java.util.Collections", qm, 2, out);
56153
visitor.getModel().accept(seqVisitor);
57-
58-
//java.util.Collections.shuffle(list, rnd);
59-
//java.util.Random;
60154
}
61155

62156
/* From
@@ -71,7 +165,8 @@ public static void main(String[] args) throws IOException, ClassNotFoundExceptio
71165
* @return The classes
72166
* @throws ClassNotFoundException
73167
* @throws IOException
74-
*/ private static List<String> getClasses(String packageName) throws ClassNotFoundException, IOException {
168+
*/
169+
private static List<String> getClasses(String packageName) throws ClassNotFoundException, IOException {
75170
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
76171
assert classLoader != null;
77172
String path = packageName.replace('.', '/');

src/edu/rosehulman/cjjb/asm/ClassSequnceClassVisitor.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@ public MethodVisitor visitMethod(int access, String name, String desc, String si
5151

5252
QualifiedMethod qmeth = new QualifiedMethod(name, desc);
5353
if(methodsToFind.contains(qmeth)) {
54-
55-
System.out.println("I found the method");
56-
5754
MethodCallGroup method = new MethodCallGroup(className, qmeth);
5855
toDecorate = new ClassSequnceMethodVisitor(this.api, toDecorate, method, this.model, this.depth, seqStructure);
5956

src/edu/rosehulman/cjjb/asm/MethodCallLine.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package edu.rosehulman.cjjb.asm;
22

3-
import java.util.List;
4-
53
public class MethodCallLine {
64

75
public String classOf;

src/edu/rosehulman/cjjb/javaModel/visitor/SDSequenceVisitor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import java.util.Set;
99

1010
import edu.rosehulman.cjjb.asm.QualifiedMethod;
11-
import edu.rosehulman.cjjb.javaModel.AbstractJavaElement;
1211
import edu.rosehulman.cjjb.javaModel.AbstractJavaStructure;
1312
import edu.rosehulman.cjjb.javaModel.JavaModel;
1413
import edu.rosehulman.cjjb.javaModel.Method;

test/JavaModelTest.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import static org.junit.Assert.*;
22

3-
import edu.rosehulman.cjjb.asm.MethodCallGroup;
4-
import edu.rosehulman.cjjb.asm.Utils;
53
import edu.rosehulman.cjjb.javaModel.JavaModel;
64
import edu.rosehulman.cjjb.javaModel.Method;
75
import edu.rosehulman.cjjb.javaModel.Relation;
@@ -12,20 +10,13 @@
1210
import edu.rosehulman.cjjb.javaModel.Interface;
1311
import edu.rosehulman.cjjb.javaModel.modifier.*;
1412

15-
import java.io.ByteArrayOutputStream;
16-
import java.io.IOException;
1713
import java.util.HashSet;
1814
import java.util.LinkedList;
1915
import java.util.List;
2016
import java.util.Set;
2117

2218
import org.junit.Test;
2319

24-
//import com.sun.deploy.uitoolkit.impl.fx.Utils;
25-
import com.sun.xml.internal.ws.org.objectweb.asm.Opcodes;
26-
27-
import edu.rosehulman.cjjb.JavaModelClassVisitor;
28-
2920
public class JavaModelTest {
3021
@Test
3122
public void testGetChildParentIncludedRelations() {

test/SDTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.io.ByteArrayOutputStream;
44
import java.io.IOException;
5-
import java.io.OutputStream;
65
import java.util.HashSet;
76
import java.util.Set;
87

test/UtilsTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
import static org.junit.Assert.*;
22
import edu.rosehulman.cjjb.asm.Utils;
33
import edu.rosehulman.cjjb.javaModel.JavaModel;
4-
import edu.rosehulman.cjjb.javaModel.Method;
5-
import edu.rosehulman.cjjb.javaModel.Relation;
6-
import edu.rosehulman.cjjb.javaModel.AbstractJavaElement;
74
import edu.rosehulman.cjjb.javaModel.AbstractJavaStructure;
8-
import edu.rosehulman.cjjb.javaModel.Class;
9-
import edu.rosehulman.cjjb.javaModel.Field;
10-
import edu.rosehulman.cjjb.javaModel.Interface;
115
import edu.rosehulman.cjjb.javaModel.modifier.*;
126
import edu.rosehulman.cjjb.javaModel.visitor.IUMLVisitor;
137
import edu.rosehulman.cjjb.javaModel.visitor.UMLDotVisitor;

0 commit comments

Comments
 (0)