This is an automated email from the ASF dual-hosted git repository. martin_s pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/archiva.git
commit 167c3358564295ec3e28113bb9242d28500674ea Author: Martin Stockhammer <[email protected]> AuthorDate: Mon Jun 22 20:08:22 2020 +0200 Moving from enunciate to OpenAPI documentation --- .../archiva-rest/archiva-rest-api/pom.xml | 134 ++++++++++++- .../enunciate/{enunciate.xml => enunciate.xml.org} | 2 + .../api/services/ArchivaAdministrationService.java | 86 +++++---- .../ArchivaRuntimeConfigurationService.java | 2 + .../archiva/rest/api/services/BrowseService.java | 2 + .../archiva/rest/api/services/CommonServices.java | 2 + .../api/services/ManagedRepositoriesService.java | 6 + .../api/services/MergeRepositoriesService.java | 2 + .../rest/api/services/NetworkProxyService.java | 2 + .../archiva/rest/api/services/PingService.java | 2 + .../archiva/rest/api/services/PluginsService.java | 2 + .../api/services/ProxyConnectorRuleService.java | 2 + .../rest/api/services/ProxyConnectorService.java | 2 + .../RedbackRuntimeConfigurationService.java | 2 + .../api/services/RemoteRepositoriesService.java | 6 + .../api/services/ReportRepositoriesService.java | 2 + .../rest/api/services/RepositoriesService.java | 2 + .../rest/api/services/RepositoryGroupService.java | 2 + .../archiva/rest/api/services/SearchService.java | 2 + .../rest/api/services/SystemStatusService.java | 2 + .../src/main/resources/openapi-codegen-ignore | 0 .../src/main/resources/openapi-configuration.yaml | 16 ++ .../main/resources/templates/bodyParam.mustache | 4 + .../main/resources/templates/formParam.mustache | 3 + .../main/resources/templates/headerParam.mustache | 3 + .../src/main/resources/templates/index.mustache | 213 +++++++++++++++++++++ .../main/resources/templates/pathParam.mustache | 3 + .../main/resources/templates/queryParam.mustache | 3 + .../main/resources/templates/style.css.mustache | 172 +++++++++++++++++ status-dep.txt | 57 +++--- 30 files changed, 664 insertions(+), 74 deletions(-) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml index e50ff83..9a64d1d 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml @@ -31,50 +31,43 @@ <properties> <enunciate.docsDir>${project.build.outputDirectory}/rest-docs-archiva-rest-api</enunciate.docsDir> <site.staging.base>${project.parent.parent.parent.basedir}</site.staging.base> + <swagger-maven-plugin-version>2.1.2</swagger-maven-plugin-version> + <io.swagger.version>2.1.2</io.swagger.version> </properties> <dependencies> <dependency> <groupId>org.apache.archiva</groupId> <artifactId>archiva-security-common</artifactId> - </dependency> - <dependency> <groupId>org.apache.archiva</groupId> <artifactId>archiva-repository-admin-api</artifactId> </dependency> - <dependency> <groupId>org.apache.archiva</groupId> <artifactId>archiva-policies</artifactId> </dependency> - <dependency> <groupId>org.apache.archiva</groupId> <artifactId>metadata-model</artifactId> </dependency> - <dependency> <groupId>org.apache.archiva.maven</groupId> <artifactId>archiva-maven-model</artifactId> </dependency> - <dependency> <groupId>org.apache.archiva</groupId> <artifactId>archiva-repository-scanner</artifactId> </dependency> - <dependency> <groupId>org.apache.archiva</groupId> <artifactId>repository-statistics</artifactId> </dependency> - <dependency> <groupId>org.apache.archiva</groupId> <artifactId>metadata-statistics-api</artifactId> </dependency> - <dependency> <groupId>org.apache.archiva.redback</groupId> <artifactId>redback-authorization-api</artifactId> @@ -89,6 +82,42 @@ <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> </dependency> + <dependency> + <groupId>io.swagger.core.v3</groupId> + <artifactId>swagger-core</artifactId> + <scope>compile</scope> + <version>${io.swagger.version}</version> + <exclusions> + <exclusion> + <groupId>javax.ws.rs</groupId> + <artifactId>jsr311-api</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>io.swagger.core.v3</groupId> + <artifactId>swagger-jaxrs2</artifactId> + <version>${io.swagger.version}</version> + <exclusions> + <exclusion> + <groupId>javax.ws.rs</groupId> + <artifactId>jsr311-api</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>io.swagger.core.v3</groupId> + <artifactId>swagger-annotations</artifactId> + <version>${io.swagger.version}</version> + <exclusions> + <exclusion> + <groupId>javax.ws.rs</groupId> + <artifactId>jsr311-api</artifactId> + </exclusion> + </exclusions> + </dependency> + + <!-- normally not needed but here for wadl feature currently in cxf --> <dependency> <groupId>org.apache.cxf</groupId> @@ -105,6 +134,17 @@ <build> <plugins> <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <configuration> + <excludes> + <exclude>target/generated</exclude> + <exclude>src/main/resources/templates/*</exclude> + <exclude>src/main/resources/openapi-codegen-ignore</exclude> + </excludes> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> @@ -116,7 +156,83 @@ </execution> </executions> </plugin> + <plugin> + <groupId>io.swagger.core.v3</groupId> + <artifactId>swagger-maven-plugin</artifactId> + <version>${swagger-maven-plugin-version}</version> + <configuration> + <outputFileName>openapi</outputFileName> + <outputPath>${project.build.directory}/generated</outputPath> + <outputFormat>JSONANDYAML</outputFormat> + <resourcePackages> + <package>org.apache.archiva.rest.api</package> + </resourcePackages> + <prettyPrint>TRUE</prettyPrint> + <configurationFilePath>${project.basedir}/src/main/resources/openapi-configuration.yaml</configurationFilePath> + </configuration> + <executions> + <execution> + <phase>compile</phase> + <goals> + <goal>resolve</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>io.swagger.codegen.v3</groupId> + <artifactId>swagger-codegen-maven-plugin</artifactId> + <version>3.0.20</version> + <executions> + <execution> + <phase>compile</phase> + <goals> + <goal>generate</goal> + </goals> + <configuration> + <inputSpec>${project.build.directory}/generated/openapi.yaml</inputSpec> + <language>html</language> + <output>${project.build.directory}/generated-sources</output> + <ignoreFileOverride>${project.basedir}/src/main/resources/openapi-codegen-ignore</ignoreFileOverride> + <templateDirectory>${project.basedir}/src/main/resources/templates</templateDirectory> + <supportingFilesToGenerate>index.html,index2.html</supportingFilesToGenerate> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <version>3.1.0</version> + <executions> + <execution> + <id>copy-resources</id> + <phase>site</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${basedir}/target/site/openapi/</outputDirectory> + <resources> + <resource> + <directory>${project.build.directory}/generated</directory> <!-- source directory --> + <filtering>false</filtering> + <include>openapi.json</include> + <include>openapi.yaml</include> + </resource> + <resource> + <directory>${project.build.directory}/generated-sources/</directory> + <filtering>false</filtering> + <include>**/*</include> + <exclude>.swagger-codegen/**</exclude> + <exclude>.swagger-codegen-ignore</exclude> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/enunciate.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/enunciate.xml.org similarity index 94% rename from archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/enunciate.xml rename to archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/enunciate.xml.org index c0f27aa..3e1fe06 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/enunciate.xml +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/enunciate.xml.org @@ -23,6 +23,8 @@ <title>Apache Archiva REST API</title> <modules> + <obj-c-xml-client disabled="true" /> + <csharp-xml-client disabled="true" /> <cxf disabled="false"/> <jersey disabled="true" /> <c disabled="true"/> diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java index 612ed0a..77544cc 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java @@ -18,6 +18,9 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.FileType; import org.apache.archiva.admin.model.beans.LegacyArtifactPath; import org.apache.archiva.admin.model.beans.NetworkConfiguration; @@ -42,32 +45,33 @@ import java.util.List; * @since 1.4-M1 */ @Path( "/archivaAdministrationService/" ) +@Tag( name = "Administration", description = "Admin Service" ) public interface ArchivaAdministrationService { @Path( "getLegacyArtifactPaths" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - List<LegacyArtifactPath> getLegacyArtifactPaths() + List<LegacyArtifactPath> getLegacyArtifactPaths( ) throws ArchivaRestServiceException; @Path( "deleteLegacyArtifactPath" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean deleteLegacyArtifactPath( @QueryParam( "path" ) String path ) throws ArchivaRestServiceException; @Path( "addFileTypePattern" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean addFileTypePattern( @QueryParam( "fileTypeId" ) String fileTypeId, @QueryParam( "pattern" ) String pattern ) throws ArchivaRestServiceException; @Path( "removeFileTypePattern" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean removeFileTypePattern( @QueryParam( "fileTypeId" ) String fileTypeId, @QueryParam( "pattern" ) String pattern ) @@ -75,35 +79,43 @@ public interface ArchivaAdministrationService @Path( "getFileType" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - FileType getFileType( @QueryParam( "fileTypeId" ) String fileTypeId ) + @Operation( + summary = "Return the file type and its patterns", + description = "Returns a object that contains the file type and the configured patterns for this type" + + ) + FileType getFileType( + @Parameter( name = "fileTypeId", description = "The identifier of the file type", + allowEmptyValue = false, required = true ) + @QueryParam( "fileTypeId" ) String fileTypeId ) throws ArchivaRestServiceException; @Path( "addFileType" ) @POST - @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Consumes( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) void addFileType( FileType fileType ) throws ArchivaRestServiceException; @Path( "removeFileType" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean removeFileType( @QueryParam( "fileTypeId" ) String fileTypeId ) throws ArchivaRestServiceException; @Path( "enabledKnownContentConsumer/{knownContentConsumer}" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean enabledKnownContentConsumer( @PathParam( "knownContentConsumer" ) String knownContentConsumer ) throws ArchivaRestServiceException; @Path( "enabledKnownContentConsumers" ) @POST - @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Consumes( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) void enabledKnownContentConsumers( List<String> knownContentConsumers ) throws ArchivaRestServiceException; @@ -111,44 +123,44 @@ public interface ArchivaAdministrationService @Path( "disabledKnownContentConsumer/{knownContentConsumer}" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean disabledKnownContentConsumer( @PathParam( "knownContentConsumer" ) String knownContentConsumer ) throws ArchivaRestServiceException; @Path( "enabledInvalidContentConsumer/{invalidContentConsumer}" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean enabledInvalidContentConsumer( @PathParam( "invalidContentConsumer" ) String invalidContentConsumer ) throws ArchivaRestServiceException; @Path( "enabledInvalidContentConsumers" ) @POST - @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Consumes( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) void enabledInvalidContentConsumers( List<String> invalidContentConsumers ) throws ArchivaRestServiceException; @Path( "disabledInvalidContentConsumer/{invalidContentConsumer}" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) Boolean disabledInvalidContentConsumer( @PathParam( "invalidContentConsumer" ) String invalidContentConsumer ) throws ArchivaRestServiceException; @Path( "getFileTypes" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - List<FileType> getFileTypes() + List<FileType> getFileTypes( ) throws ArchivaRestServiceException; @Path( "getKnownContentConsumers" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - List<String> getKnownContentConsumers() + List<String> getKnownContentConsumers( ) throws ArchivaRestServiceException; /** @@ -156,9 +168,9 @@ public interface ArchivaAdministrationService */ @Path( "getKnownContentAdminRepositoryConsumers" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - List<AdminRepositoryConsumer> getKnownContentAdminRepositoryConsumers() + List<AdminRepositoryConsumer> getKnownContentAdminRepositoryConsumers( ) throws ArchivaRestServiceException; /** @@ -166,49 +178,49 @@ public interface ArchivaAdministrationService */ @Path( "getInvalidContentAdminRepositoryConsumers" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - List<AdminRepositoryConsumer> getInvalidContentAdminRepositoryConsumers() + List<AdminRepositoryConsumer> getInvalidContentAdminRepositoryConsumers( ) throws ArchivaRestServiceException; @Path( "getInvalidContentConsumers" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - List<String> getInvalidContentConsumers() + List<String> getInvalidContentConsumers( ) throws ArchivaRestServiceException; @Path( "getOrganisationInformation" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN} ) @RedbackAuthorization( noPermission = true, noRestriction = true ) - OrganisationInformation getOrganisationInformation() + OrganisationInformation getOrganisationInformation( ) throws ArchivaRestServiceException; @Path( "setOrganisationInformation" ) @POST - @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Consumes( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) void setOrganisationInformation( OrganisationInformation organisationInformation ) throws ArchivaRestServiceException; @Path( "getUiConfiguration" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - UiConfiguration getUiConfiguration() + UiConfiguration getUiConfiguration( ) throws ArchivaRestServiceException; @Path( "registrationDisabled" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( noRestriction = true, noPermission = true ) - Boolean registrationDisabled() + Boolean registrationDisabled( ) throws ArchivaRestServiceException; @Path( "setUiConfiguration" ) @POST - @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Consumes( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) void setUiConfiguration( UiConfiguration uiConfiguration ) throws ArchivaRestServiceException; @@ -220,20 +232,20 @@ public interface ArchivaAdministrationService @GET @Produces( MediaType.TEXT_PLAIN ) @RedbackAuthorization( noRestriction = true, noPermission = true ) - String getApplicationUrl() + String getApplicationUrl( ) throws ArchivaRestServiceException; @Path( "getNetworkConfiguration" ) @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - NetworkConfiguration getNetworkConfiguration() + NetworkConfiguration getNetworkConfiguration( ) throws ArchivaRestServiceException; @Path( "setNetworkConfiguration" ) @POST - @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @Consumes( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) void setNetworkConfiguration( NetworkConfiguration networkConfiguration ) throws ArchivaRestServiceException; diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java index f3f6274..ba1f946 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.ArchivaRuntimeConfiguration; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.security.common.ArchivaRoleConstants; @@ -34,6 +35,7 @@ import javax.ws.rs.core.MediaType; * @since 1.4-M4 */ @Path( "/archivaRuntimeConfigurationService/" ) +@Tag( name="Configuration" ) public interface ArchivaRuntimeConfigurationService { @Path( "archivaRuntimeConfiguration" ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java index cdb99eb..43d2d52 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.ManagedRepository; import org.apache.archiva.maven2.model.Artifact; import org.apache.archiva.maven2.model.TreeEntry; @@ -46,6 +47,7 @@ import java.util.List; * @since 1.4-M3 */ @Path("/browseService/") +@Tag( name = "Browse", description = "Repository Browse Service") public interface BrowseService { @Path("rootGroups") diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/CommonServices.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/CommonServices.java index 119f121..9589a10 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/CommonServices.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/CommonServices.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.redback.authorization.RedbackAuthorization; import javax.ws.rs.GET; @@ -33,6 +34,7 @@ import javax.ws.rs.core.MediaType; * @since 1.4-M3 */ @Path( "/commonServices/" ) +@Tag( name="ArchivaCommon" ) public interface CommonServices { diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java index c5dc6c8..c2df283 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java @@ -19,6 +19,8 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.tags.Tags; import org.apache.archiva.admin.model.beans.ManagedRepository; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.rest.api.model.ArchivaRepositoryStatistics; @@ -39,6 +41,10 @@ import java.util.List; * @since 1.4-M1 */ @Path( "/managedRepositoriesService/" ) +@Tags( { + @Tag( name = "ManagedRepositories", description = "Administration for managed repositories" ), + @Tag( name = "Repositories" ) +}) public interface ManagedRepositoriesService { @Path( "getManagedRepositories" ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/MergeRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/MergeRepositoriesService.java index d2f4bb0..0d38133 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/MergeRepositoriesService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/MergeRepositoriesService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.maven2.model.Artifact; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.security.common.ArchivaRoleConstants; @@ -36,6 +37,7 @@ import java.util.List; * @since 1.4-M3 */ @Path ("/mergeRepositoriesService/") +@Tag(name="RepositoryMerge", description = "Merging repositories") public interface MergeRepositoriesService { diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/NetworkProxyService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/NetworkProxyService.java index b17c300..be5489e 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/NetworkProxyService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/NetworkProxyService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.NetworkProxy; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.security.common.ArchivaRoleConstants; @@ -36,6 +37,7 @@ import java.util.List; * @since 1.4-M1 */ @Path( "/networkProxyService/" ) +@Tag(name="Proxy", description = "Managing Network Proxies") public interface NetworkProxyService { @Path( "getNetworkProxies" ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PingService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PingService.java index ac36236..b1016b8 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PingService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PingService.java @@ -19,6 +19,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.redback.authorization.RedbackAuthorization; import javax.ws.rs.GET; @@ -31,6 +32,7 @@ import javax.ws.rs.core.MediaType; * @since 1.4-M1 */ @Path( "/pingService/" ) +@Tag(name="Ping") public interface PingService { diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PluginsService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PluginsService.java index 8748ee6..7b105d0 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PluginsService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/PluginsService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.redback.authorization.RedbackAuthorization; import javax.ws.rs.GET; @@ -32,6 +33,7 @@ import javax.ws.rs.core.MediaType; * @since 1.4.0 */ @Path("/pluginsService/") +@Tag( name="Plugins" ) public interface PluginsService { diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorRuleService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorRuleService.java index 206525a..1399eff 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorRuleService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorRuleService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.ProxyConnectorRule; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.security.common.ArchivaRoleConstants; @@ -37,6 +38,7 @@ import java.util.List; * @since 1.4-M3 */ @Path ( "/proxyConnectorRuleService/" ) +@Tag(name="Proxy-Repository", description="Handling of proxy repositories that delegate to remote repositories") public interface ProxyConnectorRuleService { @Path ( "proxyConnectorRules" ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorService.java index 5f63fd0..b370d23 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ProxyConnectorService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.ProxyConnector; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.rest.api.model.PolicyInformation; @@ -39,6 +40,7 @@ import java.util.List; * @since 1.4-M1 */ @Path( "/proxyConnectorService/" ) +@Tag(name="Proxy-Repository") public interface ProxyConnectorService { @Path( "getProxyConnectors" ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RedbackRuntimeConfigurationService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RedbackRuntimeConfigurationService.java index dff2430..67f44ee 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RedbackRuntimeConfigurationService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RedbackRuntimeConfigurationService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.LdapConfiguration; import org.apache.archiva.admin.model.beans.RedbackRuntimeConfiguration; import org.apache.archiva.redback.authorization.RedbackAuthorization; @@ -40,6 +41,7 @@ import java.util.List; * @since 1.4-M4 */ @Path("/redbackRuntimeConfigurationService/") +@Tag( name="Redback",description = "Configuration of Redback Backend") public interface RedbackRuntimeConfigurationService { @Path("redbackRuntimeConfiguration") diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RemoteRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RemoteRepositoriesService.java index 97aa4b9..632c8ff 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RemoteRepositoriesService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RemoteRepositoriesService.java @@ -19,6 +19,8 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.tags.Tags; import org.apache.archiva.admin.model.beans.RemoteRepository; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.security.common.ArchivaRoleConstants; @@ -37,6 +39,10 @@ import java.util.List; * @since 1.4-M1 */ @Path("/remoteRepositoriesService/") +@Tags( { + @Tag( name = "RemoteRepositories", description = "Administration of remote repositories" ), + @Tag( name = "Repositories", description = "Administration of remote repositories" ) +}) public interface RemoteRepositoriesService { @Path("getRemoteRepositories") diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ReportRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ReportRepositoriesService.java index 5f3eccf..da60650 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ReportRepositoriesService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ReportRepositoriesService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.metadata.model.facets.RepositoryProblemFacet; import org.apache.archiva.metadata.repository.stats.model.RepositoryStatistics; import org.apache.archiva.redback.authorization.RedbackAuthorization; @@ -39,6 +40,7 @@ import java.util.List; * @since 1.4-M3 */ @Path( "/reportServices/" ) +@Tag( name="Statistics", description = "Statistics and Health reports") public interface ReportRepositoriesService { diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java index 9d48a00..75e4670 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java @@ -19,6 +19,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.maven2.model.Artifact; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.repository.scanner.RepositoryScanStatistics; @@ -41,6 +42,7 @@ import javax.ws.rs.core.MediaType; * @since 1.4-M1 */ @Path ("/repositoriesService/") +@Tag( name="Repositories", description = "Managing repositories") public interface RepositoriesService { diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoryGroupService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoryGroupService.java index f031d1c..2daedc1 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoryGroupService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoryGroupService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.admin.model.beans.RepositoryGroup; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.security.common.ArchivaRoleConstants; @@ -37,6 +38,7 @@ import java.util.List; * @since 1.4-M1 */ @Path( "/repositoryGroupService/" ) +@Tag( name="Repository-Group", description = "Managing of groups of repositories") public interface RepositoryGroupService { @Path( "getRepositoriesGroups" ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java index 1b3fa08..4d56d25 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java @@ -20,6 +20,7 @@ package org.apache.archiva.rest.api.services; */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.maven2.model.Artifact; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.rest.api.model.ChecksumSearch; @@ -37,6 +38,7 @@ import javax.ws.rs.core.Response; import java.util.List; @Path( "/searchService/" ) +@Tag( name="Search", description = "Searching repositories") public interface SearchService { /* diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SystemStatusService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SystemStatusService.java index ae1b02b..96fe1d8 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SystemStatusService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SystemStatusService.java @@ -18,6 +18,7 @@ package org.apache.archiva.rest.api.services; * under the License. */ +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.archiva.redback.authorization.RedbackAuthorization; import org.apache.archiva.rest.api.model.CacheEntry; import org.apache.archiva.rest.api.model.QueueEntry; @@ -36,6 +37,7 @@ import java.util.List; * @since 1.4-M3 */ @Path( "/systemStatusService/" ) +@Tag( name="System", description = "System information") public interface SystemStatusService { @Path( "memoryStatus" ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/openapi-codegen-ignore b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/openapi-codegen-ignore new file mode 100644 index 0000000..e69de29 diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/openapi-configuration.yaml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/openapi-configuration.yaml new file mode 100644 index 0000000..80917c9 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/openapi-configuration.yaml @@ -0,0 +1,16 @@ +resourcePackages: + - org.apache.archiva.rest.api +prettyPrint: true +cacheTTL: 0 +openAPI: + info: + version: '3.0' + title: Apache Archiva REST API + description: 'This is the Apache Archiva REST API documentation' + termsOfService: https://archiva.apache.org + contact: + email: [email protected] + url: https://archiva.apache.org/index.html + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/bodyParam.mustache b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/bodyParam.mustache new file mode 100644 index 0000000..4873e06 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/bodyParam.mustache @@ -0,0 +1,4 @@ +{{#is this 'body-param'}}<div class="param">{{baseName}} {{#baseType}}<a href="#{{baseType}}">{{baseType}}</a>{{/baseType}} {{^required}}(optional){{/required}}{{#required}}(required){{/required}}</div> + + <div class="param-desc"><span class="param-type">Body Parameter</span> — {{unescapedDescription}} {{#defaultValue}}default: {{{defaultValue}}}{{/defaultValue}}</div>{{/is}} + {{#example}}<div class="param-desc"><span class="param-type">example: <code>{{example}}</code></span></div>{{/example}} \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/formParam.mustache b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/formParam.mustache new file mode 100644 index 0000000..6d23f93 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/formParam.mustache @@ -0,0 +1,3 @@ +{{#is this 'form-param'}}<div class="param">{{baseName}} {{^required}}(optional){{/required}}{{#required}}(required){{/required}}</div> + + <div class="param-desc"><span class="param-type">Form Parameter</span> — {{unescapedDescription}} {{#defaultValue}}default: {{{defaultValue}}} {{/defaultValue}}{{#dataFormat}}format: {{{dataFormat}}}{{/dataFormat}}</div>{{/is}} \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/headerParam.mustache b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/headerParam.mustache new file mode 100644 index 0000000..ad00e3c --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/headerParam.mustache @@ -0,0 +1,3 @@ +{{#is this 'header-param'}}<div class="param">{{baseName}} {{^required}}(optional){{/required}}{{#required}}(required){{/required}}</div> + + <div class="param-desc"><span class="param-type">Header Parameter</span> — {{unescapedDescription}} {{#defaultValue}}default: {{{defaultValue}}} {{/defaultValue}}{{#dataFormat}}format: {{{dataFormat}}}{{/dataFormat}}</div>{{/is}} \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/index.mustache b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/index.mustache new file mode 100644 index 0000000..59b27c8 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/index.mustache @@ -0,0 +1,213 @@ +<!doctype html> +<html> + <head> + <title>{{{appName}}}</title> + <style type="text/css"> + {{>style.css}} + </style> + </head> + <body> + <h1>{{{appName}}}</h1> + <div class="app-desc">{{{appDescription}}}</div> + {{#infoUrl}}<div class="app-desc">More information: <a href="{{{infoUrl}}}">{{{infoUrl}}}</a></div>{{/infoUrl}} + {{#infoEmail}}<div class="app-desc">Contact Info: <a href="{{{infoEmail}}}">{{{infoEmail}}}</a></div>{{/infoEmail}} + {{#version}}<div class="app-desc">Version: {{{version}}}</div>{{/version}} + {{#basePathWithoutHost}}<div class="app-desc">BasePath:{{basePathWithoutHost}}</div>{{/basePathWithoutHost}} + <div class="license-info">{{{licenseInfo}}}</div> + <div class="license-url">{{{licenseUrl}}}</div> + <h2>Access</h2> + {{#hasAuthMethods}} + <ol> + {{#authMethods}} + <li>{{#is this 'basic'}}HTTP Basic Authentication{{/is}}{{#is this 'oauth'}}OAuth AuthorizationUrl:{{authorizationUrl}}TokenUrl:{{tokenUrl}}{{/is}}{{#is this 'api-key'}}APIKey KeyParamName:{{keyParamName}} KeyInQuery:{{isKeyInQuery}} KeyInHeader:{{isKeyInHeader}}{{/is}}</li> + {{/authMethods}} + </ol> + {{/hasAuthMethods}} + + <h2><a name="__Methods">Methods</a></h2> + [ Jump to <a href="#__Models">Models</a> ] + + {{! for the tables of content, I cheat and don't use CSS styles.... }} + <h3>Table of Contents </h3> + <div class="method-summary">{{access}}</div> + {{#apiInfo}} + {{#apis}} + {{#operations}} + <h4><a href="#{{baseName}}">{{baseName}}</a></h4> + <ul> + {{#operation}} + <li><a href="#{{nickname}}"><code><span class="http-method">{{httpMethod}}</span> {{path}}</code></a></li> + {{/operation}} + </ul> + {{/operations}} + {{/apis}} + {{/apiInfo}} + + {{#apiInfo}} + {{#apis}} + {{#operations}} + <h1><a name="{{baseName}}">{{baseName}}</a></h1> + {{#operation}} + <div class="method"><a name="{{nickname}}"></a> + <div class="method-path"> + <a class="up" href="#__Methods">Up</a> + <pre class="{{httpMethod}}"><code class="huge"><span class="http-method">{{httpMethod}}</span> {{path}}</code></pre></div> + <div class="method-summary">{{summary}} (<span class="nickname">{{nickname}}</span>)</div> + {{! notes is operation.description. So why rename it and make it super confusing???? }} + <div class="method-notes">{{notes}}</div> + + {{#hasPathParams}} + <h3 class="field-label">Path parameters</h3> + <div class="field-items"> + {{#pathParams}}{{>pathParam}}{{/pathParams}} + </div> <!-- field-items --> + {{/hasPathParams}} + + {{#has this 'consumes'}} + <h3 class="field-label">Consumes</h3> + This API call consumes the following media types via the <span class="header">Content-Type</span> request header: + <ul> + {{#consumes}} + <li><code>{{{mediaType}}}</code></li> + {{/consumes}} + </ul> + {{/has}} + + {{#hasBodyParam}} + <h3 class="field-label">Request body</h3> + <div class="field-items"> + {{#bodyParams}}{{>bodyParam}}{{/bodyParams}} + </div> <!-- field-items --> + {{/hasBodyParam}} + + {{#hasHeaderParams}} + <h3 class="field-label">Request headers</h3> + <div class="field-items"> + {{#headerParam}}{{>headerParam}}{{/headerParam}} + </div> <!-- field-items --> + {{/hasHeaderParams}} + + {{#hasQueryParams}} + <h3 class="field-label">Query parameters</h3> + <div class="field-items"> + {{#queryParams}}{{>queryParam}}{{/queryParams}} + </div> <!-- field-items --> + {{/hasQueryParams}} + + {{#hasFormParams}} + <h3 class="field-label">Form parameters</h3> + <div class="field-items"> + {{#formParams}}{{>formParam}}{{/formParams}} + </div> <!-- field-items --> + {{/hasFormParams}} + + {{#returnType}} + <h3 class="field-label">Return type</h3> + <div class="return-type"> + {{#hasReference}}{{^returnSimpleType}}{{returnContainer}}[{{/returnSimpleType}}<a href="#{{returnBaseType}}">{{returnBaseType}}</a>{{^returnSimpleType}}]{{/returnSimpleType}}{{/hasReference}} + {{^hasReference}}{{returnType}}{{/hasReference}} + </div> + {{/returnType}} + + <!--Todo: process Response Object and its headers, schema, examples --> + + {{#hasExamples}} + {{#examples}} + <h3 class="field-label">Example data</h3> + <div class="example-data-content-type">Content-Type: {{{contentType}}}</div> + <pre class="example"><code>{{{example}}}</code></pre> + {{/examples}} + {{/hasExamples}} + + {{#has this 'produces'}} + <h3 class="field-label">Produces</h3> + This API call produces the following media types according to the <span class="header">Accept</span> request header; + the media type will be conveyed by the <span class="header">Content-Type</span> response header. + <ul> + {{#produces}} + <li><code>{{{mediaType}}}</code></li> + {{/produces}} + </ul> + {{/has}} + + <h3 class="field-label">Responses</h3> + {{#responses}} + <h4 class="field-label">{{code}}</h4> + {{message}} + {{#simpleType}}<a href="#{{dataType}}">{{dataType}}</a>{{/simpleType}} + {{#examples}} + <h3 class="field-label">Example data</h3> + <div class="example-data-content-type">Content-Type: {{{contentType}}}</div> + <pre class="example"><code>{{example}}</code></pre> + {{/examples}} + {{/responses}} + </div> <!-- method --> + <hr/> + {{/operation}} + {{/operations}} + {{/apis}} + {{/apiInfo}} + + <h2><a name="__Models">Models</a></h2> + [ Jump to <a href="#__Methods">Methods</a> ] + + <h3>Table of Contents</h3> + <ol> + {{#models}} + {{#model}} + <li><a href="#{{name}}"><code>{{name}}</code>{{#title}} - {{title}}{{/title}}</a></li> + {{/model}} + {{/models}} + </ol> + + {{#models}} + {{#model}} + <div class="model"> + <h3><a name="{{name}}"><code>{{name}}</code>{{#title}} - {{title}}{{/title}}</a> <a class="up" href="#__Models">Up</a></h3> + {{#unescapedDescription}}<div class='model-description'>{{unescapedDescription}}</div>{{/unescapedDescription}} + <div class="field-items"> + {{#vars}}<div class="param">{{name}} {{^required}}(optional){{/required}}</div><div class="param-desc"><span class="param-type">{{#isNot this 'primitive-type'}}<a href="#{{complexType}}">{{datatype}}</a>{{/isNot}}</span> {{unescapedDescription}} {{#dataFormat}}format: {{{dataFormat}}}{{/dataFormat}}</div> + {{#is this 'enum'}} + <div class="param-enum-header">Enum:</div> + {{#_enum}}<div class="param-enum">{{this}}</div>{{/_enum}} + {{/is}} + {{#example}} + <div class="param-desc"><span class="param-type">example: {{example}}</span></div> + {{/example}} + {{#vendorExtensions.oneOf-model}} + <div class="param-desc"><span class="param-type">oneOf:</span> + {{#vendorExtensions.x-model-names}} + <a href="#{{this}}"><code>{{this}}</code></a> + {{/vendorExtensions.x-model-names}} + </div> + {{/vendorExtensions.oneOf-model}} + {{#vendorExtensions.anyOf-model}} + <div class="param-desc"><span class="param-type">anyOf:</span> + {{#vendorExtensions.x-model-names}} + <a href="#{{this}}"><code>{{this}}</code></a> + {{/vendorExtensions.x-model-names}} + </div> + {{/vendorExtensions.anyOf-model}} + {{#items}} + {{#vendorExtensions.oneOf-model}} + <div class="param-desc"><span class="param-type">items oneOf:</span> + {{#vendorExtensions.x-model-names}} + <a href="#{{this}}"><code>{{this}}</code></a> + {{/vendorExtensions.x-model-names}} + </div> + {{/vendorExtensions.oneOf-model}} + {{#vendorExtensions.anyOf-model}} + <div class="param-desc"><span class="param-type">items anyOf:</span> + {{#vendorExtensions.x-model-names}} + <a href="#{{this}}"><code>{{this}}</code></a> + {{/vendorExtensions.x-model-names}} + </div> + {{/vendorExtensions.anyOf-model}} + {{/items}} + {{/vars}} + </div> <!-- field-items --> + </div> + {{/model}} + {{/models}} + </body> +</html> diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/pathParam.mustache b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/pathParam.mustache new file mode 100644 index 0000000..fa512bf --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/pathParam.mustache @@ -0,0 +1,3 @@ +{{#is this 'path-param'}}<div class="param">{{baseName}} {{^required}}(optional){{/required}}{{#required}}(required){{/required}}</div> + + <div class="param-desc"><span class="param-type">Path Parameter</span> — {{unescapedDescription}} {{#defaultValue}}default: {{{defaultValue}}} {{/defaultValue}}{{#dataFormat}}format: {{{dataFormat}}}{{/dataFormat}}</div>{{/is}} \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/queryParam.mustache b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/queryParam.mustache new file mode 100644 index 0000000..ee9f48a --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/queryParam.mustache @@ -0,0 +1,3 @@ +{{#is this 'query-param'}}<div class="param">{{baseName}} {{^required}}(optional){{/required}}{{#required}}(required){{/required}}</div> + + <div class="param-desc"><span class="param-type">Query Parameter</span> — {{unescapedDescription}} {{#defaultValue}}default: {{{defaultValue}}} {{/defaultValue}}{{#dataFormat}}format: {{{dataFormat}}}{{/dataFormat}}</div>{{/is}} \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/style.css.mustache b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/style.css.mustache new file mode 100644 index 0000000..04eccf6 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/resources/templates/style.css.mustache @@ -0,0 +1,172 @@ +body { + font-family: Trebuchet MS, sans-serif; + font-size: 15px; + color: #444; + margin-right: 24px; +} + +h1 { + font-size: 25px; +} +h2 { + font-size: 20px; +} +h3 { + font-size: 16px; + font-weight: bold; +} +hr { + height: 1px; + border: 0; + color: #ddd; + background-color: #ddd; +} + +.app-desc { + clear: both; + margin-left: 20px; +} +.param-name { + width: 100%; +} +.license-info { + margin-left: 20px; +} + +.license-url { + margin-left: 20px; +} + +.model { + margin: 0 0 0px 20px; +} + +.method { + margin-left: 20px; +} + +.method-notes { + margin: 10px 0 20px 0; + font-size: 90%; + color: #555; +} + +pre { + padding: 10px; + margin-bottom: 2px; +} + +.http-method { + text-transform: uppercase; +} + +pre.get { + background-color: #0f6ab4; +} + +pre.post { + background-color: #10a54a; +} + +pre.put { + background-color: #c5862b; +} + +pre.delete { + background-color: #a41e22; +} + +.huge { + color: #fff; +} + +pre.example { + background-color: #f3f3f3; + padding: 10px; + border: 1px solid #ddd; +} + +code { + white-space: pre; +} + +.nickname { + font-weight: bold; +} + +.method-path { + font-size: 1.5em; + background-color: #0f6ab4; +} + +.up { + float:right; +} + +.parameter { + width: 500px; +} + +.param { + width: 500px; + padding: 10px 0 0 20px; + font-weight: bold; +} + +.param-desc { + width: 700px; + padding: 0 0 0 20px; + color: #777; +} + +.param-type { + font-style: italic; +} + +.param-enum-header { +width: 700px; +padding: 0 0 0 60px; +color: #777; +font-weight: bold; +} + +.param-enum { +width: 700px; +padding: 0 0 0 80px; +color: #777; +font-style: italic; +} + +.field-label { + padding: 0; + margin: 0; + clear: both; +} + +.field-items { + padding: 0 0 15px 0; + margin-bottom: 15px; +} + +.return-type { + clear: both; + padding-bottom: 10px; +} + +.param-header { + font-weight: bold; +} + +.method-tags { + text-align: right; +} + +.method-tag { + background: none repeat scroll 0% 0% #24A600; + border-radius: 3px; + padding: 2px 10px; + margin: 2px; + color: #FFF; + display: inline-block; + text-decoration: none; +} diff --git a/status-dep.txt b/status-dep.txt index a806a43..1651bec 100644 --- a/status-dep.txt +++ b/status-dep.txt @@ -4,40 +4,31 @@ archiva-modules archiva-base - archiva-common - archiva-storage-api - archiva-storage-fs - archiva-filelock - archiva-model archiva-checksum - archiva-policies + archiva-common archiva-configuration - archiva-repository-api - archiva-xml-tools - archiva-repository-layer - archiva-proxy-api - archiva-proxy - archiva-repository-scanner - archiva-security-common archiva-consumers archiva-consumers-api + archiva-consumer-archetype archiva-core-consumers + archiva-lucene-consumer archiva-metadata-consumer archiva-signature-consumer - archiva-lucene-consumer - archiva-consumer-archetype + archiva-filelock + archiva-model + archiva-policies + archiva-proxy + archiva-proxy-api + archiva-repository-api archiva-repository-admin archiva-repository-admin-api archiva-repository-admin-default - archiva-scheduler - archiva-scheduler-api - archiva-scheduler-repository-api - archiva-scheduler-repository - archiva-scheduler-indexer - metadata - metadata-statistics-api - metadata-repository-api - metadata-model + archiva-repository-layer + archiva-repository-scanner + archiva-security-common + archiva-storage-api + archiva-storage-fs + archiva-xml-tools archiva-maven archiva-maven-common archiva-maven-model @@ -47,15 +38,25 @@ archiva-modules archiva-maven-indexer archiva-maven-repository archiva-maven-scheduler + archiva-scheduler + archiva-scheduler-api + archiva-scheduler-indexer + archiva-scheduler-repository-api + archiva-scheduler-repository + metadata + metadata-model + metadata-repository-api + metadata-statistics-api + test-repository plugins + audit generic-metadata-support + metadata-store-cassandra + metadata-store-file metadata-store-jcr + problem-reports repository-statistics stage-repository-merge - metadata-store-file - audit - problem-reports - metadata-store-cassandra
