Code aufgeräumt.
This commit is contained in:
parent
1b3ac13591
commit
59ee469172
@ -1,13 +1,11 @@
|
||||
package typinferenzplugin;
|
||||
|
||||
import java.security.interfaces.RSAKey;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.bcel.generic.CHECKCAST;
|
||||
|
||||
import de.dhbwstuttgart.typedeployment.TypeInsert;
|
||||
import de.dhbwstuttgart.typeinference.result.ResultPair;
|
||||
import de.dhbwstuttgart.typeinference.result.ResultPairMap;
|
||||
import de.dhbwstuttgart.typeinference.result.ResultSet;
|
||||
import typinferenzplugin.editor.JavEditor;
|
||||
|
||||
@ -41,8 +39,6 @@ public class TypeReplaceMarker extends JavMarker {
|
||||
}
|
||||
}
|
||||
return false;
|
||||
//return this.resultSets.contains(other.getInsertPoint().getResultPair());
|
||||
//return this.resultSet.contains(ResultPairMap.RESULT_PAIRS.get(other.point.offset, other.tip.getInsertString()));
|
||||
}
|
||||
|
||||
public void run(){
|
||||
@ -117,4 +113,19 @@ public class TypeReplaceMarker extends JavMarker {
|
||||
return ((TypeReplaceMarker)obj).tip.equals(this.tip);
|
||||
}
|
||||
}
|
||||
|
||||
public void adjustResultSet(TypeReplaceMarker typeReplaceMarker) {
|
||||
resultSets.removeIf(rs -> {
|
||||
boolean result = false;
|
||||
for (ResultPair<?,?> rp : typeReplaceMarker.resultPairs) {
|
||||
if (!rs.contains(rp)) {
|
||||
result = true;
|
||||
} else {
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package typinferenzplugin;
|
||||
|
||||
import static org.eclipse.core.runtime.IStatus.ERROR;
|
||||
import static typinferenzplugin.Activator.PLUGIN_ID;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
@ -13,9 +16,6 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.Vector;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import org.apache.commons.io.output.NullOutputStream;
|
||||
import org.eclipse.core.runtime.ILog;
|
||||
@ -28,21 +28,13 @@ import de.dhbwstuttgart.core.JavaTXCompiler;
|
||||
import de.dhbwstuttgart.exceptions.TypeinferenceException;
|
||||
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
||||
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||
import de.dhbwstuttgart.typedeployment.TypeInsert;
|
||||
import de.dhbwstuttgart.typedeployment.TypeInsertFactory;
|
||||
import de.dhbwstuttgart.typeinference.result.ResultPair;
|
||||
import de.dhbwstuttgart.typeinference.result.ResultSet;
|
||||
import de.dhbwstuttgart.typeinference.unify.UnifyResultListener;
|
||||
import de.dhbwstuttgart.typeinference.unify.UnifyResultModel;
|
||||
import typinferenzplugin.editor.JavEditor;
|
||||
import typinferenzplugin.error.ErrorOutput;
|
||||
import typinferenzplugin.log.EclipseLogfileWriter;
|
||||
|
||||
import static java.util.concurrent.Executors.newSingleThreadExecutor;
|
||||
import static org.eclipse.core.runtime.IStatus.ERROR;
|
||||
import static org.eclipse.core.runtime.IStatus.INFO;
|
||||
import static typinferenzplugin.Activator.PLUGIN_ID;
|
||||
|
||||
public class Typinferenz {
|
||||
|
||||
@ -52,7 +44,7 @@ public class Typinferenz {
|
||||
private SourceFile parsedSource;
|
||||
|
||||
private JavaTXCompiler compiler;
|
||||
private List<ResultSet> tiResults;
|
||||
private List<ResultSet> tiResults = new ArrayList<>();
|
||||
private Set<ResultSet> forByteCode = new HashSet<>();
|
||||
|
||||
public Typinferenz(JavEditor forEditor) {
|
||||
@ -60,8 +52,6 @@ public class Typinferenz {
|
||||
}
|
||||
|
||||
public UnifyResultModel run(UnifyResultListener resultListener) throws TypeinferenceException {
|
||||
Vector<TypeReplaceMarker> ret = new Vector<TypeReplaceMarker>();
|
||||
|
||||
try {
|
||||
compiler = new JavaTXCompiler(editor.getFilePath().toFile(), false);
|
||||
SourceFile parsedSourceOrNull = compiler.sourceFiles.get(editor.getFilePath().toFile());
|
||||
@ -80,23 +70,8 @@ public class Typinferenz {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<ResultSet> fakeRun() {
|
||||
try {
|
||||
compiler = new JavaTXCompiler(editor.getFilePath().toFile(), false);
|
||||
SourceFile parsedSourceOrNull = compiler.sourceFiles.get(editor.getFilePath().toFile());
|
||||
if (parsedSourceOrNull != null) {
|
||||
this.parsedSource = parsedSourceOrNull;
|
||||
}
|
||||
} catch (ClassNotFoundException | IOException e) {
|
||||
LOG.log(new Status(ERROR, PLUGIN_ID, e.getMessage(), e));
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return this.tiResults;
|
||||
}
|
||||
|
||||
public Collection<ResultSet> getResultSets() {
|
||||
return this.tiResults;
|
||||
return this.forByteCode;
|
||||
}
|
||||
|
||||
public Vector<JavMarker> updateWithResult(Vector<JavMarker> ret, List<ResultSet> newResults) {
|
||||
@ -116,9 +91,7 @@ public class Typinferenz {
|
||||
}
|
||||
}
|
||||
|
||||
String outputDirectory = editor.getFilePath().toString();
|
||||
outputDirectory = outputDirectory.substring(0,
|
||||
outputDirectory.length() - editor.getFilePath().lastSegment().length());// ".jav" hat Länge 4
|
||||
String outputDirectory = getOutputDirectory();
|
||||
|
||||
if (this.forByteCode.size() > 0) {
|
||||
for (SourceFile sf : compiler.sourceFiles.values()) {
|
||||
@ -134,9 +107,16 @@ public class Typinferenz {
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public String getOutputDirectory() {
|
||||
String outputDirectory = editor.getFilePath().toString();
|
||||
outputDirectory = outputDirectory.substring(0,
|
||||
outputDirectory.length() - editor.getFilePath().lastSegment().length());// ".jav" hat Länge 4
|
||||
return outputDirectory;
|
||||
}
|
||||
|
||||
public void updateresultSets(Vector<ResultSet> typeInsertResults) {
|
||||
this.tiResults = typeInsertResults;
|
||||
//this.tiResults = typeInsertResults;
|
||||
// for (ResultSet resultSet : typeInsertResults) {
|
||||
// for (ResultPair<RefTypeOrTPHOrWildcardOrGeneric, RefTypeOrTPHOrWildcardOrGeneric> result : resultSet.results) {
|
||||
// LOG.log(new Status(INFO, PLUGIN_ID, "Types: " + result.getRight().getClass().getCanonicalName() + "," + result.getLeft().getClass().getCanonicalName()));
|
||||
|
@ -6,8 +6,10 @@ import static org.eclipse.core.runtime.IStatus.ERROR;
|
||||
import static typinferenzplugin.Activator.PLUGIN_ID;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.Vector;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@ -38,7 +40,7 @@ import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
|
||||
import de.dhbwstuttgart.exceptions.TypeinferenceException;
|
||||
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
||||
import de.dhbwstuttgart.typeinference.result.ResultPairMap;
|
||||
import de.dhbwstuttgart.typeinference.result.ResultSet;
|
||||
import de.dhbwstuttgart.typeinference.unify.UnifyResultEvent;
|
||||
import de.dhbwstuttgart.typeinference.unify.UnifyResultListener;
|
||||
import typinferenzplugin.Activator;
|
||||
@ -101,7 +103,6 @@ public class JavEditor extends TextEditor implements UnifyResultListener {
|
||||
*/
|
||||
protected void initializeEditor() {
|
||||
super.initializeEditor();
|
||||
ResultPairMap.RESULT_PAIRS.clear();
|
||||
setSourceViewerConfiguration(new JavViewerConfiguration(this));
|
||||
// install the document provider
|
||||
// setDocumentProvider(new JavFileProvider());
|
||||
@ -113,7 +114,6 @@ public class JavEditor extends TextEditor implements UnifyResultListener {
|
||||
// Wird aufgerufen, sobald das Dokument gespeichert wird.
|
||||
typeinference = new Typinferenz(this);
|
||||
this.removeMarkers();
|
||||
ResultPairMap.RESULT_PAIRS.clear();
|
||||
this.typeReconstruction();
|
||||
}
|
||||
|
||||
@ -243,7 +243,16 @@ public class JavEditor extends TextEditor implements UnifyResultListener {
|
||||
toCheck.getInsertPoint().point.addExtraOffset(lengthOfInsert);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove resultsets if not consistent.
|
||||
for (TypeReplaceMarker trm : typeReplaceMarkers) {
|
||||
trm.adjustResultSet(typeReplaceMarker);
|
||||
}
|
||||
updateGuiWithNewMarkers(typeReplaceMarkers);
|
||||
|
||||
Collection<ResultSet> newResultSets = typeReplaceMarkers.stream().map(trm -> trm.getResultSets()).flatMap(rs -> rs.stream()).collect(Collectors.toSet());
|
||||
HashMap<String, byte[]> bytecode = typeinference.getBytecode(typeinference.getSourceFile(), newResultSets, typeinference.getOutputDirectory());
|
||||
typeinference.writeClassFile(typeinference.getOutputDirectory(), bytecode);
|
||||
}
|
||||
|
||||
private void removeMarkers() {
|
||||
@ -337,7 +346,6 @@ public class JavEditor extends TextEditor implements UnifyResultListener {
|
||||
Vector<JavMarker> markers = new Vector<JavMarker>();
|
||||
Vector<JavMarker> newMarkers = typeinference.updateWithResult(markers, evt.getNewTypeResult());
|
||||
|
||||
//typeReplaceMarkers.removeAll(newMarkers);
|
||||
errorMarkers.removeAll(newMarkers);
|
||||
|
||||
for (JavMarker trm : newMarkers) {
|
||||
@ -351,16 +359,6 @@ public class JavEditor extends TextEditor implements UnifyResultListener {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
typeReplaceMarkers.addAll(
|
||||
newMarkers
|
||||
.stream()
|
||||
.filter(m -> m instanceof TypeReplaceMarker)
|
||||
.map(m -> (TypeReplaceMarker) m)
|
||||
.collect(toCollection(Vector::new))
|
||||
);
|
||||
*/
|
||||
|
||||
errorMarkers.addAll(
|
||||
newMarkers
|
||||
.stream()
|
||||
@ -371,6 +369,7 @@ public class JavEditor extends TextEditor implements UnifyResultListener {
|
||||
for (TypeReplaceMarker m : this.getTypeReplaceMarkers()) {
|
||||
markers.add(m);
|
||||
}
|
||||
|
||||
return markers;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user