Fix the bug of NullPointerException.

This commit is contained in:
Kui LIU
2017-07-23 19:15:58 +02:00
parent dce5d6f2eb
commit 38e614ef0f
4 changed files with 40 additions and 16 deletions
@@ -30,12 +30,13 @@ public class AkkaMiner {
ActorSystem system = null;
ActorRef parsingActor = null;
final int numberOfWorkers = 100;
final int numberOfWorkers = 200;
final WorkMessage msg = new WorkMessage(0, msgFiles);
try {
log.info("Akka beings...");
system = ActorSystem.create("Mining-FixPattern-System");
parsingActor = system.actorOf(MineFixPatternActor.props(numberOfWorkers, editScriptsFilePath, patchesSourceCodeFilePath), "mine-fix-pattern-actor");
parsingActor.tell(msgFiles, ActorRef.noSender());
parsingActor.tell(msg, ActorRef.noSender());
} catch (Exception e) {
system.shutdown();
e.printStackTrace();
@@ -43,8 +43,8 @@ public class MineFixPatternActor extends UntypedActor {
@SuppressWarnings("deprecation")
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof List<?>) {
List<?> files = (List<?>) message;
if (message instanceof WorkMessage) {
List<MessageFile> files = ((WorkMessage) message).getMsgFiles();
int size = files.size();
int average = size / numberOfWorkers;
@@ -55,9 +55,10 @@ public class MineFixPatternActor extends UntypedActor {
toIndex = size;
}
List<Object> filesOfWorkers = new ArrayList<>();
List<MessageFile> filesOfWorkers = new ArrayList<>();
filesOfWorkers.addAll(files.subList(fromIndex, toIndex));
mineRouter.tell(filesOfWorkers, getSelf());
final WorkMessage workMsg = new WorkMessage(i + 1, filesOfWorkers);
mineRouter.tell(workMsg, getSelf());
logger.info("Assign a task to worker #" + (i + 1) + "...");
}
} else if ("STOP".equals(message.toString())) {
@@ -33,17 +33,17 @@ public class MineFixPatternWorker extends UntypedActor {
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof List<?>) {
List<?> files = (List<?>) message;
if (message instanceof WorkMessage) {
WorkMessage msg = (WorkMessage) message;
List<MessageFile> files = msg.getMsgFiles();
StringBuilder editScripts = new StringBuilder();
StringBuilder patchesSourceCode = new StringBuilder();
for (Object obj : files) {
MessageFile msgFile = (MessageFile) obj;
for (MessageFile msgFile : files) {
File revFile = msgFile.getRevFile();
File prevFile = msgFile.getPrevFile();
File diffentryFile = msgFile.getDiffEntryFile();
if (!prevFile.exists()) {
System.out.println(prevFile.getPath());
System.out.println("Previous File:" + prevFile.getPath());
continue;
}
Miner miner = new Miner();
@@ -52,15 +52,13 @@ public class MineFixPatternWorker extends UntypedActor {
editScripts.append(miner.getAstEditScripts());
patchesSourceCode.append(miner.getPatchesSourceCode());
} catch (Exception e) {
System.out.println(revFile.getPath());
System.out.println("Revised File:" + revFile.getPath());
e.printStackTrace();
}
}
List<File> subFiles1 = FileHelper.getAllFilesInCurrentDiectory(editScriptsFilePath, ".list");
List<File> subFiles2 = FileHelper.getAllFilesInCurrentDiectory(patchesSourceCodeFilePath, ".list");
FileHelper.outputToFile(editScriptsFilePath + "edistScripts" + subFiles1.size() + ".list", editScripts, false);
FileHelper.outputToFile(patchesSourceCodeFilePath + "patches" + subFiles2.size() + ".list", patchesSourceCode, false);
FileHelper.outputToFile(editScriptsFilePath + "edistScripts" + msg.getId() + ".list", editScripts, false);
FileHelper.outputToFile(patchesSourceCodeFilePath + "patches" + msg.getId() + ".list", patchesSourceCode, false);
this.getSender().tell("STOP", getSelf());
} else {
@@ -0,0 +1,24 @@
package edu.lu.uni.serval.FixPatternMiner;
import java.util.List;
public class WorkMessage {
private int id;
private List<MessageFile> msgFiles;
public WorkMessage(int id, List<MessageFile> msgFiles) {
super();
this.id = id;
this.msgFiles = msgFiles;
}
public int getId() {
return id;
}
public List<MessageFile> getMsgFiles() {
return msgFiles;
}
}