From fdb80466397c22e743a9bc9b1fd25ac865172ef3 Mon Sep 17 00:00:00 2001 From: AllanHoejgaardJensen Date: Sun, 2 Sep 2018 13:42:43 +0200 Subject: [PATCH 1/4] added files --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 076a451..2aa925f 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,7 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -/target/ \ No newline at end of file +/target/ +/.classpath +/.project +/.settings \ No newline at end of file From cad76919f025fe69fa615c946793d2a04892fd0d Mon Sep 17 00:00:00 2001 From: AllanHoejgaardJensen Date: Sun, 2 Sep 2018 13:43:14 +0200 Subject: [PATCH 2/4] added code quality tooling --- pom.xml | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 116 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index f732190..8aca848 100644 --- a/pom.xml +++ b/pom.xml @@ -48,19 +48,24 @@ - UTF-8 - UTF-8 - - 1.5.16 + 2.17 + 7.8.2 + 3.0.4 + 1.0.4 1.0.29 + 1.5.16 + 0.7.9 + 2.3.0 4.12 + 2.5 2.11.0 - 1.7.25 3.5 3.5.0 - 1.0.4 + 1.7.25 3.3.0 - 2.3.0 + 3.8 + UTF-8 + UTF-8 @@ -147,6 +152,33 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle.plugin.version} + + ${project.build.sourceDirectory} + **/io/openapitools/**/*.java + https://raw.githubusercontent.com/openapi-tools/code-style/master/checkstyle/rules.xml + false + + + + checkstyle + package + + checkstyle + + + + + + com.puppycrawl.tools + checkstyle + ${checkstyle.version} + + + org.apache.maven.plugins maven-plugin-plugin @@ -222,6 +254,74 @@ + + org.jacoco + jacoco-maven-plugin + ${jacoco.version} + + + + + + + default-prepare-agent + + prepare-agent + + + + report + test + + report + + + + + + org.apache.maven.plugins + maven-pmd-plugin + ${pmd.plugin.version} + + + https://raw.githubusercontent.com/openapi-tools/code-style/master/pmd/rules.xml + + ${jdk.version} + + **/io/openapitools/**/*.java + + + + + + + + + pmd + package + + pmd + + + + + + org.codehaus.mojo + findbugs-maven-plugin + ${findbugs.version} + + io.openapitools.- + + + + findbugs + package + + findbugs + + + + org.apache.maven.plugins maven-release-plugin @@ -232,5 +332,14 @@ + + + + org.apache.maven.plugins + maven-jxr-plugin + ${maven.jxr.version} + + + From 67b1e6392a6b6e9a6d7669ca38b5f9b52cf9965e Mon Sep 17 00:00:00 2001 From: AllanHoejgaardJensen Date: Sun, 2 Sep 2018 13:43:54 +0200 Subject: [PATCH 3/4] changed code according to quality tooling --- .../api/pp/APIPostProcessorMojo.java | 42 ++++++++++--------- .../io/openapitools/api/pp/Responses.java | 7 ++-- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java b/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java index a99fbc2..bd1886f 100644 --- a/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java +++ b/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java @@ -15,7 +15,6 @@ import io.swagger.models.Path; import io.swagger.models.Swagger; import io.swagger.parser.SwaggerParser; - import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -87,10 +86,10 @@ public class APIPostProcessorMojo extends AbstractMojo { @Component private MavenProjectHelper projectHelper; - String[] minimum = {"200", "202", "204", "301", "400", "404", "415", "500"}; - String[] standard = {"200", "201", "202", "203", "204", "301", "304", "307", + private final String[] minimum = {"200", "202", "204", "301", "400", "404", "415", "500"}; + private final String[] standard = {"200", "201", "202", "203", "204", "301", "304", "307", "400", "401", "403", "404", "406", "409", "410", "412", "415", "422", "429", - "500", "501", "503", "505"}; + "500", "501", "503", "505"}; @Override @@ -98,13 +97,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { SwaggerParser swaggerParser = new SwaggerParser(); String fileAndPathName = inputDirectory + "/" + inputFilename; - if (Files.exists(Paths.get(fileAndPathName + ".json"))) { - fileAndPathName = fileAndPathName + ".json"; - } else if (Files.exists(Paths.get(fileAndPathName + ".yaml"))) { - fileAndPathName = fileAndPathName + ".yaml"; - } else if (Files.exists(Paths.get(fileAndPathName + ".yml"))) { - fileAndPathName = fileAndPathName + ".yml"; - } + fileAndPathName = findFileFormat(fileAndPathName); Swagger api = swaggerParser.read(fileAndPathName); if (api == null) { @@ -113,14 +106,14 @@ public void execute() throws MojoExecutionException, MojoFailureException { } if (null == packages && null == codes) { - ApplySpecificHeadersAndResponses(api, new HashSet(Arrays.asList(standard))); + applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(standard))); } else { - if (packages.contains("standard")) { - ApplySpecificHeadersAndResponses(api, new HashSet(Arrays.asList(standard))); - } else if (packages.contains("minimal")) { - ApplySpecificHeadersAndResponses(api, new HashSet(Arrays.asList(minimum))); - } else if (codes.size() > 0) { - ApplySpecificHeadersAndResponses(api, codes); + if (null != packages && packages.contains("standard")) { + applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(standard))); + } else if (null != packages && packages.contains("minimal")) { + applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(minimum))); + } else if (null != codes && codes.size() > 0) { + applySpecificHeadersAndResponses(api, codes); } } @@ -143,7 +136,18 @@ public void execute() throws MojoExecutionException, MojoFailureException { ); } - private void ApplySpecificHeadersAndResponses(Swagger api, Set codes) { + private String findFileFormat(String fileAndPathName) { + if (Files.exists(Paths.get(fileAndPathName + ".json"))) { + fileAndPathName = fileAndPathName + ".json"; + } else if (Files.exists(Paths.get(fileAndPathName + ".yaml"))) { + fileAndPathName = fileAndPathName + ".yaml"; + } else if (Files.exists(Paths.get(fileAndPathName + ".yml"))) { + fileAndPathName = fileAndPathName + ".yml"; + } + return fileAndPathName; + } + + private void applySpecificHeadersAndResponses(Swagger api, Set codes) { Map paths = api.getPaths(); paths.forEach((k, p) -> { List operations = p.getOperations(); diff --git a/src/main/java/io/openapitools/api/pp/Responses.java b/src/main/java/io/openapitools/api/pp/Responses.java index 59db192..e477407 100644 --- a/src/main/java/io/openapitools/api/pp/Responses.java +++ b/src/main/java/io/openapitools/api/pp/Responses.java @@ -18,8 +18,7 @@ private Responses() { // intentionally empty } - - public static void addResponseCodes(Operation operation, Set codes ) { + public static void addResponseCodes(Operation operation, Set codes) { if (codes.contains("200")) addOKResponse200(operation); if (codes.contains("400")) addBadRequestResponse400(operation); if (codes.contains("401")) addNotAuthorizedResponse401(operation); @@ -44,7 +43,7 @@ public static void addVerbSpecificHeaders(Path p, Set codes) { if (null != p.getDelete()) addDeleteResponses(p.getDelete(), codes); } - private static void addGetResponses(Operation getOperation, Set codes ) { + private static void addGetResponses(Operation getOperation, Set codes) { if (codes.contains("202")) addAcceptedResponse202(getOperation); if (codes.contains("203")) addNonAuthoritativeInformationResponse203(getOperation); if (codes.contains("301")) addPermanentlyMovedResponse301(getOperation); @@ -91,7 +90,7 @@ private static void addDeleteResponses(Operation deleteOperation, Set co private static void addPatchResponses(Operation patchOperation, Set codes) { Headers.addPatchHeaders(patchOperation); - if (codes.contains("422")) addUnprocessableRequestResponse422(patchOperation); + if (codes.contains("422")) addUnprocessableRequestResponse422(patchOperation); } private static void addOKResponse200(Operation operation) { From 445bdbcf8e32846f381c704882aa478698b6ff54 Mon Sep 17 00:00:00 2001 From: AllanHoejgaardJensen Date: Sat, 10 Nov 2018 17:15:58 +0100 Subject: [PATCH 4/4] updated swagger-parser for security reasons and changes constant naming and filename filtering --- pom.xml | 2 +- .../api/pp/APIPostProcessorMojo.java | 26 ++++++++----------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 8aca848..20d0437 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ 7.8.2 3.0.4 1.0.4 - 1.0.29 + 1.0.34 1.5.16 0.7.9 2.3.0 diff --git a/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java b/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java index bd1886f..016e7aa 100644 --- a/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java +++ b/src/main/java/io/openapitools/api/pp/APIPostProcessorMojo.java @@ -86,8 +86,8 @@ public class APIPostProcessorMojo extends AbstractMojo { @Component private MavenProjectHelper projectHelper; - private final String[] minimum = {"200", "202", "204", "301", "400", "404", "415", "500"}; - private final String[] standard = {"200", "201", "202", "203", "204", "301", "304", "307", + private final String[] MINIMUM = {"200", "202", "204", "301", "400", "404", "415", "500"}; + private final String[] STANDARD = {"200", "201", "202", "203", "204", "301", "304", "307", "400", "401", "403", "404", "406", "409", "410", "412", "415", "422", "429", "500", "501", "503", "505"}; @@ -106,12 +106,12 @@ public void execute() throws MojoExecutionException, MojoFailureException { } if (null == packages && null == codes) { - applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(standard))); + applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(STANDARD))); } else { if (null != packages && packages.contains("standard")) { - applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(standard))); + applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(STANDARD))); } else if (null != packages && packages.contains("minimal")) { - applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(minimum))); + applySpecificHeadersAndResponses(api, new HashSet<>(Arrays.asList(MINIMUM))); } else if (null != codes && codes.size() > 0) { applySpecificHeadersAndResponses(api, codes); } @@ -136,17 +136,13 @@ public void execute() throws MojoExecutionException, MojoFailureException { ); } - private String findFileFormat(String fileAndPathName) { - if (Files.exists(Paths.get(fileAndPathName + ".json"))) { - fileAndPathName = fileAndPathName + ".json"; - } else if (Files.exists(Paths.get(fileAndPathName + ".yaml"))) { - fileAndPathName = fileAndPathName + ".yaml"; - } else if (Files.exists(Paths.get(fileAndPathName + ".yml"))) { - fileAndPathName = fileAndPathName + ".yml"; - } - return fileAndPathName; + private String findFileFormat(final String fileAndPathName) { + return Arrays.asList(fileAndPathName + ".json", fileAndPathName + ".yaml", fileAndPathName + ".yml").stream() + .filter(ffn -> Files.exists(Paths.get(ffn))) + .findAny() + .orElse(fileAndPathName); } - + private void applySpecificHeadersAndResponses(Swagger api, Set codes) { Map paths = api.getPaths(); paths.forEach((k, p) -> {