forked from loafle/openapi-generator-original
[aspnetcore] Added parameter to generate models in a seperate csproj (#13024)
* Added parameter to add models in seperate project * Update samples * refactored ELSE
This commit is contained in:
parent
6a3226d004
commit
c81a63fd7a
@ -51,6 +51,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
|||||||
|useDefaultRouting|Use default routing for the ASP.NET Core version.| |true|
|
|useDefaultRouting|Use default routing for the ASP.NET Core version.| |true|
|
||||||
|useFrameworkReference|Use frameworkReference for ASP.NET Core 3.0+ and PackageReference ASP.NET Core 2.2 or earlier.| |false|
|
|useFrameworkReference|Use frameworkReference for ASP.NET Core 3.0+ and PackageReference ASP.NET Core 2.2 or earlier.| |false|
|
||||||
|useNewtonsoft|Uses the Newtonsoft JSON library.| |true|
|
|useNewtonsoft|Uses the Newtonsoft JSON library.| |true|
|
||||||
|
|useSeperateModelProject|Create a seperate project for models| |false|
|
||||||
|useSwashbuckle|Uses the Swashbuckle.AspNetCore NuGet package for documentation.| |true|
|
|useSwashbuckle|Uses the Swashbuckle.AspNetCore NuGet package for documentation.| |true|
|
||||||
|
|
||||||
## IMPORT MAPPING
|
## IMPORT MAPPING
|
||||||
|
@ -44,6 +44,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
|
|
||||||
public static final String USE_SWASHBUCKLE = "useSwashbuckle";
|
public static final String USE_SWASHBUCKLE = "useSwashbuckle";
|
||||||
public static final String MODEL_POCOMODE = "pocoModels";
|
public static final String MODEL_POCOMODE = "pocoModels";
|
||||||
|
public static final String USE_MODEL_SEPERATEPROJECT = "useSeperateModelProject";
|
||||||
public static final String ASPNET_CORE_VERSION = "aspnetCoreVersion";
|
public static final String ASPNET_CORE_VERSION = "aspnetCoreVersion";
|
||||||
public static final String SWASHBUCKLE_VERSION = "swashbuckleVersion";
|
public static final String SWASHBUCKLE_VERSION = "swashbuckleVersion";
|
||||||
public static final String CLASS_MODIFIER = "classModifier";
|
public static final String CLASS_MODIFIER = "classModifier";
|
||||||
@ -72,6 +73,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
|
|
||||||
private boolean useSwashbuckle = true;
|
private boolean useSwashbuckle = true;
|
||||||
private boolean pocoModels = false;
|
private boolean pocoModels = false;
|
||||||
|
private boolean useSeperateModelProject = false;
|
||||||
protected int serverPort = 8080;
|
protected int serverPort = 8080;
|
||||||
protected String serverHost = "0.0.0.0";
|
protected String serverHost = "0.0.0.0";
|
||||||
protected CliOption swashbuckleVersion = new CliOption(SWASHBUCKLE_VERSION, "Swashbuckle version: 3.0.0 (deprecated), 4.0.0 (deprecated), 5.0.0 (deprecated), 6.4.0");
|
protected CliOption swashbuckleVersion = new CliOption(SWASHBUCKLE_VERSION, "Swashbuckle version: 3.0.0 (deprecated), 4.0.0 (deprecated), 5.0.0 (deprecated), 6.4.0");
|
||||||
@ -244,6 +246,10 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
"Build POCO Models",
|
"Build POCO Models",
|
||||||
pocoModels);
|
pocoModels);
|
||||||
|
|
||||||
|
addSwitch(USE_MODEL_SEPERATEPROJECT,
|
||||||
|
"Create a seperate project for models",
|
||||||
|
useSeperateModelProject);
|
||||||
|
|
||||||
addSwitch(IS_LIBRARY,
|
addSwitch(IS_LIBRARY,
|
||||||
"Is the build a library",
|
"Is the build a library",
|
||||||
isLibrary);
|
isLibrary);
|
||||||
@ -367,6 +373,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
setOperationModifier();
|
setOperationModifier();
|
||||||
setModelClassModifier();
|
setModelClassModifier();
|
||||||
setPocoModels();
|
setPocoModels();
|
||||||
|
setUseSeperateModelProject();
|
||||||
setUseSwashbuckle();
|
setUseSwashbuckle();
|
||||||
setOperationIsAsync();
|
setOperationIsAsync();
|
||||||
|
|
||||||
@ -393,17 +400,30 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
setIsFramework();
|
setIsFramework();
|
||||||
setUseNewtonsoft();
|
setUseNewtonsoft();
|
||||||
setUseEndpointRouting();
|
setUseEndpointRouting();
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("build.sh.mustache", "", "build.sh"));
|
supportingFiles.add(new SupportingFile("build.sh.mustache", "", "build.sh"));
|
||||||
supportingFiles.add(new SupportingFile("build.bat.mustache", "", "build.bat"));
|
supportingFiles.add(new SupportingFile("build.bat.mustache", "", "build.bat"));
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
supportingFiles.add(new SupportingFile("Solution.mustache", "", packageName + ".sln"));
|
supportingFiles.add(new SupportingFile("Solution.mustache", "", packageName + ".sln"));
|
||||||
supportingFiles.add(new SupportingFile("gitignore", packageFolder, ".gitignore"));
|
supportingFiles.add(new SupportingFile("gitignore", packageFolder, ".gitignore"));
|
||||||
supportingFiles.add(new SupportingFile("validateModel.mustache", packageFolder + File.separator + "Attributes", "ValidateModelStateAttribute.cs"));
|
supportingFiles.add(new SupportingFile("validateModel.mustache", packageFolder + File.separator + "Attributes", "ValidateModelStateAttribute.cs"));
|
||||||
supportingFiles.add(new SupportingFile("typeConverter.mustache", packageFolder + File.separator + "Converters", "CustomEnumConverter.cs"));
|
|
||||||
|
if (useSeperateModelProject)
|
||||||
|
{
|
||||||
|
supportingFiles.add(new SupportingFile("typeConverter.mustache", sourceFolder + File.separator + modelPackage + File.separator + "Converters", "CustomEnumConverter.cs"));
|
||||||
|
} else {
|
||||||
|
supportingFiles.add(new SupportingFile("typeConverter.mustache", packageFolder + File.separator + "Converters", "CustomEnumConverter.cs"));
|
||||||
|
}
|
||||||
|
|
||||||
if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.0") || aspnetCoreVersion.getOptValue().startsWith("6.")) {
|
if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.0") || aspnetCoreVersion.getOptValue().startsWith("6.")) {
|
||||||
supportingFiles.add(new SupportingFile("OpenApi" + File.separator + "TypeExtensions.mustache", packageFolder + File.separator + "OpenApi", "TypeExtensions.cs"));
|
supportingFiles.add(new SupportingFile("OpenApi" + File.separator + "TypeExtensions.mustache", packageFolder + File.separator + "OpenApi", "TypeExtensions.cs"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useSeperateModelProject)
|
||||||
|
{
|
||||||
|
supportingFiles.add(new SupportingFile("ModelsProject.csproj.mustache", sourceFolder + File.separator + modelPackage, modelPackage + ".csproj"));
|
||||||
|
}
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("Project.csproj.mustache", packageFolder, packageName + ".csproj"));
|
supportingFiles.add(new SupportingFile("Project.csproj.mustache", packageFolder, packageName + ".csproj"));
|
||||||
if (!isLibrary) {
|
if (!isLibrary) {
|
||||||
supportingFiles.add(new SupportingFile("Dockerfile.mustache", packageFolder, "Dockerfile"));
|
supportingFiles.add(new SupportingFile("Dockerfile.mustache", packageFolder, "Dockerfile"));
|
||||||
@ -445,7 +465,12 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String modelFileFolder() {
|
public String modelFileFolder() {
|
||||||
return outputFolder + File.separator + sourceFolder + File.separator + packageName + File.separator + "Models";
|
if (!useSeperateModelProject)
|
||||||
|
{
|
||||||
|
return outputFolder + File.separator + sourceFolder + File.separator + packageName + File.separator + "Models";
|
||||||
|
} else {
|
||||||
|
return outputFolder + File.separator + sourceFolder + File.separator + modelPackage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -671,6 +696,18 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setUseSeperateModelProject() {
|
||||||
|
if (additionalProperties.containsKey(USE_MODEL_SEPERATEPROJECT)) {
|
||||||
|
useSeperateModelProject = convertPropertyToBooleanAndWriteBack(USE_MODEL_SEPERATEPROJECT);
|
||||||
|
if (useSeperateModelProject)
|
||||||
|
{
|
||||||
|
LOGGER.info("Using seperate model project");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
additionalProperties.put(USE_MODEL_SEPERATEPROJECT, useSeperateModelProject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void setUseSwashbuckle() {
|
private void setUseSwashbuckle() {
|
||||||
if (isLibrary) {
|
if (isLibrary) {
|
||||||
LOGGER.warn("isLibrary is true so changing default useSwashbuckle to false");
|
LOGGER.warn("isLibrary is true so changing default useSwashbuckle to false");
|
||||||
|
39
modules/openapi-generator/src/main/resources/aspnetcore/3.0/ModelsProject.csproj.mustache
vendored
Normal file
39
modules/openapi-generator/src/main/resources/aspnetcore/3.0/ModelsProject.csproj.mustache
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Description>{{packageDescription}}{{^packageDescription}}{{modelPackage}}{{/packageDescription}}</Description>
|
||||||
|
<Copyright>{{packageCopyright}}</Copyright>
|
||||||
|
<Authors>{{packageAuthors}}</Authors>
|
||||||
|
<TargetFramework>{{targetFramework}}</TargetFramework>
|
||||||
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
|
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||||
|
<Version>{{packageVersion}}</Version>
|
||||||
|
{{#nullableReferenceTypes}}
|
||||||
|
<Nullable>annotations</Nullable>
|
||||||
|
{{/nullableReferenceTypes}}
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AssemblyName>{{modelPackage}}</AssemblyName>
|
||||||
|
<PackageId>{{modelPackage}}</PackageId>
|
||||||
|
<UserSecretsId>{{userSecretsGuid}}</UserSecretsId>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="{{aspnetCoreVersion}}.0"/>
|
||||||
|
{{#useSwashbuckle}}
|
||||||
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
|
||||||
|
{{#useNewtonsoft}}
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="{{swashbuckleVersion}}"/>
|
||||||
|
{{/useNewtonsoft}}
|
||||||
|
{{^useNewtonsoft}}
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="{{swashbuckleVersion}}"/>
|
||||||
|
{{/useNewtonsoft}}
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="{{swashbuckleVersion}}" />
|
||||||
|
{{/useSwashbuckle}}
|
||||||
|
{{^useSwashbuckle}}
|
||||||
|
{{#useNewtonsoft}}
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="{{newtonsoftVersion}}" />
|
||||||
|
{{/useNewtonsoft}}
|
||||||
|
{{/useSwashbuckle}}
|
||||||
|
<PackageReference Include="JsonSubTypes" Version="1.8.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
@ -20,6 +20,9 @@
|
|||||||
<DockerfileContext>..\..</DockerfileContext>
|
<DockerfileContext>..\..</DockerfileContext>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
{{#useSeperateModelProject}}
|
||||||
|
<ProjectReference Include="../{{modelPackage}}/{{modelPackage}}.csproj"/>
|
||||||
|
{{/useSeperateModelProject}}
|
||||||
{{#useFrameworkReference}}
|
{{#useFrameworkReference}}
|
||||||
{{#isLibrary}}
|
{{#isLibrary}}
|
||||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||||
@ -28,7 +31,9 @@
|
|||||||
{{^useFrameworkReference}}
|
{{^useFrameworkReference}}
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" />
|
<PackageReference Include="Microsoft.AspNetCore.App" />
|
||||||
{{/useFrameworkReference}}
|
{{/useFrameworkReference}}
|
||||||
|
{{^useSeperateModelProject}}
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="{{aspnetCoreVersion}}.0"/>
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="{{aspnetCoreVersion}}.0"/>
|
||||||
|
{{/useSeperateModelProject}}
|
||||||
{{#useSwashbuckle}}
|
{{#useSwashbuckle}}
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
|
||||||
{{#useNewtonsoft}}
|
{{#useNewtonsoft}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user