From 79c6c7d812543a4cf74bfa22fd1a3749ab57fe72 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sun, 26 Jul 2020 10:56:01 +0200 Subject: [PATCH] Migrated to offical OpenAPI Maven plugin --- ccm-core/pom.xml | 48 +++++++++++++++++-- .../java/org/libreccm/api/admin/AdminApi.java | 32 ++++++++++++- .../api/admin/SystemInformationApi.java | 8 +++- pom.xml | 14 ++++-- 4 files changed, 93 insertions(+), 9 deletions(-) diff --git a/ccm-core/pom.xml b/ccm-core/pom.xml index a5ad2a6c9..582da9249 100644 --- a/ccm-core/pom.xml +++ b/ccm-core/pom.xml @@ -92,11 +92,20 @@ flyway-core - + + io.swagger.core.v3 + swagger-jaxrs2 + + + io.swagger.core.v3 + swagger-jaxrs2-servlet-initializer-v2 + io.swagger.core.v3 swagger-annotations - --> + + @@ -374,7 +383,8 @@ - + + + + + io.swagger.core.v3 + swagger-maven-plugin + + + org.libreccm.api + org.libreccm.api.admin + org.libreccm.api.admin.categorization + org.libreccm.api.admin.categorization.dto + org.libreccm.api.admin.configuration + org.libreccm.api.admin.security + org.libreccm.api.admin.security.dto + + + ${project.build.directory}/generated-resources/openapi + ccm-core-api + JSONANDYAML + TRUE + + + + compile + + resolve + + + + diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/AdminApi.java b/ccm-core/src/main/java/org/libreccm/api/admin/AdminApi.java index e363fe4b5..6af2f3d29 100644 --- a/ccm-core/src/main/java/org/libreccm/api/admin/AdminApi.java +++ b/ccm-core/src/main/java/org/libreccm/api/admin/AdminApi.java @@ -5,6 +5,13 @@ */ package org.libreccm.api.admin; +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.enums.SecuritySchemeType; +import io.swagger.v3.oas.annotations.info.Contact; +import io.swagger.v3.oas.annotations.info.Info; +import io.swagger.v3.oas.annotations.info.License; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.security.SecurityScheme; import org.libreccm.api.admin.security.GroupsApi; import org.libreccm.api.admin.security.RolesApi; import org.libreccm.api.admin.security.UsersApi; @@ -12,7 +19,6 @@ import org.libreccm.api.admin.security.UsersApi; import java.util.HashSet; import java.util.Set; -import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; import org.libreccm.api.CorsFilter; @@ -25,11 +31,35 @@ import org.libreccm.api.admin.sites.SitesApi; import org.libreccm.api.admin.web.CcmApplicationsApi; import org.libreccm.configuration.Configuration; +import javax.ws.rs.ApplicationPath; + /** * * @author Jens Pelzetter */ @ApplicationPath("/api/admin") +@OpenAPIDefinition( + info = @Info( + title = "ccm-core Admin RESTful API", + version = "7.0.0", + description = "RESTful API for basic administration tasks", + license = @License(name = "LGPL v3"), + contact = @Contact( + url = "https://www.libreccm.org", email = "info@libreccm.org" + ) + ), + security = { + @SecurityRequirement( + name = "ccm-core-admin-security" + ) + } +) +@SecurityScheme( + name = "ccm-core-admin-security", + type = SecuritySchemeType.HTTP, + scheme = "bearer", + bearerFormat = "JWT" +) public class AdminApi extends Application { @Override diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/SystemInformationApi.java b/ccm-core/src/main/java/org/libreccm/api/admin/SystemInformationApi.java index e0ba829be..f909fa4e8 100644 --- a/ccm-core/src/main/java/org/libreccm/api/admin/SystemInformationApi.java +++ b/ccm-core/src/main/java/org/libreccm/api/admin/SystemInformationApi.java @@ -20,6 +20,7 @@ package org.libreccm.api.admin; import com.arsdigita.util.SystemInformation; +import io.swagger.v3.oas.annotations.Operation; import org.libreccm.core.CoreConstants; import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.RequiresPrivilege; @@ -40,11 +41,16 @@ import javax.ws.rs.core.MediaType; public class SystemInformationApi { @GET - @Path("/{domainIdentifier}/{path:^[\\w\\-/]+$}") + @Path("/") @Produces(MediaType.APPLICATION_JSON) @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @Transactional(Transactional.TxType.REQUIRED) + @Operation( + summary = "Retrieve system information", + description = "Returns a JSON object with several informations about " + + "LibreCCM installation" + ) public SystemInformation getSystemInformation() { return SystemInformation.getInstance(); } diff --git a/pom.xml b/pom.xml index 0dc47f211..c2eb1af47 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,7 @@ ccm-core + ccm-core-apiclient ccm-testutils @@ -103,7 +104,7 @@ ccm-cms-archetype-contenttype - ccm-core-apiclient + @@ -334,6 +335,11 @@ swagger-maven-plugin 2.1.2 + + io.swagger.core.v3 + swagger-maven-plugin + 2.1.3 + org.wildfly.plugins wildfly-maven-plugin @@ -733,17 +739,17 @@ io.swagger.core.v3 swagger-jaxrs2 - 2.1.2 + 2.1.3 io.swagger.core.v3 swagger-jaxrs2-servlet-initializer-v2 - 2.1.2 + 2.1.3 io.swagger.core.v3 swagger-annotations - 2.1.2 + 2.1.3