Skip to content

Commit 10a1f4d

Browse files
authored
Merge pull request #647 from bci-oss/fix-quote-deletion-646
fix: remove yaml mapper feature minimize quotes
2 parents 1d48342 + 34f35fc commit 10a1f4d

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

core/esmf-aspect-model-document-generators/src/main/java/org/eclipse/esmf/aspectmodel/generator/AbstractSchemaArtifact.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
3030
import com.fasterxml.jackson.databind.node.ObjectNode;
3131
import com.fasterxml.jackson.databind.node.TextNode;
32+
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
3233
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
3334
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
35+
import com.fasterxml.jackson.dataformat.yaml.util.StringQuotingChecker;
3436
import com.google.common.collect.ImmutableMap;
3537
import com.google.common.collect.Streams;
3638
import io.vavr.control.Try;
@@ -138,10 +140,24 @@ protected Map<Path, String> getContentWithSeparateSchemasAsYaml( final Optional<
138140

139141
protected String jsonToYaml( final JsonNode json ) {
140142
try {
141-
return new YAMLMapper().enable( YAMLGenerator.Feature.MINIMIZE_QUOTES ).writeValueAsString( json );
143+
final YAMLFactory yamlFactory = YAMLFactory.builder()
144+
.stringQuotingChecker( new OpenApiStringQuotingChecker() ).build();
145+
return new YAMLMapper( yamlFactory ).enable( YAMLGenerator.Feature.MINIMIZE_QUOTES )
146+
.writeValueAsString( json );
142147
} catch ( final JsonProcessingException exception ) {
143148
LOG.error( "JSON could not be converted to YAML", exception );
144149
return json.toString();
145150
}
146151
}
152+
153+
public static class OpenApiStringQuotingChecker extends StringQuotingChecker.Default {
154+
155+
@Override
156+
protected boolean valueHasQuotableChar( final String inputStr ) {
157+
if ( inputStr.contains( "#" ) ) {
158+
return true;
159+
}
160+
return super.valueHasQuotableChar( inputStr );
161+
}
162+
}
147163
}

core/esmf-aspect-model-document-generators/src/test/java/org/eclipse/esmf/aspectmodel/generator/openapi/AspectModelOpenApiGeneratorTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.stream.Collectors;
3030

3131
import org.eclipse.esmf.aspectmodel.generator.AbstractGenerator;
32+
import org.eclipse.esmf.aspectmodel.generator.AbstractSchemaArtifact;
3233
import org.eclipse.esmf.metamodel.Aspect;
3334
import org.eclipse.esmf.metamodel.Property;
3435
import org.eclipse.esmf.test.TestAspect;
@@ -43,6 +44,7 @@
4344
import com.fasterxml.jackson.databind.ObjectMapper;
4445
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
4546
import com.fasterxml.jackson.databind.node.ObjectNode;
47+
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
4648
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
4749
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
4850
import com.google.common.collect.Streams;
@@ -303,7 +305,9 @@ void testInValidParameterName() throws IOException {
303305
@Test
304306
void testYamlGenerator() throws IOException {
305307
final Aspect aspect = TestResources.load( TestAspect.ASPECT_WITHOUT_SEE_ATTRIBUTE ).aspect();
306-
final YAMLMapper yamlMapper = new YAMLMapper().enable( YAMLGenerator.Feature.MINIMIZE_QUOTES );
308+
final YAMLFactory yamlFactory = YAMLFactory.builder()
309+
.stringQuotingChecker( new AbstractSchemaArtifact.OpenApiStringQuotingChecker() ).build();
310+
final YAMLMapper yamlMapper = new YAMLMapper( yamlFactory ).enable( YAMLGenerator.Feature.MINIMIZE_QUOTES );
307311
final OpenApiSchemaGenerationConfig yamlConfig = OpenApiSchemaGenerationConfigBuilder.builder()
308312
.useSemanticVersion( true )
309313
.baseUrl( TEST_BASE_URL )

0 commit comments

Comments
 (0)