Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 10 additions & 22 deletions cddiff/src/main/java/de/monticore/cddiff/CDDiffUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import de.monticore.types.check.SymTypeExpression;
import de.monticore.types.mcbasictypes._ast.ASTMCObjectType;
import de.se_rwth.commons.logging.Log;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.nio.file.Paths;
Expand Down Expand Up @@ -114,7 +113,7 @@ public static void saveDiffCDs2File(ASTCDCompilationUnit ast1, ASTCDCompilationU
* Parse the model, add default role-names and replace all qualified names with (internal) full
* names.
*/
public static ASTCDCompilationUnit loadCD(String modelPath) throws IOException {
public static ASTCDCompilationUnit loadCD(String modelPath) {
Optional<ASTCDCompilationUnit> cd = CD4CodeMill.parser().parseCDCompilationUnit(modelPath);
if (cd.isPresent()) {
new CDFullNameTrafo().transform(cd.get());
Expand All @@ -127,33 +126,22 @@ public static ASTCDCompilationUnit loadCD(String modelPath) throws IOException {
}

public static ASTODArtifact loadODModel(String modelPath) {
try {
OD4ReportParser parser = new OD4ReportParser();
Optional<ASTODArtifact> optOD = parser.parse(modelPath);
if (parser.hasErrors()) {
Log.error("Model parsed with errors. Model path: " + modelPath);
}
else if (optOD.isPresent()) {
return optOD.get();
}
OD4ReportParser parser = new OD4ReportParser();
Optional<ASTODArtifact> optOD = parser.parse(modelPath);
if (parser.hasErrors()) {
Log.error("Model parsed with errors. Model path: " + modelPath);
}
catch (IOException e) {
Log.error("Could not parse OD model.");
e.printStackTrace();
else if (optOD.isPresent()) {
return optOD.get();
}
return null;
}

public static ASTCDCompilationUnit reparseCD(ASTCDCompilationUnit cd) {
String content = CD4CodeMill.prettyPrint(cd, true);
try {
Optional<ASTCDCompilationUnit> opt = CD4CodeMill.parser().parse_String(content);
if (opt.isPresent()) {
cd = opt.get();
}
}
catch (IOException e) {
Log.warn("Could not reparse CD: " + cd.getCDDefinition().getName());
Optional<ASTCDCompilationUnit> opt = CD4CodeMill.parser().parse_String(content);
if (opt.isPresent()) {
cd = opt.get();
}
return cd;
}
Expand Down
31 changes: 8 additions & 23 deletions cddiff/src/main/java/de/monticore/odvalidity/ModelLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,17 @@
import de.se_rwth.commons.logging.Log;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Optional;

public class ModelLoader {

protected Optional<ASTCDCompilationUnit> loadCDModel(File cdModel) throws FileNotFoundException {

if (cdModel.exists() && cdModel.isFile()) {
Optional<ASTCDCompilationUnit> cdAST = Optional.empty();
try {
CD4AnalysisParser parser = new CD4AnalysisParser();
cdAST = parser.parse(cdModel.getPath());
if (parser.hasErrors()) {
Log.error("Model parsed with errors. Model path: " + cdModel.getPath());
}
}
catch (IOException e) {
Log.error("Could not parse CD model.");
e.printStackTrace();
CD4AnalysisParser parser = new CD4AnalysisParser();
Optional<ASTCDCompilationUnit> cdAST = parser.parse(cdModel.getPath());
if (parser.hasErrors()) {
Log.error("Model parsed with errors. Model path: " + cdModel.getPath());
}

cdAST.ifPresent(CDDiffUtil::refreshSymbolTable);
Expand All @@ -43,17 +35,10 @@ protected Optional<ASTCDCompilationUnit> loadCDModel(File cdModel) throws FileNo
protected Optional<ASTODArtifact> loadODModel(File odModel) throws FileNotFoundException {

if (odModel.exists() && odModel.isFile()) {
Optional<ASTODArtifact> odAST = Optional.empty();
try {
OD4ReportParser parser = new OD4ReportParser();
odAST = parser.parse(odModel.getPath());
if (parser.hasErrors()) {
Log.error("Model parsed with errors. Model path: " + odModel.getPath());
}
}
catch (IOException e) {
Log.error("Could not parse CD model.");
e.printStackTrace();
OD4ReportParser parser = new OD4ReportParser();
Optional<ASTODArtifact> odAST = parser.parse(odModel.getPath());
if (parser.hasErrors()) {
Log.error("Model parsed with errors. Model path: " + odModel.getPath());
}

return odAST;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import de.monticore.symbols.oosymbols._symboltable.MethodSymbol;
import de.monticore.symboltable.ISymbol;
import de.se_rwth.commons.logging.Log;
import java.io.IOException;
import java.util.LinkedHashSet;
import java.util.Set;

Expand Down Expand Up @@ -145,14 +144,8 @@ protected void parseModels(String concrete, String ref) {
}

public static ASTCDCompilationUnit parseCD(String filePath) {
ASTCDCompilationUnit cd;
try {
cd = CD4CodeMill.parser().parseCDCompilationUnit(TEST_RES_DIR + filePath).orElseThrow(
() -> new RuntimeException("Could not parse CD: " + filePath));
}
catch (IOException e) {
throw new RuntimeException("Failed to load CD: " + filePath, e);
}
ASTCDCompilationUnit cd = CD4CodeMill.parser().parseCDCompilationUnit(TEST_RES_DIR + filePath)
.orElseThrow(() -> new RuntimeException("Could not parse CD: " + filePath));
CD4CodeMill.scopesGenitorDelegator().createFromAST(cd);
cd.accept(new CD4CodeSymbolTableCompleter(cd).getTraverser());
assertNoFindings("Findings while loading CD");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import de.se_rwth.commons.logging.LogStub;
import org.junit.jupiter.api.BeforeEach;

import java.io.IOException;
import java.util.Optional;

import static org.junit.jupiter.api.Assertions.fail;
Expand All @@ -33,24 +32,19 @@ public void setup() {
}

public void parseModels(String concrete, String ref) {
try {
Optional<ASTCDCompilationUnit> conCD = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> refCD = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (conCD.isPresent() && refCD.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(conCD.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(refCD.get());
conCD.get().accept(new CD4CodeSymbolTableCompleter(conCD.get()).getTraverser());
refCD.get().accept(new CD4CodeSymbolTableCompleter(refCD.get()).getTraverser());
this.refCD = refCD.get();
this.conCD = conCD.get();
}
else {
fail("Could not parse CDs.");
}
Optional<ASTCDCompilationUnit> conCD = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> refCD = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (conCD.isPresent() && refCD.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(conCD.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(refCD.get());
conCD.get().accept(new CD4CodeSymbolTableCompleter(conCD.get()).getTraverser());
refCD.get().accept(new CD4CodeSymbolTableCompleter(refCD.get()).getTraverser());
this.refCD = refCD.get();
this.conCD = conCD.get();
}
catch (IOException e) {
fail(e);
else {
fail("Could not parse CDs.");
}
}

Expand Down
31 changes: 12 additions & 19 deletions cddiff/src/test/java/de/monticore/cddiff/syndiff/AssocDiffTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import de.monticore.cddiff.CDDiffTestBasis;
import de.monticore.cddiff.syn2semdiff.Syn2SemDiff;
import de.monticore.odbasis._ast.ASTODArtifact;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -83,25 +82,19 @@ public void testAssoc5() {
}

public void parseModels(String concrete, String ref) {
try {
Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(src.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(tgt.get());
src.get().accept(new CD4CodeSymbolTableCompleter(src.get()).getTraverser());
tgt.get().accept(new CD4CodeSymbolTableCompleter(tgt.get()).getTraverser());
this.tgt = tgt.get();
this.src = src.get();
}
else {
fail("Could not parse CDs.");
}

Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(src.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(tgt.get());
src.get().accept(new CD4CodeSymbolTableCompleter(src.get()).getTraverser());
tgt.get().accept(new CD4CodeSymbolTableCompleter(tgt.get()).getTraverser());
this.tgt = tgt.get();
this.src = src.get();
}
catch (IOException e) {
fail(e.getMessage());
else {
fail("Could not parse CDs.");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import de.monticore.cdbasis._ast.ASTCDClass;
import de.monticore.cdbasis._ast.ASTCDCompilationUnit;
import de.monticore.cddiff.CDDiffTestBasis;
import java.io.IOException;
import java.util.Optional;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -39,25 +38,19 @@ public void testMember1() {
}

public void parseModels(String concrete, String ref) {
try {
Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(src.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(tgt.get());
src.get().accept(new CD4CodeSymbolTableCompleter(src.get()).getTraverser());
tgt.get().accept(new CD4CodeSymbolTableCompleter(tgt.get()).getTraverser());
this.tgt = tgt.get();
this.src = src.get();
}
else {
fail("Could not parse CDs.");
}

Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(src.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(tgt.get());
src.get().accept(new CD4CodeSymbolTableCompleter(src.get()).getTraverser());
tgt.get().accept(new CD4CodeSymbolTableCompleter(tgt.get()).getTraverser());
this.tgt = tgt.get();
this.src = src.get();
}
catch (IOException e) {
fail(e.getMessage());
else {
fail("Could not parse CDs.");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import de.monticore.cddiff.syn2semdiff.Syn2SemDiff;
import de.monticore.odbasis._ast.ASTODArtifact;
import de.monticore.odvalidity.OD2CDMatcher;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.Set;
Expand Down Expand Up @@ -286,23 +285,17 @@ public void testMaCoCo2() {
}

public void parseModels(String concrete, String ref) {
try {
Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CDDiffUtil.refreshSymbolTable(src.get());
CDDiffUtil.refreshSymbolTable(tgt.get());
this.tgt = tgt.get();
this.src = src.get();
}
else {
fail("Could not parse CDs.");
}

Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CDDiffUtil.refreshSymbolTable(src.get());
CDDiffUtil.refreshSymbolTable(tgt.get());
this.tgt = tgt.get();
this.src = src.get();
}
catch (IOException e) {
fail(e.getMessage());
else {
fail("Could not parse CDs.");
}
}

Expand Down
31 changes: 12 additions & 19 deletions cddiff/src/test/java/de/monticore/cddiff/syndiff/TypeDIffTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import de.monticore.odvalidity.OD2CDMatcher;
import de.monticore.prettyprint.IndentPrinter;
import de.se_rwth.commons.logging.Log;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import org.junit.jupiter.api.Assertions;
Expand Down Expand Up @@ -193,25 +192,19 @@ public void testType4() {
}

public void parseModels(String concrete, String ref) {
try {
Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(src.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(tgt.get());
src.get().accept(new CD4CodeSymbolTableCompleter(src.get()).getTraverser());
tgt.get().accept(new CD4CodeSymbolTableCompleter(tgt.get()).getTraverser());
this.tgt = tgt.get();
this.src = src.get();
}
else {
fail("Could not parse CDs.");
}

Optional<ASTCDCompilationUnit> src = CD4CodeMill.parser().parseCDCompilationUnit(dir
+ concrete);
Optional<ASTCDCompilationUnit> tgt = CD4CodeMill.parser().parseCDCompilationUnit(dir + ref);
if (src.isPresent() && tgt.isPresent()) {
CD4CodeMill.scopesGenitorDelegator().createFromAST(src.get());
CD4CodeMill.scopesGenitorDelegator().createFromAST(tgt.get());
src.get().accept(new CD4CodeSymbolTableCompleter(src.get()).getTraverser());
tgt.get().accept(new CD4CodeSymbolTableCompleter(tgt.get()).getTraverser());
this.tgt = tgt.get();
this.src = src.get();
}
catch (IOException e) {
fail(e.getMessage());
else {
fail("Could not parse CDs.");
}
}

Expand Down
Loading
Loading