diff --git a/unknow-http-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsContext.java b/unknow-http-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsContext.java index 8bad7b32..1e5fc1ff 100644 --- a/unknow-http-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsContext.java +++ b/unknow-http-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsContext.java @@ -234,6 +234,7 @@ private static class WebAppExceptionMapping implements ExceptionMapper produce) JaxrsMapping def = produce.remove("*/*"); Statement stmt = new ThrowStmt(new ObjectCreationExpr(null, types.getClass(NotAcceptableException.class), Utils.list())); + if (def != null) stmt = new ExpressionStmt(new MethodCallExpr(def.v + "$call", new NameExpr("req"), new NameExpr("res"))); if (produce.isEmpty()) return b.addStatement(accept).addStatement(stmt); - b.addStatement(Utils.assign(types.getClass(MediaType.class), "accept", accept)); + b.addStatement(Utils.assign(types.getClass(MediaType.class), "accept", accept)) + .addStatement(new IfStmt(new BinaryExpr(new NameExpr("accept"), new NullLiteralExpr(), BinaryExpr.Operator.EQUALS), + new ThrowStmt(new ObjectCreationExpr(null, types.getClass(NotAcceptableException.class), Utils.list())), null)); List k = new ArrayList<>(produce.keySet()); k.sort(MIME); diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxrsModel.java b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxrsModel.java index d572cede..c75b8a61 100644 --- a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxrsModel.java +++ b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxrsModel.java @@ -259,8 +259,8 @@ public void process(ClassModel clazz) { } if (basePath == null || basePath.isEmpty()) basePath = "/"; - if (basePath.length() > 1 && basePath.endsWith("/")) - basePath = basePath.substring(0, basePath.length() - 1); + if (!basePath.endsWith("/")) + basePath = basePath + "/"; if (basePath.charAt(0) != '/') basePath = '/' + basePath; if (baseConsume == null) @@ -282,8 +282,8 @@ private void process(String defaultMethod, String path, String[] consume, String if (a.isPresent()) { String s = a.flatMap(v -> v.value()).map(v -> v.asLiteral()).orElse(""); - if (s.charAt(0) != '/') - path += "/"; + if (s.charAt(0) == '/') + s = s.substring(1); path += s; } diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/OpenApiBuilder.java b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/OpenApiBuilder.java index daa34bf5..19df28a1 100644 --- a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/OpenApiBuilder.java +++ b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/OpenApiBuilder.java @@ -70,9 +70,9 @@ private static Schema getDefault(String n) { case "java.lang.Byte": return new Schema<>().type(INTEGER).minimum(BigDecimal.valueOf(Byte.MIN_VALUE)).maximum(BigDecimal.valueOf(Byte.MAX_VALUE)); case "char": - return new Schema<>().type(INTEGER).minimum(BigDecimal.valueOf(Character.MIN_VALUE)).maximum(BigDecimal.valueOf(Character.MAX_VALUE)).nullable(false); + return new Schema<>().type(STRING).maxLength(1).minLength(1).nullable(false); case "java.lang.Character": - return new Schema<>().type(INTEGER).minimum(BigDecimal.valueOf(Character.MIN_VALUE)).maximum(BigDecimal.valueOf(Character.MAX_VALUE)); + return new Schema<>().type(STRING).maxLength(1).minLength(1); case "short": return new Schema<>().type(INTEGER).minimum(BigDecimal.valueOf(Short.MIN_VALUE)).maximum(BigDecimal.valueOf(Short.MAX_VALUE)).nullable(false); case "java.lang.Short":