From dbfe263d0c78039da11ee0e01008967c9d63c692 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 22 Feb 2021 19:32:34 +0800 Subject: [PATCH 1/3] Use new uow in mvc filter. --- .../Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs | 2 +- .../Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs index 95a961b814..24a85acd9c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs @@ -51,7 +51,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow } //Begin a new, independent unit of work - using (var uow = unitOfWorkManager.Begin(options)) + using (var uow = unitOfWorkManager.Begin(options, requiresNew: true)) { var result = await next(); if (Succeed(result)) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs index 30c713940f..21baea21cf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs @@ -56,7 +56,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow } //Begin a new, independent unit of work - using (var uow = unitOfWorkManager.Begin(options)) + using (var uow = unitOfWorkManager.Begin(options, requiresNew: true)) { var result = await next(); if (Succeed(result)) From ff5f263e92519d8b9fafc0ab3e9d367e678e39b3 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 23 Feb 2021 10:11:40 +0800 Subject: [PATCH 2/3] Rollback the uow instead of begin new one. --- .../Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs | 7 +++++-- .../Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs index 24a85acd9c..0512e28f7a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs @@ -50,14 +50,17 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow return; } - //Begin a new, independent unit of work - using (var uow = unitOfWorkManager.Begin(options, requiresNew: true)) + using (var uow = unitOfWorkManager.Begin(options)) { var result = await next(); if (Succeed(result)) { await uow.CompleteAsync(context.HttpContext.RequestAborted); } + else + { + await uow.RollbackAsync(context.HttpContext.RequestAborted); + } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs index 21baea21cf..d808053592 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs @@ -55,14 +55,17 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow return; } - //Begin a new, independent unit of work - using (var uow = unitOfWorkManager.Begin(options, requiresNew: true)) + using (var uow = unitOfWorkManager.Begin(options)) { var result = await next(); if (Succeed(result)) { await uow.CompleteAsync(context.HttpContext.RequestAborted); } + else + { + await uow.RollbackAsync(context.HttpContext.RequestAborted); + } } } From 8e511b86c4b4957b004eabcded1dcfcb098a0500 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 23 Feb 2021 12:35:43 +0300 Subject: [PATCH 3/3] CLI: Create tsconfig.prod.json when run the abp add-module command resolves https://github.com/volosoft/volo/issues/5574 --- .../AngularModuleSourceCodeAdder.cs | 63 ++++++++++++++++++- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularModuleSourceCodeAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularModuleSourceCodeAdder.cs index e4e5f0bb2e..08912f2f25 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularModuleSourceCodeAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularModuleSourceCodeAdder.cs @@ -34,7 +34,8 @@ namespace Volo.Abp.Cli.ProjectModification } await AddPathsToTsConfigAsync(angularPath, angularProjectsPath, projects); - + await CreateTsConfigProdJsonAsync(angularPath); + await AddScriptsToPackageJsonAsync(angularPath); await AddProjectToAngularJsonAsync(angularPath, projects); } catch (Exception e) @@ -93,6 +94,61 @@ namespace Volo.Abp.Cli.ProjectModification File.WriteAllText(angularJsonFilePath, json.ToString(Formatting.Indented)); } + private async Task AddScriptsToPackageJsonAsync(string angularPath) + { + var packageJsonFilePath = Path.Combine(angularPath, "package.json"); + var fileContent = File.ReadAllText(packageJsonFilePath); + + var json = JObject.Parse(fileContent); + + var scriptsJobject = (JObject) json["scripts"]; + + if (scriptsJobject == null || scriptsJobject["postinstall"] != null || scriptsJobject["compile:ivy"] != null) + { + return; + } + + scriptsJobject["postinstall"] = "npm run compile:ivy"; + scriptsJobject["compile:ivy"] = "yarn ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points --tsconfig './tsconfig.prod.json' --source node_modules"; + + File.WriteAllText(packageJsonFilePath, json.ToString(Formatting.Indented)); + } + + private async Task CreateTsConfigProdJsonAsync(string angularPath) + { + var tsConfigProdJsonFilePath = Path.Combine(angularPath, "tsconfig.prod.json"); + + if (File.Exists(tsConfigProdJsonFilePath)) + { + return; + } + + var json = new JObject( + new JProperty("compileOnSave", false), + new JProperty("compilerOptions", new JObject( + new JProperty("baseUrl", "./"), + new JProperty("outDir", "./dist/out-tsc"), + new JProperty("sourceMap", true), + new JProperty("declaration", false), + new JProperty("downlevelIteration", true), + new JProperty("experimentalDecorators", true), + new JProperty("module", "esnext"), + new JProperty("moduleResolution", "node"), + new JProperty("importHelpers", true), + new JProperty("target", "es2015"), + new JProperty("typeRoots", new JArray(new JValue("node_modules/@types"))), + new JProperty("lib", new JArray(new JValue("es2018"), new JValue("dom"))), + new JProperty("types", new JArray(new JValue("jest"))) + )), + new JProperty("angularCompilerOptions", new JObject( + new JProperty("fullTemplateTypeCheck", true), + new JProperty("strictInjectionParameters", true) + )) + ); + + File.WriteAllText(tsConfigProdJsonFilePath, json.ToString(Formatting.Indented)); + } + private async Task AddPathsToTsConfigAsync(string angularPath, string angularProjectsPath, List projects) { @@ -105,7 +161,8 @@ namespace Volo.Abp.Cli.ProjectModification { var projectPackageName = await GetProjectPackageNameAsync(angularProjectsPath, project); - var publicApis = Directory.GetFiles(Path.Combine(angularProjectsPath, project), "*public-api.ts", SearchOption.AllDirectories) + var publicApis = Directory.GetFiles(Path.Combine(angularProjectsPath, project), "*public-api.ts", + SearchOption.AllDirectories) .Where(p => !p.Contains("\\node_modules\\")) .Select(p => p.RemovePreFix(angularPath).Replace("\\", "/").RemovePreFix("/")); @@ -171,8 +228,10 @@ namespace Volo.Abp.Cli.ProjectModification { continue; } + Directory.Move(folderUnderProject, Path.Combine(folder, Path.GetFileName(folderUnderProject))); } + projectsInFolder = Directory.GetDirectories(folder); }