From 397904addeccec6d2be5ae45783a76a7de4f254e Mon Sep 17 00:00:00 2001 From: broDom Date: Mon, 3 Jul 2017 17:07:07 +0200 Subject: [PATCH] refactor: replace anonymous types with lambdas --- .../repository/api/HookChangesetBuilder.java | 53 ++++------ .../repository/spi/GitBranchesCommand.java | 28 ++---- .../sonia/scm/web/GitRepositoryViewer.java | 40 +++----- .../spi/AbstractRemoteCommandTestBase.java | 34 ++----- .../scm/installer/WindowsHgInstaller.java | 16 +-- .../scm/repository/AbstractHgHandler.java | 37 +++---- .../scm/repository/spi/HgBranchesCommand.java | 35 +++---- .../main/java/sonia/scm/util/MockUtil.java | 30 ++---- .../main/java/sonia/scm/ClassOverrides.java | 98 ++++++++----------- .../java/sonia/scm/ScmEventBusModule.java | 9 +- .../java/sonia/scm/ScmInitializerModule.java | 19 ++-- .../resources/AbstractPermissionResource.java | 32 ++---- .../api/rest/resources/SearchResource.java | 45 ++++----- .../main/java/sonia/scm/debug/DebugHook.java | 5 +- .../sonia/scm/group/DefaultGroupManager.java | 51 ++++------ .../java/sonia/scm/plugin/PluginNode.java | 15 +-- .../repository/DefaultRepositoryManager.java | 47 +++------ .../HealthCheckContextListener.java | 10 +- .../sonia/scm/schedule/QuartzScheduler.java | 21 +--- .../scm/security/DefaultSecuritySystem.java | 47 +++------ .../sonia/scm/user/DefaultUserManager.java | 49 +++------- .../sonia/scm/web/cgi/DefaultCGIExecutor.java | 53 ++++------ .../cache/CacheConfigurationTestLoader.java | 11 +-- .../java/sonia/scm/cache/CacheTestBase.java | 17 +--- .../sonia/scm/plugin/PluginProcessorTest.java | 31 +++--- .../java/sonia/scm/plugin/PluginTreeTest.java | 24 ++--- .../scm/security/DefaultKeyGeneratorTest.java | 37 +++---- .../security/DefaultSecuritySystemTest.java | 20 +--- .../scm/template/MustacheTemplateTest.java | 11 +-- 29 files changed, 285 insertions(+), 640 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java index c06e227d5f..bdf5e13d60 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/HookChangesetBuilder.java @@ -35,11 +35,8 @@ package sonia.scm.repository.api; import com.google.common.base.Function; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.io.DeepCopy; import sonia.scm.repository.Changeset; import sonia.scm.repository.PreProcessorUtil; @@ -47,11 +44,12 @@ import sonia.scm.repository.Repository; import sonia.scm.repository.spi.HookChangesetProvider; import sonia.scm.repository.spi.HookChangesetRequest; -//~--- JDK imports ------------------------------------------------------------ - import java.io.IOException; - import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +//~--- JDK imports ------------------------------------------------------------ /** * The {@link HookChangesetBuilder} is able to return all {@link Changeset}s @@ -120,35 +118,26 @@ public final class HookChangesetBuilder if (!disablePreProcessors) { - changesets = Iterables.transform(changesets, - new Function() - { + final Function changesetFunction = c -> { + Changeset copy = null; - @Override - public Changeset apply(Changeset c) - { - Changeset copy = null; - - try - { - copy = DeepCopy.copy(c); - preProcessorUtil.prepareForReturn(repository, copy, - !disableEscaping); - } - catch (IOException ex) - { - logger.error("could not create a copy of changeset", ex); - } - - if (copy == null) - { - copy = c; - } - - return copy; + try { + copy = DeepCopy.copy(c); + preProcessorUtil.prepareForReturn(repository, copy, + !disableEscaping); + } catch (IOException ex) { + logger.error("could not create a copy of changeset", ex); } - }); + if (copy == null) { + copy = c; + } + + return copy; + }; + changesets = StreamSupport.stream(changesets.spliterator(), false) + .map(changesetFunction::apply) + .collect(Collectors.toList()); } return changesets; diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java index df32c2b5eb..984f3e37cf 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java @@ -34,24 +34,20 @@ package sonia.scm.repository.spi; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Function; import com.google.common.collect.Lists; - import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Ref; - import sonia.scm.repository.Branch; import sonia.scm.repository.GitUtil; import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryException; -//~--- JDK imports ------------------------------------------------------------ - import java.io.IOException; - import java.util.List; +//~--- JDK imports ------------------------------------------------------------ + /** * * @author Sebastian Sdorra @@ -94,22 +90,16 @@ public class GitBranchesCommand extends AbstractGitCommand { List refs = git.branchList().call(); - branches = Lists.transform(refs, new Function() - { + branches = Lists.transform(refs, ref -> { + Branch branch = null; + String branchName = GitUtil.getBranch(ref); - @Override - public Branch apply(Ref ref) + if (branchName != null) { - Branch branch = null; - String branchName = GitUtil.getBranch(ref); - - if (branchName != null) - { - branch = new Branch(branchName, GitUtil.getId(ref.getObjectId())); - } - - return branch; + branch = new Branch(branchName, GitUtil.getId(ref.getObjectId())); } + + return branch; }); } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java index b1915dc7ad..18f4d5baaa 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java @@ -40,17 +40,9 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.io.Closeables; import com.google.inject.Inject; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import sonia.scm.repository.Branch; -import sonia.scm.repository.Branches; -import sonia.scm.repository.Changeset; -import sonia.scm.repository.ChangesetPagingResult; -import sonia.scm.repository.Person; -import sonia.scm.repository.Repository; -import sonia.scm.repository.RepositoryException; +import sonia.scm.repository.*; import sonia.scm.repository.api.RepositoryService; import sonia.scm.repository.api.RepositoryServiceFactory; import sonia.scm.template.Template; @@ -63,16 +55,16 @@ import sonia.scm.util.HttpUtil; import sonia.scm.util.IOUtil; import sonia.scm.util.Util; -//~--- JDK imports ------------------------------------------------------------ - -import java.io.IOException; -import java.io.Writer; - -import java.util.Date; -import java.util.Iterator; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.Writer; +import java.util.Date; +import java.util.Iterator; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +//~--- JDK imports ------------------------------------------------------------ /** * @@ -310,16 +302,10 @@ public class GitRepositoryViewer .setPagingLimit(CHANGESET_PER_BRANCH) .getChangesets(); - Iterable changesets = - Iterables.transform(cpr, new Function() - { - - @Override - public ChangesetModel apply(Changeset changeset) - { - return new ChangesetModel(changeset); - } - }); + Iterable changesets = + StreamSupport.stream(cpr.spliterator(), false) + .map(ChangesetModel::new) + .collect(Collectors.toList()); //J+ model = new BranchModel(name, changesets); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/AbstractRemoteCommandTestBase.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/AbstractRemoteCommandTestBase.java index a76d110561..3b6c6797bb 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/AbstractRemoteCommandTestBase.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/AbstractRemoteCommandTestBase.java @@ -37,35 +37,31 @@ package sonia.scm.repository.spi; import com.google.common.base.Charsets; import com.google.common.io.Files; -import com.google.inject.Provider; - import org.eclipse.jgit.api.CommitCommand; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.ScmTransportProtocol; import org.eclipse.jgit.transport.Transport; - import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.rules.TemporaryFolder; - import sonia.scm.repository.Changeset; import sonia.scm.repository.GitRepositoryHandler; import sonia.scm.repository.Repository; import sonia.scm.user.User; import sonia.scm.user.UserTestData; -import static org.junit.Assert.*; - -import static org.mockito.Mockito.*; - -//~--- JDK imports ------------------------------------------------------------ - import java.io.File; import java.io.IOException; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +//~--- JDK imports ------------------------------------------------------------ + /** * * @author Sebastian Sdorra @@ -122,23 +118,7 @@ public class AbstractRemoteCommandTestBase { // store reference to handle weak references - proto = new ScmTransportProtocol(new Provider() - { - - @Override - public HookEventFacade get() - { - return null; - } - }, new Provider() - { - - @Override - public GitRepositoryHandler get() - { - return null; - } - }); + proto = new ScmTransportProtocol(() -> null, () -> null); Transport.register(proto); } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java index a764997c73..19df6f43d6 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java @@ -37,21 +37,18 @@ package sonia.scm.installer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.repository.HgConfig; import sonia.scm.util.IOUtil; import sonia.scm.util.RegistryUtil; import sonia.scm.util.Util; -//~--- JDK imports ------------------------------------------------------------ - import java.io.File; -import java.io.FilenameFilter; import java.io.IOException; - import java.util.ArrayList; import java.util.List; +//~--- JDK imports ------------------------------------------------------------ + /** * * @author Sebastian Sdorra @@ -222,14 +219,7 @@ public class WindowsHgInstaller extends AbstractHgInstaller private boolean checkForOptimizedByteCode(String part) { File libDir = new File(part); - String[] pyoFiles = libDir.list(new FilenameFilter() - { - @Override - public boolean accept(File file, String name) - { - return name.toLowerCase().endsWith(".pyo"); - } - }); + String[] pyoFiles = libDir.list((file, name) -> name.toLowerCase().endsWith(".pyo")); return Util.isNotEmpty(pyoFiles); } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java index 22a64fe5b2..5f0e721594 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java @@ -37,26 +37,18 @@ package sonia.scm.repository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.SCMContext; import sonia.scm.util.IOUtil; import sonia.scm.util.Util; import sonia.scm.web.HgUtil; -//~--- JDK imports ------------------------------------------------------------ - +import javax.xml.bind.JAXBException; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.xml.bind.JAXBException; +//~--- JDK imports ------------------------------------------------------------ /** * @@ -232,25 +224,20 @@ public class AbstractHgHandler { if (errorStream != null) { - new Thread(new Runnable() - { - @Override - public void run() + new Thread(() -> { + try { - try - { - String content = IOUtil.getContent(errorStream); + String content = IOUtil.getContent(errorStream); - if (Util.isNotEmpty(content)) - { - logger.error(content.trim()); - } - } - catch (IOException ex) + if (Util.isNotEmpty(content)) { - logger.error("error during logging", ex); + logger.error(content.trim()); } } + catch (IOException ex) + { + logger.error("error during logging", ex); + } }).start(); } } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java index 64d544c5ed..a2630d3730 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java @@ -36,20 +36,17 @@ package sonia.scm.repository.spi; //~--- non-JDK imports -------------------------------------------------------- import com.aragost.javahg.Changeset; - import com.google.common.base.Function; import com.google.common.collect.Lists; - import sonia.scm.repository.Branch; import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryException; -//~--- JDK imports ------------------------------------------------------------ - import java.io.IOException; - import java.util.List; +//~--- JDK imports ------------------------------------------------------------ + /** * * @author Sebastian Sdorra @@ -87,26 +84,18 @@ public class HgBranchesCommand extends AbstractCommand List hgBranches = com.aragost.javahg.commands.BranchesCommand.on(open()).execute(); - List branches = Lists.transform(hgBranches, - new Function() - { + final Function branchFunction = hgBranch -> { + String node = null; + Changeset changeset = hgBranch.getBranchTip(); - @Override - public Branch apply(com.aragost.javahg.commands.Branch hgBranch) - { - String node = null; - Changeset changeset = hgBranch.getBranchTip(); - - if (changeset != null) - { - node = changeset.getNode(); - } - - return new Branch(hgBranch.getName(), node); + if (changeset != null) { + node = changeset.getNode(); } - }); - return branches; + return new Branch(hgBranch.getName(), node); + }; + + return Lists.transform(hgBranches, + branchFunction); } } diff --git a/scm-test/src/main/java/sonia/scm/util/MockUtil.java b/scm-test/src/main/java/sonia/scm/util/MockUtil.java index 756b2632be..1d15477472 100644 --- a/scm-test/src/main/java/sonia/scm/util/MockUtil.java +++ b/scm-test/src/main/java/sonia/scm/util/MockUtil.java @@ -41,27 +41,21 @@ import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.SimplePrincipalCollection; import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject.Builder; - -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - import sonia.scm.SCMContextProvider; +import sonia.scm.security.Role; import sonia.scm.user.User; import sonia.scm.user.UserTestData; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.Arrays; +import java.util.List; + import static org.mockito.Mockito.*; //~--- JDK imports ------------------------------------------------------------ -import java.io.File; - -import java.util.Arrays; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import sonia.scm.security.Role; - /** * * @author Sebastian Sdorra @@ -96,12 +90,7 @@ public final class MockUtil when(subject.isAuthenticated()).thenReturn(Boolean.TRUE); when(subject.isPermitted(anyListOf(Permission.class))).then( - new Answer() - { - - @Override - public Boolean[] answer(InvocationOnMock invocation) throws Throwable - { + invocation -> { List permissions = (List) invocation.getArguments()[0]; Boolean[] returnArray = new Boolean[permissions.size()]; @@ -109,8 +98,7 @@ public final class MockUtil Arrays.fill(returnArray, Boolean.TRUE); return returnArray; - } - }); + }); when(subject.isPermitted(any(Permission.class))).thenReturn(Boolean.TRUE); when(subject.isPermitted(any(String.class))).thenReturn(Boolean.TRUE); when(subject.isPermittedAll(anyCollectionOf(Permission.class))).thenReturn( diff --git a/scm-webapp/src/main/java/sonia/scm/ClassOverrides.java b/scm-webapp/src/main/java/sonia/scm/ClassOverrides.java index b727a75fc0..44e3e108a3 100644 --- a/scm-webapp/src/main/java/sonia/scm/ClassOverrides.java +++ b/scm-webapp/src/main/java/sonia/scm/ClassOverrides.java @@ -38,31 +38,26 @@ package sonia.scm; import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.inject.Module; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.util.AssertUtil; import sonia.scm.util.ClassLoaders; import sonia.scm.util.Util; -//~--- JDK imports ------------------------------------------------------------ - -import java.io.IOException; - -import java.net.URL; - -import java.util.Collections; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; - import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import java.io.IOException; +import java.net.URL; +import java.util.Collections; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; + +//~--- JDK imports ------------------------------------------------------------ /** * @@ -103,35 +98,29 @@ public class ClassOverrides implements Iterable classLoader.getResources(OVERRIDE_PATH); final JAXBContext context = JAXBContext.newInstance(ClassOverrides.class); - ClassLoaders.executeInContext(classLoader, new Runnable() - { - - @Override - public void run() + ClassLoaders.executeInContext(classLoader, () -> { + while (overridesEnm.hasMoreElements()) { - while (overridesEnm.hasMoreElements()) + URL overrideUrl = overridesEnm.nextElement(); + + if (logger.isInfoEnabled()) { - URL overrideUrl = overridesEnm.nextElement(); + logger.info("load override from {}", + overrideUrl.toExternalForm()); + } - if (logger.isInfoEnabled()) - { - logger.info("load override from {}", - overrideUrl.toExternalForm()); - } + try + { + ClassOverrides co = + (ClassOverrides) context.createUnmarshaller().unmarshal( + overrideUrl); - try - { - ClassOverrides co = - (ClassOverrides) context.createUnmarshaller().unmarshal( - overrideUrl); - - overrides.append(co); - } - catch (JAXBException ex) - { - logger.error( - "could not load ".concat(overrideUrl.toExternalForm()), ex); - } + overrides.append(co); + } + catch (JAXBException ex) + { + logger.error( + "could not load ".concat(overrideUrl.toExternalForm()), ex); } } }); @@ -217,28 +206,21 @@ public class ClassOverrides implements Iterable if (Util.isNotEmpty(moduleClasses)) { - modules = Lists.transform(moduleClasses, - new Function, Module>() - { - @Override - public Module apply(Class moduleClass) - { - Module module = null; + final Function, Module> classModuleFunction = moduleClass -> { + Module module = null; - try - { - module = moduleClass.newInstance(); - } - catch (IllegalAccessException | InstantiationException ex) - { - logger.error( - "could not create module instance of ".concat( - moduleClass.getName()), ex); - } - - return module; + try { + module = moduleClass.newInstance(); + } catch (IllegalAccessException | InstantiationException ex) { + logger.error( + "could not create module instance of ".concat( + moduleClass.getName()), ex); } - }); + + return module; + }; + modules = Lists.transform(moduleClasses, + classModuleFunction); } else { diff --git a/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java b/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java index 4f1d4ca8ab..637bf80d37 100644 --- a/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java +++ b/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java @@ -64,14 +64,7 @@ public class ScmEventBusModule extends AbstractModule @Override public void hear(TypeLiteral type, TypeEncounter encounter) { - encounter.register(new InjectionListener() - { - @Override - public void afterInjection(Object object) - { - ScmEventBus.getInstance().register(object); - } - }); + encounter.register((InjectionListener) object -> ScmEventBus.getInstance().register(object)); } }); diff --git a/scm-webapp/src/main/java/sonia/scm/ScmInitializerModule.java b/scm-webapp/src/main/java/sonia/scm/ScmInitializerModule.java index 16675749ac..32bd14fd12 100644 --- a/scm-webapp/src/main/java/sonia/scm/ScmInitializerModule.java +++ b/scm-webapp/src/main/java/sonia/scm/ScmInitializerModule.java @@ -73,20 +73,15 @@ public class ScmInitializerModule extends AbstractModule @Override public void hear(TypeLiteral type, TypeEncounter encounter) { - encounter.register(new InjectionListener() - { - @Override - public void afterInjection(Object i) + encounter.register((InjectionListener) i -> { + if (logger.isTraceEnabled()) { - if (logger.isTraceEnabled()) - { - logger.trace("initialize initable {}", i.getClass()); - } - - Initable initable = (Initable) i; - - initable.init(SCMContext.getContext()); + logger.trace("initialize initable {}", i.getClass()); } + + Initable initable = (Initable) i; + + initable.init(SCMContext.getContext()); }); } }); diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractPermissionResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractPermissionResource.java index e9e63d16d8..39915b5d9b 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractPermissionResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractPermissionResource.java @@ -35,39 +35,27 @@ package sonia.scm.api.rest.resources; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.webcohesion.enunciate.metadata.rs.ResponseCode; import com.webcohesion.enunciate.metadata.rs.ResponseHeader; import com.webcohesion.enunciate.metadata.rs.StatusCodes; import com.webcohesion.enunciate.metadata.rs.TypeHint; - import sonia.scm.api.rest.Permission; import sonia.scm.security.AssignedPermission; import sonia.scm.security.SecuritySystem; import sonia.scm.security.StoredAssignedPermission; -//~--- JDK imports ------------------------------------------------------------ - -import java.net.URI; - -import java.util.List; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.WebApplicationException; +import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.UriInfo; +import java.net.URI; +import java.util.List; + +//~--- JDK imports ------------------------------------------------------------ /** * Abstract base class for global permission resources. @@ -277,15 +265,7 @@ public abstract class AbstractPermissionResource securitySystem.getPermissions(predicate); return Lists.transform(permissions, - new Function() - { - - @Override - public Permission apply(StoredAssignedPermission mgp) - { - return new Permission(mgp.getId(), mgp.getPermission()); - } - }); + mgp -> new Permission(mgp.getId(), mgp.getPermission())); } //~--- fields --------------------------------------------------------------- diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java index d951fcc2ca..b08a2aaace 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java @@ -156,23 +156,18 @@ public class SearchResource @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public SearchResults searchGroups(@QueryParam("query") String queryString) { - return groupSearchHandler.search(queryString, - new Function() - { - @Override - public SearchResult apply(Group group) - { - String label = group.getName(); - String description = group.getDescription(); + final Function groupSearchResultFunction = group -> { + String label = group.getName(); + String description = group.getDescription(); - if (description != null) - { - label = label.concat(" (").concat(description).concat(")"); - } - - return new SearchResult(group.getName(), label); + if (description != null) { + label = label.concat(" (").concat(description).concat(")"); } - }); + + return new SearchResult(group.getName(), label); + }; + return groupSearchHandler.search(queryString, + groupSearchResultFunction); } /** @@ -191,19 +186,15 @@ public class SearchResource @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public SearchResults searchUsers(@QueryParam("query") String queryString) { + final Function userSearchResultFunction = user -> { + StringBuilder label = new StringBuilder(user.getName()); + + label.append(" (").append(user.getDisplayName()).append(")"); + + return new SearchResult(user.getName(), label.toString()); + }; return userSearchHandler.search(queryString, - new Function() - { - @Override - public SearchResult apply(User user) - { - StringBuilder label = new StringBuilder(user.getName()); - - label.append(" (").append(user.getDisplayName()).append(")"); - - return new SearchResult(user.getName(), label.toString()); - } - }); + userSearchResultFunction); } //~--- fields --------------------------------------------------------------- diff --git a/scm-webapp/src/main/java/sonia/scm/debug/DebugHook.java b/scm-webapp/src/main/java/sonia/scm/debug/DebugHook.java index d75b455a95..5b49cb989a 100644 --- a/scm-webapp/src/main/java/sonia/scm/debug/DebugHook.java +++ b/scm-webapp/src/main/java/sonia/scm/debug/DebugHook.java @@ -34,13 +34,14 @@ import com.github.legman.ReferenceType; import com.github.legman.Subscribe; import com.google.common.base.Function; import com.google.common.collect.Collections2; -import javax.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.EagerSingleton; import sonia.scm.repository.Changeset; import sonia.scm.repository.PostReceiveRepositoryHookEvent; +import javax.inject.Inject; + /** * {@link PostReceiveRepositoryHookEvent} which stores receives data and passes it to the {@link DebugService}. * @@ -84,5 +85,5 @@ public final class DebugHook )); } - private static final Function IDEXTRACTOR = (Changeset changeset) -> changeset.getId(); + private static final Function IDEXTRACTOR = Changeset::getId; } diff --git a/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java b/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java index ef69e5c07d..67b2709f53 100644 --- a/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java +++ b/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java @@ -40,10 +40,8 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.inject.Inject; import com.google.inject.Singleton; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.HandlerEventType; import sonia.scm.SCMContextProvider; import sonia.scm.TransformFilter; @@ -52,16 +50,10 @@ import sonia.scm.search.SearchUtil; import sonia.scm.util.CollectionAppender; import sonia.scm.util.Util; -//~--- JDK imports ------------------------------------------------------------ - import java.io.IOException; +import java.util.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.LinkedList; -import java.util.List; +//~--- JDK imports ------------------------------------------------------------ /** * @@ -269,22 +261,17 @@ public class DefaultGroupManager extends AbstractGroupManager } final PermissionActionCheck check = GroupPermissions.read(); - return SearchUtil.search(searchRequest, groupDAO.getAll(), - new TransformFilter() - { - @Override - public Group accept(Group group) - { - Group result = null; + final TransformFilter groupTransformFilter = group -> { + Group result = null; - if (check.isPermitted(group) && matches(searchRequest, group)) - { - result = group.clone(); - } - - return result; + if (check.isPermitted(group) && matches(searchRequest, group)) { + result = group.clone(); } - }); + + return result; + }; + return SearchUtil.search(searchRequest, groupDAO.getAll(), + groupTransformFilter); } private boolean matches(SearchRequest searchRequest, Group group) { @@ -374,17 +361,13 @@ public class DefaultGroupManager extends AbstractGroupManager { final PermissionActionCheck check = GroupPermissions.read(); - return Util.createSubCollection(groupDAO.getAll(), comparator, - new CollectionAppender() - { - @Override - public void append(Collection collection, Group group) - { - if (check.isPermitted(group)) { - collection.add(group.clone()); - } + final CollectionAppender groupCollectionAppender = (collection, group) -> { + if (check.isPermitted(group)) { + collection.add(group.clone()); } - }, start, limit); + }; + return Util.createSubCollection(groupDAO.getAll(), comparator, + groupCollectionAppender, start, limit); } /** diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginNode.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginNode.java index 281fb2eab1..ff479e9894 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginNode.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginNode.java @@ -33,14 +33,13 @@ package sonia.scm.plugin; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -//~--- JDK imports ------------------------------------------------------------ - import java.util.List; +//~--- JDK imports ------------------------------------------------------------ + /** * * @author Sebastian Sdorra @@ -96,15 +95,7 @@ public final class PluginNode */ public PluginNode getChild(final String id) { - return Iterables.find(children, new Predicate() - { - - @Override - public boolean apply(PluginNode node) - { - return node.getId().equals(id); - } - }); + return Iterables.find(children, node -> node.getId().equals(id)); } /** diff --git a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java index 8ddb02d9ca..77cbf0cb2c 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java @@ -41,42 +41,22 @@ import com.google.common.collect.Lists; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.inject.Inject; import com.google.inject.Singleton; - import org.apache.shiro.concurrent.SubjectAwareExecutorService; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import sonia.scm.ArgumentIsInvalidException; -import sonia.scm.ConfigurationException; -import sonia.scm.HandlerEventType; -import sonia.scm.SCMContextProvider; -import sonia.scm.Type; +import sonia.scm.*; import sonia.scm.config.ScmConfiguration; import sonia.scm.security.KeyGenerator; -import sonia.scm.util.AssertUtil; -import sonia.scm.util.CollectionAppender; -import sonia.scm.util.HttpUtil; -import sonia.scm.util.IOUtil; -import sonia.scm.util.Util; - -//~--- JDK imports ------------------------------------------------------------ +import sonia.scm.util.*; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; - -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; -import javax.servlet.http.HttpServletRequest; +//~--- JDK imports ------------------------------------------------------------ /** * Default implementation of {@link RepositoryManager}. @@ -459,18 +439,13 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager final PermissionActionCheck check = RepositoryPermissions.read(); - return Util.createSubCollection(repositoryDAO.getAll(), comparator, - new CollectionAppender() - { - @Override - public void append(Collection collection, Repository item) - { - if (check.isPermitted(item)) - { - collection.add(item.clone()); - } + final CollectionAppender repositoryCollectionAppender = (collection, item) -> { + if (check.isPermitted(item)) { + collection.add(item.clone()); } - }, start, limit); + }; + return Util.createSubCollection(repositoryDAO.getAll(), comparator, + repositoryCollectionAppender, start, limit); } /** diff --git a/scm-webapp/src/main/java/sonia/scm/repository/HealthCheckContextListener.java b/scm-webapp/src/main/java/sonia/scm/repository/HealthCheckContextListener.java index a0918c3e64..146382771e 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/HealthCheckContextListener.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/HealthCheckContextListener.java @@ -128,15 +128,7 @@ public class HealthCheckContextListener implements ServletContextListener { // excute health checks for all repsitories asynchronous - SecurityUtils.getSubject().execute(new Runnable() - { - - @Override - public void run() - { - healthChecker.checkAll(); - } - }); + SecurityUtils.getSubject().execute(healthChecker::checkAll); } //~--- fields ------------------------------------------------------------- diff --git a/scm-webapp/src/main/java/sonia/scm/schedule/QuartzScheduler.java b/scm-webapp/src/main/java/sonia/scm/schedule/QuartzScheduler.java index 5b46d438d8..7aa0494a79 100644 --- a/scm-webapp/src/main/java/sonia/scm/schedule/QuartzScheduler.java +++ b/scm-webapp/src/main/java/sonia/scm/schedule/QuartzScheduler.java @@ -35,21 +35,16 @@ import com.google.common.base.Throwables; import com.google.inject.Injector; import com.google.inject.Provider; import com.google.inject.Singleton; -import java.io.IOException; -import javax.inject.Inject; -import org.quartz.CronScheduleBuilder; -import org.quartz.JobBuilder; -import org.quartz.JobDataMap; -import org.quartz.JobDetail; -import org.quartz.SchedulerException; -import org.quartz.Trigger; -import org.quartz.TriggerBuilder; +import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.Initable; import sonia.scm.SCMContextProvider; +import javax.inject.Inject; +import java.io.IOException; + /** * {@link Scheduler} which uses the quartz scheduler. * @@ -130,13 +125,7 @@ public class QuartzScheduler implements Scheduler, Initable { @Override public Task schedule(String expression, final Runnable runnable) { - return schedule(expression, new Provider(){ - @Override - public Runnable get() - { - return runnable; - } - }); + return schedule(expression, () -> runnable); } @Override 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 d958dcf41f..2a73ca489e 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java +++ b/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java @@ -36,7 +36,6 @@ package sonia.scm.security; //~--- non-JDK imports -------------------------------------------------------- import com.github.legman.Subscribe; - import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Strings; @@ -44,12 +43,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; import com.google.inject.Inject; import com.google.inject.Singleton; - import org.apache.shiro.SecurityUtils; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.HandlerEventType; import sonia.scm.event.ScmEventBus; import sonia.scm.group.GroupEvent; @@ -58,23 +54,20 @@ import sonia.scm.store.ConfigurationEntryStoreFactory; import sonia.scm.user.UserEvent; import sonia.scm.util.ClassLoaders; -//~--- JDK imports ------------------------------------------------------------ - -import java.io.IOException; - -import java.net.URL; - -import java.util.Collections; -import java.util.Enumeration; -import java.util.List; -import java.util.Map.Entry; - import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import java.io.IOException; +import java.net.URL; +import java.util.Collections; +import java.util.Enumeration; +import java.util.List; +import java.util.Map.Entry; + +//~--- JDK imports ------------------------------------------------------------ /** * TODO add events @@ -191,16 +184,8 @@ public class DefaultSecuritySystem implements SecuritySystem { if (event.getEventType() == HandlerEventType.DELETE) { - deletePermissions(new Predicate() - { - - @Override - public boolean apply(AssignedPermission p) - { - return !p.isGroupPermission() - && event.getItem().getName().equals(p.getName()); - } - }); + deletePermissions(p -> !(p != null && p.isGroupPermission()) + && event.getItem().getName().equals(p != null ? p.getName() : null)); } } @@ -215,16 +200,8 @@ public class DefaultSecuritySystem implements SecuritySystem { if (event.getEventType() == HandlerEventType.DELETE) { - deletePermissions(new Predicate() - { - - @Override - public boolean apply(AssignedPermission p) - { - return p.isGroupPermission() - && event.getItem().getName().equals(p.getName()); - } - }); + deletePermissions(p -> (p != null && p.isGroupPermission()) + && event.getItem().getName().equals(p.getName())); } } diff --git a/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java b/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java index 99e3abbe76..0cdf1fd147 100644 --- a/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java +++ b/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java @@ -38,13 +38,10 @@ package sonia.scm.user; import com.github.sdorra.ssp.PermissionActionCheck; import com.google.inject.Inject; import com.google.inject.Singleton; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.HandlerEventType; import sonia.scm.SCMContextProvider; -import sonia.scm.TransformFilter; import sonia.scm.search.SearchRequest; import sonia.scm.search.SearchUtil; import sonia.scm.util.AssertUtil; @@ -52,20 +49,14 @@ import sonia.scm.util.CollectionAppender; import sonia.scm.util.IOUtil; import sonia.scm.util.Util; -//~--- JDK imports ------------------------------------------------------------ - -import java.io.IOException; -import java.io.InputStream; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; + +//~--- JDK imports ------------------------------------------------------------ /** * @@ -297,16 +288,12 @@ public class DefaultUserManager extends AbstractUserManager } final PermissionActionCheck check = UserPermissions.read(); - return SearchUtil.search(searchRequest, userDAO.getAll(), new TransformFilter() { - @Override - public User accept(User user) - { - User result = null; - if (check.isPermitted(user) && matches(searchRequest, user)) { - result = user.clone(); - } - return result; + return SearchUtil.search(searchRequest, userDAO.getAll(), user -> { + User result = null; + if (check.isPermitted(user) && matches(searchRequest, user)) { + result = user.clone(); } + return result; }); } @@ -392,17 +379,13 @@ public class DefaultUserManager extends AbstractUserManager @Override public Collection getAll(Comparator comaparator, int start, int limit) { final PermissionActionCheck check = UserPermissions.read(); - return Util.createSubCollection(userDAO.getAll(), comaparator, - new CollectionAppender() - { - @Override - public void append(Collection collection, User item) - { - if (check.isPermitted(item)) { - collection.add(item.clone()); - } + final CollectionAppender userCollectionAppender = (collection, item) -> { + if (check.isPermitted(item)) { + collection.add(item.clone()); } - }, start, limit); + }; + return Util.createSubCollection(userDAO.getAll(), comaparator, + userCollectionAppender, start, limit); } /** diff --git a/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java b/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java index 3eaa684080..c0096efd59 100644 --- a/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java +++ b/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java @@ -37,10 +37,8 @@ package sonia.scm.web.cgi; import com.google.common.base.Strings; import com.google.common.io.ByteStreams; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.SCMContext; import sonia.scm.config.ScmConfiguration; import sonia.scm.util.HttpUtil; @@ -48,23 +46,17 @@ import sonia.scm.util.IOUtil; import sonia.scm.util.SystemUtil; import sonia.scm.util.Util; -//~--- JDK imports ------------------------------------------------------------ - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import java.util.Enumeration; -import java.util.Map; -import java.util.concurrent.ExecutorService; - import javax.servlet.ServletContext; import javax.servlet.ServletInputStream; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.Enumeration; +import java.util.Map; +import java.util.concurrent.ExecutorService; + +//~--- JDK imports ------------------------------------------------------------ /** * @@ -510,26 +502,21 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor */ private void processErrorStreamAsync(final Process process) { - executor.execute(new Runnable() - { - @Override - public void run() - { - InputStream errorStream = null; + executor.execute(() -> { + InputStream errorStream = null; - try - { - errorStream = process.getErrorStream(); - processErrorStream(errorStream); - } - catch (IOException ex) - { - logger.error("could not read errorstream", ex); - } - finally - { - IOUtil.close(errorStream); - } + try + { + errorStream = process.getErrorStream(); + processErrorStream(errorStream); + } + catch (IOException ex) + { + logger.error("could not read errorstream", ex); + } + finally + { + IOUtil.close(errorStream); } }); } diff --git a/scm-webapp/src/test/java/sonia/scm/cache/CacheConfigurationTestLoader.java b/scm-webapp/src/test/java/sonia/scm/cache/CacheConfigurationTestLoader.java index 14c2355a85..0b111e4ef1 100644 --- a/scm-webapp/src/test/java/sonia/scm/cache/CacheConfigurationTestLoader.java +++ b/scm-webapp/src/test/java/sonia/scm/cache/CacheConfigurationTestLoader.java @@ -34,7 +34,6 @@ package sonia.scm.cache; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Function; import com.google.common.collect.Iterators; import com.google.common.io.ByteSource; import com.google.common.io.Files; @@ -196,15 +195,7 @@ public class CacheConfigurationTestLoader implements CacheConfigurationLoader else { urlIterator = Iterators.transform(moduleConfigurations, - new Function() - { - - @Override - public URL apply(String resource) - { - return getResource(resource); - } - }); + this::getResource); } return urlIterator; diff --git a/scm-webapp/src/test/java/sonia/scm/cache/CacheTestBase.java b/scm-webapp/src/test/java/sonia/scm/cache/CacheTestBase.java index 54cf7991c5..8a8a016146 100644 --- a/scm-webapp/src/test/java/sonia/scm/cache/CacheTestBase.java +++ b/scm-webapp/src/test/java/sonia/scm/cache/CacheTestBase.java @@ -35,18 +35,14 @@ package sonia.scm.cache; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Predicate; - import org.junit.After; +import org.junit.Assume; import org.junit.Before; import org.junit.Test; - import sonia.scm.util.IOUtil; -import static org.hamcrest.Matchers.*; - +import static org.hamcrest.Matchers.containsInAnyOrder; import static org.junit.Assert.*; -import org.junit.Assume; /** * @@ -166,14 +162,7 @@ public abstract class CacheTestBase cache.put("a-1", "test123"); cache.put("a-2", "test123"); - Iterable previous = cache.removeAll(new Predicate() - { - @Override - public boolean apply(String item) - { - return item.startsWith("test"); - } - }); + Iterable previous = cache.removeAll(item -> item != null && item.startsWith("test")); assertThat(previous, containsInAnyOrder("test123", "test456")); assertNull(cache.get("test-1")); diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java index 694b07e54f..a78a8acba9 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java @@ -34,31 +34,27 @@ package sonia.scm.plugin; //~--- non-JDK imports -------------------------------------------------------- import com.google.common.base.Charsets; -import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.io.Resources; - import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import static org.hamcrest.Matchers.*; - -import static org.junit.Assert.*; - -//~--- JDK imports ------------------------------------------------------------ - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; - import java.lang.reflect.InvocationTargetException; - import java.net.URL; - import java.util.Set; +import java.util.stream.StreamSupport; + +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.*; + +//~--- JDK imports ------------------------------------------------------------ /** * @@ -370,15 +366,10 @@ public class PluginProcessorTest private PluginWrapper findPlugin(Iterable plugin, final String id) { - return Iterables.find(plugin, new Predicate() - { - - @Override - public boolean apply(PluginWrapper input) - { - return id.equals(input.getId()); - } - }); + return StreamSupport.stream(plugin.spliterator(), false) + .filter(input -> id.equals(input.getId())) + .findFirst() + .orElse(null); } //~--- inner classes -------------------------------------------------------- diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/PluginTreeTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/PluginTreeTest.java index 06d6c1732c..31e008b42d 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/PluginTreeTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/PluginTreeTest.java @@ -33,26 +33,22 @@ package sonia.scm.plugin; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Function; import com.google.common.collect.Lists; - import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import static org.hamcrest.Matchers.*; - -import static org.junit.Assert.*; - -//~--- JDK imports ------------------------------------------------------------ - import java.io.IOException; - import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.junit.Assert.assertThat; + +//~--- JDK imports ------------------------------------------------------------ + /** * * @author Sebastian Sdorra @@ -265,15 +261,7 @@ public class PluginTreeTest */ private List unwrapIds(List nodes) { - return Lists.transform(nodes, new Function() - { - - @Override - public String apply(PluginNode input) - { - return input.getId(); - } - }); + return Lists.transform(nodes, PluginNode::getId); } //~--- fields --------------------------------------------------------------- diff --git a/scm-webapp/src/test/java/sonia/scm/security/DefaultKeyGeneratorTest.java b/scm-webapp/src/test/java/sonia/scm/security/DefaultKeyGeneratorTest.java index edec43098c..57b038d5f1 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/DefaultKeyGeneratorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/DefaultKeyGeneratorTest.java @@ -35,22 +35,15 @@ package sonia.scm.security; //~--- non-JDK imports -------------------------------------------------------- import com.google.common.collect.Sets; - import org.junit.Test; +import java.util.Set; +import java.util.concurrent.*; + import static org.junit.Assert.*; //~--- JDK imports ------------------------------------------------------------ -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - /** * * @author Sebastian Sdorra @@ -96,28 +89,22 @@ public class DefaultKeyGeneratorTest for (int i = 0; i < 10; i++) { - Future> future = executor.submit(new Callable>() - { + Future> future = executor.submit(() -> { + Set keys = Sets.newHashSet(); - @Override - public Set call() + for (int i1 = 0; i1 < 1000; i1++) { - Set keys = Sets.newHashSet(); + String key = generator.createKey(); - for (int i = 0; i < 1000; i++) + if (keys.contains(key)) { - String key = generator.createKey(); - - if (keys.contains(key)) - { - fail("dublicate key"); - } - - keys.add(key); + fail("dublicate key"); } - return keys; + keys.add(key); } + + return keys; }); futureSet.add(future); diff --git a/scm-webapp/src/test/java/sonia/scm/security/DefaultSecuritySystemTest.java b/scm-webapp/src/test/java/sonia/scm/security/DefaultSecuritySystemTest.java index 95ad64b349..f8fd62375e 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/DefaultSecuritySystemTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/DefaultSecuritySystemTest.java @@ -34,27 +34,23 @@ package sonia.scm.security; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Predicate; - import org.apache.shiro.authz.UnauthorizedException; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.realm.SimpleAccountRealm; - import org.junit.Before; import org.junit.Test; - import sonia.scm.AbstractTestBase; import sonia.scm.store.JAXBConfigurationEntryStoreFactory; import sonia.scm.util.MockUtil; -import static org.hamcrest.Matchers.*; +import java.util.List; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.greaterThan; import static org.junit.Assert.*; //~--- JDK imports ------------------------------------------------------------ -import java.util.List; - /** * * @author Sebastian Sdorra @@ -184,15 +180,7 @@ public class DefaultSecuritySystemTest extends AbstractTestBase createPermission("hitchhiker", true, "repository:*:READ"); List filtered = - securitySystem.getPermissions(new Predicate() - { - - @Override - public boolean apply(AssignedPermission input) - { - return !input.isGroupPermission(); - } - }); + securitySystem.getPermissions(input -> !(input != null && input.isGroupPermission())); assertEquals(2, filtered.size()); assertThat(filtered, containsInAnyOrder(trillian, dent)); diff --git a/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java b/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java index 186b809367..bfac40b4df 100644 --- a/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java +++ b/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java @@ -89,15 +89,8 @@ public class MustacheTemplateTest extends TemplateTestBase @Override protected void prepareEnv(Map env) { - env.put("test", new Function() - { - - @Override - public String apply(String input) - { - throw new UnsupportedOperationException("Not supported yet."); - } - + env.put("test", (Function) input -> { + throw new UnsupportedOperationException("Not supported yet."); }); }