Skip to content

Commit 780f45c

Browse files
committed
[java-generator] handle more special characters in field names
1 parent 14833da commit 780f45c

File tree

6 files changed

+14
-5
lines changed

6 files changed

+14
-5
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
### 6.7-SNAPSHOT
44

55
#### Bugs
6-
Fix #5145: [java-generator] handle `additionalProperties: true` emitting a field of type `AnyType`
6+
* Fix #5145: [java-generator] handle `additionalProperties: true` emitting a field of type `AnyType`
7+
* Fix #5164: [java-generator] handle more special characters in field names
78

89
#### Improvements
910

java-generator/core/src/main/java/io/fabric8/java/generator/nodes/AbstractJSONSchema2Pojo.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import java.util.Locale;
2828
import java.util.function.Function;
29+
import java.util.stream.Collector;
2930

3031
import static io.fabric8.java.generator.nodes.Keywords.JAVA_KEYWORDS;
3132

@@ -131,10 +132,10 @@ public static String sanitizeString(String str) {
131132
index = sanitized.indexOf('-');
132133
}
133134

134-
sanitized = sanitized.replace('.', '_');
135-
sanitized = sanitized.replace(' ', '_');
136-
sanitized = sanitized.replace('\'', '_');
137-
sanitized = sanitized.replace('\"', '_');
135+
sanitized = sanitized.chars()
136+
.mapToObj(character -> (char) character)
137+
.map(originalChar -> Character.isJavaIdentifierPart(originalChar) ? originalChar : '_')
138+
.collect(Collector.of(StringBuilder::new, StringBuilder::append, StringBuilder::append, StringBuilder::toString));
138139

139140
return sanitized;
140141
}

java-generator/core/src/test/resources/dummy-crd.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ spec:
4141
type: string
4242
four"doublequote:
4343
type: string
44+
five/slash:
45+
type: string
4446
scope: Namespaced
4547
names:
4648
plural: dummies

java-generator/it/src/it/escape-characters/src/test/java/io/fabric8/it/dummy/TestEscapeCharacters.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ void testDeserialization() {
4747
assertEquals("2", spec.getTwo_space());
4848
assertEquals("3", spec.getThree_quote());
4949
assertEquals("4", spec.getFour_doublequote());
50+
assertEquals("5", spec.getFive_slash());
5051
}
5152

5253
@Test
@@ -61,6 +62,7 @@ void testAgainstSample() throws Exception {
6162
spec.setTwo_space("2");
6263
spec.setThree_quote("3");
6364
spec.setFour_doublequote("4");
65+
spec.setFive_slash("5");
6466
sample.setSpec(spec);
6567
ObjectMeta om = new ObjectMeta();
6668
om.setName("sample");

java-generator/it/src/it/escape-characters/src/test/resources/dummy-crd.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ spec:
4141
type: string
4242
four"doublequote:
4343
type: string
44+
five/slash:
45+
type: string
4446
scope: Namespaced
4547
names:
4648
plural: dummies

java-generator/it/src/it/escape-characters/src/test/resources/sample.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ spec:
2424
two space: "2"
2525
three'quote: "3"
2626
four"doublequote: "4"
27+
five/slash: "5"

0 commit comments

Comments
 (0)