From 4227a8a0802a8b538d390336e456e02a754ecbee Mon Sep 17 00:00:00 2001 From: redkale Date: Fri, 24 May 2024 12:33:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/boot/ApiDocCommand.java | 93 ++++++++++--------- src/main/java/org/redkale/boot/AppConfig.java | 19 ++-- .../java/org/redkale/convert/DeMember.java | 29 +----- .../java/org/redkale/convert/EnMember.java | 23 +---- .../java/org/redkale/source/FilterColumn.java | 6 +- .../org/redkale/source/FilterNodeBean.java | 3 +- 6 files changed, 71 insertions(+), 102 deletions(-) diff --git a/src/main/java/org/redkale/boot/ApiDocCommand.java b/src/main/java/org/redkale/boot/ApiDocCommand.java index 5077008a3..fbf8480e4 100644 --- a/src/main/java/org/redkale/boot/ApiDocCommand.java +++ b/src/main/java/org/redkale/boot/ApiDocCommand.java @@ -235,7 +235,8 @@ public final class ApiDocCommand { f.setAccessible(true); paramGenericType = (Type) f.get(servlet); } - simpleSchemaType(null, node.getLogger(), swaggerComponentsMap, param.type(), paramGenericType, paramSchemaMap, true); + simpleSchemaType(null, node.getLogger(), swaggerComponentsMap, + param.type(), paramGenericType, paramSchemaMap, true); if (param.style() == HttpParam.HttpParameterStyle.BODY) { swaggerRequestBody.put("description", param.comment()); swaggerRequestBody.put("content", Utility.ofMap(plainContentType, Utility.ofMap("schema", paramSchemaMap))); @@ -249,7 +250,8 @@ public final class ApiDocCommand { swaggerParamMap.put("deprecated", param.deprecated()); } //https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameterStyle - swaggerParamMap.put("style", param.style() == HttpParam.HttpParameterStyle.HEADER || param.name().indexOf('#') == 0 ? "simple" : "form"); + swaggerParamMap.put("style", param.style() == HttpParam.HttpParameterStyle.HEADER + || param.name().indexOf('#') == 0 ? "simple" : "form"); swaggerParamMap.put("explode", true); swaggerParamMap.put("schema", paramSchemaMap); Object example = formatExample(null, param.example(), param.type(), paramGenericType); @@ -293,10 +295,10 @@ public final class ApiDocCommand { } Map fieldmap = new LinkedHashMap<>(); - fieldmap.put("type", field.getType().isArray() ? (field.getType().getComponentType().getName() + "[]") : field.getGenericType().getTypeName()); + fieldmap.put("type", field.getType().isArray() + ? (field.getType().getComponentType().getName() + "[]") : field.getGenericType().getTypeName()); Column col = field.getAnnotation(Column.class); - FilterColumn fc = field.getAnnotation(FilterColumn.class); Comment comment = field.getAnnotation(Comment.class); org.redkale.util.Comment comment2 = field.getAnnotation(org.redkale.util.Comment.class); if (comment != null) { @@ -305,10 +307,9 @@ public final class ApiDocCommand { fieldmap.put("comment", comment2.value()); } else if (col != null) { fieldmap.put("comment", col.comment()); - } else if (fc != null) { - fieldmap.put("comment", fc.comment()); } - fieldmap.put("primary", !filter && (field.getAnnotation(Id.class) != null || field.getAnnotation(javax.persistence.Id.class) != null)); + fieldmap.put("primary", !filter && (field.getAnnotation(Id.class) != null + || field.getAnnotation(javax.persistence.Id.class) != null)); fieldmap.put("updatable", (filter || col == null || col.updatable())); if (servlet.getClass().getAnnotation(Rest.RestDyn.class) != null) { @@ -333,7 +334,8 @@ public final class ApiDocCommand { swaggerOperatMap.put("deprecated", true); } Map respSchemaMap = new LinkedHashMap<>(); - JsonFactory returnFactory = Rest.createJsonFactory(0, method.getAnnotationsByType(RestConvert.class), method.getAnnotationsByType(RestConvertCoder.class)); + JsonFactory returnFactory = Rest.createJsonFactory(0, + method.getAnnotationsByType(RestConvert.class), method.getAnnotationsByType(RestConvertCoder.class)); simpleSchemaType(returnFactory, node.getLogger(), swaggerComponentsMap, action.result(), resultType, respSchemaMap, true); Map respMap = new LinkedHashMap<>(); @@ -350,7 +352,8 @@ public final class ApiDocCommand { if (action.rpcOnly()) { actiondesc = "[Only for RPC API] " + actiondesc; } - swaggerOperatMap.put("responses", Utility.ofMap("200", Utility.ofMap("description", actiondesc, "content", Utility.ofMap("application/json", respMap)))); + swaggerOperatMap.put("responses", Utility.ofMap("200", + Utility.ofMap("description", actiondesc, "content", Utility.ofMap("application/json", respMap)))); String m = action.methods() == null || action.methods().length == 0 ? null : action.methods()[0].toLowerCase(); if (m == null) { @@ -414,7 +417,8 @@ public final class ApiDocCommand { return "apidoc success"; } - private static void simpleSchemaType(JsonFactory factory, Logger logger, Map> componentsMap, Class type, Type genericType, Map schemaMap, boolean recursive) { + private static void simpleSchemaType(JsonFactory factory, Logger logger, + Map> componentsMap, Class type, Type genericType, Map schemaMap, boolean recursive) { if (type == int.class || type == Integer.class || type == AtomicInteger.class) { schemaMap.put("type", "integer"); schemaMap.put("format", "int32"); @@ -464,7 +468,8 @@ public final class ApiDocCommand { } } - private static String simpleComponentType(JsonFactory factory, Logger logger, Map> componentsMap, Class type, Type genericType) { + private static String simpleComponentType(JsonFactory factory, Logger logger, + Map> componentsMap, Class type, Type genericType) { try { Set types = new HashSet<>(); Encodeable encodeable = JsonFactory.root().loadEncoder(genericType); @@ -484,19 +489,13 @@ public final class ApiDocCommand { if (encodeable instanceof ObjectEncoder) { for (EnMember member : ((ObjectEncoder) encodeable).getMembers()) { Map schemaMap = new LinkedHashMap<>(); - simpleSchemaType(factory, logger, componentsMap, TypeToken.typeToClassOrElse(member.getEncoder().getType(), Object.class), member.getEncoder().getType(), schemaMap, true); + simpleSchemaType(factory, logger, componentsMap, + TypeToken.typeToClassOrElse(member.getEncoder().getType(), Object.class), + member.getEncoder().getType(), schemaMap, true); String desc = ""; if (member.getField() != null) { Column col = member.getField().getAnnotation(Column.class); - if (col == null) { - FilterColumn fcol = member.getField().getAnnotation(FilterColumn.class); - if (fcol != null) { - desc = fcol.comment(); - if (fcol.required()) { - requireds.add(member.getAttribute().field()); - } - } - } else { + if (col != null) { desc = col.comment(); if (!col.nullable()) { requireds.add(member.getAttribute().field()); @@ -509,15 +508,7 @@ public final class ApiDocCommand { } } else if (member.getMethod() != null) { Column col = member.getMethod().getAnnotation(Column.class); - if (col == null) { - FilterColumn fcol = member.getMethod().getAnnotation(FilterColumn.class); - if (fcol != null) { - desc = fcol.comment(); - if (fcol.required()) { - requireds.add(member.getAttribute().field()); - } - } - } else { + if (col != null) { desc = col.comment(); if (!col.nullable()) { requireds.add(member.getAttribute().field()); @@ -546,7 +537,8 @@ public final class ApiDocCommand { } } - private static String componentKey(JsonFactory factory, Logger logger, Set types, Map> componentsMap, EnMember field, Encodeable encodeable, boolean first) { + private static String componentKey(JsonFactory factory, Logger logger, Set types, + Map> componentsMap, EnMember field, Encodeable encodeable, boolean first) { if (encodeable instanceof ObjectEncoder) { if (types.contains(encodeable.getType())) { return ""; @@ -587,9 +579,11 @@ public final class ApiDocCommand { } types.add(member.getEncoder().getType()); if (member.getEncoder() instanceof SimpledCoder) { - simpleSchemaType(factory, logger, componentsMap, ((SimpledCoder) member.getEncoder()).getType(), ((SimpledCoder) member.getEncoder()).getType(), new LinkedHashMap<>(), true); + simpleSchemaType(factory, logger, componentsMap, ((SimpledCoder) member.getEncoder()).getType(), + ((SimpledCoder) member.getEncoder()).getType(), new LinkedHashMap<>(), true); } else { - simpleSchemaType(factory, logger, componentsMap, ((ObjectEncoder) member.getEncoder()).getTypeClass(), ((ObjectEncoder) member.getEncoder()).getType(), new LinkedHashMap<>(), true); + simpleSchemaType(factory, logger, componentsMap, ((ObjectEncoder) member.getEncoder()).getTypeClass(), + ((ObjectEncoder) member.getEncoder()).getType(), new LinkedHashMap<>(), true); } Class cz = real instanceof Field ? ((Field) real).getType() : ((Method) real).getReturnType(); Type ct = real instanceof Field ? ((Field) real).getGenericType() : ((Method) real).getGenericReturnType(); @@ -616,7 +610,8 @@ public final class ApiDocCommand { return sb.toString(); } else if (encodeable instanceof ArrayEncoder || encodeable instanceof CollectionEncoder) { final boolean array = (encodeable instanceof ArrayEncoder); - Encodeable subEncodeable = array ? ((ArrayEncoder) encodeable).getComponentEncoder() : ((CollectionEncoder) encodeable).getComponentEncoder(); + Encodeable subEncodeable = array ? ((ArrayEncoder) encodeable).getComponentEncoder() + : ((CollectionEncoder) encodeable).getComponentEncoder(); if (subEncodeable instanceof SimpledCoder && field != null) { return ""; } @@ -630,7 +625,8 @@ public final class ApiDocCommand { return sb + (array ? "_Array" : "_Collection"); } else if (encodeable instanceof SimpledCoder) { Class stype = ((SimpledCoder) encodeable).getType(); - if (stype.isPrimitive() || stype == Boolean.class || Number.class.isAssignableFrom(stype) || CharSequence.class.isAssignableFrom(stype)) { + if (stype.isPrimitive() || stype == Boolean.class + || Number.class.isAssignableFrom(stype) || CharSequence.class.isAssignableFrom(stype)) { return stype.getSimpleName(); } return ""; @@ -685,9 +681,10 @@ public final class ApiDocCommand { try { ParameterizedType pt = (ParameterizedType) genericType; Type valType = pt.getActualTypeArguments()[0]; - return formatExample(factory, example, valType instanceof ParameterizedType ? (Class) ((ParameterizedType) valType).getRawType() : ((Class) valType), valType); + return formatExample(factory, example, valType instanceof ParameterizedType + ? (Class) ((ParameterizedType) valType).getRawType() : ((Class) valType), valType); } catch (Throwable t) { - //do nothing + //do nothing } } } else if (Sheet.class.isAssignableFrom(type)) { //要在Collection前面 @@ -697,17 +694,19 @@ public final class ApiDocCommand { Type valType = pt.getActualTypeArguments()[0]; Class valClass = valType instanceof ParameterizedType ? (Class) ((ParameterizedType) valType).getRawType() : (Class) valType; Object val = formatExample(factory, example, valClass, valType); - return new StringWrapper(jsonFactory.getConvert().convertTo(jsonFactory.getConvert().convertFrom(genericType, "{'rows':[" + val + "," + val + "]}"))); + return new StringWrapper(jsonFactory.getConvert() + .convertTo(jsonFactory.getConvert().convertFrom(genericType, "{'rows':[" + val + "," + val + "]}"))); } catch (Throwable t) { - //do nothing + //do nothing } } } else if (type.isArray()) { try { Object val = formatExample(factory, example, type.getComponentType(), type.getComponentType()); - return new StringWrapper(jsonFactory.getConvert().convertTo(jsonFactory.getConvert().convertFrom(genericType, "[" + val + "," + val + "]"))); + return new StringWrapper(jsonFactory.getConvert() + .convertTo(jsonFactory.getConvert().convertFrom(genericType, "[" + val + "," + val + "]"))); } catch (Throwable t) { - //do nothing + //do nothing } } else if (Collection.class.isAssignableFrom(type)) { if (genericType instanceof ParameterizedType) { @@ -716,9 +715,10 @@ public final class ApiDocCommand { Type valType = pt.getActualTypeArguments()[0]; Class valClass = valType instanceof ParameterizedType ? (Class) ((ParameterizedType) valType).getRawType() : (Class) valType; Object val = formatExample(factory, example, valClass, valType); - return new StringWrapper(jsonFactory.getConvert().convertTo(jsonFactory.getConvert().convertFrom(genericType, "[" + val + "," + val + "]"))); + return new StringWrapper(jsonFactory.getConvert() + .convertTo(jsonFactory.getConvert().convertFrom(genericType, "[" + val + "," + val + "]"))); } catch (Throwable t) { - //do nothing + //do nothing } } } else if (type == RetResult.class) { @@ -728,9 +728,10 @@ public final class ApiDocCommand { Type valType = pt.getActualTypeArguments()[0]; Class valClass = valType instanceof ParameterizedType ? (Class) ((ParameterizedType) valType).getRawType() : (Class) valType; Object val = formatExample(factory, example, valClass, valType); - return new StringWrapper(jsonFactory.getConvert().convertTo(jsonFactory.getConvert().convertFrom(genericType, "{'result':" + val + "}"))); + return new StringWrapper(jsonFactory.getConvert() + .convertTo(jsonFactory.getConvert().convertFrom(genericType, "{'result':" + val + "}"))); } catch (Throwable t) { - //do nothing + //do nothing } } } else if (type != void.class) { @@ -757,7 +758,7 @@ public final class ApiDocCommand { Creator creator = Creator.create(type); return new StringWrapper(jsonFactory.getConvert().convertTo(creator.create())); } catch (Throwable t) { - //do nothing + //do nothing } } return example; diff --git a/src/main/java/org/redkale/boot/AppConfig.java b/src/main/java/org/redkale/boot/AppConfig.java index cffcb97d1..c19c34376 100644 --- a/src/main/java/org/redkale/boot/AppConfig.java +++ b/src/main/java/org/redkale/boot/AppConfig.java @@ -25,6 +25,8 @@ import org.redkale.source.DataSources; import org.redkale.util.AnyValue; import org.redkale.util.AnyValueWriter; import org.redkale.util.RedkaleClassLoader; +import static org.redkale.util.RedkaleClassLoader.putReflectionClass; +import static org.redkale.util.RedkaleClassLoader.putReflectionPublicConstructors; import org.redkale.util.RedkaleException; import org.redkale.util.Utility; @@ -173,7 +175,8 @@ class AppConfig { this.confDir = confFile.toURI(); } String localaddr = config.getValue("address", "").trim(); - InetAddress addr = localaddr.isEmpty() ? Utility.localInetAddress() : new InetSocketAddress(localaddr, config.getIntValue("port")).getAddress(); + InetAddress addr = localaddr.isEmpty() ? Utility.localInetAddress() + : new InetSocketAddress(localaddr, config.getIntValue("port")).getAddress(); this.localAddress = new InetSocketAddress(addr, config.getIntValue("port")); } @@ -310,13 +313,13 @@ class AppConfig { } } if (compileMode) { - RedkaleClassLoader.putReflectionClass(java.lang.Class.class.getName()); - RedkaleClassLoader.putReflectionPublicConstructors(SimpleFormatter.class, SimpleFormatter.class.getName()); - RedkaleClassLoader.putReflectionPublicConstructors(LoggingSearchHandler.class, LoggingSearchHandler.class.getName()); - RedkaleClassLoader.putReflectionPublicConstructors(LoggingFileHandler.class, LoggingFileHandler.class.getName()); - RedkaleClassLoader.putReflectionPublicConstructors(LoggingFileHandler.LoggingFormater.class, LoggingFileHandler.LoggingFormater.class.getName()); - RedkaleClassLoader.putReflectionPublicConstructors(LoggingFileHandler.LoggingConsoleHandler.class, LoggingFileHandler.LoggingConsoleHandler.class.getName()); - RedkaleClassLoader.putReflectionPublicConstructors(LoggingFileHandler.LoggingSncpFileHandler.class, LoggingFileHandler.LoggingSncpFileHandler.class.getName()); + putReflectionClass(java.lang.Class.class.getName()); + putReflectionPublicConstructors(SimpleFormatter.class, SimpleFormatter.class.getName()); + putReflectionPublicConstructors(LoggingSearchHandler.class, LoggingSearchHandler.class.getName()); + putReflectionPublicConstructors(LoggingFileHandler.class, LoggingFileHandler.class.getName()); + putReflectionPublicConstructors(LoggingFileHandler.LoggingFormater.class, LoggingFileHandler.LoggingFormater.class.getName()); + putReflectionPublicConstructors(LoggingFileHandler.LoggingConsoleHandler.class, LoggingFileHandler.LoggingConsoleHandler.class.getName()); + putReflectionPublicConstructors(LoggingFileHandler.LoggingSncpFileHandler.class, LoggingFileHandler.LoggingSncpFileHandler.class.getName()); } } diff --git a/src/main/java/org/redkale/convert/DeMember.java b/src/main/java/org/redkale/convert/DeMember.java index 25e35f708..e6ac7dbc7 100644 --- a/src/main/java/org/redkale/convert/DeMember.java +++ b/src/main/java/org/redkale/convert/DeMember.java @@ -8,7 +8,6 @@ package org.redkale.convert; import java.lang.reflect.*; import org.redkale.annotation.Comment; import org.redkale.persistence.Column; -import org.redkale.source.FilterColumn; import org.redkale.util.Attribute; /** @@ -49,16 +48,7 @@ public final class DeMember { Comment ct = field.getAnnotation(Comment.class); if (ct == null) { Column col = field.getAnnotation(Column.class); - if (col == null) { - FilterColumn fc = field.getAnnotation(FilterColumn.class); - if (fc == null) { - this.comment = ""; - } else { - this.comment = fc.comment(); - } - } else { - this.comment = col.comment(); - } + this.comment = col == null ? "" : col.comment(); } else { this.comment = ct.value(); } @@ -66,16 +56,7 @@ public final class DeMember { Comment ct = method.getAnnotation(Comment.class); if (ct == null) { Column col = method.getAnnotation(Column.class); - if (col == null) { - FilterColumn fc = method.getAnnotation(FilterColumn.class); - if (fc == null) { - this.comment = ""; - } else { - this.comment = fc.comment(); - } - } else { - this.comment = col.comment(); - } + this.comment = col == null ? "" : col.comment(); } else { this.comment = ct.value(); } @@ -166,7 +147,7 @@ public final class DeMember { return (this.index == 0 ? Integer.MAX_VALUE : this.index) - (o.index == 0 ? Integer.MAX_VALUE : o.index); } if (this.index != 0) { - throw new ConvertException("fields (" + attribute.field() + ", " + o.attribute.field() + throw new ConvertException("fields (" + attribute.field() + ", " + o.attribute.field() + ") have same ConvertColumn.index(" + this.index + ") in " + attribute.declaringClass()); } return fieldSort ? this.attribute.field().compareTo(o.attribute.field()) : 0; @@ -191,7 +172,7 @@ public final class DeMember { @Override public String toString() { - return "DeMember{" + "attribute=" + attribute.field() + ", position=" + position + - ", tag=" + tag + ", decoder=" + (decoder == null ? null : decoder.getClass().getName()) + '}'; + return "DeMember{" + "attribute=" + attribute.field() + ", position=" + position + + ", tag=" + tag + ", decoder=" + (decoder == null ? null : decoder.getClass().getName()) + '}'; } } diff --git a/src/main/java/org/redkale/convert/EnMember.java b/src/main/java/org/redkale/convert/EnMember.java index ceafb02d1..3a2984dbc 100644 --- a/src/main/java/org/redkale/convert/EnMember.java +++ b/src/main/java/org/redkale/convert/EnMember.java @@ -8,7 +8,6 @@ package org.redkale.convert; import java.lang.reflect.*; import org.redkale.annotation.Comment; import org.redkale.persistence.Column; -import org.redkale.source.FilterColumn; import org.redkale.util.Attribute; /** @@ -64,16 +63,7 @@ public final class EnMember { Comment ct = field.getAnnotation(Comment.class); if (ct == null) { Column col = field.getAnnotation(Column.class); - if (col == null) { - FilterColumn fc = field.getAnnotation(FilterColumn.class); - if (fc == null) { - this.comment = ""; - } else { - this.comment = fc.comment(); - } - } else { - this.comment = col.comment(); - } + this.comment = col == null ? "":col.comment(); } else { this.comment = ct.value(); } @@ -81,16 +71,7 @@ public final class EnMember { Comment ct = method.getAnnotation(Comment.class); if (ct == null) { Column col = method.getAnnotation(Column.class); - if (col == null) { - FilterColumn fc = method.getAnnotation(FilterColumn.class); - if (fc == null) { - this.comment = ""; - } else { - this.comment = fc.comment(); - } - } else { - this.comment = col.comment(); - } + this.comment = col == null ? "":col.comment(); } else { this.comment = ct.value(); } diff --git a/src/main/java/org/redkale/source/FilterColumn.java b/src/main/java/org/redkale/source/FilterColumn.java index 64ad11eeb..421b86ddc 100644 --- a/src/main/java/org/redkale/source/FilterColumn.java +++ b/src/main/java/org/redkale/source/FilterColumn.java @@ -14,7 +14,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; * *

* 详情见: https://redkale.org - * + * * @see org.redkale.source.FilterBean * * @author zhangjx @@ -57,7 +57,6 @@ public @interface FilterColumn { */ FilterExpress express() default FilterExpress.EQ; - /** * 判断字段是否必需,for OpenAPI Specification 3.1.0 * @@ -75,8 +74,11 @@ public @interface FilterColumn { /** * 备注描述 * + * @see org.redkale.annotation.Comment * @return 备注描述 + * @deprecated */ + @Deprecated(since = "2.8.0") String comment() default ""; } diff --git a/src/main/java/org/redkale/source/FilterNodeBean.java b/src/main/java/org/redkale/source/FilterNodeBean.java index 03c0d9f13..644a91f2b 100644 --- a/src/main/java/org/redkale/source/FilterNodeBean.java +++ b/src/main/java/org/redkale/source/FilterNodeBean.java @@ -247,7 +247,8 @@ public final class FilterNodeBean implements Comparable beanAttr = pubmod ? Attribute.create(field) : Attribute.create(getter, null); - FilterNodeBean nodeBean = new FilterNodeBean(field.getAnnotation(FilterJoinColumn.class), field.getAnnotation(FilterColumn.class), beanAttr, field.getGenericType()); + FilterNodeBean nodeBean = new FilterNodeBean(field.getAnnotation(FilterJoinColumn.class), + field.getAnnotation(FilterColumn.class), beanAttr, field.getGenericType()); //------------------------------------ {