Skip to content
This repository was archived by the owner on May 9, 2025. It is now read-only.

Commit 6ebfe94

Browse files
committed
Merge branch 'master' into normalizing-vendor-extensions
* master: [cli] Optional colorized outputs (OpenAPITools#5193) [bug] fix null pointer exception while evaluating recommend… (OpenAPITools#5191) [csharp-netcore] Improved `Multimap` and `ClientUtils` implementation (OpenAPITools#5122)
2 parents b2b9866 + 97ff9b4 commit 6ebfe94

18 files changed

Lines changed: 385 additions & 951 deletions

File tree

modules/openapi-generator-cli/pom.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@
6565
<transformer
6666
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
6767
</transformers>
68+
<filters>
69+
<filter>
70+
<artifact>*:*</artifact>
71+
<excludes>
72+
<exclude>META-INF/*.SF</exclude>
73+
<exclude>META-INF/*.DSA</exclude>
74+
<exclude>META-INF/*.RSA</exclude>
75+
</excludes>
76+
</filter>
77+
</filters>
6878
</configuration>
6979
</execution>
7080
</executions>
@@ -134,6 +144,11 @@
134144
<artifactId>logback-classic</artifactId>
135145
<version>1.2.3</version>
136146
</dependency>
147+
<dependency>
148+
<groupId>org.codehaus.janino</groupId>
149+
<artifactId>janino</artifactId>
150+
<version>3.1.0</version>
151+
</dependency>
137152
<dependency>
138153
<groupId>org.testng</groupId>
139154
<artifactId>testng</artifactId>
Lines changed: 77 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<configuration>
3+
4+
<!-- Prevent startup messages from Logback -->
5+
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
6+
7+
<!-- For those without color (the default) -->
8+
<property name="noColorPattern"
9+
value="[%thread] %-5level %logger{36} - %msg%n" />
10+
<!-- For those with color (with -Dcolor set) -->
11+
<property name="colorPattern"
12+
value="[%thread] %highlight(%-5level) %logger{36} - %msg%n" />
13+
314
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
415
<target>System.out</target>
516
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
6-
<pattern>[%thread] %-5level %logger{36} - %msg%n</pattern>
17+
<pattern>${noColorPattern}</pattern>
718
</encoder>
819
<filter class="ch.qos.logback.classic.filter.LevelFilter">
920
<level>ERROR</level>
@@ -14,21 +25,80 @@
1425
<appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
1526
<target>System.err</target>
1627
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
17-
<pattern>[%thread] %-5level %logger{36} - %msg%n</pattern>
28+
<pattern>${noColorPattern}</pattern>
1829
</encoder>
1930
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
2031
<level>ERROR</level>
2132
</filter>
2233
</appender>
34+
<appender name="STDOUT_COLOR" class="ch.qos.logback.core.ConsoleAppender">
35+
<target>System.out</target>
36+
<withJansi>true</withJansi>
37+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
38+
<pattern>${colorPattern}</pattern>
39+
</encoder>
40+
<filter class="ch.qos.logback.classic.filter.LevelFilter">
41+
<level>ERROR</level>
42+
<onMatch>DENY</onMatch>
43+
<onMismatch>NEUTRAL</onMismatch>
44+
</filter>
45+
</appender>
46+
<appender name="STDERR_COLOR" class="ch.qos.logback.core.ConsoleAppender">
47+
<target>System.err</target>
48+
<withJansi>true</withJansi>
49+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
50+
<pattern>${colorPattern}</pattern>
51+
</encoder>
52+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
53+
<level>ERROR</level>
54+
</filter>
55+
</appender>
56+
<appender name="ONCELOGGER_COLOR" class="ch.qos.logback.core.ConsoleAppender">
57+
<target>System.err</target>
58+
<withJansi>true</withJansi>
59+
<evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
60+
<marker>ONCE</marker>
61+
</evaluator>
62+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
63+
<pattern>[%thread] %highlight(%-5level) %logger{36} - %red(%msg)%n</pattern>
64+
</encoder>
65+
</appender>
66+
2367
<logger name="io.swagger" level="warn">
24-
<appender-ref ref="STDOUT"/>
25-
<appender-ref ref="STDERR"/>
68+
<!-- Colorize by passing -Dcolor -->
69+
<if condition='isDefined("color")'>
70+
<then>
71+
<appender-ref ref="STDOUT_COLOR"/>
72+
<appender-ref ref="STDERR_COLOR"/>
73+
</then>
74+
<else>
75+
<appender-ref ref="STDOUT"/>
76+
<appender-ref ref="STDERR"/>
77+
</else>
78+
</if>
2679
</logger>
2780
<logger name="org.openapitools" level="${log.level:-info}">
28-
<appender-ref ref="STDOUT"/>
29-
<appender-ref ref="STDERR"/>
81+
<!-- Colorize by passing -Dcolor -->
82+
<if condition='isDefined("color")'>
83+
<then>
84+
<appender-ref ref="STDOUT_COLOR"/>
85+
<appender-ref ref="STDERR_COLOR"/>
86+
</then>
87+
<else>
88+
<appender-ref ref="STDOUT"/>
89+
<appender-ref ref="STDERR"/>
90+
</else>
91+
</if>
3092
</logger>
3193
<root level="error">
32-
<appender-ref ref="STDERR"/>
94+
<!-- Colorize by passing -Dcolor -->
95+
<if condition='isDefined("color")'>
96+
<then>
97+
<appender-ref ref="STDERR_COLOR"/>
98+
</then>
99+
<else>
100+
<appender-ref ref="STDERR"/>
101+
</else>
102+
</if>
33103
</root>
34104
</configuration>

modules/openapi-generator/src/main/java/org/openapitools/codegen/validations/oas/OpenApiEvaluator.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ public ValidationResult validate(OpenAPI specification) {
8787
}
8888
}
8989

90-
parameters.forEach(parameter -> validationResult.consume(parameterValidations.validate(parameter)));
90+
parameters.forEach(parameter -> {
91+
parameter = ModelUtils.getReferencedParameter(specification, parameter);
92+
validationResult.consume(parameterValidations.validate(parameter));
93+
});
9194

9295
return validationResult;
9396
}

modules/openapi-generator/src/main/resources/csharp-netcore/ClientUtils.mustache

Lines changed: 17 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
using System;
44
using System.Collections;
5-
using System.Collections.Generic;
65
using System.IO;
76
using System.Linq;
8-
using System.Net;
97
using System.Text;
108
using System.Text.RegularExpressions;
11-
using System.Threading.Tasks;
129
{{#useCompareNetObjects}}
1310
using KellermanSoftware.CompareNetObjects;
1411
{{/useCompareNetObjects}}
@@ -58,15 +55,11 @@ namespace {{packageName}}.Client
5855
{
5956
var parameters = new Multimap<string, string>();
6057
61-
if (IsCollection(value) && collectionFormat == "multi")
58+
if (value is ICollection collection && collectionFormat == "multi")
6259
{
63-
var valueCollection = value as IEnumerable;
64-
if (valueCollection != null)
60+
foreach (var item in collection)
6561
{
66-
foreach (var item in valueCollection)
67-
{
68-
parameters.Add(name, ParameterToString(item));
69-
}
62+
parameters.Add(name, ParameterToString(item));
7063
}
7164
}
7265
else
@@ -87,49 +80,26 @@ namespace {{packageName}}.Client
8780
/// <returns>Formatted string.</returns>
8881
public static string ParameterToString(object obj, IReadableConfiguration configuration = null)
8982
{
90-
if (obj is DateTime)
83+
if (obj is DateTime dateTime)
9184
// Return a formatted date string - Can be customized with Configuration.DateTimeFormat
9285
// Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o")
9386
// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
9487
// For example: 2009-06-15T13:45:30.0000000
95-
return ((DateTime)obj).ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat);
96-
else if (obj is DateTimeOffset)
88+
return dateTime.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat);
89+
if (obj is DateTimeOffset dateTimeOffset)
9790
// Return a formatted date string - Can be customized with Configuration.DateTimeFormat
9891
// Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o")
9992
// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
10093
// For example: 2009-06-15T13:45:30.0000000
101-
return ((DateTimeOffset)obj).ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat);
102-
else if (obj is bool)
103-
return (bool)obj ? "true" : "false";
104-
else
105-
{
106-
if (obj is IList)
107-
{
108-
var list = obj as IList;
109-
var flattenedString = new StringBuilder();
110-
foreach (var param in list)
111-
{
112-
if (flattenedString.Length > 0)
113-
flattenedString.Append(",");
114-
flattenedString.Append(param);
115-
}
116-
return flattenedString.ToString();
117-
}
118-
119-
return Convert.ToString (obj);
120-
}
121-
}
122-
123-
/// <summary>
124-
/// Check if generic object is a collection.
125-
/// </summary>
126-
/// <param name="value"></param>
127-
/// <returns>True if object is a collection type</returns>
128-
private static bool IsCollection(object value)
129-
{
130-
return value is IList || value is ICollection;
94+
return dateTimeOffset.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat);
95+
if (obj is bool boolean)
96+
return boolean ? "true" : "false";
97+
if (obj is ICollection collection)
98+
return string.Join(",", collection.Cast<object>());
99+
100+
return Convert.ToString(obj);
131101
}
132-
102+
133103
/// <summary>
134104
/// URL encode a string
135105
/// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50
@@ -172,7 +142,7 @@ namespace {{packageName}}.Client
172142
/// <returns>Encoded string.</returns>
173143
public static string Base64Encode(string text)
174144
{
175-
return System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text));
145+
return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text));
176146
}
177147

178148
/// <summary>
@@ -182,14 +152,9 @@ namespace {{packageName}}.Client
182152
/// <returns>Byte array</returns>
183153
public static byte[] ReadAsBytes(Stream inputStream)
184154
{
185-
byte[] buf = new byte[16*1024];
186-
using (MemoryStream ms = new MemoryStream())
155+
using (var ms = new MemoryStream())
187156
{
188-
int count;
189-
while ((count = inputStream.Read(buf, 0, buf.Length)) > 0)
190-
{
191-
ms.Write(buf, 0, count);
192-
}
157+
inputStream.CopyTo(ms);
193158
return ms.ToArray();
194159
}
195160
}

0 commit comments

Comments
 (0)