[FEAT] add optional for covers
This commit is contained in:
parent
032728f05d
commit
f7de0e1db0
12
src/org/kar/archidata/annotation/FormDataOptional.java
Normal file
12
src/org/kar/archidata/annotation/FormDataOptional.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package org.kar.archidata.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Target({ ElementType.PARAMETER })
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface FormDataOptional {
|
||||||
|
|
||||||
|
}
|
@ -15,6 +15,10 @@ import org.slf4j.LoggerFactory;
|
|||||||
public class ApiModel {
|
public class ApiModel {
|
||||||
static final Logger LOGGER = LoggerFactory.getLogger(ApiModel.class);
|
static final Logger LOGGER = LoggerFactory.getLogger(ApiModel.class);
|
||||||
|
|
||||||
|
public record OptionalClassModel(
|
||||||
|
List<ClassModel> model,
|
||||||
|
boolean optional) {}
|
||||||
|
|
||||||
Class<?> originClass;
|
Class<?> originClass;
|
||||||
Method orignMethod;
|
Method orignMethod;
|
||||||
|
|
||||||
@ -36,7 +40,7 @@ public class ApiModel {
|
|||||||
// list of all query (?key...)
|
// list of all query (?key...)
|
||||||
public final Map<String, List<ClassModel>> queries = new HashMap<>();
|
public final Map<String, List<ClassModel>> queries = new HashMap<>();
|
||||||
// when request multi-part, need to separate it.
|
// when request multi-part, need to separate it.
|
||||||
public final Map<String, List<ClassModel>> multiPartParameters = new HashMap<>();
|
public final Map<String, OptionalClassModel> multiPartParameters = new HashMap<>();
|
||||||
// model of data available
|
// model of data available
|
||||||
public final List<ClassModel> unnamedElement = new ArrayList<>();
|
public final List<ClassModel> unnamedElement = new ArrayList<>();
|
||||||
|
|
||||||
@ -153,6 +157,7 @@ public class ApiModel {
|
|||||||
final String pathParam = ApiTool.apiAnnotationGetPathParam(parameter);
|
final String pathParam = ApiTool.apiAnnotationGetPathParam(parameter);
|
||||||
final String queryParam = ApiTool.apiAnnotationGetQueryParam(parameter);
|
final String queryParam = ApiTool.apiAnnotationGetQueryParam(parameter);
|
||||||
final String formDataParam = ApiTool.apiAnnotationGetFormDataParam(parameter);
|
final String formDataParam = ApiTool.apiAnnotationGetFormDataParam(parameter);
|
||||||
|
final boolean formDataParamOptional = ApiTool.apiAnnotationGetFormDataOptional(parameter);
|
||||||
if (queryParam != null) {
|
if (queryParam != null) {
|
||||||
if (!this.queries.containsKey(queryParam)) {
|
if (!this.queries.containsKey(queryParam)) {
|
||||||
this.queries.put(queryParam, parameterModel);
|
this.queries.put(queryParam, parameterModel);
|
||||||
@ -163,7 +168,8 @@ public class ApiModel {
|
|||||||
}
|
}
|
||||||
} else if (formDataParam != null) {
|
} else if (formDataParam != null) {
|
||||||
if (!this.multiPartParameters.containsKey(formDataParam)) {
|
if (!this.multiPartParameters.containsKey(formDataParam)) {
|
||||||
this.multiPartParameters.put(formDataParam, parameterModel);
|
this.multiPartParameters.put(formDataParam,
|
||||||
|
new OptionalClassModel(parameterModel, formDataParamOptional));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.unnamedElement.addAll(parameterModel);
|
this.unnamedElement.addAll(parameterModel);
|
||||||
|
@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.glassfish.jersey.media.multipart.FormDataParam;
|
import org.glassfish.jersey.media.multipart.FormDataParam;
|
||||||
import org.kar.archidata.annotation.AsyncType;
|
import org.kar.archidata.annotation.AsyncType;
|
||||||
|
import org.kar.archidata.annotation.FormDataOptional;
|
||||||
import org.kar.archidata.annotation.TypeScriptProgress;
|
import org.kar.archidata.annotation.TypeScriptProgress;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
@ -144,6 +145,14 @@ public class ApiTool {
|
|||||||
return ((QueryParam) annotation[0]).value();
|
return ((QueryParam) annotation[0]).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean apiAnnotationGetFormDataOptional(final Parameter element) throws Exception {
|
||||||
|
final Annotation[] annotation = element.getDeclaredAnnotationsByType(FormDataOptional.class);
|
||||||
|
if (annotation.length == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static String apiAnnotationGetFormDataParam(final Parameter element) throws Exception {
|
public static String apiAnnotationGetFormDataParam(final Parameter element) throws Exception {
|
||||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(FormDataParam.class);
|
final Annotation[] annotation = element.getDeclaredAnnotationsByType(FormDataParam.class);
|
||||||
if (annotation.length == 0) {
|
if (annotation.length == 0) {
|
||||||
|
@ -17,6 +17,7 @@ import java.util.TreeSet;
|
|||||||
import org.kar.archidata.dataAccess.DataExport;
|
import org.kar.archidata.dataAccess.DataExport;
|
||||||
import org.kar.archidata.externalRestApi.model.ApiGroupModel;
|
import org.kar.archidata.externalRestApi.model.ApiGroupModel;
|
||||||
import org.kar.archidata.externalRestApi.model.ApiModel;
|
import org.kar.archidata.externalRestApi.model.ApiModel;
|
||||||
|
import org.kar.archidata.externalRestApi.model.ApiModel.OptionalClassModel;
|
||||||
import org.kar.archidata.externalRestApi.model.ClassEnumModel;
|
import org.kar.archidata.externalRestApi.model.ClassEnumModel;
|
||||||
import org.kar.archidata.externalRestApi.model.ClassListModel;
|
import org.kar.archidata.externalRestApi.model.ClassListModel;
|
||||||
import org.kar.archidata.externalRestApi.model.ClassMapModel;
|
import org.kar.archidata.externalRestApi.model.ClassMapModel;
|
||||||
@ -229,12 +230,16 @@ public class TsApiGeneration {
|
|||||||
data.append(",");
|
data.append(",");
|
||||||
} else if (interfaceElement.multiPartParameters.size() != 0) {
|
} else if (interfaceElement.multiPartParameters.size() != 0) {
|
||||||
data.append("\n\t\tdata: {");
|
data.append("\n\t\tdata: {");
|
||||||
for (final Entry<String, List<ClassModel>> pathEntry : interfaceElement.multiPartParameters
|
for (final Entry<String, OptionalClassModel> pathEntry : interfaceElement.multiPartParameters
|
||||||
.entrySet()) {
|
.entrySet()) {
|
||||||
data.append("\n\t\t\t");
|
data.append("\n\t\t\t");
|
||||||
data.append(pathEntry.getKey());
|
data.append(pathEntry.getKey());
|
||||||
|
if (pathEntry.getValue().optional()) {
|
||||||
|
data.append("?");
|
||||||
|
}
|
||||||
data.append(": ");
|
data.append(": ");
|
||||||
data.append(generateClassModelsTypescript(pathEntry.getValue(), tsGroup, imports, writeImports));
|
data.append(generateClassModelsTypescript(pathEntry.getValue().model(), tsGroup, imports,
|
||||||
|
writeImports));
|
||||||
data.append(",");
|
data.append(",");
|
||||||
}
|
}
|
||||||
data.append("\n\t\t},");
|
data.append("\n\t\t},");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user