Migrated to offical OpenAPI Maven plugin

Jens Pelzetter 2020-07-26 10:56:01 +02:00
parent 79af35336c
commit 79c6c7d812
4 changed files with 93 additions and 9 deletions

View File

@ -92,11 +92,20 @@
<artifactId>flyway-core</artifactId> <artifactId>flyway-core</artifactId>
</dependency> </dependency>
<!-- OpenAPI/Swagger Annoations for documenting the RESTful API <!--OpenAPI/Swagger Annoations for documenting the RESTful API-->
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2</artifactId>
</dependency>
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId>
</dependency>
<dependency> <dependency>
<groupId>io.swagger.core.v3</groupId> <groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId> <artifactId>swagger-annotations</artifactId>
</dependency>--> </dependency>
<!-- Dependencies for log4j 2 --> <!-- Dependencies for log4j 2 -->
<dependency> <dependency>
@ -374,7 +383,8 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin>
<!-- <plugin>
<groupId>io.openapitools.swagger</groupId> <groupId>io.openapitools.swagger</groupId>
<artifactId>swagger-maven-plugin</artifactId> <artifactId>swagger-maven-plugin</artifactId>
<configuration> <configuration>
@ -388,18 +398,50 @@
<resourcePackage>org.libreccm.api.admin.security.dto</resourcePackage> <resourcePackage>org.libreccm.api.admin.security.dto</resourcePackage>
</resourcePackages> </resourcePackages>
<outputDirectory>${project.basedir}/src/site/resources</outputDirectory> <outputDirectory>${project.basedir}/src/site/resources</outputDirectory>
<outputDirectory>${project.build.directory}/generated-resources/openapi</outputDirectory>
<outputFilename>ccm-core-api</outputFilename> <outputFilename>ccm-core-api</outputFilename>
<outputFormats>JSON</outputFormats> <outputFormats>JSON</outputFormats>
<prettyPrint>true</prettyPrint> <prettyPrint>true</prettyPrint>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>
<phase>generate-resources</phase>
<goals> <goals>
<goal>generate</goal> <goal>generate</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin>-->
<plugin>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<configuration>
<resourcePackages>
<package>org.libreccm.api</package>
<package>org.libreccm.api.admin</package>
<package>org.libreccm.api.admin.categorization</package>
<package>org.libreccm.api.admin.categorization.dto</package>
<package>org.libreccm.api.admin.configuration</package>
<package>org.libreccm.api.admin.security</package>
<package>org.libreccm.api.admin.security.dto</package>
</resourcePackages>
<!--<outputDirectory>${project.basedir}/src/site/resources</outputDirectory>-->
<outputPath>${project.build.directory}/generated-resources/openapi</outputPath>
<outputFileName>ccm-core-api</outputFileName>
<outputFormat>JSONANDYAML</outputFormat>
<prettyPrint>TRUE</prettyPrint>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>resolve</goal>
</goals>
</execution>
</executions>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>

View File

@ -5,6 +5,13 @@
*/ */
package org.libreccm.api.admin; 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.GroupsApi;
import org.libreccm.api.admin.security.RolesApi; import org.libreccm.api.admin.security.RolesApi;
import org.libreccm.api.admin.security.UsersApi; 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.HashSet;
import java.util.Set; import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application; import javax.ws.rs.core.Application;
import org.libreccm.api.CorsFilter; 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.api.admin.web.CcmApplicationsApi;
import org.libreccm.configuration.Configuration; import org.libreccm.configuration.Configuration;
import javax.ws.rs.ApplicationPath;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@ApplicationPath("/api/admin") @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 { public class AdminApi extends Application {
@Override @Override

View File

@ -20,6 +20,7 @@ package org.libreccm.api.admin;
import com.arsdigita.util.SystemInformation; import com.arsdigita.util.SystemInformation;
import io.swagger.v3.oas.annotations.Operation;
import org.libreccm.core.CoreConstants; import org.libreccm.core.CoreConstants;
import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.AuthorizationRequired;
import org.libreccm.security.RequiresPrivilege; import org.libreccm.security.RequiresPrivilege;
@ -40,11 +41,16 @@ import javax.ws.rs.core.MediaType;
public class SystemInformationApi { public class SystemInformationApi {
@GET @GET
@Path("/{domainIdentifier}/{path:^[\\w\\-/]+$}") @Path("/")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@AuthorizationRequired @AuthorizationRequired
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
@Operation(
summary = "Retrieve system information",
description = "Returns a JSON object with several informations about "
+ "LibreCCM installation"
)
public SystemInformation getSystemInformation() { public SystemInformation getSystemInformation() {
return SystemInformation.getInstance(); return SystemInformation.getInstance();
} }

14
pom.xml
View File

@ -54,6 +54,7 @@
<!-- Provides basic functionality required by all modules --> <!-- Provides basic functionality required by all modules -->
<module>ccm-core</module> <module>ccm-core</module>
<module>ccm-core-apiclient</module>
<!-- Additional modules used by most/all modules (including ccm-core) --> <!-- Additional modules used by most/all modules (including ccm-core) -->
<module>ccm-testutils</module> <module>ccm-testutils</module>
@ -103,7 +104,7 @@
<module>ccm-cms-archetype-contenttype</module> <module>ccm-cms-archetype-contenttype</module>
<!--<module>ccm-cms-js</module>--> <!--<module>ccm-cms-js</module>-->
<module>ccm-core-apiclient</module>
</modules> </modules>
<reporting> <reporting>
@ -334,6 +335,11 @@
<artifactId>swagger-maven-plugin</artifactId> <artifactId>swagger-maven-plugin</artifactId>
<version>2.1.2</version> <version>2.1.2</version>
</plugin> </plugin>
<plugin>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>2.1.3</version>
</plugin>
<plugin> <plugin>
<groupId>org.wildfly.plugins</groupId> <groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId> <artifactId>wildfly-maven-plugin</artifactId>
@ -733,17 +739,17 @@
<dependency> <dependency>
<groupId>io.swagger.core.v3</groupId> <groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2</artifactId> <artifactId>swagger-jaxrs2</artifactId>
<version>2.1.2</version> <version>2.1.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.swagger.core.v3</groupId> <groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId> <artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId>
<version>2.1.2</version> <version>2.1.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.swagger.core.v3</groupId> <groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId> <artifactId>swagger-annotations</artifactId>
<version>2.1.2</version> <version>2.1.3</version>
</dependency> </dependency>
<!-- <!--