diff --git a/unknow-server-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsReq.java b/unknow-server-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsReq.java index 2917d9e0..61c13724 100644 --- a/unknow-server-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsReq.java +++ b/unknow-server-jaxrs/src/main/java/unknow/server/http/jaxrs/JaxrsReq.java @@ -71,10 +71,10 @@ public MediaType getContentType() { return h == null ? MediaType.APPLICATION_OCTET_STREAM_TYPE : MediaTypeDelegate.INSTANCE.fromString(h); } - public MediaType getAccepted(MTPredicate allowed, MediaType def) { + public MediaType getAccepted(MTPredicate allowed) { String a = r.getHeader("accept"); if (a == null) - return accept = def; + a = "*/*"; int i; int l = 0; double lq = -1; diff --git a/unknow-server-jaxrs/src/test/java/unknow/server/http/jaxrs/JaxrsReqTest.java b/unknow-server-jaxrs/src/test/java/unknow/server/http/jaxrs/JaxrsReqTest.java index 933302c7..105972d5 100644 --- a/unknow-server-jaxrs/src/test/java/unknow/server/http/jaxrs/JaxrsReqTest.java +++ b/unknow-server-jaxrs/src/test/java/unknow/server/http/jaxrs/JaxrsReqTest.java @@ -57,7 +57,7 @@ public static final Stream accept() { Arguments.of(null, "*/*", MTPredicate.NONE), Arguments.of(MediaType.WILDCARD_TYPE, "*/*", MTPredicate.ANY), Arguments.of(MediaType.TEXT_XML_TYPE, "text/plain,text/xml", new MTPredicate.OneOf(MediaType.TEXT_XML_TYPE)), - Arguments.of(MediaType.WILDCARD_TYPE, null, new MTPredicate.OneOf(MediaType.TEXT_XML_TYPE)), + Arguments.of(MediaType.TEXT_XML_TYPE, null, new MTPredicate.OneOf(MediaType.TEXT_XML_TYPE)), Arguments.of(MediaType.TEXT_XML_TYPE, "*/*",new MTPredicate.OneOf(MediaType.TEXT_XML_TYPE)), Arguments.of(new MediaType("text", "json"), "text/xml;q=.5,text/json", MTPredicate.ANY)); //@formatter:on @@ -70,6 +70,6 @@ void accept(MediaType expected, String accept, MTPredicate allowed) { HttpServletRequest r = Mockito.mock(HttpServletRequest.class); Mockito.when(r.getHeader("accept")).thenReturn(accept); JaxrsReq req = new JaxrsReq(r, Collections.emptyList()); - assertEquals(expected, req.getAccepted(allowed, MediaType.WILDCARD_TYPE)); + assertEquals(expected, req.getAccepted(allowed)); } } \ No newline at end of file diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxRsServletBuilder.java b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxRsServletBuilder.java index d3aa485b..e7cffd93 100644 --- a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxRsServletBuilder.java +++ b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/JaxRsServletBuilder.java @@ -398,11 +398,8 @@ private static Map, Collection> buildConsumeMap(List< * @throws MojoFailureException in case of error */ private BlockStmt buildProduces(BlockStmt b, Collection mappings) throws MojoFailureException { - Map produce = new HashMap<>(); - String defaultType = null; + Map produce = new LinkedHashMap<>(); for (JaxrsMapping m : mappings) { - if (defaultType == null) - defaultType = m.produce[0]; for (String p : m.produce) { JaxrsMapping other = produce.put(p, m); if (other != null) @@ -410,7 +407,7 @@ private BlockStmt buildProduces(BlockStmt b, Collection mappings) } } - MethodCallExpr accept = new MethodCallExpr(new NameExpr("req"), "getAccepted", CodeGenUtils.list(mt.predicate(types, produce.keySet()), mt.type(types, defaultType))); + MethodCallExpr accept = new MethodCallExpr(new NameExpr("req"), "getAccepted", CodeGenUtils.list(mt.predicate(types, produce.keySet()))); JaxrsMapping def = produce.remove("*/*"); Statement stmt = new ThrowStmt(new ObjectCreationExpr(null, types.getClass(NotAcceptableException.class), CodeGenUtils.list())); diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/MediaTypesBuilder.java b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/MediaTypesBuilder.java index d9e3907e..9cb49f24 100644 --- a/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/MediaTypesBuilder.java +++ b/unknow-server-maven/src/main/java/unknow/server/maven/jaxrs/MediaTypesBuilder.java @@ -1,9 +1,7 @@ package unknow.server.maven.jaxrs; -import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.StringJoiner; @@ -27,6 +25,7 @@ /** * Build MediaTypes class with added MTPredicate and MediaType + * * @author unknow */ public class MediaTypesBuilder { @@ -71,6 +70,7 @@ public MediaTypesBuilder(CompilationUnit cu, Map existingClass) /** * write the MediaTypes class if needed + * * @param writer writer to write to * @throws MojoExecutionException in case od error */ @@ -81,6 +81,7 @@ public void save(CompilationUnitWriter writer) throws MojoExecutionException { /** * get an exception to an MediaType + * * @param f factory to add the required import * @param t mediaType * @return the exception @@ -106,6 +107,7 @@ public Expression type(TypeFactory f, String t) { /** * get an exception to an MTPredicate + * * @param f factory to add the required import * @param mediaTypes types accepted by the predicate * @return the exception @@ -113,10 +115,8 @@ public Expression type(TypeFactory f, String t) { public Expression predicate(TypeFactory f, Collection mediaTypes) { String k = ""; if (!mediaTypes.contains("*/*")) { - List l = new ArrayList<>(mediaTypes); - l.sort(null); StringJoiner s = new StringJoiner(","); - for (String str : l) + for (String str : mediaTypes) s.add(str); k = s.toString(); }