From dda84c780f8b45f86186fe5099d1d45b6203a156 Mon Sep 17 00:00:00 2001 From: Simon Allier Date: Mon, 21 Oct 2013 11:15:30 +0200 Subject: [PATCH] clean up --- .gitignore | 2 +- grid5000.sh | 2 +- {git => script/git}/add.sh | 0 {git => script/git}/init.sh | 0 {git => script/git}/push.sh | 0 run.sh => script/run.sh | 0 runAllTest.sh => script/runAllTest.sh | 0 runFromGit.sh => script/runFromGit.sh | 0 runSosie.sh => script/runSosie.sh | 0 .../diversify/sosie/Logger/LogWriter.java | 29 +++++++ .../ConditionalLoggingInstrumenter.java | 24 ++++-- .../processor/TestLoggingInstrumenter.java | 20 +++++ .../sosie/compare/CompareLogMain.java | 11 ++- .../compare/CompareSingleLogSequence.java | 2 + .../inria/diversify/sosie/compare/Diff.java | 78 ++++++++++--------- .../sosie/pointSequence/CatchPoint.java | 4 +- .../sosie/pointSequence/ConditionalPoint.java | 4 +- .../diversify/sosie/pointSequence/Point.java | 2 +- .../sosie/pointSequence/PointSequence.java | 4 +- .../diversify/transformation/RunMaven.java | 1 - .../transformation/TransformationParser.java | 2 - .../java/fr/inria/diversify/util/GitUtil.java | 19 ++--- .../diversify/sosie/logger/LogWriter.java | 73 +++++++++++------ 23 files changed, 189 insertions(+), 88 deletions(-) rename {git => script/git}/add.sh (100%) rename {git => script/git}/init.sh (100%) rename {git => script/git}/push.sh (100%) rename run.sh => script/run.sh (100%) rename runAllTest.sh => script/runAllTest.sh (100%) rename runFromGit.sh => script/runFromGit.sh (100%) rename runSosie.sh => script/runSosie.sh (100%) create mode 100644 src/main/java/fr/inria/diversify/sosie/Logger/processor/TestLoggingInstrumenter.java diff --git a/.gitignore b/.gitignore index 6d96bf6c..25d1c059 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -target .idea +.DS_Store /output_diversify/ /output_sosie/ /result/ diff --git a/grid5000.sh b/grid5000.sh index 5045d86c..09efeeb2 100644 --- a/grid5000.sh +++ b/grid5000.sh @@ -4,4 +4,4 @@ git pull mvn clean package java -jar target/Diversify-statements-1.0-SNAPSHOT-jar-with-dependencies.jar git repo -sh runFromGit.sh 100 & +sh script/runFromGit.sh 100 & diff --git a/git/add.sh b/script/git/add.sh similarity index 100% rename from git/add.sh rename to script/git/add.sh diff --git a/git/init.sh b/script/git/init.sh similarity index 100% rename from git/init.sh rename to script/git/init.sh diff --git a/git/push.sh b/script/git/push.sh similarity index 100% rename from git/push.sh rename to script/git/push.sh diff --git a/run.sh b/script/run.sh similarity index 100% rename from run.sh rename to script/run.sh diff --git a/runAllTest.sh b/script/runAllTest.sh similarity index 100% rename from runAllTest.sh rename to script/runAllTest.sh diff --git a/runFromGit.sh b/script/runFromGit.sh similarity index 100% rename from runFromGit.sh rename to script/runFromGit.sh diff --git a/runSosie.sh b/script/runSosie.sh similarity index 100% rename from runSosie.sh rename to script/runSosie.sh diff --git a/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java b/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java index 5eea1e09..869edd6c 100644 --- a/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java +++ b/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java @@ -109,6 +109,35 @@ public static void writeError(int id,Thread thread, String className, String met } } + public static void writeException(int id,Thread thread, String className, String methodSignature, Object exception) { + FileWriter fileWriter = null; + try { + fileWriter = init(thread); + } catch (IOException e) { + e.printStackTrace(); + } + try { + fileWriter.append("$$$\n"); + fileWriter.append("ST"); + fileWriter.append(separator); + fileWriter.append(id+""); + fileWriter.append(separator); + fileWriter.append(className); + fileWriter.append(separator); + fileWriter.append(methodSignature); + + fileWriter.append(separator); + if(exception != null) + fileWriter.append(exception.toString()); + else + fileWriter.append("NullException"); + + } + catch (IOException e) { + e.printStackTrace(); + } + } + public static void close() { for (FileWriter flw : fileWriters.values()) try { diff --git a/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java b/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java index 69411d30..f523b5e1 100644 --- a/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java +++ b/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java @@ -29,7 +29,7 @@ public boolean isToBeProcessed(CtStatement candidate) { return CtIf.class.isAssignableFrom(candidate.getClass()) || CtLoop.class.isAssignableFrom(candidate.getClass()) - || CtTry.class.isAssignableFrom(candidate.getClass()) + || CtThrow.class.isAssignableFrom(candidate.getClass()) ; } @@ -49,8 +49,8 @@ public boolean hasStaticParent(CtElement el) { public void process(CtStatement statement) { count++; - if (CtTry.class.isAssignableFrom(statement.getClass())) { - instruCatch((CtTry) statement); + if (CtThrow.class.isAssignableFrom(statement.getClass())) { + instruThrow((CtThrow) statement); } else { instruLoopOrIf(statement); } @@ -105,9 +105,23 @@ private void instruLoopOrIf(CtStatement statement) { } } + private void instruThrow(CtThrow throwStmt) { + String snippet = "{\nfr.inria.diversify.sosie.logger.LogWriter.writeException(" + count + ",Thread.currentThread(),\"" + + getClass(throwStmt).getQualifiedName() + "\",\"" + getMethod(throwStmt).getSignature() + "\"," + + throwStmt.getThrownExpression() + ");\n"; + SourcePosition sp = throwStmt.getPosition(); + CompilationUnit compileUnit = sp.getCompilationUnit(); + int index = compileUnit.beginOfLineIndex(sp.getSourceStart()); + compileUnit.addSourceCodeFragment(new SourceCodeFragment(index, snippet, 0)); + + snippet = "\n}\n"; + + index = compileUnit.nextLineIndex(sp.getSourceEnd()); + compileUnit.addSourceCodeFragment(new SourceCodeFragment(index, snippet, 0)); + } + + private void instruCatch(CtTry tryStmt) { - Log.info("instruCath"); - Log.info(tryStmt.toString()); List catchList = tryStmt.getCatchers(); for (CtCatch catchStmt : catchList) { if(getMethod(tryStmt) != null) { diff --git a/src/main/java/fr/inria/diversify/sosie/Logger/processor/TestLoggingInstrumenter.java b/src/main/java/fr/inria/diversify/sosie/Logger/processor/TestLoggingInstrumenter.java new file mode 100644 index 00000000..67da2f0e --- /dev/null +++ b/src/main/java/fr/inria/diversify/sosie/Logger/processor/TestLoggingInstrumenter.java @@ -0,0 +1,20 @@ +package fr.inria.diversify.sosie.logger.processor; + +import spoon.processing.AbstractProcessor; +import spoon.reflect.declaration.CtMethod; + +/** + * User: Simon + * Date: 10/21/13 + * Time: 9:27 AM + */ +public class TestLoggingInstrumenter extends AbstractProcessor { + + + @Override + public void process(CtMethod element) { + + element.getAnnotation(); + //To change body of implemented methods use File | Settings | File Templates. + } +} diff --git a/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java b/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java index 87bea106..7588084c 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java @@ -58,7 +58,11 @@ protected void same() throws IOException { protected void diff() throws Exception { String startPointString = DiversifyProperties.getProperty("startPoint"); + int count = 0; + int i =0; for(File f : (new File(dirSosie).listFiles())) { + i++; + Log.info("i {}",i); try { // Log.info("log files {}",f); File startPoint = new File(f.getAbsolutePath()+"/"+startPointString); @@ -75,14 +79,19 @@ protected void diff() throws Exception { Log.info(f.getName()); Log.info(diff.report()); diff.toDot(f.getName()+".dot"); + if(!diff.sameVar()) { + count++; + Log.info("i: "+count); + } } - else + else Log.info("same trace"); } catch (Exception e) { Log.error("error",e); e.printStackTrace(); } + } } diff --git a/src/main/java/fr/inria/diversify/sosie/compare/CompareSingleLogSequence.java b/src/main/java/fr/inria/diversify/sosie/compare/CompareSingleLogSequence.java index 8749ccd1..96e48b5a 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/CompareSingleLogSequence.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/CompareSingleLogSequence.java @@ -64,6 +64,8 @@ protected int[][] findDivergence(int syncroRange, int startOriginal, int startSo */ protected int[][] findDivergence(int syncroRange, int start1, int start2, PointSequence ps1, PointSequence ps2) { int bound = Math.min(ps1.size(), ps2.size()); + if(bound == 0) + return null; int[][] divergence = new int[bound][2]; int i = 0; divergence[i][0] = start1; diff --git a/src/main/java/fr/inria/diversify/sosie/compare/Diff.java b/src/main/java/fr/inria/diversify/sosie/compare/Diff.java index 0db650e9..01f81574 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/Diff.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/Diff.java @@ -65,6 +65,15 @@ public boolean sameTraceAndVar() { return true; } + public boolean sameVar() { + + for (Set vars : diffVar.values()) + if (!vars.isEmpty()) + return false; + + return true; + } + public boolean hasMatch(PointSequence original) { return match.containsKey(original); } @@ -84,7 +93,6 @@ public String report() { } return report; - } protected int findDiversificationIndex(PointSequence sequence) { @@ -98,78 +106,74 @@ public void toDot(String fileName) throws IOException { FileWriter fw = new FileWriter(fileName); BufferedWriter bw = new BufferedWriter(fw); + bw.write("digraph G {\n"); for (PointSequence ps : match.keySet()) - toDot(bw, ps); + bw.write(toDot(ps)); bw.write("}"); bw.close(); } - protected void toDot(BufferedWriter writer, PointSequence original) throws IOException { + protected String toDot( PointSequence original) throws IOException { if(match.get(original) == null) - return; + return ""; + StringBuilder builder = new StringBuilder(); PointSequence sosie = match.get(original); int[][] div = divergence.get(original); - int y = 1; - Point precedent = original.get(0); - writer.write(original.toDot() +"\n"); - writer.write(original.hashCode() + " -> " +precedent.hashCode()+"\n"); - writer.write(precedent.toDot(1, y,getVariableDiffFor(original, 0))+"\n"); - int i = 0; int start1 = 0; int start2 = 0; + boolean toString = false; + + Point precedent = original.get(0); + builder.append(original.toDot() + "\n"); + builder.append(original.hashCode() + " -> " + precedent.hashCode() + "\n"); + builder.append(precedent.toDot(getVariableDiffFor(original, 0)) + "\n"); while(i < div.length) { Point next = original.get(start1); + Set varD = getVariableDiffFor(original, div[i][0]); + if(!varD.isEmpty()) + toString = true; + if(start1 == div[i][0] && start2 == div[i][1]) { - writer.write(precedent.hashCode() + " -> " + next.hashCode()+"\n"); + builder.append(precedent.hashCode() + " -> " + next.hashCode()+"\n"); precedent = next; - writer.write(precedent.toDot(1,y,getVariableDiffFor(original, div[i][0]))+"\n"); + builder.append(precedent.toDot(varD)+"\n"); start1++; start2++; i++; } else { - writeDotBranch(writer,precedent, original.get(div[i][0]),start1,div[i][0], original); - writeDotBranch(writer,precedent, original.get(div[i][0]),start2,div[i][1], sosie); -// Point branchNext = precedent; -// int j = start1; -// for(; j < div[i][0]; j++) { -// writer.write(branchNext.hashCode() + " -> " + original.get(j).hashCode()+"\n"); -// branchNext = original.get(j); -// writer.write(branchNext.toDot(1, y, new HashSet())); -// } -// writer.write(branchNext.hashCode() + " -> " + original.get(div[i][0]).hashCode()+"\n"); -// branchNext = precedent; -// j = start2; -// for(; j < div[i][1]; j++) { -// writer.write(branchNext.hashCode() + " -> " + sosie.get(j).hashCode()+"\n"); -// branchNext = sosie.get(j); -// writer.write(branchNext.toDot(1,y,new HashSet())); -// } -// writer.write(branchNext.hashCode() + " -> " + original.get(div[i][0]).hashCode()+"\n"); - precedent = original.get(div[i][0]); - writer.write(precedent.toDot(0,10,getVariableDiffFor(original, div[i][0]))); + toString = true; + Point endBranch = original.get(div[i][0]); + writeDotBranch(builder,precedent, endBranch,start1,div[i][0], original); + writeDotBranch(builder,precedent, endBranch,start2,div[i][1], sosie); + precedent = endBranch; + builder.append(precedent.toDot(varD)); i++; start1 = div[i][0]; start2 = div[i][1]; } } + if(toString) + return builder.toString(); + return ""; } - protected void writeDotBranch(BufferedWriter writer, Point branchNext, Point endBranch, int i, int borne, PointSequence ps) throws IOException { + protected void writeDotBranch(StringBuilder builder, Point branchNext, Point endBranch, int i, int borne, PointSequence ps) throws IOException { for(; i < borne; i++) { - writer.write(branchNext.hashCode() + " -> " + ps.get(i).hashCode()+"\n"); + builder.append(branchNext.hashCode() + " -> " + ps.get(i).hashCode() + "\n"); branchNext = ps.get(i); - writer.write(branchNext.toDot(1, 0, new HashSet())); + builder.append(branchNext.toDot(new HashSet())); } - writer.write(branchNext.hashCode() + " -> " + endBranch.hashCode()+"\n"); + builder.append(branchNext.hashCode() + " -> " + endBranch.hashCode() + "\n"); } + protected Set getVariableDiffFor(PointSequence ps, int index) { Set set = new HashSet(); for (VariableDiff varD : diffVar.get(ps)) { @@ -178,4 +182,4 @@ protected Set getVariableDiffFor(PointSequence ps, int index) { } return set; } -} +} \ No newline at end of file diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/CatchPoint.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/CatchPoint.java index f0d769f9..bd92eedb 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/CatchPoint.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/CatchPoint.java @@ -37,8 +37,8 @@ protected void buildFrom(String string) { } @Override - public String toDot(int x, int y, Set varDiff) { - return null; //To change body of implemented methods use File | Settings | File Templates. + public String toDot(Set varDiff) { + return null; } public boolean sameValue(Point sPoint) { diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java index bb2d78a3..ff8e28f7 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java @@ -50,7 +50,7 @@ protected void buildFrom(String string) { } @Override - public String toDot(int x, int y,Set varsDiff) { + public String toDot(Set varsDiff) { String dot = hashCode() + " "; dot += "[\n label ="; if(varsDiff.isEmpty()) @@ -62,7 +62,7 @@ public String toDot(int x, int y,Set varsDiff) { dot += "\\n"+vf.toDot(); dot += "\"\n,color=\"red\","; } - dot += "\npos=\"" + x + "," + y + "!\"\n];"; + dot += "\n];"; return dot; } diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java index 08cf04a8..294413fe 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java @@ -55,6 +55,6 @@ public int getId() { return id; } - public abstract String toDot(int x, int y, Set varDiff); + public abstract String toDot(Set varDiff); } diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java index 3c54df93..50041937 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java @@ -46,10 +46,8 @@ public void parseFile(File file) throws IOException { addPoint(tmp); } - - protected void addPoint(String stringPoint) { - if(stringPoint.startsWith("ST")) + if(stringPoint.startsWith("----------------------------------ST")) cacthPoints.add(new CatchPoint(stringPoint)); else conditionalPoints.add(new ConditionalPoint(stringPoint)); diff --git a/src/main/java/fr/inria/diversify/transformation/RunMaven.java b/src/main/java/fr/inria/diversify/transformation/RunMaven.java index 73fd4e8b..31651e43 100644 --- a/src/main/java/fr/inria/diversify/transformation/RunMaven.java +++ b/src/main/java/fr/inria/diversify/transformation/RunMaven.java @@ -66,7 +66,6 @@ public void run() { invoker.setOutputHandler(psh); invoker.setErrorHandler(psh); try { - Log.debug("invoke maven"); invoker.execute(request); if(clojureTest) parseClojureResult(os.toString()); diff --git a/src/main/java/fr/inria/diversify/transformation/TransformationParser.java b/src/main/java/fr/inria/diversify/transformation/TransformationParser.java index 026f7c5f..8672a3af 100644 --- a/src/main/java/fr/inria/diversify/transformation/TransformationParser.java +++ b/src/main/java/fr/inria/diversify/transformation/TransformationParser.java @@ -174,8 +174,6 @@ protected CodeFragment findCodeFragment(JSONObject jsonObject) throws Exception } if (cf == null) { //TODO exception -// System.out.println(jsonObject.get("Position")); -// System.out.println(jsonObject.get("SourceCode")); throw new Exception(); } return cf; diff --git a/src/main/java/fr/inria/diversify/util/GitUtil.java b/src/main/java/fr/inria/diversify/util/GitUtil.java index 5b8c0c92..9a78646b 100644 --- a/src/main/java/fr/inria/diversify/util/GitUtil.java +++ b/src/main/java/fr/inria/diversify/util/GitUtil.java @@ -8,8 +8,9 @@ * Time: 2:32 PM */ public class GitUtil { - private static String directory; - private static String expFileName = "exp"; + protected static String directory; + protected static String expFileName = "exp"; + protected static String scriptDir = "script/git"; public static void initGit(String dir) { Log.debug("init git: {}", dir); @@ -17,7 +18,7 @@ public static void initGit(String dir) { new File(dir).mkdirs(); Runtime r = Runtime.getRuntime(); try { - Process p = r.exec("sh git/init.sh " +directory); + Process p = r.exec("sh "+ scriptDir + "/init.sh " +directory); p.waitFor(); } catch (Exception e) { Log.error("initGit ",e); @@ -54,8 +55,8 @@ private static void updateExpList(String s) throws IOException { public static void addToGit(String file) { Runtime r = Runtime.getRuntime(); try { - Process p = r.exec("sh git/add.sh " +directory+"/diversify-exp/ "+file+ " \"add file "+file+"\""); - Log.debug("sh git/add.sh " +directory+"/diversify-exp/ "+file+ " \"add file "+file+"\""); + Process p = r.exec("sh "+ scriptDir + "/add.sh " +directory+"/diversify-exp/ "+file+ " \"add file "+file+"\""); + Log.debug("sh "+ scriptDir + "/add.sh " +directory+"/diversify-exp/ "+file+ " \"add file "+file+"\""); p.waitFor(); } catch (Exception e) { Log.error("addToGit ",e); @@ -66,8 +67,8 @@ public static void addToGit(String file) { public static void addToGit(String subDir, String file) { Runtime r = Runtime.getRuntime(); try { - Process p = r.exec("sh git/add.sh " +subDir+ " " +file+ " \"add file "+file+"\""); - Log.debug("sh git/add.sh " +subDir+ " " +file+ " \"add file "+file+"\""); + Process p = r.exec("sh "+ scriptDir + "/add.sh " +subDir+ " " +file+ " \"add file "+file+"\""); + Log.debug("sh "+ scriptDir + "/add.sh " +subDir+ " " +file+ " \"add file "+file+"\""); p.waitFor(); } catch (Exception e) { Log.error("addToGit ",e); @@ -78,8 +79,8 @@ public static void addToGit(String subDir, String file) { public static void pushGit() { Runtime r = Runtime.getRuntime(); try { - Process p = r.exec("sh git/push.sh " +directory+"/diversify-exp/"); - Log.debug("sh git/push.sh " +directory+"/diversify-exp/"); + Process p = r.exec("sh "+ scriptDir + "/push.sh " +directory+"/diversify-exp/"); + Log.debug("sh "+ scriptDir + "/push.sh " +directory+"/diversify-exp/"); p.waitFor(); } catch (Exception e) { Log.error("addToGit ",e); diff --git a/utils/logger/fr/inria/diversify/sosie/logger/LogWriter.java b/utils/logger/fr/inria/diversify/sosie/logger/LogWriter.java index 6faa89c8..bae5813d 100644 --- a/utils/logger/fr/inria/diversify/sosie/logger/LogWriter.java +++ b/utils/logger/fr/inria/diversify/sosie/logger/LogWriter.java @@ -14,35 +14,34 @@ public class LogWriter { static private File dir; static private Map fileWriters; static private String separator = ":;:"; - - - protected static FileWriter init(Thread thread) throws IOException { + + + protected synchronized static FileWriter init(Thread thread) throws IOException { if(fileWriters == null) { + if(dir == null) + initDir(); fileWriters = new HashMap(); ShutdownHookLog shutdownHook = new ShutdownHookLog(); Runtime.getRuntime().addShutdownHook(shutdownHook); } if(!fileWriters.containsKey(thread)) { - if(dir == null) { - initDir(); - } String fileName = initFileName(thread); fileWriters.put(thread,new FileWriter(dir.getAbsolutePath()+"/"+fileName)); } return fileWriters.get(thread); } - + private static void initDir() { try { BufferedReader reader = new BufferedReader(new FileReader("LogDirName")); dir = new File("log"+reader.readLine()); - + } catch (IOException e) { dir = new File("log"); } dir.mkdir(); } - + private static String initFileName(Thread thread) { String fileName; try { @@ -53,14 +52,14 @@ private static String initFileName(Thread thread) { } return fileName; } - + public static void writeLog(int id,Thread thread, String className, String methodSignature, Object... var) { FileWriter fileWriter = null; try { - fileWriter = init(thread); - } catch (IOException e) { - e.printStackTrace(); - } + fileWriter = init(thread); + } catch (IOException e) { + e.printStackTrace(); + } try { fileWriter.append("$$$\n"); fileWriter.append(id+""); @@ -68,7 +67,7 @@ public static void writeLog(int id,Thread thread, String className, String metho fileWriter.append(className); fileWriter.append(separator); fileWriter.append(methodSignature); - + for (int i = 0; i < var.length/2; i = i + 2) { fileWriter.append(separator); fileWriter.append(var[i].toString()); @@ -77,11 +76,11 @@ public static void writeLog(int id,Thread thread, String className, String metho } } catch (IOException e) { e.printStackTrace(); - - + + } } - + public static void writeError(int id,Thread thread, String className, String methodSignature, StackTraceElement[] stackTrace) { FileWriter fileWriter = null; try { @@ -90,9 +89,8 @@ public static void writeError(int id,Thread thread, String className, String met e.printStackTrace(); } try { - + fileWriter.append("$$$\n"); - fileWriter.append("\n----------------------------------\n"); fileWriter.append("ST"); fileWriter.append(separator); fileWriter.append(id+""); @@ -100,17 +98,46 @@ public static void writeError(int id,Thread thread, String className, String met fileWriter.append(className); fileWriter.append(separator); fileWriter.append(methodSignature); - + for(StackTraceElement stackTraceElement :stackTrace) { + fileWriter.append(separator); fileWriter.append(stackTraceElement.toString()); - fileWriter.append(separator+"\n"); } } catch (IOException e) { e.printStackTrace(); } } - + + public static void writeException(int id,Thread thread, String className, String methodSignature, Object exception) { + FileWriter fileWriter = null; + try { + fileWriter = init(thread); + } catch (IOException e) { + e.printStackTrace(); + } + try { + fileWriter.append("$$$\n"); + fileWriter.append("ST"); + fileWriter.append(separator); + fileWriter.append(id+""); + fileWriter.append(separator); + fileWriter.append(className); + fileWriter.append(separator); + fileWriter.append(methodSignature); + + fileWriter.append(separator); + if(exception != null) + fileWriter.append(exception.toString()); + else + fileWriter.append("NullException"); + + } + catch (IOException e) { + e.printStackTrace(); + } + } + public static void close() { for (FileWriter flw : fileWriters.values()) try {