diff --git a/CodeToXMI.sln.DotSettings.user b/CodeToXMI.sln.DotSettings.user index 822c584913ed2180a0d6398ebabf842cdeb2a54b..895eacf99d7af96c72bd04bc418ea3b27a4f08c8 100644 --- a/CodeToXMI.sln.DotSettings.user +++ b/CodeToXMI.sln.DotSettings.user @@ -35,6 +35,9 @@ <TestAncestor> <TestId>NUnit3x::0F37435B-F6C5-40D0-8250-192C843D1465::net7.0::UnitTest.ActivityDiagramTests.BuildActivityDiagramWithDecisionsAndActions</TestId> </TestAncestor> +</SessionState></s:String> + <s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=952a43de_002D77a2_002D4c44_002D853c_002D0658b00c7b83/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from &lt;UnitTest&gt;" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> + <Project Location="/Users/jakubkonvicka/RiderProjects/diplomathesis/UnitTest" Presentation="&lt;UnitTest&gt;" /> </SessionState></s:String> <s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=9cd5065d_002Da7a4_002D4689_002Db1fe_002Df606c9e9e91d/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" Name="BuildActivityDiagramWithDecisions" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> <TestAncestor> diff --git a/WebAPI/Controllers/ApiController.cs b/WebAPI/Controllers/ApiController.cs index 4117177e9d6561cd1a0422c8295785df3cfcfc9c..2547f1a10e79f59df21c138ecc2ca1c0ce3af5a2 100644 --- a/WebAPI/Controllers/ApiController.cs +++ b/WebAPI/Controllers/ApiController.cs @@ -62,21 +62,43 @@ namespace WebAPI.Controllers //base 64 string to string string code = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(sourceCode.Code)); - + var inputStream = new AntlrInputStream(code); var lexer = new CPP14Lexer(inputStream); CommonTokenStream tokens = new CommonTokenStream(lexer); CPP14Parser parser = new CPP14Parser(tokens); - + ActivityDiagramBuilderCreator activityDiagramBuilderCreator = new ActivityDiagramBuilderCreatorFactory(); - var diagramBuilder = activityDiagramBuilderCreator.FactoryMethod("ActivityDiagram"); - IParseTree tree = parser.translationUnit(); + + IParseTree tree = null; + try + { + tree = parser.translationUnit(); + } + catch(Exception e) + { + Console.WriteLine($"Error in parsing code: {e.Message}"); + return BadRequest("Error in parsing code, please check the code"); + } if (parser.NumberOfSyntaxErrors == 0) { - CppActivityDiagramVisitor activityDiagramVisitor = new CppActivityDiagramVisitor(diagramBuilder, contextIdentifier, functionIdentifier); - Console.WriteLine(activityDiagramVisitor.Visit(tree)); + try + { + CppActivityDiagramVisitor activityDiagramVisitor = new CppActivityDiagramVisitor(diagramBuilder, contextIdentifier, functionIdentifier); + var result = activityDiagramVisitor.Visit(tree); + Console.WriteLine(result); + } + catch(Exception e) + { + Console.WriteLine($"CppActivityDiagramVisitor: Error in visiting tree: {e.Message}"); + return BadRequest("CppActivityDiagramVisitor: Error in visiting tree"); + } + } + else + { + return BadRequest("Syntax error in code"); } var xmi = diagramBuilder.BuildDiagram(); @@ -115,21 +137,45 @@ namespace WebAPI.Controllers //base 64 string to string string code = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(sourceCode.Code)); - + var inputStream = new AntlrInputStream(code); var lexer = new CPP14Lexer(inputStream); CommonTokenStream tokens = new CommonTokenStream(lexer); CPP14Parser parser = new CPP14Parser(tokens); - + ClassDiagramBuilderCreatorFactory classDiagramBuilderCreator = new ClassDiagramBuilderCreatorFactory(); var diagramBuilder = classDiagramBuilderCreator.FactoryMethod("ClassDiagram"); - IParseTree tree = parser.translationUnit(); + IParseTree tree = null; + + try + { + tree = parser.translationUnit(); + } + catch(Exception e) + { + Console.WriteLine($"Error in parsing code: {e.Message}"); + return BadRequest("Error in parsing code, please check the code"); + } if (parser.NumberOfSyntaxErrors == 0) { - CppClassDiagramVisitor classDiagramVisitor = new CppClassDiagramVisitor(diagramBuilder); - Console.WriteLine(classDiagramVisitor.Visit(tree)); + try + { + CppClassDiagramVisitor classDiagramVisitor = new CppClassDiagramVisitor(diagramBuilder); + var result = classDiagramVisitor.Visit(tree); + Console.WriteLine(result); + } + catch (Exception e) + { + Console.WriteLine($"CppClassDiagramVisitor: Error in visiting tree: {e.Message}"); + return BadRequest("CppClassDiagramVisitor: Error in visiting tree"); + } + + } + else + { + return BadRequest("Syntax error in code"); } var xmi = diagramBuilder.BuildDiagram();