diff --git a/pom.xml b/pom.xml old mode 100644 new mode 100755 index e625762..6f93ad0 --- a/pom.xml +++ b/pom.xml @@ -138,6 +138,18 @@ 2.4 + + org.redisson + redisson + 3.3.0 + + + org.eclipse.jetty + jetty-util + 9.4.4.v20170414 + compile + + @@ -180,3 +192,8 @@ + + diff --git a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java old mode 100644 new mode 100755 index 96b041c..74579aa --- a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java @@ -71,6 +71,7 @@ public class Launcher { pairsPath = datasetPath + "/pairs"; dumpsName = "dumps-"+pjName+".rdb"; int iCursor = Integer.valueOf(cursor); +// jobType = "CACHE"; try { switch (jobType) { diff --git a/src/main/java/edu/lu/uni/serval/fixminer/TestTreeLoader.java b/src/main/java/edu/lu/uni/serval/fixminer/TestTreeLoader.java old mode 100644 new mode 100755 index 9beb253..5d519be --- a/src/main/java/edu/lu/uni/serval/fixminer/TestTreeLoader.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/TestTreeLoader.java @@ -22,7 +22,8 @@ public class TestTreeLoader { // String inputPath = "/Users/anilkoyuncu/bugStudy/dataset/GumTreeOutput/ENTESB/ASTDumps"; - String inputPath = "/Users/anilkoyuncu/bugStudy/dataset/GumTreeOutput2/"; +// String inputPath = "/Users/anilkoyuncu/bugStudy/dataset/GumTreeOutput2/"; + String inputPath ="/Users/anil.koyuncu/projects/fixminer-all/enhancedASTDiff/python/data/EnhancedASTDiffgumInput-old/AssertStatement"; File folder = new File(inputPath); File[] listOfFiles = folder.listFiles(); Stream stream = Arrays.stream(listOfFiles); diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/BaseMessage.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/BaseMessage.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/DocumentSimilarity.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/DocumentSimilarity.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java old mode 100644 new mode 100755 index 9e98b93..ab7fb7d --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java @@ -23,6 +23,7 @@ import redis.clients.jedis.JedisPool; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; import static edu.lu.uni.serval.fixminer.jobs.MultiThreadTreeLoaderCluster3.getNames; @@ -52,15 +53,15 @@ public class CompareTrees { log.info(cmdInner); cs.runShell(cmdInner, portInner); - String numOfWorkers = args[4]; - String host = args[5]; + String numOfWorkers = "100000000";//args[4]; + String host = "localhost";//args[5]; // -Djava.util.concurrent.ForkJoinPool.common.parallelism=256 final JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), host,Integer.valueOf(portInner),20000000); final JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), host,Integer.valueOf(port),20000000); - List listOfPairs = AkkaTreeParser.getRMessages(innerPool,Integer.valueOf(numOfWorkers)); + List listOfPairs = AkkaTreeParser.getMessages(innerPool,Integer.valueOf(numOfWorkers)); // String pair = AkkaTreeParser.getMessage(innerPool); @@ -90,8 +91,29 @@ public class CompareTrees { // // } // } + ArrayList samePairs = new ArrayList<>(); + ArrayList errorPairs = new ArrayList<>(); - listOfPairs.stream().parallel().forEach(m->coreCompare(m, args[0],innerPool, outerPool)); + + + listOfPairs.stream().parallel().forEach(m->coreCompare(m, args[0],innerPool, outerPool,samePairs,errorPairs)); + +// int size = samePairs.size(); + try (Jedis jedis = innerPool.getResource()) { +// jedis.select(2); +// for (String samePair : samePairs) { +// jedis.set(samePair,"1"); +// } + + jedis.select(0); + jedis.flushDB(); + for (String errorPair : errorPairs) { + jedis.hset(errorPair, "0", "1"); + } + + + } + log.info("End process"); // listOfPairs.parallelStream().forEach(m->coreCompare(m, args[0],innerPool, outerPool)); // for (String listOfPair : listOfPairs) { @@ -119,200 +141,195 @@ public class CompareTrees { // }.counter; // coreCompare(args[0],args[1],args[2],args[3]); } - public static void coreCompare(String pairName, String treeType,JedisPool innerPool,JedisPool outerPool ) { + public static void coreCompare(String pairName, String treeType,JedisPool innerPool,JedisPool outerPool,ArrayList samePairs,ArrayList errorPairs ) { +// if (samePairs.size() % 1000 == 0) { +// log.info("Same pairs size "+samePairs.size()); +// } -// String portInner = "6380"; -// String port = "6399"; - -// JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(portInner),20000000); -// -// JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000); - - Map resultMap; - Jedis jedis = null; ITree oldTree = null; ITree newTree = null; Pair oldPair = null; Pair newPair = null; + String matchKey = null; - try { - jedis = innerPool.getResource(); + try { - String[] split = pairName.split("_"); + String[] split = pairName.split("_"); - String i = split[1]; - String j = split[2]; - String keyName = split[0]; + String i = split[1]; + String j = split[2]; + String keyName = split[0]; + matchKey = keyName + "_" + (String.valueOf(i)) + "_" + String.valueOf(j); +// jedis.select(0); +// Set keys = jedis.keys(matchKey); +// if (keys.size() > 0) { +// jedis.del(matchKey); +// } else { +// return; +// } +// jedis.srem("pairs",matchKey); - switch (treeType) { - case "shape": - oldTree = EDiffHelper.getShapes(keyName, i, outerPool,innerPool); - newTree = EDiffHelper.getShapes(keyName, j, outerPool,innerPool); - break; - case "action": - oldPair = EDiffHelper.getActions(keyName, i, outerPool,innerPool); - newPair = EDiffHelper.getActions(keyName, j, outerPool,innerPool); - oldTree = oldPair.getValue0(); - newTree = newPair.getValue0(); + switch (treeType) { + case "shape": + oldTree = EDiffHelper.getShapes(keyName, i, outerPool, innerPool); + newTree = EDiffHelper.getShapes(keyName, j, outerPool, innerPool); + break; + case "action": + oldPair = EDiffHelper.getActions(keyName, i, outerPool, innerPool); + newPair = EDiffHelper.getActions(keyName, j, outerPool, innerPool); + oldTree = oldPair.getValue0(); + newTree = newPair.getValue0(); - break; - case "token": - oldTree = EDiffHelper.getTokens(keyName, i, outerPool,innerPool); - newTree = EDiffHelper.getTokens(keyName, j, outerPool,innerPool); -// List oldTokens = new ArrayList<>(); -// List newTokens = new ArrayList<>(); + break; + case "token": + oldTree = EDiffHelper.getTokens(keyName, i, outerPool, innerPool); + newTree = EDiffHelper.getTokens(keyName, j, outerPool, innerPool); + + String oldTokens = EDiffHelper.getNames2(oldTree); + String newTokens = EDiffHelper.getNames2(newTree); + + JaroWinklerDistance jwd = new JaroWinklerDistance(); + Double overallSimi = Double.valueOf(0); + + if (!(oldTokens.trim().isEmpty() || newTokens.trim().isEmpty())) { + overallSimi = jwd.apply(oldTokens, newTokens); + + } - String oldTokens = EDiffHelper.getNames2(oldTree); - String newTokens = EDiffHelper.getNames2(newTree); + int retval = Double.compare(overallSimi, Double.valueOf(1)); - -// CharSequence[] oldSequences = oldTokens.toArray(new CharSequence[oldTokens.size()]); -// CharSequence[] newSequences = newTokens.toArray(new CharSequence[newTokens.size()]); - JaroWinklerDistance jwd = new JaroWinklerDistance(); - - - Double overallSimi = Double.valueOf(0); - - if (! (oldTokens.trim().isEmpty() || newTokens.trim().isEmpty())){ - overallSimi = jwd.apply(oldTokens, newTokens); - - } -// if(oldSequences.length > 0 && (oldSequences.length == newSequences.length)){ -// for (int idx = 0; idx < newSequences.length; idx++) { -// Double simi = jwd.apply(newSequences[idx], oldSequences[idx]); -// overallSimi = simi + overallSimi; -// } -// overallSimi = overallSimi / oldSequences.length; -// }else{ -// overallSimi = Double.valueOf(0); -//// if(oldSequences.length != 0) { -//// log.info("ERROR"); -//// } -// } - - int retval = Double.compare(overallSimi, Double.valueOf(1)); - String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j); - if(retval >= 0){ - - - - String result = i + "," + j + ","+String.join(",", oldTokens); - jedis.select(2); - jedis.set(matchKey, result); - } - jedis.select(0); - jedis.srem("pairs",matchKey); + if (retval >= 0) { + String result = i + "," + j + "," + String.join(",", oldTokens); +// jedis.select(2); +// jedis.set(matchKey, result); + try (Jedis jedis = innerPool.getResource()) { +// jedis.del(matchKey); + jedis.select(2); + jedis.set(matchKey, result); + } +// samePairs.add(matchKey); +// try (Jedis jedis = innerPool.getResource()) { +//// jedis.del(matchKey); +// jedis.select(2); +// jedis.set(matchKey, result); +// } + } +// jedis.select(0); +//// jedis.srem("pairs",matchKey); // jedis.del(matchKey); - return; - default: - break; - } - - Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree); - m.match(); - - - ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings()); - ag.generate(); - List actions = ag.getActions(); - -// double chawatheSimilarity1 = m.chawatheSimilarity(oldTree, newTree); -// String chawatheSimilarity = String.format("%1.2f", chawatheSimilarity1); -// double diceSimilarity1 = m.diceSimilarity(oldTree, newTree); -// String diceSimilarity = String.format("%1.2f", diceSimilarity1); -// double jaccardSimilarity1 = m.jaccardSimilarity(oldTree, newTree); -// String jaccardSimilarity = String.format("%1.2f", jaccardSimilarity1); - - String editDistance; -// if(keyName.split("-")[1].equals("1")){ -// if(oldTree.getType() == newTree.getType()){ -// editDistance = "0"; -// }else{ -// editDistance = "1"; -// } -// }else { -// editDistance = String.valueOf(actions.size()); -// } - editDistance = String.valueOf(actions.size()); -// String result = i + "," + j + "," + chawatheSimilarity + "," + diceSimilarity + "," + jaccardSimilarity + "," + editDistance; - String result = i + "," + j + "," + editDistance; - - String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j); - -// if (((Double) chawatheSimilarity1).equals(1.0) || ((Double) diceSimilarity1).equals(1.0) -// || ((Double) jaccardSimilarity1).equals(1.0) || editDistance.equals("0")) { - if (editDistance.equals("0")) { -// log.info("{} tagged to be similar" ,matchKey); - - if (treeType.equals("action")) { -// log.info(editDistance); - - HierarchicalActionSet oldProject = oldPair.getValue1(); - HierarchicalActionSet newProject = newPair.getValue1(); - -// oldTree = EDiffHelper.getTargets(keyName, i, outerPool,innerPool); - oldTree = EDiffHelper.getTargets(oldProject); -// newTree = EDiffHelper.getTargets(keyName, j, outerPool,innerPool); - newTree = EDiffHelper.getTargets(newProject); - - m = Matchers.getInstance().getMatcher(oldTree, newTree); - m.match(); - - - ag = new ActionGenerator(oldTree, newTree, m.getMappings()); - ag.generate(); - actions = ag.getActions(); - - if(keyName.split("-")[1].equals("1")){ - if(oldTree.getType() == newTree.getType()){ - editDistance = "0"; - }else{ - editDistance = "1"; - } - }else { - editDistance = String.valueOf(actions.size()); - } - - if(editDistance.equals("0")){ - jedis.select(2); - jedis.set(matchKey, result); - } - - - }else{ - - jedis.select(2); - jedis.set(matchKey, result); + return; + default: + break; } + + + if(oldTree.toStaticHashString().equals(newTree.toStaticHashString())){ + String editDistance = "0"; + String result = i + "," + j + "," + editDistance; + if (editDistance.equals("0")) { + + if (treeType.equals("action")) { + HierarchicalActionSet oldProject = oldPair.getValue1(); + HierarchicalActionSet newProject = newPair.getValue1(); + + oldTree = EDiffHelper.getTargets(oldProject); + newTree = EDiffHelper.getTargets(newProject); + if (oldTree.toStaticHashString().equals(newTree.toStaticHashString())) { + try (Jedis jedis = innerPool.getResource()) { +// jedis.del(matchKey); + jedis.select(2); + jedis.set(matchKey, result); + } + } + } else { + try (Jedis jedis = innerPool.getResource()) { +// jedis.del(matchKey); + jedis.select(2); + jedis.set(matchKey, result); + } + } + } + + + } +// if(oldTree.toString().equals(newTree.toString())) { +// Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree); +// m.match(); +// +// +// ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings()); +// ag.generate(); +// List actions = ag.getActions(); +// +// +// String editDistance; +// +// editDistance = String.valueOf(actions.size()); +// String result = i + "," + j + "," + editDistance; +// +// +// if (editDistance.equals("0")) { +// +// if (treeType.equals("action")) { +// +// HierarchicalActionSet oldProject = oldPair.getValue1(); +// HierarchicalActionSet newProject = newPair.getValue1(); +// +// oldTree = EDiffHelper.getTargets(oldProject); +// newTree = EDiffHelper.getTargets(newProject); +// +// if(oldTree.toString().equals(newTree.toString())) { +// m = Matchers.getInstance().getMatcher(oldTree, newTree); +// m.match(); +// +// +// ag = new ActionGenerator(oldTree, newTree, m.getMappings()); +// ag.generate(); +// actions = ag.getActions(); +// +// editDistance = String.valueOf(actions.size()); +// +// if (editDistance.equals("0")) { +// try (Jedis jedis = innerPool.getResource()) { +// jedis.del(matchKey); +// jedis.select(2); +// jedis.set(matchKey, result); +// } +// } +// } +// +// +// } else { +// try (Jedis jedis = innerPool.getResource()) { +// jedis.del(matchKey); +// jedis.select(2); +// jedis.set(matchKey, result); +// } +//// jedis.select(2); +//// jedis.set(matchKey, result); +//// samePairs.add(matchKey); +// } +// +// } +// } + + } catch (Exception e) { + errorPairs.add(matchKey); +// jedis.select(0); +//// jedis.srem("pairs",matchKey); +// +// jedis.hset(matchKey, "0", "1"); + + log.debug("{} not comparable", pairName); } - - - jedis.select(0); - jedis.srem("pairs",matchKey); -// jedis.del(matchKey); - - - - } catch (Exception e) { - - log.debug("{} not comparable", pairName); -// e.printStackTrace(); -// throw e; - - - }finally { - if (jedis != null) { - jedis.close(); - } - } } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/RunnableCompare.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/RunnableCompare.java old mode 100644 new mode 100755 index e9c8755..40993fb --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/RunnableCompare.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/RunnableCompare.java @@ -20,6 +20,6 @@ public class RunnableCompare implements Runnable { @Override public void run() { - comparer.coreCompare(name,type, innerPool, outerPool); +// comparer.coreCompare(name,type, innerPool, outerPool); } } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/TreeActor.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/TreeActor.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/TreeMessage.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/TreeMessage.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/TreeWorker.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/TreeWorker.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffActor.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffActor.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java old mode 100644 new mode 100755 index 7f6ae52..d73c643 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java @@ -105,7 +105,7 @@ public class EDiffHunkParser extends EDiffParser { try (Jedis inner = innerPool.getResource()) { - inner.set(key, EDiffHelper.toString(actionSet)); + inner.set(key.getBytes(), EDiffHelper.toByteArray(actionSet)); } } catch (FileNotFoundException e) { diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffMessage.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffMessage.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffWorker.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffWorker.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouper.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouper.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/MessageFile.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/MessageFile.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/Parser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/Parser.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/ParserInterface.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/ParserInterface.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/RunnableParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/RunnableParser.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/CalculatePairs.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/CalculatePairs.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/ImportPairs2DB.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/ImportPairs2DB.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster3.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster3.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/PatternExtractor.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/PatternExtractor.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java old mode 100644 new mode 100755 index 541590f..ccd523a --- a/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java @@ -4,6 +4,8 @@ import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet; import edu.lu.uni.serval.utils.CallShell; import edu.lu.uni.serval.utils.EDiffHelper; import edu.lu.uni.serval.utils.PoolBuilder; +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; @@ -137,7 +139,7 @@ public class StoreEDiffInCache { try (Jedis inner = innerPool.getResource()) { - inner.set(key, EDiffHelper.toString(actionSet)); + inner.set(key.getBytes(), EDiffHelper.toByteArray(actionSet)); } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/TreeLoaderClusterL1.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/TreeLoaderClusterL1.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/utils/ASTNodeMap.java b/src/main/java/edu/lu/uni/serval/utils/ASTNodeMap.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/utils/CallShell.java b/src/main/java/edu/lu/uni/serval/utils/CallShell.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/utils/Checker.java b/src/main/java/edu/lu/uni/serval/utils/Checker.java old mode 100644 new mode 100755 diff --git a/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java b/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java old mode 100644 new mode 100755 index c771f05..4b095a4 --- a/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java +++ b/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java @@ -22,37 +22,37 @@ public class ClusterToPattern { Jedis jedis = new Jedis("127.0.0.1",Integer.valueOf(port),20000000); // writeTofFile(shapesFolder, outerPool); - File file = new File(shapesFolder); - - - File[] files = file.listFiles(); - ArrayList strings = new ArrayList<>(); - List folders = Arrays.stream(files).filter(x -> x.isDirectory()) - .collect(Collectors.toList()); - for (File target : folders) { - File[] files2 = target.listFiles(); - for (File file1 : files2) { - File[] files1 = file1.listFiles(); - strings.add(((File)files1[0]).listFiles()[0].getName()); -// System.out.println(); - - } - -// Collection files1 = FileUtils.listFiles(target, null, true); - - } - - for (String string : strings) { - export("*"+string,jedis); - } +// File file = new File(shapesFolder); +// +// +// File[] files = file.listFiles(); +// ArrayList strings = new ArrayList<>(); +// List folders = Arrays.stream(files).filter(x -> x.isDirectory()) +// .collect(Collectors.toList()); +// for (File target : folders) { +// File[] files2 = target.listFiles(); +// for (File file1 : files2) { +// File[] files1 = file1.listFiles(); +// strings.add(((File)files1[0]).listFiles()[0].getName()); +//// System.out.println(); +// +// } +// +//// Collection files1 = FileUtils.listFiles(target, null, true); +// +// } +// +// for (String string : strings) { +// export("*"+string,jedis); +// } // String export = export("VariableDeclarationStatement"+"/*/camel_8f0c15_ab3e17_camel-core#src#main#java#org#apache#camel#component#bean#BeanInfo.txt_0", jedis); -// String export = export(args[0], jedis); -// System.out.println(export); + String export = export(args[0], jedis); + System.out.println(export); } - private static void export(String filename,Jedis outer) throws IOException, ClassNotFoundException { + private static String export(String filename,Jedis outer) throws IOException, ClassNotFoundException { // String key = shape.getName() + "/*/" + file.getName(); // Jedis outer = outerPool.getResource(); @@ -64,30 +64,31 @@ public class ClusterToPattern { throw new Error("cok key"); } - String si = outer.get(s); - HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); - ITree tree = null; - ITree parent = null; - ITree children =null; - TreeContext tc = new TreeContext(); - tree = EDiffHelper.getASTTree(actionSet, parent, children,tc); - tree.setParent(null); - tc.validate(); + byte[] si = outer.get(s.getBytes()); +// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); + HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(si); +// ITree tree = null; +// ITree parent = null; +// ITree children =null; +// TreeContext tc = new TreeContext(); +// tree = EDiffHelper.getASTTree(actionSet, parent, children,tc); +// tree.setParent(null); +// tc.validate(); +// +// String s2 = tree.toStaticHashString(); +// try(FileWriter fw = new FileWriter("myfile.txt", true); +// BufferedWriter bw = new BufferedWriter(fw); +// PrintWriter out = new PrintWriter(bw)) +// { +// out.println(s2); +// //more code +// } catch (IOException e) { +// //exception handling left as an exercise for the reader +// } - String s2 = tree.toStaticHashString(); - try(FileWriter fw = new FileWriter("myfile.txt", true); - BufferedWriter bw = new BufferedWriter(fw); - PrintWriter out = new PrintWriter(bw)) - { - out.println(s2); - //more code - } catch (IOException e) { - //exception handling left as an exercise for the reader - } - -// String s1 = actionSet.toString(); -// outer.close(); -// return s1; + String s1 = actionSet.toString(); + outer.close(); + return s1; } diff --git a/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java b/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java old mode 100644 new mode 100755 index 2ff2d37..df95124 --- a/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java +++ b/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java @@ -43,6 +43,24 @@ public class EDiffHelper { } + public static Object fromByteArray( byte[] data ) throws IOException, + ClassNotFoundException { +// byte [] data = Base64.getDecoder().decode( s ); + ObjectInputStream ois = new ObjectInputStream( + new ByteArrayInputStream( data ) ); + Object o = ois.readObject(); + ois.close(); + return o; + } + /** Write the object to a Base64 string. */ + public static byte[] toByteArray(Serializable o ) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream( baos ); + oos.writeObject( o ); + oos.close(); + return baos.toByteArray(); + } + public static ITree getTokenTree(HierarchicalActionSet actionSet, ITree parent, ITree children,TreeContext tc){ int newType = 0; @@ -230,39 +248,44 @@ public class EDiffHelper { public static ITree getShapes(String prefix, String fn, JedisPool outerPool,JedisPool innerPool) { ITree tree = null; - Jedis inner = null; - Jedis outer = null; - try { - inner = innerPool.getResource(); - while (!inner.ping().equals("PONG")){ - log.info("wait"); - } - inner.select(1); - String dist2load = inner.get(prefix+"-"+fn); - outer = outerPool.getResource(); - outer.select(0); - String s = outer.get(prefix.replace("-","/") +"/"+dist2load); - HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(s); +// Jedis inner = null; +// Jedis outer = null; + try (Jedis inner = innerPool.getResource(); Jedis outer = outerPool.getResource()) { +// inner = innerPool.getResource(); + try { + while (!inner.ping().equals("PONG")) { + log.info("wait"); + } + inner.select(1); + String dist2load = inner.get(prefix + "-" + fn); - ITree parent = null; - ITree children =null; - TreeContext tc = new TreeContext(); - tree = EDiffHelper.getASTTree(actionSet, parent, children,tc); - //tree.setParent(null); - tc.validate(); +// outer = outerPool.getResource(); + outer.select(0); + String key = prefix.replace("-", "/") + "/" + dist2load; + byte[] s = outer.get(key.getBytes()); + HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(s); - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - }finally { - if (inner != null) { - inner.close(); - } - if (outer != null) { - outer.close(); + ITree parent = null; + ITree children = null; + TreeContext tc = new TreeContext(); + tree = EDiffHelper.getASTTree(actionSet, parent, children, tc); + //tree.setParent(null); + tc.validate(); + + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); } } +// finally { +// if (inner != null) { +// inner.close(); +// } +// if (outer != null) { +// outer.close(); +// } +// } return tree; } @@ -381,28 +404,31 @@ public class EDiffHelper { try { String dist2load = null; - String si = null; - try (Jedis inner = innerPool.getResource()){ + byte[] si = null; + try (Jedis inner = innerPool.getResource();Jedis outer = outerPool.getResource()){ + + inner.select(1); + dist2load = inner.get(prefix + "-" + firstValue); - inner.select(1); - dist2load = inner.get(prefix + "-" + firstValue); - } - try(Jedis outer = outerPool.getResource()) { outer.select(0); + String[] split = prefix.split("-"); String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); - Set keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load); - if (keys.size() == 1) { - s = (String) keys.toArray()[0]; - } else { - throw new Error("cok key"); - } - si = outer.get(s); - } +// Set keys = outer.keys(split[0] + "/"+split[1]+"/" + dist2load); + String key = split[0] + "/"+split[1]+"/" + dist2load; +// if (keys.size() == 1) { +// s = (String) keys.toArray()[0]; +// } else { +// throw new Error("cok key"); +// } + si = outer.get(key.getBytes()); +// String key = prefix.replace("-", "/") + "/" + dist2load; +// byte[] s = outer.get(key.getBytes()); + actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(si); // String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition; - actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); - +// actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); + } ITree parent = null; ITree children = null; @@ -439,28 +465,33 @@ public class EDiffHelper { ITree tree = null; - Jedis inner = null; - Jedis outer = null; +// Jedis inner = null; +// Jedis outer = null; - - try { - inner = innerPool.getResource(); + try{ + try (Jedis inner = innerPool.getResource();Jedis outer = outerPool.getResource()) { +// inner = innerPool.getResource(); inner.select(1); String dist2load = inner.get(prefix + "-" + firstValue); - outer = outerPool.getResource(); +// outer = outerPool.getResource(); outer.select(0); - String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); - Set keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load); - if (keys.size() == 1) { - s = (String) keys.toArray()[0]; - } else { - throw new Error("cok key"); - } +// String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); +// Set keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load); +// if (keys.size() == 1) { +// s = (String) keys.toArray()[0]; +// } else { +// throw new Error("cok key"); +// } // String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition; - String si = outer.get(s); - HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); + String[] split = prefix.split("-"); +// String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); +// Set keys = outer.keys(split[0] + "/"+split[1]+"/" + dist2load); + String key = split[0] + "/"+split[1]+"/" + dist2load; + byte[] si = outer.get(key.getBytes()); +// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); + HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(si); ITree parent = null; @@ -470,21 +501,24 @@ public class EDiffHelper { tree.setParent(null); tc.validate(); // getLeaves(tree); + } } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); - } finally { - if (inner != null) { - inner.close(); - } - if (outer != null) { - outer.close(); - } } +// finally { +// if (inner != null) { +// inner.close(); +// } +// if (outer != null) { +// outer.close(); +// } + + return tree; } diff --git a/src/main/java/edu/lu/uni/serval/utils/PoolBuilder.java b/src/main/java/edu/lu/uni/serval/utils/PoolBuilder.java old mode 100644 new mode 100755 index 66cb438..ce78ca5 --- a/src/main/java/edu/lu/uni/serval/utils/PoolBuilder.java +++ b/src/main/java/edu/lu/uni/serval/utils/PoolBuilder.java @@ -15,6 +15,9 @@ public class PoolBuilder { static final JedisPoolConfig poolConfig = buildPoolConfig(); + + + private static JedisPoolConfig buildPoolConfig() { final JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(1024); diff --git a/src/main/resource/app.properties b/src/main/resource/app.properties old mode 100644 new mode 100755 diff --git a/src/main/resource/logback.xml b/src/main/resource/logback.xml old mode 100644 new mode 100755 diff --git a/src/test/java/edu/lu/uni/serval/FixPatternMiner/AppTest.java b/src/test/java/edu/lu/uni/serval/FixPatternMiner/AppTest.java old mode 100644 new mode 100755