Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,18 @@ public class DataModelGeneratorMojo extends AbstractMojo
@Parameter( property = "openapi.generate.enableOneOfAnyOfGeneration", defaultValue = "false" )
private boolean enableOneOfAnyOfGeneration;

/**
* Generate model classes. Default is true.
*/
@Parameter( property = "openapi.generate.generateModels", defaultValue = "true" )
private boolean generateModels;

/**
* Generate API classes (client classes). Default is true.
*/
@Parameter( property = "openapi.generate.generateApis", defaultValue = "true" )
private boolean generateApis;

Comment on lines +121 to +132
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Question)

Why not have this as separate PR? It's unrelated to oneof / anyof.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to save time

/**
* Defines a list of additional properties that will be passed to the Java generator.
*/
Expand Down Expand Up @@ -179,6 +191,8 @@ Try<GenerationConfiguration> retrieveGenerationConfiguration()
.deleteOutputDirectory(deleteOutputDirectory)
.additionalProperties(additionalProperties)
.oneOfAnyOfGenerationEnabled(enableOneOfAnyOfGeneration)
.generateModels(generateModels)
.generateApis(generateApis)
.build());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,21 @@

package com.sap.cloud.sdk.datamodel.rest.sodastore.model;

import java.util.Objects;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonTypeName;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -75,7 +73,8 @@ public class NewSoda
* Get name
* @return name The name of this {@link NewSoda} instance.
*/
@Nonnull public String getName() {
@Nonnull
public String getName() {
return name;
}

Expand Down Expand Up @@ -103,7 +102,8 @@ public void setName( @Nonnull final String name) {
* Get brand
* @return brand The brand of this {@link NewSoda} instance.
*/
@Nonnull public String getBrand() {
@Nonnull
public String getBrand() {
return brand;
}

Expand Down Expand Up @@ -131,7 +131,8 @@ public void setBrand( @Nonnull final String brand) {
* Get flavor
* @return flavor The flavor of this {@link NewSoda} instance.
*/
@Nonnull public String getFlavor() {
@Nonnull
public String getFlavor() {
return flavor;
}

Expand Down Expand Up @@ -159,7 +160,8 @@ public void setFlavor( @Nonnull final String flavor) {
* Get price
* @return price The price of this {@link NewSoda} instance.
*/
@Nonnull public Float getPrice() {
@Nonnull
public Float getPrice() {
return price;
}

Expand Down Expand Up @@ -254,6 +256,5 @@ private String toIndentedString(final java.lang.Object o) {
return o.toString().replace("\n", "\n ");
}


}

Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,21 @@

package com.sap.cloud.sdk.datamodel.rest.sodastore.model;

import java.util.Objects;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonTypeName;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -78,7 +76,8 @@ public class Soda
* Get id
* @return id The id of this {@link Soda} instance.
*/
@Nonnull public Long getId() {
@Nonnull
public Long getId() {
return id;
}

Expand Down Expand Up @@ -106,7 +105,8 @@ public void setId( @Nullable final Long id) {
* Get name
* @return name The name of this {@link Soda} instance.
*/
@Nonnull public String getName() {
@Nonnull
public String getName() {
return name;
}

Expand Down Expand Up @@ -134,7 +134,8 @@ public void setName( @Nonnull final String name) {
* Get brand
* @return brand The brand of this {@link Soda} instance.
*/
@Nonnull public String getBrand() {
@Nonnull
public String getBrand() {
return brand;
}

Expand Down Expand Up @@ -162,7 +163,8 @@ public void setBrand( @Nonnull final String brand) {
* Get flavor
* @return flavor The flavor of this {@link Soda} instance.
*/
@Nonnull public String getFlavor() {
@Nonnull
public String getFlavor() {
return flavor;
}

Expand Down Expand Up @@ -190,7 +192,8 @@ public void setFlavor( @Nonnull final String flavor) {
* Get price
* @return price The price of this {@link Soda} instance.
*/
@Nonnull public Float getPrice() {
@Nonnull
public Float getPrice() {
return price;
}

Expand Down Expand Up @@ -287,6 +290,5 @@ private String toIndentedString(final java.lang.Object o) {
return o.toString().replace("\n", "\n ");
}


}

Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,21 @@

package com.sap.cloud.sdk.datamodel.rest.sodastore.model;

import java.util.Objects;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonTypeName;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -75,7 +73,8 @@ public class UpdateSoda
* Get name
* @return name The name of this {@link UpdateSoda} instance.
*/
@Nonnull public String getName() {
@Nonnull
public String getName() {
return name;
}

Expand Down Expand Up @@ -103,7 +102,8 @@ public void setName( @Nullable final String name) {
* Get brand
* @return brand The brand of this {@link UpdateSoda} instance.
*/
@Nonnull public String getBrand() {
@Nonnull
public String getBrand() {
return brand;
}

Expand Down Expand Up @@ -131,7 +131,8 @@ public void setBrand( @Nullable final String brand) {
* Get flavor
* @return flavor The flavor of this {@link UpdateSoda} instance.
*/
@Nonnull public String getFlavor() {
@Nonnull
public String getFlavor() {
return flavor;
}

Expand Down Expand Up @@ -159,7 +160,8 @@ public void setFlavor( @Nullable final String flavor) {
* Get price
* @return price The price of this {@link UpdateSoda} instance.
*/
@Nonnull public Float getPrice() {
@Nonnull
public Float getPrice() {
return price;
}

Expand Down Expand Up @@ -254,6 +256,5 @@ private String toIndentedString(final java.lang.Object o) {
return o.toString().replace("\n", "\n ");
}


}

Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ static ClientOptInput convertGenerationConfiguration(
@Nonnull final GenerationConfiguration generationConfiguration,
@Nonnull final Path inputSpec )
{
setGlobalSettings();
setGlobalSettings(generationConfiguration);
final var inputSpecFile = inputSpec.toString();

final var config = createCodegenConfig();
Expand Down Expand Up @@ -96,10 +96,14 @@ public OperationsMap postProcessOperationsWithModels(
};
}

private static void setGlobalSettings()
private static void setGlobalSettings( @Nonnull final GenerationConfiguration configuration )
{
GlobalSettings.setProperty(CodegenConstants.APIS, "");
GlobalSettings.setProperty(CodegenConstants.MODELS, "");
if( configuration.isGenerateApis() ) {
GlobalSettings.setProperty(CodegenConstants.APIS, "");
}
if( configuration.isGenerateModels() ) {
GlobalSettings.setProperty(CodegenConstants.MODELS, "");
}
GlobalSettings.setProperty(CodegenConstants.MODEL_TESTS, Boolean.FALSE.toString());
GlobalSettings.setProperty(CodegenConstants.MODEL_DOCS, Boolean.FALSE.toString());
GlobalSettings.setProperty(CodegenConstants.API_TESTS, Boolean.FALSE.toString());
Expand Down Expand Up @@ -136,7 +140,7 @@ private static Map<String, Object> getAdditionalProperties( @Nonnull final Gener
if( !Strings.isNullOrEmpty(copyrightHeader) ) {
result.put(COPYRIGHT_PROPERTY_KEY, copyrightHeader);
}
result.put(CodegenConstants.SERIALIZABLE_MODEL, "true");
result.put(CodegenConstants.SERIALIZABLE_MODEL, "false");
result.put(JAVA_8_PROPERTY_KEY, "true");
result.put(DATE_LIBRARY_PROPERTY_KEY, "java8");
result.put(BOOLEAN_GETTER_PREFIX_PROPERTY_KEY, "is");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
package com.sap.cloud.sdk.datamodel.openapi.generator;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
Expand Down Expand Up @@ -51,17 +50,14 @@ class PreprocessingStepOrchestrator
* {@code anyOfOneOfGenerationEnabled}
*
* @param anyOfOneOfGenerationEnabled
* true if clients should be generated for input specification with oneOf, anyOf
*
* @return this
*/
PreprocessingStepOrchestrator enableAnyOfOneOfGeneration( @Nonnull final boolean anyOfOneOfGenerationEnabled )
PreprocessingStepOrchestrator enableAnyOfOneOfGeneration( final boolean anyOfOneOfGenerationEnabled )
{
if( !anyOfOneOfGenerationEnabled ) {
steps.add(ValidationKeywordsPreprocessor::new);
} else {
log
.warn(
"oneOf/anyOf keywords processing is turned on, the generated client may not be feature complete and work as expected for all cases involving anyOf/oneOf");
}
return this;
}
Expand Down Expand Up @@ -115,7 +111,7 @@ private Path writeProcessedSpecToTempFile( @Nonnull final JsonNode rootNode, @No
"." + fileFormat.getFileExtensions().get(0));

final String content = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
Files.write(path, content.getBytes(StandardCharsets.UTF_8));
Files.writeString(path, content);

return path.normalize().toAbsolutePath();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ public class GenerationConfiguration
@Builder.Default
boolean oneOfAnyOfGenerationEnabled = false;

@Builder.Default
boolean generateModels = true;

@Builder.Default
boolean generateApis = true;

/**
* Indicates whether to use the default SAP copyright header for generated files.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ package {{package}};
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
{{/useReflectionEqualsHashCode}}
import java.util.Objects;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
{{#imports}}
import {{import}};
Expand All @@ -27,14 +27,33 @@ import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonTypeName;
{{#withXml}}
import com.fasterxml.jackson.dataformat.xml.annotation.*;
{{/withXml}}
{{#vendorExtensions.x-has-readonly-properties}}
import com.fasterxml.jackson.annotation.JsonCreator;
{{/vendorExtensions.x-has-readonly-properties}}
{{/jackson}}
{{#withXml}}
import {{javaxPackage}}.xml.bind.annotation.*;
import {{javaxPackage}}.xml.bind.annotation.adapters.*;
import io.github.threetenjaxb.core.*;
{{/withXml}}
{{#jsonb}}
import java.lang.reflect.Type;
import {{javaxPackage}}.json.bind.annotation.JsonbTypeDeserializer;
import {{javaxPackage}}.json.bind.annotation.JsonbTypeSerializer;
import {{javaxPackage}}.json.bind.serializer.DeserializationContext;
import {{javaxPackage}}.json.bind.serializer.JsonbDeserializer;
import {{javaxPackage}}.json.bind.serializer.JsonbSerializer;
import {{javaxPackage}}.json.bind.serializer.SerializationContext;
import {{javaxPackage}}.json.stream.JsonGenerator;
import {{javaxPackage}}.json.stream.JsonParser;
import {{javaxPackage}}.json.bind.annotation.JsonbProperty;
{{#vendorExtensions.x-has-readonly-properties}}
import {{javaxPackage}}.json.bind.annotation.JsonbCreator;
{{/vendorExtensions.x-has-readonly-properties}}
{{/jsonb}}
{{#parcelableModel}}
import android.os.Parcelable;
import android.os.Parcel;
Expand All @@ -57,6 +76,6 @@ import {{javaxPackage}}.annotation.Nullable;

{{#models}}
{{#model}}
{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{>pojo}}{{/isEnum}}
{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{#vendorExtensions.x-is-one-of-interface}}{{>oneof_interface}}{{/vendorExtensions.x-is-one-of-interface}}{{^vendorExtensions.x-is-one-of-interface}}{{>pojo}}{{/vendorExtensions.x-is-one-of-interface}}{{/isEnum}}
{{/model}}
{{/models}}
Loading
Loading