Skip to content

Commit

Permalink
Throw exception instead of generated code with compile errors
Browse files Browse the repository at this point in the history
Issue: #309
  • Loading branch information
muehmar committed Nov 7, 2024
1 parent 6004ee6 commit 74c2fa0
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import static com.github.muehmar.gradle.openapi.generator.model.Nullability.NULLABLE;
import static com.github.muehmar.gradle.openapi.util.Booleans.not;

import com.github.muehmar.gradle.openapi.exception.OpenApiGeneratorException;
import com.github.muehmar.gradle.openapi.generator.java.generator.enumpojo.EnumContentBuilder;
import com.github.muehmar.gradle.openapi.generator.java.generator.enumpojo.EnumGenerator;
import com.github.muehmar.gradle.openapi.generator.java.model.member.TechnicalPojoMember;
import com.github.muehmar.gradle.openapi.generator.java.model.name.JavaName;
import com.github.muehmar.gradle.openapi.generator.java.model.name.JavaPojoName;
import com.github.muehmar.gradle.openapi.generator.java.model.type.JavaEnumType;
import com.github.muehmar.gradle.openapi.generator.java.model.type.JavaMapType;
import com.github.muehmar.gradle.openapi.generator.java.model.type.JavaStringType;
Expand All @@ -26,10 +28,20 @@ public class JavaAdditionalProperties {
JavaType type;

public static JavaAdditionalProperties wrap(
AdditionalProperties additionalProperties, TypeMappings typeMappings) {
return new JavaAdditionalProperties(
additionalProperties.isAllowed(),
JavaType.wrap(additionalProperties.getType(), typeMappings));
JavaPojoName pojoName, AdditionalProperties additionalProperties, TypeMappings typeMappings) {
final JavaType javaType = JavaType.wrap(additionalProperties.getType(), typeMappings);
ensureNoMapTypeWithConversion(pojoName, javaType);
return new JavaAdditionalProperties(additionalProperties.isAllowed(), javaType);
}

private static void ensureNoMapTypeWithConversion(JavaPojoName pojoName, JavaType javaType) {
if (javaType.isMapType() && javaType.hasApiTypeDeep()) {
final String message =
String.format(
"The pojo '%s' contains a Map as additional properties and a conversion is registered with mapping, which is currently not supported. This should be fixed with: https://github.com/muehmar/gradle-openapi-schema/issues/307.",
pojoName);
throw new OpenApiGeneratorException(message);
}
}

public static JavaAdditionalProperties anyTypeAllowed() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ private static JavaObjectPojo createForType(
.filter(member -> type.includesPropertyScope(member.getPropertyScope()))
.map(member -> JavaPojoMember.wrap(member, pojoName, typeMappings));
final JavaAdditionalProperties javaAdditionalProperties =
JavaAdditionalProperties.wrap(objectPojo.getAdditionalProperties(), typeMappings);
JavaAdditionalProperties.wrap(pojoName, objectPojo.getAdditionalProperties(), typeMappings);
final PList<JavaRequiredAdditionalProperty> requiredAdditionalProperties =
objectPojo
.getRequiredAdditionalProperties()
Expand Down

0 comments on commit 74c2fa0

Please sign in to comment.