Giter VIP home page Giter VIP logo

strongbox's Introduction

Master Build Status Master Build Tests RocketChat.Community.Channel License Help Contribute to Open Source GitHub issues by-label GitHub issues by-label GitHub issues by-label GitHub issues by-label

Welcome to the Strongbox artifact repository manager's home.

General

Strongbox is a modern OSS artifact repository manager. With a well-developed architecture, it provides native implementations for various layout formats, such as Maven, NPM, NuGet, and Raw.

All of the implemented layout formats (a.k.a. "layout providers") are written natively in Java. Our goal is to implement a universal repository manager that can host and serve artifacts in every mainstream format.

Strongbox has a search engine and an Artifact Query Language.

What's in the works

  • Working on migrating from OrientDB to JanusGraph (#1649).
  • Adding support for JDK11 (#1111, #1775). We only support JDK8 in the master. The work for this is based off the issues/1649 branch.
  • Thorough Maven dependency and plugin upgrade (against the master).

Documentation

You can find our documentation here.

Requirements

  • Java 1.8.x (we do not currently support higher versions)
  • Maven 3.5.4 (or higher)

Building

Instructions on how to build the code, can be found here.

Download

Strongbox is available in the following formats:

Other release could be downloaded from here.

Installation

Please check here for detailed instruction on how to install and setup up Strongbox on the supported platforms.

Contributing

Contributions and contributors are always welcome! For more details on how to contribute, please check here. We are also looking for people who would like to test our code and help improve our documentation!

We have a helpful community of developers on our chat channel, so, please feel free to drop by, if you have questions, issues, or would like to contribute!

We need your help to make Strongbox better! Please, have a look at issues with these labels, if you'd like to get started with our project:

GitHub issues by-label GitHub issues by-label GitHub issues by-label

Hackfests

We would like to welcome everybody interested in participating in hackathons and hackfests to join our project and try to contribute.

We'd like to invite you to:

Sponsors

We'd also like to thank our sponsors for generously providing us with licenses for our opensource initiative!

JProfiler generously supports Strongbox with its full-featured Java Profiler that provides ways to investigate bottlenecks, memory leaks, CPU loads, threading and performance issues.

YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler, YourKit .NET Profiler and YourKit YouMonitor.

strongbox's People

Contributors

adavid9 avatar amsiddiqui avatar anki2189 avatar baisjuan avatar bogdansukonnov avatar bremys avatar carlspring avatar cbrianhill avatar dinesh19aug avatar evrimnurcelik avatar firstmol avatar fuss86 avatar grantfar avatar ivanursul avatar kalski avatar kate-novik avatar leifbrooks avatar m-podhajski avatar mkuligowski avatar mpoznyak avatar mslowiak avatar nikolaus2 avatar ptirador avatar pyashwanthkumar avatar sanket407 avatar sbespalov avatar steve-todorov avatar whalenda avatar wpater avatar yugander-krishan-singh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

strongbox's Issues

Fix the deprecation warnings in the strongbox-storage-maven-layout-provider

The following warning can be seen in the strongbox-storage-maven-layout-provider:

[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ strongbox-storage-maven-layout-provider ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 55 source files to /java/opensource/carlspring/strongbox/strongbox-storage/strongbox-storage-layout-providers/strongbox-storage-maven-layout-provider/target/classes
[INFO] /java/opensource/carlspring/strongbox/strongbox-storage/strongbox-storage-layout-providers/strongbox-storage-maven-layout-provider/src/main/java/org/carlspring/strongbox/storage/indexing/RepositoryIndexer.java: /java/opensource/carlspring/strongbox/strongbox-storage/strongbox-storage-layout-providers/strongbox-storage-maven-layout-provider/src/main/java/org/carlspring/strongbox/storage/indexing/RepositoryIndexer.java uses or overrides a deprecated API.
[INFO] /java/opensource/carlspring/strongbox/strongbox-storage/strongbox-storage-layout-providers/strongbox-storage-maven-layout-provider/src/main/java/org/carlspring/strongbox/storage/indexing/RepositoryIndexer.java: Recompile with -Xlint:deprecation for details.
[INFO] -------------------------------------------------------------

This needs to be investigated and resolved.

Add a configurable artifact coordinates validator

Task Description

In continuation of the work done or Maven artifact coordinate validators (#365 and #366, work done by @dinesh19aug) and in relation to #332, we should make it possible to define additional artifact coordinate validators. The ones implemented in #332 (by @fuss86) only cover version validation and artifact deployment/redeployment.

We now need to somehow be able to specify these non-default validators.

As a consequence of this work, we may have to do some refactoring. (This could be done in a follow-up issue as well).

This should be configurable via the strongbox.yaml file.

Task Relationships

This task:

Help

When uploading a checksum file for a Maven artifact, add the checksums to the index

The Maven 2.0 layout provider uses the Maven Indexer, in addition to OrientDB as it's place for storing useful information about the artifacts.

We need to be able to keep a record of the checksum files in the local Maven Index.

What needs to be done:

  • Make sure that checksums are added to the Lucene (Maven Indexer) local index
  • Make it possible to use the MavenIndexerSearchProvider to search by class
  • Implement test cases
    • Generate a test jar with an md5 and sha checksum (via your tests)
    • Add the artifact and checksums to the Maven Indexer local index
    • Execute a search by checksum against the local Maven Indexer and assert there are results which match the criteria

The code for this will have to be placed under the strongbox/strongbox-storage/strongbox-storage-providers/strongbox-maven-layout-provider module.

Notes:

  • Don't add checksums for maven-metadata.xml files

See also:

This issue is similar to #427.

Implement a Spring controller that returns the list of files and directories in a path as JSON

Description

We need a new Spring controller to be implemented that returns a JSON representation of the contents of a path.

  • The controller should:
    • Be called BrowsingController
    • Be placed in the strongbox-web-core under the org.carlspring.strongbox.controllers
  • The web resource path should be /browse/{storageId}/{repository}/{path}.
  • The returned results must be sorted

Examples

Listing all the storages

curl -H "Accept: application/json" -X GET http://localhost:48080/browse/

Expected JSON response

{
    'storages': [
      'storage0',
      'storage1',
      'storage2'
      ....
    ]
}

Listing all the repositories in storage

curl -H "Accept: application/json" -X GET http://localhost:48080/browse/storage0/

Expected JSON response

{
    'repositories': [
      'releases',
      'snapshots',
      ....
    ]
}

Listing the contents of a repository

curl -H "Accept: application/json" -X GET http://localhost:48080/browse/storage0/releases/

Expected JSON response

{
    'directories': [
        // any directories found in /storage0/releases/* (depth level 1) without trailing slash
        // if none are found, this should be an empty array.
        'com',
        'org',
        ....
    ],
    'files': [
        // and any files in /storage0/releases/* (depth level 1)
        // if none are found, this should be an empty array.
        'maven-metadata.xml',
        'maven-metadata.xml.md5',
        'maven-metadata.xml.sha1',
        ...
    ]
}

Listing the contents of a path in a repository

curl -H "Accept: application/json" -X GET http://localhost:48080/browse/storage0/releases/org/apache/maven/

Expected JSON response:

{
    'directories': [
        // any directories found in /storage0/releases/org/apache/maven/* (depth level 1) without trailing slash
        // if none are found, this should be an empty array.
        '3.5.1',
        '3.5.2',
        '3.5.3',
        ....
    ],
    'files': [
        // and any files in /storage0/releases/org/apache/maven/* (depth level 1)
        // if none are found, this should be an empty array.
        'maven-metadata.xml',
        'maven-metadata.xml.md5',
        'maven-metadata.xml.sha1',
        ...
    ]
}

Implement HEAD requests support for artifacts for proxied repositories

We need to be able to respond to HTTP HEAD requests issued against the org.carlspring.strongbox.controllers.maven.MavenArtifactController and org.carlspring.strongbox.controllers.nuget.NugetPackageController classes.

This task should only cover the implementation for HEAD requests against proxy repositories.

Possible headers to return:

  • Content-Length
  • Checksum-MD5
  • Checksum-SHA1
  • Creation-Date
  • Last-Updated

This following needs to be implement:

  • If the artifact is cached, get the date from the cache
  • If the artifact needs to be resolved from the remote, download it first and then send the HEAD response

Also, as suggested by @fuss86, we need to add the same headers to the GET requests.

This task is similar to #372 .

Implement HEAD requests support for artifacts for hosted repositories

We need to be able to respond to HTTP HEAD requests issued against the org.carlspring.strongbox.controllers.maven.MavenArtifactController and org.carlspring.strongbox.controllers.nuget.NugetPackageController classes.

This task should only cover the implementation for HEAD requests against hosted repositories.

Possible headers to return:

  • Content-Length
  • Checksum-MD5
  • Checksum-SHA1
  • Creation-Date
  • Last-Updated

Also, as suggested by @fuss86, we need to add the same headers to the GET requests.

This task relates to #471 and #472.

Upgrade the version of Jetty to >= 9.4.8.v20171121

We need to upgrade to the latest version of Jetty.

Make sure that:

  • The project still builds
  • The tests are still passing

The version is controlled via the strongbox-parent/pom.xml.

The webapp can be executed using:

mvn clean install
cd strongbox-web-core
mvn clean package -Pjetty-block

If Jetty is starting the webapp correctly, then things should be alright. To test things, try accessing:
http://localhost:48080/configuration/strongbox/xml with admin/password -- an XML with the configuration of the server should be presented, upon successful login.

Create integration tests that resolve artifacts from Strongbox using Gradle

We need to add integration tests (in the strongbox-web-integration-tests project) that resolve and deploy artifacts using Gradle.

There's a "Hello, World!" application that we've already created for illustrating how to configure Gradle to work with Strongbox.

The tests should be invoked in a similar way to how they're currently being invoked for NuGet -- using Groovy scripts. There should be a Maven profile similar to the one for NuGet (check the one with<id>run-nuget-it-tests</id> for an example).

The test case must cover at least the following:

  • Resolve dependencies
  • Deploy an artifact

Please, note that the work for this will have to be done in a different project -- strongbox-web-integration-tests.

This issue relates to #432 and #430.

Upgrade org.quartz-scheduler:quartz to >= 2.3.0

We need to upgrade to the latest version of quartz.

Make sure that:

  • The project still builds
  • The tests are still passing

The version is controlled via the strongbox-parent/pom.xml.

The cron task tests which use Quartz can be executed using:

mvn clean install -Dintegration.tests

These must all be passing successfully. For more information on the cron tasks, check here.

Fix error 500 response when calling the REST API for a non-existing artifact in a non-existing directory in a Maven repository

Refactor the port management code in ConfigurationManagementController

The port management code located in org.carlspring.strongbox.controllers.ConfigurationManagementController is not exactly working as expected. We need to have the following changes made:

  1. GET /configuration/strongbox/port - needs to return in JSON the following output:

    {
        "port": 12345 // or whatever the actual port is
    }
    
  2. PUT /configuration/strongbox/port - (new endpoint) which should require the following JSON body to be submitted:

    {
        "port": 48081 // or whatever the new port is
    }
    
  3. PUT /configuration/strongbox/port/{port} - has to respond with Status 200 and plain text body OK when the operation has been successful and Status 500 and plain text body FAILED if something has gone wrong. This will make the life of people using scripts a lot easier than having to actually parse the response of curl and monitor the status code.

Create integration tests that resolve artifacts from Strongbox using NPM

We need to add integration tests (in the strongbox-web-integration-tests project) that resolve and deploy artifacts using NPM.

There's a "Hello, World!" application that we've already created for illustrating how to configure NPM to work with Strongbox.

The tests should be invoked in a similar way to how they're currently being invoked for NuGet -- using Groovy scripts. There should be a Maven profile similar to the one for NuGet (check the one with<id>run-nuget-it-tests</id> for an example).

The test case must cover at least the following:

  • Resolve dependencies
  • Deploy an artifact

We need something along the same lines implemented for NPM.

Please, note that the work for this will have to be done in a different project -- strongbox-web-integration-tests.

This issue relates to #430, #431 and #432.

Extract the code for the ranged requests into a set of methods in the BaseArtifactController and make the implementation generic enough to be able to serve all layout provider controllers

At the moment, the logic for this exists only in the MavenArtifactController. The code for this needs to be extracted into the BaseArtifactController and made more re-usable. The respective layout provider implementations of the controllers should then use these methods as required, to avoid duplication.

This task is similar to #446.

The Maven Indexes are being downloaded to the java.io.tmpdir, instead of the respective repository's .temp dir

The maven indexes are currently being downloaded to the java.io.tmpdir. This is incorrect. Each repository has a .temp directory in it's base directory. If all of the indexes that have been downloaded temporarily to the java.io.tmpdir are all just spewed there, it becomes a mess and it's hard to figure out which of them belongs to which repository.

Once the remote index has been downloaded and updates/merged, these temporary files should probably be removed from the .temp directory.

Fix error 500 response when calling the REST API for an invalid artifact in an existing directory in a Maven repository

Refactor UserController to return proper JSON messages upon successful/failed action

Refactor org.carlspring.strongbox.controllers.users.UserController (located in strongbox-web-core) so that it returns JSON messages upon successful/failed actions with the appropriate messages as follows:

  1. If an action is successful we need to return the following JSON:

    {
        "message": "User successfully updated / deleted / etc"
    }
    
  2. If the action has failed we need to return an error message that describes what's wrong:

    {
        "message": "A user with this username already exists! Please enter another username. / etc"
    }
    

Implement a validator which only accepts lowercase groupId-s

This validator should be applicable for Maven repositories. It should check that the groupId component of the path is lowercase.

For more information, check the strongbox-storage-api module under the org.carlspring.strongbox.storage.validation package.

This task is similar to #365.

Fix error 500 response when calling the REST API for a non-existing directory in a Maven repository

Implement a validator which only accepts lowercase artifactId-s

This validator should be applicable for Maven repositories. It should check that the artifactId component of the path is lowercase.

For more information, check the strongbox-storage-api module under the org.carlspring.strongbox.storage.validation package.

This task is similar to #366.

Extract the code for the directory browsing into a set of methods in the BaseArtifactController and make the implementation generic enough to be able to serve all layout providers

At the moment, the logic for this exists only in the MavenArtifactController. The code for this needs to be extracted into the BaseArtifactController and made more re-usable. The respective layout provider implementations of the controllers should then use these methods as required, to avoid duplication.

This task is similar to #447 .

Relates to #418, #419, #420.

Remove the copying of Spring resource to strongbox/META-INF/spring

In the past, we used to have Spring context XML files across the modules. Since we migrated everything to annotation-based configuration, there are no longer such files, (except for one in the META-INF/spring/strongbox-web-context.xml, which should be unaffected by this change).

We need all the occurrences of META-INF/spring/** to be removed from all executions of the maven-dependency-plugin in pom.xml files.

For example:

<includes>etc/conf/strongbox.xml,META-INF/spring/**</includes>

Should be:

<includes>etc/conf/strongbox.xml</includes>

Once these have been removed, build:

... and make sure both build with properly running tests.

Build the projects below by executing mvn clean install:

... and make sure that the produced assembly in the strongbox-assembly/strongbox-distribution can run Strongbox properly (have a look at this page and try accessing http://localhost:48080/configuration/strongbox/xml using admin/password as credentials). Make sure there are no apparent issues.

Apply any required further changes.

Merge the NugetHierarchicalArtifactCoordinates into the NugetArtifactCoordinates and carry out minor refactoring

Initially, we thought we would have more than one implementation of a layout provider for NuGet.

  • The code from NugetHierarchicalArtifactCoordinates class needs to be merged into the NugetArtifactCoordinates class.
  • The NugetHierarchicalArtifactCoordinates needs to be removed. All classes using it, should be changed to use the NugetArtifactCoordinates class instead.
  • Replace all Nuget Hierarchical strings to NuGet.

Figure out artifact extensions using Apache Tika

We need to be able to figure out the extensions of artifact files. It seems that Apache Tika is one way to do this. Doing a simple path.subString(path.lastIndexOf(File.separatorChar), path.length)) is not good enough, because there are certain extensions that are more complex like for example tar.gz, tar.bz2 and the likes.

This will probably have to be implemented in the LayoutProvider implementations.

When an artifact has been deployed, or requested via a proxy repository, the parent directory(ies) of the temporary file is not removed on successful download

Description

When an artifact is being deployed, or downloaded, the temporary file is stored under:

strongbox-vault/storages/${storageId}/${repositoryId}/.temp/

with the respective path of the artifact (for example: org/foo/bar/1.2.3/bar/....

When the artifact has successfully finished being written (regardless of whether this is a deploy, or resolve operation) and the file has been moved under the proper place under the repository's directory (strongbox-vault/storages/${storageId}/${repositoryId}/org/foo/bar/blah-1.2.3/blah... (this is an approximation, as the actual file name is a timestamp)), the parent directory gets left behind lying around empty under the .temp directory.

Please, note that nothing outside the .temp directory should be removed.

How to fix

Once the artifact has been successfully moved to the proper location under the repository, the respective parent directories up until a level that contains only empty directories must be removed. For example, if the path in the .temp/ directory to the artifact was com/foo/bar/1.2.3/bar-1.2.3.jar and there are com/blah/2.2.1/blah-2.2.1.jar and an empty directory com/foo/bar/1.2.3/ (with no files in any of the subdirectories under com/foo), the com/foo/bar/1.2.3/ path should be removed up until com and the com/blah/2.2.1/blah-2.2.1.jar should be skipped.

Steps to reproduce

Rough steps to reproduce this:

  1. Option 1 for reproducing (deploying an artifact):
    1.1 Build strongbox with mvn clean install (you can add -DskipTests, if you like)
    1.2 cd strongbox-web-core && mvn clean package -Pjetty-block
    1.3. Use the hello-strongbox-maven example project (and the instructions there on how to deploy an artifact to Strongbox)
    1.4. Check the strongbox-vault/storages/${storageId}/${repositoryId}/.temp/
  2. Option 2 for reproducing (using Strongbox as a proxy repository):
    2.1. Use the following settings.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<settings>

    <localRepository>/home/carlspring/.m2/repository-strongbox</localRepository>

    <mirrors>
        <mirror>
            <id>strongbox</id>
            <name>strongbox</name>
            <url>http://localhost:48080/storages/public/public-group/</url>
            <!-- Or try: -->
            <!--url>http://localhost:48080/storages/storage-common-proxies/maven-central/</url-->
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>

    <profiles>
        <profile>
            <id>carlspring-repositories</id>

            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>

            <repositories>
                <repository>
                    <id>strongbox</id>
                    <name>strongbox</name>
                    <url>http://localhost:48080/storages/public/public-group/</url>
                    <layout>default</layout>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>strongbox</id>
                    <name>strongbox</name>
                    <url>http://localhost:48080/storages/public/public-group/</url>
                    <!--url>http://localhost:48080/storages/storage-common-proxies/maven-central/</url-->
                    <layout>default</layout>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
</settings>

2.2. Try building Strongbox (or one of it's modules) against this running instance
2.3. Check under strongbox/strongbox-web-core/target/strongbox-vault/storages/"storage-common-proxies/ (or strongbox/strongbox-web-core/target/strongbox-vault/storages/storage-common-proxies/storage-common-proxies/maven-central, depending on what you chose).

When uploading a new Maven artifact, if it's an archive (jar, war, zip, etc) add it's classes to the index

The Maven 2.0 layout provider uses the Maven Indexer, in addition to OrientDB as it's place for storing useful information about the artifacts.

We need to be able to keep a record of the .class files discovered in the common Maven archive formats (jar, war, etc).

What needs to be done:

  • Make sure classes are added to the Lucene (Maven Indexer) local index
  • Make it possible to use the MavenIndexerSearchProvider to search by class
  • Implement test cases
    • Generate a test jar with several class files on it (via your tests)
    • Add the artifact to the Maven Indexer local index
    • Search for the class and assert there are results which match the criteria

The code for this will have to be placed under the strongbox/strongbox-storage/strongbox-storage-providers/strongbox-maven-layout-provider module.

See also:

Update jetty to version >= 9.4.7.v20170914

We need to upgrade to the latest version of Jetty.

Make sure that:

  • The project still builds
  • The tests are still passing
  • The version is controlled via the strongbox-parent/pom.xml.

The webapp can be executed using:

mvn clean install
cd strongbox-web-core
mvn clean package -Pjetty-block

If Jetty is starting the webapp correctly, then things should be alright. To test things, try accessing:
http://localhost:48080/configuration/strongbox/xml with admin/password -- an XML with the configuration of the server should be presented, upon successful login.

Note : Jetty 9.4.7 and 9.4.8 builds the web app correctly. The tests pass too. The issue is that the Jetty server does not start at the end for deploying web app. Note that jetty v9.4.8 requires maven 3.5.0.

Upgrade the logging dependencies to the latest

We need to upgrade the versions of the following dependencies to their latest compatible versions:

  • org.slf4j:jcl-over-slf4j:${version.jcl}
  • org.slf4j:jul-to-slf4j:${version.jcl}
  • ch.qos.logback:logback-core:${version.logback}
  • ch.qos.logback:logback-classic:${version.logback}

Make sure that:

  • The project still builds
  • The tests are still passing

The version is controlled via the strongbox-parent/pom.xml.

Upgrade org.springframework:* to >= 5.0.2.RELEASE

Upgrade the standard Spring dependencies to >= 5.0.2.RELEASE.

Make sure that:

  • The project still builds
  • The tests are still passing

The version is controlled via the strongbox-parent/pom.xml.

(This should not include the spring-data and spring-security-* ones).

Implement HEAD requests support for artifacts for group repositories

We need to be able to respond to HTTP HEAD requests issued against the org.carlspring.strongbox.controllers.maven.MavenArtifactController and org.carlspring.strongbox.controllers.nuget.NugetPackageController classes.

This task should only cover the implementation for HEAD requests against group repositories.

Possible headers to return:

  • Content-Length
  • Checksum-MD5
  • Checksum-SHA1
  • Creation-Date
  • Last-Updated

The following needs to be implement for group repositories:

  • If the artifact can be resolved from one of the hosted repositories, get it from there
  • For artifacts that are in a group repository that resolves them via a proxy:
    • If the artifact is cached, get the date from the cache
    • If the artifact needs to be resolved from the remote, download it first and then send the response

Also, as suggested by @fuss86, we need to add the same headers to the GET requests.

This task relates to #372 and #471.

Get the maven plugin's prefix properly when generating metadata

This needs to be addressed properly, as it's not correct.
This can be obtained from the jar's META-INF/maven/plugin.xml and could be read via a ZipInputStream.

For more details, please check org.carlspring.strongbox.storage.metadata.MetadataMerger.updateMetadataAtGroupLevel().

Implement a method that returns all the repositories with a given layout

We need a method that could return a list of Repository objects that are of a specified layout format. The method should be implemented in the ConfigurationManagementService class (+implementation).

The method should be called getRepositoriesWithLayout(String storageId, String layout). If the storageId is null, search all storages.

A small test should also be provided.

Create integration tests that resolve artifacts from Strongbox using Ant+Ivy

We need to add integration tests (in the strongbox-web-integration-tests project) that resolve and deploy artifacts using Ant+Ivy.

There's a "Hello, World!" application that we've already created for illustrating how to configure Ant+Ivy to work with Strongbox.

The tests should be invoked in a similar way to how they're currently being invoked for NuGet -- using Groovy scripts. There should be a Maven profile similar to the one for NuGet (check the one with<id>run-nuget-it-tests</id> for an example).

The test case must cover at least the following:

  • Resolve dependencies
  • Deploy an artifact

Please, note that the work for this will have to be done in a different project -- strongbox-web-integration-tests.

This issue relates to #431 and #432.

Create integration tests that resolve artifacts from Strongbox using SBT

We need to add integration tests (in the strongbox-web-integration-tests project) that resolve and deploy artifacts using SBT.

There's a "Hello, World!" application that we've already created for illustrating how to configure SBT to work with Strongbox.

The tests should be invoked in a similar way to how they're currently being invoked for NuGet -- using Groovy scripts. There should be a Maven profile similar to the one for NuGet (check the one with<id>run-nuget-it-tests</id> for an example).

The test case must cover at least the following:

  • Resolve dependencies
  • Deploy an artifact

We need something along the same lines implemented for SBT.

Please, note that the work for this will have to be done in a different project -- strongbox-web-integration-tests.

This issue relates to #431 and #430.

Implement a Spring controller that displays the environment variables and properties

Description

We need a new Spring controller to be implemented that returns a list of the environment variables and system properties used to launch the application.

  • The controller should:
    • Produce a JSON response
    • Have a /configuration/environment/info web resource path
    • Be called EnvironmentInfoController
    • Be placed in the strongbox-web-core under the org.carlspring.strongbox.controllers
    • Display the following info:
      • Environment variables used when starting the instance
      • System properties used when starting the instance
  • The returned results must be sorted
  • The resource must be secured with a @PreAuthorize("hasAuthority('ADMIN')")

We need a proper test case for this.

Listing all the environment variables and system properties

curl -H "Accept: application/json" -X GET http://localhost:48080/configuration/environment/info

Expected JSON response

{
  "environment": [
    {
      "name": "JAVA_HOME",
      "value": "/java/jdk1.8.0_151"
    },
    {
      "name": "M2_HOME",
      "value": "/java/apache/maven-3.3.9"
    }
    ......
  ],
  "system": [
    {
      "name": "logging.dir",
      "value": "/path/to/logs"
    },
    {
      "name": "java.io.tmpdir",
      "value": "/path/to/tmp"
    },
    ....
  ]
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.