Skip to content

Commit c1eb989

Browse files
authored
Add anycase to ignore naming (#153)
* Fix intellij meta data and configuration. WIP * fix #148: Add a new `anyCase` naming convention to ignore everything. Also, finally removed the deprecated stuff since we have released at least 3 version since the deprecated warnings. * Fix from code review
1 parent b8f434b commit c1eb989

File tree

5 files changed

+34
-102
lines changed

5 files changed

+34
-102
lines changed

README.md

+4-6
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,16 @@ The options file is described in json (example in `specs/options.json`), and has
103103
|validateModelNoLocalDef|boolean|`true`, `false`|Not implemented yet|
104104
|validateNaming|boolean|`true`, `false`|Ensures the names follow a given naming convention|
105105
|ignoreHeaderXNaming|boolean|`true`, `false`|Exclude from validation header parameters starting with `x-`|
106-
|pathNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`|Naming convention for paths|
107-
|parameterNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`|Naming convention for parameters|
108-
|headerNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`|Naming convention for headers|
109-
|propertyNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`|Naming convention for properties|
106+
|pathNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`, `AnyCase`|Naming convention for paths|
107+
|parameterNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`, `AnyCase`|Naming convention for parameters|
108+
|headerNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`, `AnyCase`|Naming convention for headers|
109+
|propertyNamingConvention|string|`CamelCase`, `HyphenCase`, `UnderscoreCase`, `UnderscoreUpperCase`, `AnyCase`|Naming convention for properties|
110110

111111
## Roadmap
112112

113113
In no specific order
114114

115115
- Try to reach 100% unit test code coverage
116-
- Make an official release
117-
- Make it available on Maven
118116
- Add some validations based on feedback
119117

120118
## Releases on maven central

lib/src/main/java/org/openapitools/openapistylevalidator/NamingValidator.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ private boolean isCamelCase(String variableName) {
1818
return variableName.matches(REGEX_LOWER_CASE_ALPHA_NUMERIC_ONLY) || variableName.matches(REGEX_CAMEL_CASE);
1919
}
2020

21+
private boolean isAnyCase() {
22+
return true;
23+
}
24+
2125
private boolean isHyphenCase(String variableName) {
2226
return isSeparatorCaseValid(variableName, "-", false);
2327
}
24-
25-
2628

2729
private boolean isSeparatorCaseValid(String variableName, String separator, boolean isUpperCase) {
2830
if (variableName.startsWith(separator) || variableName.endsWith(separator)) {
@@ -37,15 +39,15 @@ private boolean isSeparatorCaseValid(String variableName, String separator, bool
3739
}
3840
totalLength += token.length();
3941
if (isUpperCase) {
40-
if (!token.toUpperCase().equals(token)) {
42+
if (!token.equalsIgnoreCase(token)) {
4143
return false;
4244
}
4345

4446
if (!token.matches(REGEX_UPPER_CASE_ALPHA_NUMERIC_ONLY)) {
4547
return false;
4648
}
4749
} else {
48-
if (!token.toLowerCase().equals(token)) {
50+
if (!token.equalsIgnoreCase(token)) {
4951
return false;
5052
}
5153

@@ -68,6 +70,8 @@ boolean isNamingValid(String name, ValidatorParameters.NamingConvention namingSt
6870
return isCamelCase(name);
6971
case HyphenCase:
7072
return isHyphenCase(name);
73+
case AnyCase:
74+
return isAnyCase();
7175
}
7276
return false;
7377
}

lib/src/main/java/org/openapitools/openapistylevalidator/ValidatorParameters.java

+2-71
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public static enum NamingConvention {
2525
UnderscoreCase("underscore_case"),
2626
UnderscoreUpperCase("UNDERSCORE_UPPER_CASE"),
2727
CamelCase("camelCase"),
28-
HyphenCase("hyphen-case");
28+
HyphenCase("hyphen-case"),
29+
AnyCase("AnyCase");
2930

3031
private final String designation;
3132

@@ -41,40 +42,6 @@ public String getDesignation() {
4142
}
4243
}
4344

44-
/**
45-
* @deprecated Please use {@link ValidatorParameters.NamingConvention} instead.
46-
*/
47-
@Deprecated
48-
public static enum NamingStrategy {
49-
UnderscoreCase,
50-
UnderscoreUpperCase,
51-
CamelCase,
52-
HyphenCase;
53-
54-
/**
55-
* @deprecated Please use {@link ValidatorParameters.NamingConvention#getDesignation()} instead.
56-
* @return the name of the strategy as it can be used in the reports
57-
*/
58-
@Deprecated
59-
public String getAppelation() {
60-
return toConvention(this).getDesignation();
61-
}
62-
63-
public static NamingStrategy valueOf(NamingConvention pathNamingConvention) {
64-
if(pathNamingConvention == null) {
65-
return null;
66-
}
67-
return NamingStrategy.valueOf(pathNamingConvention.name());
68-
}
69-
70-
public static NamingConvention toConvention(NamingStrategy pathNamingStrategy) {
71-
if(pathNamingStrategy == null) {
72-
return null;
73-
}
74-
return NamingConvention.valueOf(pathNamingStrategy.name());
75-
}
76-
}
77-
7845
private boolean validateInfoLicense = true;
7946
private boolean validateInfoDescription = true;
8047
private boolean validateInfoContact = true;
@@ -155,22 +122,6 @@ public NamingConvention getPropertyNamingConvention() {
155122
return propertyNamingConvention;
156123
}
157124

158-
public NamingStrategy getPathNamingStrategy() {
159-
return NamingStrategy.valueOf(getPathNamingConvention());
160-
}
161-
162-
public NamingStrategy getParameterNamingStrategy() {
163-
return NamingStrategy.valueOf(getParameterNamingConvention());
164-
}
165-
166-
public NamingStrategy getHeaderNamingStrategy() {
167-
return NamingStrategy.valueOf(getHeaderNamingConvention());
168-
}
169-
170-
public NamingStrategy getPropertyNamingStrategy() {
171-
return NamingStrategy.valueOf(getPropertyNamingConvention());
172-
}
173-
174125
public ValidatorParameters setValidateInfoLicense(boolean validateInfoLicense) {
175126
this.validateInfoLicense = validateInfoLicense;
176127
return this;
@@ -241,26 +192,6 @@ public ValidatorParameters setPropertyNamingConvention(NamingConvention property
241192
return this;
242193
}
243194

244-
public ValidatorParameters setPathNamingStrategy(NamingStrategy pathNamingStrategy) {
245-
setPathNamingConvention(NamingStrategy.toConvention(pathNamingStrategy));
246-
return this;
247-
}
248-
249-
public ValidatorParameters setParameterNamingStrategy(NamingStrategy parameterNamingStrategy) {
250-
setParameterNamingConvention(NamingStrategy.toConvention(parameterNamingStrategy));
251-
return this;
252-
}
253-
254-
public ValidatorParameters setHeaderNamingStrategy(NamingStrategy headerNamingStrategy) {
255-
setHeaderNamingConvention(NamingStrategy.toConvention(headerNamingStrategy));
256-
return this;
257-
}
258-
259-
public ValidatorParameters setPropertyNamingStrategy(NamingStrategy propertyNamingStrategy) {
260-
setPropertyNamingConvention(NamingStrategy.toConvention(propertyNamingStrategy));
261-
return this;
262-
}
263-
264195
public boolean isValidateNaming() {
265196
return validateNaming;
266197
}

lib/src/test/java/org/openapitools/openapistylevalidator/NamingValidatorTest.java

+20
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,26 @@ void initEach() {
1616
validator = new NamingValidator();
1717
}
1818

19+
@Test
20+
void anyCaseShouldAlwaysReturnTrue() {
21+
//Arrange
22+
String whateverCase1 = "my_variable";
23+
String whateverCase2 = "my-variable";
24+
String whateverCase3 = "variable";
25+
26+
//Act
27+
boolean actual1 = validator.isNamingValid(whateverCase1, ValidatorParameters.NamingConvention.AnyCase);
28+
boolean actual2 = validator.isNamingValid(whateverCase2, ValidatorParameters.NamingConvention.AnyCase);
29+
boolean actual3 = validator.isNamingValid(whateverCase3, ValidatorParameters.NamingConvention.AnyCase);
30+
31+
//Assert
32+
Assertions.assertAll(
33+
() -> assertTrue(actual1),
34+
() -> assertTrue(actual2),
35+
() -> assertTrue(actual3)
36+
);
37+
}
38+
1939
@Test
2040
void goodUnderscoreCaseShouldReturnTrue() {
2141
//Arrange

lib/src/test/java/org/openapitools/openapistylevalidator/ValidatorParametersTest.java

-21
Original file line numberDiff line numberDiff line change
@@ -65,25 +65,4 @@ void testAllGetterSetters() {
6565
() -> assertEquals(ValidatorParameters.NamingConvention.CamelCase, parameters.getPropertyNamingConvention())
6666
);
6767
}
68-
69-
@Test
70-
void validateLegacyDefaultValuesAndSetters() {
71-
Assertions.assertAll(
72-
() -> assertEquals(ValidatorParameters.NamingStrategy.HyphenCase, parameters.getPathNamingStrategy()),
73-
() -> assertEquals(ValidatorParameters.NamingStrategy.CamelCase, parameters.getParameterNamingStrategy()),
74-
() -> assertEquals(ValidatorParameters.NamingStrategy.CamelCase, parameters.getPropertyNamingStrategy())
75-
);
76-
77-
parameters.setPathNamingStrategy(ValidatorParameters.NamingStrategy.CamelCase);
78-
parameters.setParameterNamingStrategy(ValidatorParameters.NamingStrategy.CamelCase);
79-
parameters.setHeaderNamingStrategy(ValidatorParameters.NamingStrategy.UnderscoreUpperCase);
80-
parameters.setPropertyNamingStrategy(ValidatorParameters.NamingStrategy.CamelCase);
81-
82-
Assertions.assertAll(
83-
() -> assertEquals(ValidatorParameters.NamingConvention.CamelCase, parameters.getPathNamingConvention()),
84-
() -> assertEquals(ValidatorParameters.NamingConvention.CamelCase, parameters.getParameterNamingConvention()),
85-
() -> assertEquals(ValidatorParameters.NamingConvention.UnderscoreUpperCase, parameters.getHeaderNamingConvention()),
86-
() -> assertEquals(ValidatorParameters.NamingConvention.CamelCase, parameters.getPropertyNamingConvention())
87-
);
88-
}
8968
}

0 commit comments

Comments
 (0)