Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions samples/client/petstore/java/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ src/main/java/org/openapijsonschematools/schemas/Schema.java
src/main/java/org/openapijsonschematools/schemas/SchemaValidator.java
src/main/java/org/openapijsonschematools/schemas/StringSchema.java
src/main/java/org/openapijsonschematools/schemas/UnsetAnyTypeSchema.java
src/main/java/org/openapijsonschematools/schemas/UuidSchema.java
src/main/java/org/openapijsonschematools/schemas/ValidationMetadata.java
src/main/java/org/openapijsonschematools/schemas/validators/AdditionalPropertiesValidator.java
src/main/java/org/openapijsonschematools/schemas/validators/FormatValidator.java
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;

public interface Schema extends SchemaValidator {
private static Object castToAllowedTypes(Object arg, List<Object> pathToItem, PathToTypeMap pathToType) {
Expand Down Expand Up @@ -69,6 +70,9 @@ private static Object castToAllowedTypes(Object arg, List<Object> pathToItem, Pa
} else if (arg instanceof LocalDate) {
pathToType.put(pathToItem, String.class);
return arg.toString();
} else if (arg instanceof UUID) {
pathToType.put(pathToItem, String.class);
return arg.toString();
} else {
Class<?> argClass = arg.getClass();
throw new RuntimeException("Invalid type passed in got input="+arg+" type="+argClass);
Expand Down Expand Up @@ -197,6 +201,10 @@ static String validate(Class<?> cls, LocalDate arg, SchemaConfiguration configur
return (String) validateObject(cls, arg, configuration);
}

static String validate(Class<?> cls, UUID arg, SchemaConfiguration configuration) {
return (String) validateObject(cls, arg, configuration);
}

static <T extends FrozenMap> T validate(Class<?> cls, Map<String, Object> arg, SchemaConfiguration configuration) {
return (T) validateObject(cls, arg, configuration);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.openapijsonschematools.schemas;

import org.openapijsonschematools.configurations.SchemaConfiguration;

import java.util.LinkedHashSet;
import java.util.UUID;

public record UuidSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
public static UuidSchema withDefaults() {
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
type.add(String.class);
String format = "uuid";
return new UuidSchema(type, format);
}

public static String validate(String arg, SchemaConfiguration configuration) {
return Schema.validate(UuidSchema.class, arg, configuration);
}

public static String validate(UUID arg, SchemaConfiguration configuration) {
return Schema.validate(UuidSchema.class, arg, configuration);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import java.math.BigDecimal;
import java.time.format.DateTimeParseException;
import java.util.UUID;

public class FormatValidator implements KeywordValidator {
private final static BigDecimal int32InclusiveMinimum = BigDecimal.valueOf(-2147483648);
Expand Down Expand Up @@ -62,7 +63,14 @@ private Void validateNumericFormat(BigDecimal arg, String format, ValidationMeta

private Void validateStringFormat(String arg, String format, ValidationMetadata validationMetadata) {
if (format.equals("uuid")) {
// todo
try {
UUID.fromString(arg);
} catch (IllegalArgumentException e) {
throw new RuntimeException(
"Value cannot be converted to a UUID. Invalid value "+
arg+" for format uuid at "+validationMetadata.pathToItem()
);
}
return null;
} else if (format.equals("number")) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ public void processOpts() {
schemaSupportingFiles.add("SchemaValidator");
schemaSupportingFiles.add("StringSchema");
schemaSupportingFiles.add("UnsetAnyTypeSchema");
schemaSupportingFiles.add("UuidSchema");
schemaSupportingFiles.add("ValidationMetadata");
for (String schemaSupportingFile: schemaSupportingFiles) {
supportingFiles.add(new SupportingFile(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;

public interface Schema extends SchemaValidator {
private static Object castToAllowedTypes(Object arg, List<Object> pathToItem, PathToTypeMap pathToType) {
Expand Down Expand Up @@ -69,6 +70,9 @@ public interface Schema extends SchemaValidator {
} else if (arg instanceof LocalDate) {
pathToType.put(pathToItem, String.class);
return arg.toString();
} else if (arg instanceof UUID) {
pathToType.put(pathToItem, String.class);
return arg.toString();
} else {
Class<?> argClass = arg.getClass();
throw new RuntimeException("Invalid type passed in got input="+arg+" type="+argClass);
Expand Down Expand Up @@ -197,6 +201,10 @@ public interface Schema extends SchemaValidator {
return (String) validateObject(cls, arg, configuration);
}

static String validate(Class<?> cls, UUID arg, SchemaConfiguration configuration) {
return (String) validateObject(cls, arg, configuration);
}

static <T extends FrozenMap> T validate(Class<?> cls, Map<String, Object> arg, SchemaConfiguration configuration) {
return (T) validateObject(cls, arg, configuration);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package {{{packageName}}}.schemas;

import {{{packageName}}}.configurations.SchemaConfiguration;

import java.util.LinkedHashSet;
import java.util.UUID;

public record UuidSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
public static UuidSchema withDefaults() {
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
type.add(String.class);
String format = "uuid";
return new UuidSchema(type, format);
}

public static String validate(String arg, SchemaConfiguration configuration) {
return Schema.validate(UuidSchema.class, arg, configuration);
}

public static String validate(UUID arg, SchemaConfiguration configuration) {
return Schema.validate(UuidSchema.class, arg, configuration);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {{{packageName}}}.schemas.ValidationMetadata;

import java.math.BigDecimal;
import java.time.format.DateTimeParseException;
import java.util.UUID;

public class FormatValidator implements KeywordValidator {
private final static BigDecimal int32InclusiveMinimum = BigDecimal.valueOf(-2147483648);
Expand Down Expand Up @@ -62,7 +63,14 @@ public class FormatValidator implements KeywordValidator {

private Void validateStringFormat(String arg, String format, ValidationMetadata validationMetadata) {
if (format.equals("uuid")) {
// todo
try {
UUID.fromString(arg);
} catch (IllegalArgumentException e) {
throw new RuntimeException(
"Value cannot be converted to a UUID. Invalid value "+
arg+" for format uuid at "+validationMetadata.pathToItem()
);
}
return null;
} else if (format.equals("number")) {
try {
Expand Down