From 7852d1034e8a2adaa897f21c7a7420a5118f70d9 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Mon, 1 Mar 2021 09:08:01 +0100 Subject: [PATCH] Fix build warnings (#1562) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Pfeuffer --- .../scm/ScmConstraintViolationException.java | 4 +- .../main/java/sonia/scm/ServletContainer.java | 4 +- .../sonia/scm/config/ScmConfiguration.java | 6 +- .../sonia/scm/filter/GZipFilterConfig.java | 2 +- .../sonia/scm/io/ScmObjectInputStream.java | 33 +-- .../sonia/scm/net/ahc/AdvancedHttpClient.java | 62 ++---- .../sonia/scm/net/ahc/ContentTransformer.java | 2 +- .../repository/AbstractRepositoryManager.java | 31 +-- .../main/java/sonia/scm/repository/Added.java | 4 +- .../java/sonia/scm/repository/Copied.java | 6 +- .../java/sonia/scm/repository/Modified.java | 4 +- .../java/sonia/scm/repository/Removed.java | 4 +- .../java/sonia/scm/repository/Renamed.java | 6 +- .../scm/repository/RepositoryHookEvent.java | 2 +- .../scm/repository/RepositoryManager.java | 2 +- .../repository/api/MergeCommandBuilder.java | 12 +- .../work/SimpleWorkingCopyFactory.java | 8 +- .../sonia/scm/security/SecuritySystem.java | 14 +- .../java/sonia/scm/store/ExportableStore.java | 2 +- .../main/java/sonia/scm/util/Archives.java | 2 +- .../resources/GitRepositoryConfigMapper.java | 2 + .../java/sonia/scm/repository/GitUtil.java | 2 +- .../repository/spi/SvnLookupCommandTest.java | 8 +- .../SimpleRepositoryHandlerTestBase.java | 4 +- .../client/api/RepositoryClientFactory.java | 106 ++-------- .../scm/repository/client/spi/AddCommand.java | 18 +- .../repository/client/spi/RemoveCommand.java | 18 +- .../v2/resources/ApiKeyToApiKeyDtoMapper.java | 2 + .../sonia/scm/api/v2/resources/BlameDto.java | 2 + .../BrowserResultToFileObjectDtoMapper.java | 1 + .../DefaultChangesetToChangesetDtoMapper.java | 2 + .../scm/api/v2/resources/DiffResultDto.java | 3 + .../v2/resources/GroupDtoToGroupMapper.java | 1 + .../v2/resources/IncomingRootResource.java | 12 +- .../NamespacePermissionResource.java | 8 +- .../scm/api/v2/resources/PluginDtoMapper.java | 8 + .../RepositoryDtoToRepositoryMapper.java | 2 + ...epositoryExportInformationToDtoMapper.java | 2 + ...positoryRoleToRepositoryRoleDtoMapper.java | 2 + .../RepositoryToRepositoryDtoMapper.java | 3 + ...asyViolationExceptionToErrorDtoMapper.java | 1 + ...ScmViolationExceptionToErrorDtoMapper.java | 1 + .../api/v2/resources/UserDtoToUserMapper.java | 3 +- .../sonia/scm/plugin/PluginsInternal.java | 89 +------- .../scm/security/DefaultSecuritySystem.java | 190 +++--------------- .../sonia/scm/template/MustacheTemplate.java | 54 +---- 46 files changed, 188 insertions(+), 566 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/ScmConstraintViolationException.java b/scm-core/src/main/java/sonia/scm/ScmConstraintViolationException.java index c6aebc05f6..02e69c12d9 100644 --- a/scm-core/src/main/java/sonia/scm/ScmConstraintViolationException.java +++ b/scm-core/src/main/java/sonia/scm/ScmConstraintViolationException.java @@ -39,10 +39,10 @@ import static java.util.Collections.unmodifiableCollection; * .doThrow() * .violation("name or alias must not be empty if not anonymous", "myParameter", "name") * .violation("name or alias must not be empty if not anonymous", "myParameter", "alias") - * .when(myParameter.getName() == null && myParameter.getAlias() == null && !myParameter.isAnonymous()) + * .when(myParameter.getName() == null && myParameter.getAlias() == null && !myParameter.isAnonymous()) * .andThrow() * .violation("name must be empty if anonymous", "myParameter", "name") - * .when(myParameter.getName() != null && myParameter.isAnonymous()); + * .when(myParameter.getName() != null && myParameter.isAnonymous()); * * Mind that using this way you do not have to use if-else constructs. */ diff --git a/scm-core/src/main/java/sonia/scm/ServletContainer.java b/scm-core/src/main/java/sonia/scm/ServletContainer.java index 84fded9da7..57a671f283 100644 --- a/scm-core/src/main/java/sonia/scm/ServletContainer.java +++ b/scm-core/src/main/java/sonia/scm/ServletContainer.java @@ -32,9 +32,9 @@ package sonia.scm; public enum ServletContainer { SCM_SERVER, - /** Jetty version <= 6 */ + /** Jetty version <= 6 */ JETTY, - /** Jetty version >= 7 */ + /** Jetty version >= 7 */ ECLIPSE_JETTY, TOMCAT, GLASSFISH, diff --git a/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java b/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java index 910fec675c..f719a3f951 100644 --- a/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java +++ b/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java @@ -207,8 +207,7 @@ public class ScmConfiguration implements Configuration { private String mailDomainName = DEFAULT_MAIL_DOMAIN_NAME; /** - * Calls the {@link sonia.scm.ConfigChangedListener#configChanged(Object)} - * method of all registered listeners. + * Fires the {@link ScmConfigurationChangedEvent}. */ public void fireChangeEvent() { if (logger.isDebugEnabled()) { @@ -294,7 +293,7 @@ public class ScmConfiguration implements Configuration { *
  • os = Operation System
  • *
  • arch = Architecture
  • * - * For example http://plugins.scm-manager.org/scm-plugin-backend/api/{version}/plugins?os={os}&arch={arch}&snapshot=false + * For example `http://plugins.scm-manager.org/scm-plugin-backend/api/{version}/plugins?os={os}&arch={arch}&snapshot=false` * * @return the complete plugin url. */ @@ -313,6 +312,7 @@ public class ScmConfiguration implements Configuration { /** * Returns the mail domain, that will be used to create e-mail addresses for users without one whenever one is required. + * * @return default mail domain * @since 2.8.0 */ diff --git a/scm-core/src/main/java/sonia/scm/filter/GZipFilterConfig.java b/scm-core/src/main/java/sonia/scm/filter/GZipFilterConfig.java index ec7e150ce1..eaa51da4ca 100644 --- a/scm-core/src/main/java/sonia/scm/filter/GZipFilterConfig.java +++ b/scm-core/src/main/java/sonia/scm/filter/GZipFilterConfig.java @@ -25,7 +25,7 @@ package sonia.scm.filter; /** - * Configuration for the {@link GZipFilter}. + * Configuration for the {@link GZipResponseFilter}. * * @author Sebastian Sdorra * @since 1.16 diff --git a/scm-core/src/main/java/sonia/scm/io/ScmObjectInputStream.java b/scm-core/src/main/java/sonia/scm/io/ScmObjectInputStream.java index 156d49dd77..9d9fefacb6 100644 --- a/scm-core/src/main/java/sonia/scm/io/ScmObjectInputStream.java +++ b/scm-core/src/main/java/sonia/scm/io/ScmObjectInputStream.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.io; //~--- non-JDK imports -------------------------------------------------------- @@ -37,14 +37,13 @@ import java.io.ObjectInputStream; import java.io.ObjectStreamClass; /** - * {@link ObjectInputStream} implementation which uses the context class loader + * {@link ObjectInputStream} implementation which uses the context class loader * to resolve classes. * * @author Sebastian Sdorra * @since 1.36 */ -public class ScmObjectInputStream extends ObjectInputStream -{ +public class ScmObjectInputStream extends ObjectInputStream { /** * the logger for ScmObjectInputStream @@ -54,11 +53,7 @@ public class ScmObjectInputStream extends ObjectInputStream //~--- constructors --------------------------------------------------------- - /** - * {@inheritDoc} - */ - public ScmObjectInputStream(InputStream stream) throws IOException - { + public ScmObjectInputStream(InputStream stream) throws IOException { super(stream); } @@ -69,23 +64,18 @@ public class ScmObjectInputStream extends ObjectInputStream */ @Override protected Class resolveClass(ObjectStreamClass desc) - throws IOException, ClassNotFoundException - { + throws IOException, ClassNotFoundException { Class clazz = null; ClassLoader classLoader = getClassLoader(); - try - { + try { clazz = classLoader.loadClass(desc.getName()); - } - catch (ClassNotFoundException ex) - { + } catch (ClassNotFoundException ex) { // do not log the exception, because the class // is mostly found by the parent method. } - if (clazz == null) - { + if (clazz == null) { clazz = super.resolveClass(desc); } @@ -99,15 +89,12 @@ public class ScmObjectInputStream extends ObjectInputStream * is not available the method will fall back to the class loader which has * load this class. * - * * @return context class loader or default class loader */ - private ClassLoader getClassLoader() - { + private ClassLoader getClassLoader() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - if (classLoader == null) - { + if (classLoader == null) { logger.debug("could not find context class loader, fall back to default"); classLoader = ScmObjectInputStream.class.getClassLoader(); } diff --git a/scm-core/src/main/java/sonia/scm/net/ahc/AdvancedHttpClient.java b/scm-core/src/main/java/sonia/scm/net/ahc/AdvancedHttpClient.java index 39e55f36e7..6c4e992b4a 100644 --- a/scm-core/src/main/java/sonia/scm/net/ahc/AdvancedHttpClient.java +++ b/scm-core/src/main/java/sonia/scm/net/ahc/AdvancedHttpClient.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.net.ahc; //~--- JDK imports ------------------------------------------------------------ @@ -29,9 +29,8 @@ package sonia.scm.net.ahc; import java.io.IOException; /** - * Advanced client for http operations. The {@link AdvancedHttpClient} replaces - * the much more simpler implementation {@link sonia.scm.net.HttpClient}. The - * {@link AdvancedHttpClient} offers a fluid interface for handling most common + * Advanced client for http operations.The {@link AdvancedHttpClient} offers + * a fluid interface for handling most common * http operations. The {@link AdvancedHttpClient} can be injected by the * default injection mechanism of SCM-Manager. *

     

    @@ -62,36 +61,30 @@ import java.io.IOException; * * * @author Sebastian Sdorra - * @since 1.46 - * * @apiviz.landmark + * @since 1.46 */ -public abstract class AdvancedHttpClient -{ +public abstract class AdvancedHttpClient { /** * Creates a {@link ContentTransformer} for the given Content-Type. * - * @param type object type + * @param type object type * @param contentType content-type - * @throws ContentTransformerNotFoundException if no - * {@link ContentTransformer} could be found for the content-type - * * @return {@link ContentTransformer} + * @throws ContentTransformerNotFoundException if no + * {@link ContentTransformer} could be found for the content-type */ protected abstract ContentTransformer createTransformer(Class type, - String contentType); + String contentType); /** * Executes the given request and returns the http response. Implementation * have to check, if the instance if from type * {@link AdvancedHttpRequestWithBody} in order to handle request contents. * - * * @param request request to execute - * * @return http response - * * @throws IOException */ protected abstract AdvancedHttpResponse request(BaseHttpRequest request) @@ -100,26 +93,20 @@ public abstract class AdvancedHttpClient /** * Returns a builder for a DELETE request. * - * * @param url request url - * * @return request builder */ - public AdvancedHttpRequestWithBody delete(String url) - { + public AdvancedHttpRequestWithBody delete(String url) { return new AdvancedHttpRequestWithBody(this, HttpMethod.DELETE, url); } /** * Returns a builder for a HEAD request. * - * * @param url request url - * * @return request builder */ - public AdvancedHttpRequest head(String url) - { + public AdvancedHttpRequest head(String url) { return new AdvancedHttpRequest(this, HttpMethod.HEAD, url); } @@ -128,53 +115,41 @@ public abstract class AdvancedHttpClient * every method is supported by the underlying implementation of the http * client. * - * * @param method http method - * @param url request url - * + * @param url request url * @return request builder */ - public AdvancedHttpRequestWithBody method(String method, String url) - { + public AdvancedHttpRequestWithBody method(String method, String url) { return new AdvancedHttpRequestWithBody(this, method, url); } /** * Returns a builder for a OPTIONS request. * - * * @param url request url - * * @return request builder */ - public AdvancedHttpRequestWithBody options(String url) - { + public AdvancedHttpRequestWithBody options(String url) { return new AdvancedHttpRequestWithBody(this, HttpMethod.OPTIONS, url); } /** * Returns a builder for a POST request. * - * * @param url request url - * * @return request builder */ - public AdvancedHttpRequestWithBody post(String url) - { + public AdvancedHttpRequestWithBody post(String url) { return new AdvancedHttpRequestWithBody(this, HttpMethod.POST, url); } /** * Returns a builder for a PUT request. * - * * @param url request url - * * @return request builder */ - public AdvancedHttpRequestWithBody put(String url) - { + public AdvancedHttpRequestWithBody put(String url) { return new AdvancedHttpRequestWithBody(this, HttpMethod.PUT, url); } @@ -183,13 +158,10 @@ public abstract class AdvancedHttpClient /** * Returns a builder for a GET request. * - * * @param url request url - * * @return request builder */ - public AdvancedHttpRequest get(String url) - { + public AdvancedHttpRequest get(String url) { return new AdvancedHttpRequest(this, HttpMethod.GET, url); } } diff --git a/scm-core/src/main/java/sonia/scm/net/ahc/ContentTransformer.java b/scm-core/src/main/java/sonia/scm/net/ahc/ContentTransformer.java index e501352fae..2ea132d011 100644 --- a/scm-core/src/main/java/sonia/scm/net/ahc/ContentTransformer.java +++ b/scm-core/src/main/java/sonia/scm/net/ahc/ContentTransformer.java @@ -31,7 +31,7 @@ import sonia.scm.plugin.ExtensionPoint; * Transforms {@link ByteSource} content to an object and vice versa. This class * is an extension point, this means that plugins can define their own * {@link ContentTransformer} implementations by implementing the interface and - * annotate the implementation with the {@link sonia.scm.plugin.ext.Extension} + * annotate the implementation with the {@link sonia.scm.plugin.Extension} * annotation. * * @author Sebastian Sdorra diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java index 0d7463fd9d..96b60cfd82 100644 --- a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java +++ b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- @@ -37,19 +37,15 @@ import sonia.scm.util.AssertUtil; * * @author Sebastian Sdorra */ -public abstract class AbstractRepositoryManager implements RepositoryManager -{ +public abstract class AbstractRepositoryManager implements RepositoryManager { /** - * Sends a {@link RepositoryHookEvent} to each registered - * {@link RepositoryHook} and sends the {@link RepositoryHookEvent} to - * the {@link ScmEventBus}. + * Sends the {@link RepositoryHookEvent} to the {@link ScmEventBus}. * * @param event event to be fired */ @Override - public void fireHookEvent(RepositoryHookEvent event) - { + public void fireHookEvent(RepositoryHookEvent event) { AssertUtil.assertIsNotNull(event); AssertUtil.assertIsNotNull(event.getRepository()); AssertUtil.assertIsNotNull(event.getType()); @@ -64,13 +60,12 @@ public abstract class AbstractRepositoryManager implements RepositoryManager /** * Send a {@link RepositoryEvent} to the {@link ScmEventBus}. * - * @param event type of change event - * @param repository repository that has changed + * @param event type of change event + * @param repository repository that has changed * @param oldRepository old repository */ protected void fireEvent(HandlerEventType event, Repository repository, - Repository oldRepository) - { + Repository oldRepository) { ScmEventBus.getInstance().post(new RepositoryModificationEvent(event, repository, oldRepository)); } @@ -78,25 +73,21 @@ public abstract class AbstractRepositoryManager implements RepositoryManager /** * Send a {@link RepositoryEvent} to the {@link ScmEventBus}. * - * @param event type of change event + * @param event type of change event * @param repository repository that has changed */ - protected void fireEvent(HandlerEventType event, Repository repository) - { + protected void fireEvent(HandlerEventType event, Repository repository) { ScmEventBus.getInstance().post(new RepositoryEvent(event, repository)); } /** * Prepare a hook event before it is fired to the event system of SCM-Manager. * - * * @param event hook event - * @since 1.26 - * * @return + * @since 1.26 */ - protected RepositoryHookEvent prepareHookEvent(RepositoryHookEvent event) - { + protected RepositoryHookEvent prepareHookEvent(RepositoryHookEvent event) { return event; } } diff --git a/scm-core/src/main/java/sonia/scm/repository/Added.java b/scm-core/src/main/java/sonia/scm/repository/Added.java index c61c82fd03..94d6107e72 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Added.java +++ b/scm-core/src/main/java/sonia/scm/repository/Added.java @@ -24,6 +24,7 @@ package sonia.scm.repository; +import lombok.EqualsAndHashCode; import lombok.Value; import java.util.stream.Stream; @@ -31,8 +32,9 @@ import java.util.stream.Stream; import static java.util.stream.Stream.of; @Value +@EqualsAndHashCode(callSuper=false) public class Added extends Modification { - private final String path; + String path; @Override Stream getEffectedPaths() { diff --git a/scm-core/src/main/java/sonia/scm/repository/Copied.java b/scm-core/src/main/java/sonia/scm/repository/Copied.java index 45153cb91e..2ab8d8fd52 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Copied.java +++ b/scm-core/src/main/java/sonia/scm/repository/Copied.java @@ -24,6 +24,7 @@ package sonia.scm.repository; +import lombok.EqualsAndHashCode; import lombok.Value; import java.util.stream.Stream; @@ -31,9 +32,10 @@ import java.util.stream.Stream; import static java.util.stream.Stream.of; @Value +@EqualsAndHashCode(callSuper=false) public class Copied extends Modification { - private final String sourcePath; - private final String targetPath; + String sourcePath; + String targetPath; @Override Stream getEffectedPaths() { diff --git a/scm-core/src/main/java/sonia/scm/repository/Modified.java b/scm-core/src/main/java/sonia/scm/repository/Modified.java index 38f50ef2c0..095e06454a 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Modified.java +++ b/scm-core/src/main/java/sonia/scm/repository/Modified.java @@ -24,6 +24,7 @@ package sonia.scm.repository; +import lombok.EqualsAndHashCode; import lombok.Value; import java.util.stream.Stream; @@ -31,8 +32,9 @@ import java.util.stream.Stream; import static java.util.stream.Stream.of; @Value +@EqualsAndHashCode(callSuper=false) public class Modified extends Modification { - private final String path; + String path; @Override Stream getEffectedPaths() { diff --git a/scm-core/src/main/java/sonia/scm/repository/Removed.java b/scm-core/src/main/java/sonia/scm/repository/Removed.java index 4cc7ba8800..03d0d2d2af 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Removed.java +++ b/scm-core/src/main/java/sonia/scm/repository/Removed.java @@ -24,6 +24,7 @@ package sonia.scm.repository; +import lombok.EqualsAndHashCode; import lombok.Value; import java.util.stream.Stream; @@ -31,8 +32,9 @@ import java.util.stream.Stream; import static java.util.stream.Stream.of; @Value +@EqualsAndHashCode(callSuper=false) public class Removed extends Modification { - private final String path; + String path; @Override Stream getEffectedPaths() { diff --git a/scm-core/src/main/java/sonia/scm/repository/Renamed.java b/scm-core/src/main/java/sonia/scm/repository/Renamed.java index 3535b8bf9b..f58f7b5c34 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Renamed.java +++ b/scm-core/src/main/java/sonia/scm/repository/Renamed.java @@ -24,6 +24,7 @@ package sonia.scm.repository; +import lombok.EqualsAndHashCode; import lombok.Value; import java.util.stream.Stream; @@ -31,9 +32,10 @@ import java.util.stream.Stream; import static java.util.stream.Stream.of; @Value +@EqualsAndHashCode(callSuper=false) public class Renamed extends Modification { - private final String oldPath; - private final String newPath; + String oldPath; + String newPath; @Override Stream getEffectedPaths() { diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryHookEvent.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryHookEvent.java index 2202d6e777..a022832243 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryHookEvent.java +++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryHookEvent.java @@ -38,7 +38,7 @@ public class RepositoryHookEvent { /** - * Constructs a new {@link ExtendedRepositoryHookEvent}. + * Constructs a new {@link RepositoryHookEvent}. * * @param context context of current hook * @param repository diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java index b9b6212380..8adb523ce0 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java +++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java @@ -100,7 +100,7 @@ public interface RepositoryManager /** - * Creates a new repository and afterwards executes the logic from the {@param afterCreation}. + * Creates a new repository and afterwards executes the logic from the afterCreation. * * @param repository the repository to create * @param afterCreation consumer which is executed after the repository was created diff --git a/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandBuilder.java index 6cbf2caa8c..8fef421898 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandBuilder.java @@ -53,12 +53,12 @@ import java.util.Set; * * If the merge is successful, the result will look like this: *
    
    - *                            O    <- Merge result (new head of integration_branch)
    - *                            |\
    - *                            | \
    - *  old integration_branch -> O  O <- feature_branch
    - *                            |  |
    - *                            O  O
    + *                           O    <- Merge result (new head of integration_branch)
    + *                           |\
    + *                           | \
    + * old integration_branch -> O  O <- feature_branch
    + *                           |  |
    + *                           O  O
      * 
    * * To check whether they can be merged without conflicts beforehand do this: diff --git a/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java b/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java index 0905ce1081..a62869d740 100644 --- a/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java +++ b/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java @@ -41,18 +41,18 @@ import java.io.File; * implemented: * *
    - *
    {@link #initialize(C, File, String)}
    + *
    {@link SimpleWorkingCopyFactory#initialize(C, File, String)}
    *
    Creates a new clone of the repository for the given context in the given * directory with the given branch checked out (if branches are supported).
    - *
    {@link #reclaim(C, File, String)}
    + *
    {@link SimpleWorkingCopyFactory#reclaim(C, File, String)}
    *
    Reclaim the working directory with a already checked out clone of the * repository given in the context, so that the directory is not modified in * respect to the repository and the given branch is checked out (if branches * are supported).
    - *
    {@link #closeWorkingCopy(W)}
    + *
    {@link SimpleWorkingCopyFactory#closeWorkingCopy(W)}
    *
    Closes resources allocated for the working copy, so that the directory can * be put to the cache. Will be called at the end of the operation.
    - *
    {@link #closeRepository(R)}
    + *
    {@link SimpleWorkingCopyFactory#closeRepository(R)}
    *
    Closes resources allocated for the central repository.
    *
    *
    diff --git a/scm-core/src/main/java/sonia/scm/security/SecuritySystem.java b/scm-core/src/main/java/sonia/scm/security/SecuritySystem.java index dafa149d8c..7f41b9785f 100644 --- a/scm-core/src/main/java/sonia/scm/security/SecuritySystem.java +++ b/scm-core/src/main/java/sonia/scm/security/SecuritySystem.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.security; import java.util.Collection; @@ -33,33 +33,25 @@ import java.util.function.Predicate; * @author Sebastian Sdorra * @since 1.31 */ -public interface SecuritySystem -{ +public interface SecuritySystem { /** * Store a new permission. * - * * @param permission permission to be stored - * - * @return stored permission */ void addPermission(AssignedPermission permission); /** * Delete stored permission. * - * * @param permission permission to be deleted */ void deletePermission(AssignedPermission permission); - //~--- get methods ---------------------------------------------------------- - /** * Return all available permissions. * - * * @return available permissions */ Collection getAvailablePermissions(); @@ -68,9 +60,7 @@ public interface SecuritySystem * Returns all stored permissions which are matched by the given * {@link Predicate}. * - * * @param predicate predicate to filter - * * @return filtered permissions */ Collection getPermissions(Predicate predicate); diff --git a/scm-core/src/main/java/sonia/scm/store/ExportableStore.java b/scm-core/src/main/java/sonia/scm/store/ExportableStore.java index 322377d7c8..1526d706a3 100644 --- a/scm-core/src/main/java/sonia/scm/store/ExportableStore.java +++ b/scm-core/src/main/java/sonia/scm/store/ExportableStore.java @@ -43,7 +43,7 @@ public interface ExportableStore { StoreEntryMetaData getMetaData(); /** - * Exports the data of this store to the given {@param exporter}. + * Exports the data of this store to the given exporter. */ void export(Exporter exporter) throws IOException; } diff --git a/scm-core/src/main/java/sonia/scm/util/Archives.java b/scm-core/src/main/java/sonia/scm/util/Archives.java index b69cf3a0cc..2e68597d88 100644 --- a/scm-core/src/main/java/sonia/scm/util/Archives.java +++ b/scm-core/src/main/java/sonia/scm/util/Archives.java @@ -72,7 +72,7 @@ public final class Archives { * Example: *
        *   Archives.addPathToTar(Paths.get("some/dir"), Files.newOutputStream("my.tar"))
    -   *     .filter(path -> !path.toString().endsWith("~"))
    +   *     .filter(path -> !path.toString().endsWith("~"))
        *     .run();
        * 
    * @param path The path containing the files to be added to the tar. diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/api/v2/resources/GitRepositoryConfigMapper.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/api/v2/resources/GitRepositoryConfigMapper.java index 5fe725ffc3..94f74902e8 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/api/v2/resources/GitRepositoryConfigMapper.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/api/v2/resources/GitRepositoryConfigMapper.java @@ -28,6 +28,7 @@ import de.otto.edison.hal.Links; import org.mapstruct.AfterMapping; import org.mapstruct.Context; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; import sonia.scm.repository.GitRepositoryConfig; import sonia.scm.repository.Repository; @@ -46,6 +47,7 @@ public abstract class GitRepositoryConfigMapper { @Inject private ScmPathInfoStore scmPathInfoStore; + @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes public abstract GitRepositoryConfigDto map(GitRepositoryConfig config, @Context Repository repository); public abstract GitRepositoryConfig map(GitRepositoryConfigDto dto); diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java index ba7733a5a4..0127b0f75a 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java @@ -496,7 +496,7 @@ public final class GitUtil { * Returns the name of the tag or {@code null} if the the ref is not a tag. * * @param refName ref name - * @return name of tag or {@link null} + * @return name of tag or null * @since 1.50 */ public static String getTagName(String refName) { diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java index df4fedae92..14004265bc 100644 --- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLookupCommandTest.java @@ -51,11 +51,11 @@ class SvnLookupCommandTest { @Test void shouldReturnEmptyOptional() { - LookupCommandRequest request = new LookupCommandRequest(); + LookupCommandRequest request = new LookupCommandRequest<>(); request.setType(String.class); request.setArgs(new String[]{"propget"}); - Optional result = command.lookup(request); + Optional result = command.lookup(request); assertThat(result).isNotPresent(); } @@ -66,11 +66,11 @@ class SvnLookupCommandTest { when(context.open()).thenReturn(svnRepository); when(svnRepository.getRepositoryUUID(true)).thenReturn(uuid); - LookupCommandRequest request = new LookupCommandRequest(); + LookupCommandRequest request = new LookupCommandRequest<>(); request.setType(String.class); request.setArgs(new String[]{"propget", "uuid", "/"}); - Optional result = command.lookup(request); + Optional result = command.lookup(request); assertThat(result).isPresent(); assertThat(result.get()) diff --git a/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java b/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java index ecf2ccf2cd..9ccb3544d9 100644 --- a/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java +++ b/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- @@ -50,8 +50,6 @@ import static org.mockito.Mockito.when; */ public abstract class SimpleRepositoryHandlerTestBase extends AbstractTestBase { - - protected RepositoryDAO repoDao = mock(RepositoryDAO.class); protected Path repoPath; protected Repository repository; diff --git a/scm-test/src/main/java/sonia/scm/repository/client/api/RepositoryClientFactory.java b/scm-test/src/main/java/sonia/scm/repository/client/api/RepositoryClientFactory.java index ae8ba75b91..9062c5c8b4 100644 --- a/scm-test/src/main/java/sonia/scm/repository/client/api/RepositoryClientFactory.java +++ b/scm-test/src/main/java/sonia/scm/repository/client/api/RepositoryClientFactory.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository.client.api; //~--- non-JDK imports -------------------------------------------------------- @@ -39,141 +39,67 @@ import java.io.IOException; import java.util.List; /** - * * @author Sebastian Sdorra * @since 1.18 */ -public final class RepositoryClientFactory -{ +public final class RepositoryClientFactory { - /** - * Constructs ... - * - */ - public RepositoryClientFactory() - { + private Iterable providers; + + public RepositoryClientFactory() { this.providers = ServiceUtil.getServices(RepositoryClientFactoryProvider.class); } - /** - * Constructs ... - * - * - * @param provider - * - * @param providers - */ public RepositoryClientFactory( - Iterable providers) - { + Iterable providers) { this.providers = providers; } - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * - * @param type - * @param main - * @param workingCopy - * - * @return - * - * @throws IOException - */ public RepositoryClient create(String type, File main, File workingCopy) - throws IOException - { + throws IOException { return new RepositoryClient(getProvider(type).create(main, workingCopy)); } - /** - * Method description - * - * - * - * @param type - * @param url - * @param username - * @param password - * @param workingCopy - * - * @return - * - * @throws IOException - */ public RepositoryClient create(String type, String url, String username, - String password, File workingCopy) - throws IOException - { + String password, File workingCopy) + throws IOException { return new RepositoryClient(getProvider(type).create(url, username, password, workingCopy)); } public RepositoryClient create(String type, String url, File workingCopy) - throws IOException - { + throws IOException { return new RepositoryClient(getProvider(type).create(url, null, null, workingCopy)); } - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ - public Iterable getAvailableTypes() - { + public Iterable getAvailableTypes() { List types = Lists.newArrayList(); - for (RepositoryClientFactoryProvider provider : providers) - { + for (RepositoryClientFactoryProvider provider : providers) { types.add(provider.getType()); } return types; } - /** - * Method description - * - * - * @param type - * - * @return - */ - private RepositoryClientFactoryProvider getProvider(String type) - { + private RepositoryClientFactoryProvider getProvider(String type) { RepositoryClientFactoryProvider provider = null; - for (RepositoryClientFactoryProvider p : providers) - { - if (p.getType().equalsIgnoreCase(type)) - { + for (RepositoryClientFactoryProvider p : providers) { + if (p.getType().equalsIgnoreCase(type)) { provider = p; break; } } - if (provider == null) - { + if (provider == null) { throw new RuntimeException( "could not find provider for type ".concat(type)); } return provider; } - - //~--- fields --------------------------------------------------------------- - - /** Field description */ - private Iterable providers; } diff --git a/scm-test/src/main/java/sonia/scm/repository/client/spi/AddCommand.java b/scm-test/src/main/java/sonia/scm/repository/client/spi/AddCommand.java index dcc601d58e..63d4be354e 100644 --- a/scm-test/src/main/java/sonia/scm/repository/client/spi/AddCommand.java +++ b/scm-test/src/main/java/sonia/scm/repository/client/spi/AddCommand.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository.client.spi; //~--- JDK imports ------------------------------------------------------------ @@ -29,22 +29,10 @@ package sonia.scm.repository.client.spi; import java.io.IOException; /** - * * @author Sebastian Sdorra * @since 1.18 */ -public interface AddCommand -{ +public interface AddCommand { - /** - * Method description - * - * - * @param path - * - * @param file - * - * @throws IOException - */ - public void add(String path) throws IOException; + void add(String path) throws IOException; } diff --git a/scm-test/src/main/java/sonia/scm/repository/client/spi/RemoveCommand.java b/scm-test/src/main/java/sonia/scm/repository/client/spi/RemoveCommand.java index 3b0c0bbca0..602b980cc5 100644 --- a/scm-test/src/main/java/sonia/scm/repository/client/spi/RemoveCommand.java +++ b/scm-test/src/main/java/sonia/scm/repository/client/spi/RemoveCommand.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository.client.spi; //~--- JDK imports ------------------------------------------------------------ @@ -29,22 +29,10 @@ package sonia.scm.repository.client.spi; import java.io.IOException; /** - * * @author Sebastian Sdorra * @since 1.18 */ -public interface RemoveCommand -{ +public interface RemoveCommand { - /** - * Method description - * - * - * @param file - * - * @param path - * - * @throws IOException - */ - public void remove(String path) throws IOException; + void remove(String path) throws IOException; } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ApiKeyToApiKeyDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ApiKeyToApiKeyDtoMapper.java index 75d543e970..c5c0c3b619 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ApiKeyToApiKeyDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ApiKeyToApiKeyDtoMapper.java @@ -26,6 +26,7 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.Links; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.ObjectFactory; import sonia.scm.security.ApiKey; @@ -39,6 +40,7 @@ public abstract class ApiKeyToApiKeyDtoMapper { @Inject private ResourceLinks resourceLinks; + @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes abstract ApiKeyDto map(ApiKey key, String user); @ObjectFactory diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BlameDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BlameDto.java index 3d687b681f..6edf18c159 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BlameDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BlameDto.java @@ -27,10 +27,12 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.HalRepresentation; import de.otto.edison.hal.Links; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; @Data +@EqualsAndHashCode(callSuper = false) public class BlameDto extends HalRepresentation { private List lines; diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BrowserResultToFileObjectDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BrowserResultToFileObjectDtoMapper.java index 752c7dfbd4..4dc475fca6 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BrowserResultToFileObjectDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BrowserResultToFileObjectDtoMapper.java @@ -55,6 +55,7 @@ public abstract class BrowserResultToFileObjectDtoMapper extends BaseFileObjectD @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes @Mapping(target = "children", qualifiedBy = Children.class) + @Mapping(target = "revision", ignore = true) @Children protected abstract FileObjectDto fileObjectToDto(FileObject fileObject, @Context NamespaceAndName namespaceAndName, @Context BrowserResult browserResult, @Context Integer offset); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java index fc887ff62d..0a8b6203bf 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java @@ -28,6 +28,7 @@ import de.otto.edison.hal.Embedded; import de.otto.edison.hal.Links; import org.mapstruct.Context; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.ObjectFactory; import sonia.scm.repository.Branch; import sonia.scm.repository.Changeset; @@ -80,6 +81,7 @@ public abstract class DefaultChangesetToChangesetDtoMapper extends HalAppenderMa abstract ContributorDto map(Contributor contributor); + @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes abstract SignatureDto map(Signature signature); abstract PersonDto map(Person person); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DiffResultDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DiffResultDto.java index aa1f617945..f081a3d173 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DiffResultDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DiffResultDto.java @@ -29,10 +29,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import de.otto.edison.hal.HalRepresentation; import de.otto.edison.hal.Links; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; @Data +@EqualsAndHashCode(callSuper = false) public class DiffResultDto extends HalRepresentation { public DiffResultDto(Links links) { @@ -42,6 +44,7 @@ public class DiffResultDto extends HalRepresentation { private List files; @Data + @EqualsAndHashCode(callSuper = false) @JsonInclude(JsonInclude.Include.NON_DEFAULT) public static class FileDto extends HalRepresentation { diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDtoToGroupMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDtoToGroupMapper.java index 2d69a92346..f805faa523 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDtoToGroupMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDtoToGroupMapper.java @@ -33,5 +33,6 @@ import sonia.scm.group.Group; public abstract class GroupDtoToGroupMapper extends BaseDtoMapper { @Mapping(target = "creationDate", ignore = true) + @Mapping(target = "properties", ignore = true) public abstract Group map(GroupDto groupDto); } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IncomingRootResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IncomingRootResource.java index 90e5bca0e7..2695a048a4 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IncomingRootResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IncomingRootResource.java @@ -90,12 +90,12 @@ public class IncomingRootResource { * - ° b2 * - *

    - * - /incoming/a/master/changesets -> a1 , e1 - * - /incoming/b/master/changesets -> b1 , b2 - * - /incoming/b/f/changesets -> b1 , b2, m2 - * - /incoming/f/b/changesets -> f1 , e1 - * - /incoming/a/b/changesets -> a1 , e1 - * - /incoming/a/b/changesets -> a1 , e1 + * - /incoming/a/master/changesets -> a1 , e1 + * - /incoming/b/master/changesets -> b1 , b2 + * - /incoming/b/f/changesets -> b1 , b2, m2 + * - /incoming/f/b/changesets -> f1 , e1 + * - /incoming/a/b/changesets -> a1 , e1 + * - /incoming/a/b/changesets -> a1 , e1 * * @param namespace * @param name diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/NamespacePermissionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/NamespacePermissionResource.java index 68ead6ec60..9ea37e55f7 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/NamespacePermissionResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/NamespacePermissionResource.java @@ -232,7 +232,6 @@ public class NamespacePermissionResource { * * @param permission permission to modify * @param permissionName permission to modify - * @return a web response with the status code 204 */ @PUT @Path("{permission-name}") @@ -264,8 +263,8 @@ public class NamespacePermissionResource { ) ) public void update(@PathParam("namespace") String namespaceName, - @PathParam("permission-name") String permissionName, - @Valid RepositoryPermissionDto permission) { + @PathParam("permission-name") String permissionName, + @Valid RepositoryPermissionDto permission) { Namespace namespace = load(namespaceName); String extractedPermissionName = getPermissionName(permissionName); if (!isPermissionExist(new RepositoryPermissionDto(extractedPermissionName, isGroupPermission(permissionName)), namespace)) { @@ -294,7 +293,6 @@ public class NamespacePermissionResource { * Update a permission to the user or group managed by the repository * * @param permissionName permission to delete - * @return a web response with the status code 204 */ @DELETE @Path("{permission-name}") @@ -311,7 +309,7 @@ public class NamespacePermissionResource { ) ) public void delete(@PathParam("namespace") String namespaceName, - @PathParam("permission-name") String permissionName) { + @PathParam("permission-name") String permissionName) { log.info("try to delete the permission with name: {}.", permissionName); Namespace namespace = load(namespaceName); namespace.getPermissions() diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java index 0156a976ec..ad696b2f36 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java @@ -26,6 +26,7 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.Links; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; import sonia.scm.lifecycle.Restarter; import sonia.scm.plugin.AvailablePlugin; @@ -51,6 +52,13 @@ public abstract class PluginDtoMapper { @Inject private Restarter restarter; + @Mapping(target = "newVersion", ignore = true) + @Mapping(target = "pending", ignore = true) + @Mapping(target = "core", ignore = true) + @Mapping(target = "markedForUninstall", ignore = true) + @Mapping(target = "dependencies", ignore = true) + @Mapping(target = "optionalDependencies", ignore = true) + @Mapping(target = "attributes", ignore = true) public abstract void map(PluginInformation plugin, @MappingTarget PluginDto dto); public PluginDto mapInstalled(InstalledPlugin plugin, List availablePlugins) { diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryDtoToRepositoryMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryDtoToRepositoryMapper.java index f3f0ac6aa3..aa9125245a 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryDtoToRepositoryMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryDtoToRepositoryMapper.java @@ -37,6 +37,8 @@ public abstract class RepositoryDtoToRepositoryMapper extends BaseDtoMapper { @Mapping(target = "creationDate", ignore = true) @Mapping(target = "id", ignore = true) @Mapping(target = "healthCheckFailures", ignore = true) + @Mapping(target = "properties", ignore = true) + @Mapping(target = "permissions", ignore = true) public abstract Repository map(RepositoryDto repositoryDto, @Context String id); @AfterMapping diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportInformationToDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportInformationToDtoMapper.java index 13ac6a7dbb..96607fb666 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportInformationToDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportInformationToDtoMapper.java @@ -28,6 +28,7 @@ import com.google.common.annotations.VisibleForTesting; import de.otto.edison.hal.Links; import org.mapstruct.Context; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.ObjectFactory; import sonia.scm.importexport.ExportService; import sonia.scm.importexport.ExportStatus; @@ -56,6 +57,7 @@ public abstract class RepositoryExportInformationToDtoMapper { this.exportService = exportService; } + @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes abstract RepositoryExportInformationDto map(RepositoryExportInformation info, @Context Repository repository); @ObjectFactory diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryRoleToRepositoryRoleDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryRoleToRepositoryRoleDtoMapper.java index 1cd56dc2b4..75174fe5f0 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryRoleToRepositoryRoleDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryRoleToRepositoryRoleDtoMapper.java @@ -27,6 +27,7 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.Embedded; import de.otto.edison.hal.Links; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.ObjectFactory; import sonia.scm.repository.RepositoryRole; import sonia.scm.repository.RepositoryRolePermissions; @@ -46,6 +47,7 @@ public abstract class RepositoryRoleToRepositoryRoleDtoMapper extends BaseMapper @Inject private ResourceLinks resourceLinks; + @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes @Override public abstract RepositoryRoleDto map(RepositoryRole modelObject); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java index b82037d7d7..d7f48f7e9c 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java @@ -29,6 +29,7 @@ import de.otto.edison.hal.Link; import de.otto.edison.hal.Links; import org.mapstruct.AfterMapping; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; import org.mapstruct.ObjectFactory; import sonia.scm.config.ScmConfiguration; @@ -70,6 +71,8 @@ public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper collectPlugins(ClassLoaderLifeCycle classLoaderLifeCycle, Path directory) throws IOException @@ -89,15 +62,6 @@ public final class PluginsInternal return processor.collectPlugins(classLoaderLifeCycle.getBootstrapClassLoader()); } - /** - * Method description - * - * - * @param parent - * @param plugin - * - * @return - */ public static File createPluginDirectory(File parent, InstalledPluginDescriptor plugin) { PluginInformation info = plugin.getInformation(); @@ -105,18 +69,6 @@ public final class PluginsInternal return new File(parent, info.getName()); } - /** - * Method description - * - * - * @param archive - * @param checksum - * @param directory - * @param checksumFile - * @param core - * - * @throws IOException - */ public static void extract(SmpArchive archive, String checksum, File directory, File checksumFile, boolean core) throws IOException @@ -144,56 +96,21 @@ public final class PluginsInternal } } - /** - * Method description - * - * - * @param wrapped - * - * @return - */ public static Iterable unwrap(Iterable wrapped) { return Iterables.transform(wrapped, new Unwrap()); } - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @param pluginDirectory - * - * @return - */ public static File getChecksumFile(File pluginDirectory) { return new File(pluginDirectory, PluginConstants.FILE_CHECKSUM); } - //~--- inner classes -------------------------------------------------------- - - /** - * Class description - * - * - * @version Enter version here..., 14/06/05 - * @author Enter your name here... - */ private static class Unwrap implements Function { - /** - * Method description - * - * - * @param wrapper - * - * @return - */ - @Override - public InstalledPluginDescriptor apply(InstalledPlugin wrapper) + @Override + public InstalledPluginDescriptor apply(InstalledPlugin wrapper) { return wrapper.getDescriptor(); } diff --git a/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java b/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java index af6d3faaf4..bf5d9580be 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java +++ b/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java @@ -21,10 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.security; -//~--- non-JDK imports -------------------------------------------------------- import com.github.legman.Subscribe; import com.google.common.base.Objects; @@ -62,7 +61,6 @@ import java.util.stream.Collectors; import static java.util.Objects.isNull; -//~--- JDK imports ------------------------------------------------------------ /** * TODO add events @@ -71,13 +69,10 @@ import static java.util.Objects.isNull; * @since 1.31 */ @Singleton -public class DefaultSecuritySystem implements SecuritySystem -{ +public class DefaultSecuritySystem implements SecuritySystem { - /** Field description */ private static final String NAME = "security"; - /** Field description */ private static final String PERMISSION_DESCRIPTOR = "META-INF/scm/permissions.xml"; @@ -87,18 +82,8 @@ public class DefaultSecuritySystem implements SecuritySystem private static final Logger logger = LoggerFactory.getLogger(DefaultSecuritySystem.class); - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - * - * @param storeFactory - */ @Inject - @SuppressWarnings("unchecked") - public DefaultSecuritySystem(ConfigurationEntryStoreFactory storeFactory, PluginLoader pluginLoader) - { + public DefaultSecuritySystem(ConfigurationEntryStoreFactory storeFactory, PluginLoader pluginLoader) { store = storeFactory .withType(AssignedPermission.class) .withName(NAME) @@ -106,19 +91,8 @@ public class DefaultSecuritySystem implements SecuritySystem this.availablePermissions = readAvailablePermissions(pluginLoader); } - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @param permission - * - * @return - */ @Override - public void addPermission(AssignedPermission permission) - { + public void addPermission(AssignedPermission permission) { assertHasPermission(); validatePermission(permission); @@ -133,15 +107,8 @@ public class DefaultSecuritySystem implements SecuritySystem //J+ } - /** - * Method description - * - * - * @param permission - */ @Override - public void deletePermission(AssignedPermission permission) - { + public void deletePermission(AssignedPermission permission) { assertHasPermission(); boolean deleted = deletePermissions(sap -> Objects.equal(sap.getName(), permission.getName()) && Objects.equal(sap.isGroupPermission(), permission.isGroupPermission()) @@ -153,71 +120,35 @@ public class DefaultSecuritySystem implements SecuritySystem } } - /** - * Method description - * - * - * @param event - */ @Subscribe - public void handleEvent(final UserEvent event) - { - if (event.getEventType() == HandlerEventType.DELETE) - { + public void handleEvent(final UserEvent event) { + if (event.getEventType() == HandlerEventType.DELETE) { deletePermissions(p -> !p.isGroupPermission() && event.getItem().getName().equals(p.getName())); } } - /** - * Method description - * - * - * @param event - */ @Subscribe - public void handleEvent(final GroupEvent event) - { - if (event.getEventType() == HandlerEventType.DELETE) - { + public void handleEvent(final GroupEvent event) { + if (event.getEventType() == HandlerEventType.DELETE) { deletePermissions(p -> p.isGroupPermission() && event.getItem().getName().equals(p.getName())); } } - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ @Override - public Collection getAvailablePermissions() - { + public Collection getAvailablePermissions() { assertHasPermission(); return availablePermissions; } - /** - * Method description - * - * - * @param predicate - * - * @return - */ @Override - public Collection getPermissions(Predicate predicate) - { + public Collection getPermissions(Predicate predicate) { Builder permissions = ImmutableSet.builder(); - for (Entry e : store.getAll().entrySet()) - { - if ((predicate == null) || predicate.test(e.getValue())) - { + for (Entry e : store.getAll().entrySet()) { + if ((predicate == null) || predicate.test(e.getValue())) { permissions.add(new StoredAssignedPermission(e.getKey(), e.getValue())); } } @@ -225,25 +156,11 @@ public class DefaultSecuritySystem implements SecuritySystem return permissions.build(); } - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - */ - private void assertHasPermission() - { + private void assertHasPermission() { PermissionPermissions.assign().check(); } - /** - * Method description - * - * - * @param predicate - */ - private boolean deletePermissions(Predicate predicate) - { + private boolean deletePermissions(Predicate predicate) { List> toRemove = store.getAll() .entrySet() @@ -253,23 +170,12 @@ public class DefaultSecuritySystem implements SecuritySystem return !toRemove.isEmpty(); } - /** - * Method description - * - * - * @param context - * @param descriptorUrl - * - * @return - */ @SuppressWarnings("unchecked") private static List parsePermissionDescriptor( - JAXBContext context, URL descriptorUrl) - { + JAXBContext context, URL descriptorUrl) { List descriptors = Collections.EMPTY_LIST; - try - { + try { PermissionDescriptors descriptorWrapper = (PermissionDescriptors) context.createUnmarshaller().unmarshal( descriptorUrl); @@ -279,26 +185,17 @@ public class DefaultSecuritySystem implements SecuritySystem logger.debug("found {} permissions at {}", descriptors.size(), descriptorUrl); logger.trace("permissions from {}: {}", descriptorUrl, descriptors); - } - catch (JAXBException ex) - { + } catch (JAXBException ex) { logger.error("could not parse permission descriptor", ex); } return descriptors; } - /** - * Method description - * - * @param pluginLoader - */ - private static ImmutableSet readAvailablePermissions(PluginLoader pluginLoader) - { + private static ImmutableSet readAvailablePermissions(PluginLoader pluginLoader) { ImmutableSet.Builder builder = ImmutableSet.builder(); - try - { + try { JAXBContext context = JAXBContext.newInstance(PermissionDescriptors.class); @@ -306,21 +203,16 @@ public class DefaultSecuritySystem implements SecuritySystem Enumeration descirptorEnum = pluginLoader.getUberClassLoader().getResources(PERMISSION_DESCRIPTOR); - while (descirptorEnum.hasMoreElements()) - { + while (descirptorEnum.hasMoreElements()) { URL descriptorUrl = descirptorEnum.nextElement(); logger.debug("read permission descriptor from {}", descriptorUrl); builder.addAll(parsePermissionDescriptor(context, descriptorUrl)); } - } - catch (IOException ex) - { + } catch (IOException ex) { logger.error("could not read permission descriptors", ex); - } - catch (JAXBException ex) - { + } catch (JAXBException ex) { logger.error( "could not create jaxb context to read permission descriptors", ex); } @@ -328,62 +220,34 @@ public class DefaultSecuritySystem implements SecuritySystem return builder.build(); } - /** - * Method description - * - * - * @param perm - */ - private void validatePermission(AssignedPermission perm) - { + private void validatePermission(AssignedPermission perm) { Preconditions.checkArgument(!Strings.isNullOrEmpty(perm.getName()), "name is required"); Preconditions.checkArgument(!isNull(perm.getPermission()), "permission is required"); } - //~--- inner classes -------------------------------------------------------- - /** * Descriptor for permissions. */ @XmlRootElement(name = "permissions") @XmlAccessorType(XmlAccessType.FIELD) - private static class PermissionDescriptors - { + private static class PermissionDescriptors { - //~--- get methods -------------------------------------------------------- - - /** - * Method description - * - * - * @return - */ @SuppressWarnings("unchecked") - public List getPermissions() - { - if (permissions == null) - { + public List getPermissions() { + if (permissions == null) { permissions = Collections.EMPTY_LIST; } return permissions; } - //~--- fields ------------------------------------------------------------- - - /** Field description */ @XmlElement(name = "permission") private List permissions; } - - //~--- fields --------------------------------------------------------------- - - /** Field description */ private final ConfigurationEntryStore store; - /** Field description */ private final ImmutableSet availablePermissions; } diff --git a/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java b/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java index 1570e59671..b933a62a36 100644 --- a/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java +++ b/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java @@ -21,29 +21,21 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.template; -//~--- non-JDK imports -------------------------------------------------------- - import com.github.mustachejava.Mustache; - import com.google.common.base.Throwables; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -//~--- JDK imports ------------------------------------------------------------ - import java.io.IOException; import java.io.Writer; /** - * * @author Sebastian Sdorra */ -public class MustacheTemplate implements Template -{ +public class MustacheTemplate implements Template { /** * the logger for MustacheTemplae @@ -51,50 +43,22 @@ public class MustacheTemplate implements Template private static final Logger logger = LoggerFactory.getLogger(MustacheTemplate.class); - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - * - * - * @param templatePath - * @param mustache - */ - public MustacheTemplate(String templatePath, Mustache mustache) - { + public MustacheTemplate(String templatePath, Mustache mustache) { this.templatePath = templatePath; this.mustache = mustache; } - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @param writer - * @param environment - * @param model - * - * @throws IOException - */ @Override - public void execute(Writer writer, Object model) throws IOException - { - if (logger.isDebugEnabled()) - { + public void execute(Writer writer, Object model) throws IOException { + if (logger.isDebugEnabled()) { logger.debug("render mustache template at {}", templatePath); } - try - { + try { mustache.execute(writer, model); - } - catch (Exception ex) - { + } catch (Exception ex) { Throwables.propagateIfInstanceOf(ex, IOException.class); throw new TemplateRenderException( @@ -102,11 +66,7 @@ public class MustacheTemplate implements Template } } - //~--- fields --------------------------------------------------------------- - - /** Field description */ private Mustache mustache; - /** Field description */ private String templatePath; }