You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2020/04/11 20:10:33 UTC

[maven-indexer] branch MINDEXER-116x created (now edd559e)

This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a change to branch MINDEXER-116x
in repository https://gitbox.apache.org/repos/asf/maven-indexer.git.


      at edd559e  [MINDEXER-116] Move code to Java 7 syntax

This branch includes the following new commits:

     new edd559e  [MINDEXER-116] Move code to Java 7 syntax

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-indexer] 01/01: [MINDEXER-116] Move code to Java 7 syntax

Posted by sl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch MINDEXER-116x
in repository https://gitbox.apache.org/repos/asf/maven-indexer.git

commit edd559e64dfdd66bc753c2ee8c6d985a7a43d921
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Mon Feb 3 01:13:41 2020 +0100

    [MINDEXER-116] Move code to Java 7 syntax
---
 .../apache/maven/index/cli/NexusIndexerCli.java    |   4 +-
 .../maven/index/cli/PartialImplementation.java     |   6 +-
 .../java/org/apache/maven/index/ArtifactInfo.java  |   2 +-
 .../org/apache/maven/index/ArtifactInfoGroup.java  |   2 +-
 .../org/apache/maven/index/DefaultIndexer.java     |  11 +-
 .../apache/maven/index/DefaultIndexerEngine.java   |   2 +-
 .../maven/index/DefaultIteratorResultSet.java      |   6 +-
 .../apache/maven/index/DefaultNexusIndexer.java    |   2 +-
 .../org/apache/maven/index/DefaultScanner.java     |   2 +-
 .../apache/maven/index/DefaultScannerListener.java |   8 +-
 .../apache/maven/index/DefaultSearchEngine.java    |  25 +--
 .../index/UniqueArtifactFilterPostprocessor.java   |   4 +-
 .../index/UniqueGAArtifactFilterPostprocessor.java |   2 +-
 .../archetype/AbstractArchetypeDataSource.java     |   2 +-
 .../artifact/DefaultArtifactPackagingMapper.java   |   4 +-
 .../java/org/apache/maven/index/artifact/Gav.java  | 197 ++-------------------
 .../maven/index/artifact/M1ArtifactRecognizer.java |   2 +-
 .../maven/index/artifact/M1GavCalculator.java      |   4 -
 .../maven/index/artifact/M2ArtifactRecognizer.java |   2 +-
 .../maven/index/artifact/M2GavCalculator.java      |   8 +-
 .../index/context/DefaultIndexingContext.java      |  14 +-
 .../maven/index/context/MergedIndexingContext.java |   8 +-
 .../maven/index/context/NexusIndexMultiReader.java |   6 +-
 .../index/context/StaticContextMemberProvider.java |   2 +-
 .../maven/index/context/TrackingLockFactory.java   |   2 +-
 .../maven/index/creator/AbstractIndexCreator.java  |   2 +-
 .../MavenPluginArtifactInfoIndexCreator.java       |   2 +-
 .../index/creator/OsgiArtifactIndexCreator.java    |   7 +-
 .../incremental/DefaultIncrementalHandler.java     |  10 +-
 .../maven/index/packer/DefaultIndexPacker.java     |  12 +-
 .../apache/maven/index/packer/DigesterUtils.java   |  28 +--
 .../maven/index/treeview/DefaultIndexTreeView.java |  35 ++--
 .../maven/index/treeview/TreeViewRequest.java      |   2 +-
 .../maven/index/updater/DefaultIndexUpdater.java   |   4 +-
 .../maven/index/updater/IndexDataWriter.java       |   4 +-
 .../maven/index/util/IndexCreatorSorter.java       |   2 +-
 .../maven/index/AbstractIndexCreatorHelper.java    |   6 +-
 .../maven/index/AbstractRepoNexusIndexerTest.java  |   8 +-
 .../maven/index/DefaultIndexNexusIndexerTest.java  |   2 +-
 .../apache/maven/index/DuplicateSearchTest.java    |   4 +-
 .../maven/index/Mindexer35NexusIndexerTest.java    |   2 +-
 .../maven/index/Nexus13NexusIndexerTest.java       |   6 +-
 .../maven/index/Nexus1911IncrementalTest.java      |  21 +--
 .../maven/index/Nexus3881NexusIndexerTest.java     |   2 +-
 .../maven/index/Nexus687NexusIndexerTest.java      |   2 +-
 .../maven/index/SearchWithAnEmptyIndexTest.java    |   4 +-
 .../maven/index/artifact/M1GavCalculatorTest.java  |   2 +-
 .../maven/index/artifact/M2GavCalculatorTest.java  |   2 +-
 .../maven/index/context/NexusAnalyzerTest.java     |   2 +-
 .../MavenPluginArtifactInfoIndexCreatorTest.java   |   2 +-
 .../updater/DefaultIndexUpdaterEmbeddingIT.java    |   2 +-
 .../index/updater/FullBootProofOfConcept.java      |  20 +--
 .../apache/maven/index/updater/IndexDataTest.java  |   2 +-
 .../maven/index/updater/TrackingFetcher.java       |   2 +-
 .../index/updater/fixtures/ServerTestFixture.java  |  17 +-
 .../examples/indexing/IndexerConfiguration.java    |   2 +-
 .../org/apache/maven/index/reader/ChunkReader.java |   2 +-
 .../org/apache/maven/index/reader/IndexWriter.java |   9 +-
 .../java/org/apache/maven/index/reader/Record.java |  87 +++++----
 .../apache/maven/index/reader/RecordCompactor.java |  10 +-
 .../apache/maven/index/reader/RecordExpander.java  |  10 +-
 .../java/org/apache/maven/index/reader/Utils.java  |   6 +-
 .../maven/index/reader/CachingResourceHandler.java |  10 +-
 .../apache/maven/index/reader/IndexReaderTest.java | 100 +++++------
 .../org/apache/maven/index/reader/TestSupport.java |  10 +-
 .../org/apache/maven/index/reader/TestUtils.java   |   4 +-
 .../apache/maven/index/reader/TransformTest.java   |   2 +-
 67 files changed, 245 insertions(+), 550 deletions(-)

diff --git a/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java b/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
index d64f039..1d34714 100644
--- a/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
+++ b/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
@@ -377,7 +377,7 @@ public class NexusIndexerCli
 
                 if ( chunkCount != null )
                 {
-                    request.setMaxIndexChunks( chunkCount.intValue() );
+                    request.setMaxIndexChunks( chunkCount );
                 }
 
                 packIndex( packer, request, debug, quiet );
@@ -450,7 +450,7 @@ public class NexusIndexerCli
             type = cli.getOptionValue( TYPE );
         }
 
-        List<IndexCreator> indexers = new ArrayList<IndexCreator>(); // NexusIndexer.DEFAULT_INDEX;
+        List<IndexCreator> indexers = new ArrayList<>(); // NexusIndexer.DEFAULT_INDEX;
 
         if ( "default".equals( type ) )
         {
diff --git a/indexer-cli/src/main/java/org/apache/maven/index/cli/PartialImplementation.java b/indexer-cli/src/main/java/org/apache/maven/index/cli/PartialImplementation.java
index fce26d1..514bb63 100644
--- a/indexer-cli/src/main/java/org/apache/maven/index/cli/PartialImplementation.java
+++ b/indexer-cli/src/main/java/org/apache/maven/index/cli/PartialImplementation.java
@@ -42,11 +42,7 @@ public class PartialImplementation
             final Method localMethod = getClass().getMethod( method.getName(), method.getParameterTypes() );
             return localMethod.invoke( this, args );
         }
-        catch ( NoSuchMethodException e )
-        {
-            throw new UnsupportedOperationException( "Method " + method.getName() + "() is not supported" );
-        }
-        catch ( IllegalAccessException e )
+        catch ( NoSuchMethodException | IllegalAccessException e )
         {
             throw new UnsupportedOperationException( "Method " + method.getName() + "() is not supported" );
         }
diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java
index 7f75838..b2a1549 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java
@@ -330,7 +330,7 @@ public class ArtifactInfo
      */
     private String bundleRequiredExecutionEnvironment;
 
-    private final Map<String, String> attributes = new HashMap<String, String>();
+    private final Map<String, String> attributes = new HashMap<>();
 
     private final List<MatchHighlight> matchHighlights = new ArrayList<>();
 
diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoGroup.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoGroup.java
index aa03678..c7881aa 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoGroup.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoGroup.java
@@ -43,7 +43,7 @@ public class ArtifactInfoGroup
     {
         this.groupKey = groupKey;
 
-        this.artifactInfos = new TreeSet<ArtifactInfo>( comparator );
+        this.artifactInfos = new TreeSet<>( comparator );
     }
 
     public String getGroupKey()
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
index 36909b1..f230a48 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
@@ -222,21 +222,16 @@ public class DefaultIndexer
     public Collection<ArtifactInfo> identify( Query query, Collection<IndexingContext> contexts )
         throws IOException
     {
-        final IteratorSearchResponse result =
-            searcher.searchIteratorPaged( new IteratorSearchRequest( query ), contexts );
-        try
+        try ( IteratorSearchResponse result = searcher.searchIteratorPaged(
+                new IteratorSearchRequest( query ), contexts ) )
         {
-            final ArrayList<ArtifactInfo> ais = new ArrayList<ArtifactInfo>( result.getTotalHitsCount() );
+            final List<ArtifactInfo> ais = new ArrayList<>( result.getTotalHitsCount() );
             for ( ArtifactInfo ai : result )
             {
                 ais.add( ai );
             }
             return ais;
         }
-        finally
-        {
-            result.close();
-        }
     }
 
     // ----------------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
index 64faa77..87b7c2d 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
@@ -135,7 +135,7 @@ public class DefaultIndexerEngine
 
     private Map<String, String> toMap( Document d )
     {
-        final HashMap<String, String> result = new HashMap<String, String>();
+        final HashMap<String, String> result = new HashMap<>();
 
         for ( Object o : d.getFields() )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java
index cb30ef3..2a70159 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java
@@ -411,11 +411,11 @@ public class DefaultIteratorResultSet
         {
             frag = highlighter.getBestTextFragments( tokenStream, text, false, maxNumFragments );
 
-            for ( int i = 0; i < frag.length; i++ )
+            for ( TextFragment textFragment : frag )
             {
-                if ( ( frag[i] != null ) && ( frag[i].getScore() > 0 ) )
+                if ( ( textFragment != null ) && ( textFragment.getScore() > 0 ) )
                 {
-                    fragTexts.add( frag[i].toString() );
+                    fragTexts.add( textFragment.toString() );
                 }
             }
         }
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
index 3530edd..73a35dc 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
@@ -71,7 +71,7 @@ public class DefaultNexusIndexer
 
     private final QueryCreator queryCreator;
 
-    private final Map<String, IndexingContext> indexingContexts = new ConcurrentHashMap<String, IndexingContext>();
+    private final Map<String, IndexingContext> indexingContexts = new ConcurrentHashMap<>();
 
 
     @Inject
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java
index 58f0973..442f77d 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java
@@ -75,7 +75,7 @@ public class DefaultScanner
 
         if ( fileArray != null )
         {
-            Set<File> files = new TreeSet<File>( new ScannerFileComparator() );
+            Set<File> files = new TreeSet<>( new ScannerFileComparator() );
 
             files.addAll( Arrays.asList( fileArray ) );
 
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
index a9ca2c7..01f6f4c 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
@@ -52,13 +52,13 @@ public class DefaultScannerListener
 
     private final ArtifactScanningListener listener;
 
-    private final Set<String> uinfos = new HashSet<String>();
+    private final Set<String> uinfos = new HashSet<>();
 
-    private final Set<String> processedUinfos = new HashSet<String>();
+    private final Set<String> processedUinfos = new HashSet<>();
 
-    private final Set<String> allGroups = new HashSet<String>();
+    private final Set<String> allGroups = new HashSet<>();
 
-    private final Set<String> groups = new HashSet<String>();
+    private final Set<String> groups = new HashSet<>();
 
     private final List<Exception> exceptions = new ArrayList<>();
 
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
index b74302f..3155e6f 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
@@ -99,7 +99,7 @@ public class DefaultSearchEngine
     {
         List<IndexingContext> contexts = getParticipatingContexts( indexingContexts, ignoreContext );
 
-        final TreeSet<ArtifactInfo> result = new TreeSet<ArtifactInfo>( request.getArtifactInfoComparator() );
+        final TreeSet<ArtifactInfo> result = new TreeSet<>( request.getArtifactInfoComparator() );
         return new FlatSearchResponse( request.getQuery(), searchFlat( request, result, contexts, request.getQuery() ),
             result );
     }
@@ -126,8 +126,7 @@ public class DefaultSearchEngine
     {
         List<IndexingContext> contexts = getParticipatingContexts( indexingContexts, ignoreContext );
 
-        final TreeMap<String, ArtifactInfoGroup> result =
-            new TreeMap<String, ArtifactInfoGroup>( request.getGroupKeyComparator() );
+        final TreeMap<String, ArtifactInfoGroup> result = new TreeMap<>( request.getGroupKeyComparator() );
 
         return new GroupedSearchResponse( request.getQuery(), searchGrouped( request, result, request.getGrouping(),
             contexts, request.getQuery() ), result );
@@ -217,9 +216,9 @@ public class DefaultSearchEngine
 
                     hitCount += collector.getTotalHits();
 
-                    for ( int i = 0; i < scoreDocs.length; i++ )
+                    for ( ScoreDoc scoreDoc : scoreDocs )
                     {
-                        Document doc = indexSearcher.doc( scoreDocs[i].doc );
+                        Document doc = indexSearcher.doc( scoreDoc.doc );
 
                         ArtifactInfo artifactInfo = IndexUtils.constructArtifactInfo( doc, context );
 
@@ -293,19 +292,7 @@ public class DefaultSearchEngine
                                                new DefaultIteratorResultSet( request, indexSearcher, contexts,
                                                                              hits.topDocs() ) );
         }
-        catch ( IOException e )
-        {
-            try
-            {
-                indexSearcher.release();
-            }
-            catch ( Exception secondary )
-            {
-                // do not mask original exception
-            }
-            throw e;
-        }
-        catch ( RuntimeException e )
+        catch ( IOException | RuntimeException e )
         {
             try
             {
@@ -377,7 +364,7 @@ public class DefaultSearchEngine
     {
         // to not change the API all away, but we need stable ordering here
         // filter for those 1st, that take part in here
-        final ArrayList<IndexingContext> contexts = new ArrayList<IndexingContext>( indexingContexts.size() );
+        final ArrayList<IndexingContext> contexts = new ArrayList<>( indexingContexts.size() );
 
         for ( IndexingContext ctx : indexingContexts )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/UniqueArtifactFilterPostprocessor.java b/indexer-core/src/main/java/org/apache/maven/index/UniqueArtifactFilterPostprocessor.java
index e3a9b32..4a40676 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/UniqueArtifactFilterPostprocessor.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/UniqueArtifactFilterPostprocessor.java
@@ -35,9 +35,9 @@ public class UniqueArtifactFilterPostprocessor
 {
     public static final String COLLAPSED = "COLLAPSED";
 
-    private final Set<Field> uniqueFields = new HashSet<Field>();
+    private final Set<Field> uniqueFields = new HashSet<>();
 
-    private final Set<String> gas = new HashSet<String>();
+    private final Set<String> gas = new HashSet<>();
 
     public UniqueArtifactFilterPostprocessor()
     {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/UniqueGAArtifactFilterPostprocessor.java b/indexer-core/src/main/java/org/apache/maven/index/UniqueGAArtifactFilterPostprocessor.java
index cbdfa8e..d61cdc5 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/UniqueGAArtifactFilterPostprocessor.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/UniqueGAArtifactFilterPostprocessor.java
@@ -38,7 +38,7 @@ public class UniqueGAArtifactFilterPostprocessor
 
     private final boolean repositoriesIgnored;
 
-    private final Set<String> gas = new HashSet<String>();
+    private final Set<String> gas = new HashSet<>();
 
     public UniqueGAArtifactFilterPostprocessor( boolean repositoriesIgnored )
     {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java b/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java
index 3ecb0c9..92a0014 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java
@@ -95,7 +95,7 @@ public abstract class AbstractArchetypeDataSource
     private Map<String, String> getRepositoryMap()
     {
         // can't cache this because indexes can be changed
-        Map<String, String> repositories = new HashMap<String, String>();
+        Map<String, String> repositories = new HashMap<>();
 
         for ( IndexingContext context : getIndexingContexts() )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java b/indexer-core/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java
index 79201d3..5c1097a 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java
@@ -61,7 +61,7 @@ public class DefaultArtifactPackagingMapper
 
     static
     {
-        DEFAULTS = new HashMap<String, String>();
+        DEFAULTS = new HashMap<>();
         DEFAULTS.put( "ejb-client", "jar" );
         DEFAULTS.put( "ejb", "jar" );
         DEFAULTS.put( "rar", "jar" );
@@ -92,7 +92,7 @@ public class DefaultArtifactPackagingMapper
             {
                 if ( packaging2extensionMapping == null )
                 {
-                    packaging2extensionMapping = new HashMap<String, String>();
+                    packaging2extensionMapping = new HashMap<>();
 
                     // merge defaults
                     packaging2extensionMapping.putAll( DEFAULTS );
diff --git a/indexer-core/src/main/java/org/apache/maven/index/artifact/Gav.java b/indexer-core/src/main/java/org/apache/maven/index/artifact/Gav.java
index d7c2d59..dd70ab7 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/artifact/Gav.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/artifact/Gav.java
@@ -19,6 +19,8 @@ package org.apache.maven.index.artifact;
  * under the License.
  */
 
+import java.util.Objects;
+
 /**
  * An immutable value class representing unique artifact coordinates.
  * 
@@ -233,191 +235,30 @@ public class Gav
     }
 
     @Override
-    public int hashCode()
-    {
-        int result = 1;
-        result = 31 * result + ( groupId == null ? 0 : groupId.hashCode() );
-        result = 31 * result + ( artifactId == null ? 0 : artifactId.hashCode() );
-        result = 31 * result + ( version == null ? 0 : version.hashCode() );
-        result = 31 * result + ( baseVersion == null ? 0 : baseVersion.hashCode() );
-        result = 31 * result + ( classifier == null ? 0 : classifier.hashCode() );
-        result = 31 * result + ( extension == null ? 0 : extension.hashCode() );
-        result = 31 * result + ( name == null ? 0 : name.hashCode() );
-        result = 31 * result + ( snapshot ? 1231 : 1237 );
-        result = 31 * result + ( snapshotBuildNumber == null ? 0 : snapshotBuildNumber.hashCode() );
-        result = 31 * result + ( snapshotTimeStamp == null ? 0 : snapshotTimeStamp.hashCode() );
-        result = 31 * result + ( hash ? 1231 : 1237 );
-        result = 31 * result + ( hashType == null ? 0 : hashType.hashCode() );
-        result = 31 * result + ( signature ? 1231 : 1237 );
-        result = 31 * result + ( signatureType == null ? 0 : signatureType.hashCode() );
-        return result;
-    }
-
-    @Override
-    public boolean equals( Object obj )
+    public boolean equals( Object o )
     {
-        if ( this == obj )
+        if ( this == o )
         {
             return true;
         }
-        if ( obj == null )
-        {
-            return false;
-        }
-        if ( getClass() != obj.getClass() )
-        {
-            return false;
-        }
-
-        Gav other = (Gav) obj;
-
-        if ( groupId == null )
-        {
-            if ( other.groupId != null )
-            {
-                return false;
-            }
-        }
-        else if ( !groupId.equals( other.groupId ) )
-        {
-            return false;
-        }
-
-        if ( artifactId == null )
-        {
-            if ( other.artifactId != null )
-            {
-                return false;
-            }
-        }
-        else if ( !artifactId.equals( other.artifactId ) )
-        {
-            return false;
-        }
-
-        if ( version == null )
-        {
-            if ( other.version != null )
-            {
-                return false;
-            }
-        }
-        else if ( !version.equals( other.version ) )
-        {
-            return false;
-        }
-
-        if ( baseVersion == null )
-        {
-            if ( other.baseVersion != null )
-            {
-                return false;
-            }
-        }
-        else if ( !baseVersion.equals( other.baseVersion ) )
-        {
-            return false;
-        }
-
-        if ( classifier == null )
-        {
-            if ( other.classifier != null )
-            {
-                return false;
-            }
-        }
-        else if ( !classifier.equals( other.classifier ) )
-        {
-            return false;
-        }
-
-        if ( extension == null )
-        {
-            if ( other.extension != null )
-            {
-                return false;
-            }
-        }
-        else if ( !extension.equals( other.extension ) )
-        {
-            return false;
-        }
-
-        if ( name == null )
-        {
-            if ( other.name != null )
-            {
-                return false;
-            }
-        }
-        else if ( !name.equals( other.name ) )
-        {
-            return false;
-        }
-
-        if ( snapshot != other.snapshot )
-        {
-            return false;
-        }
-
-        if ( snapshotBuildNumber == null )
-        {
-            if ( other.snapshotBuildNumber != null )
-            {
-                return false;
-            }
-        }
-        else if ( !snapshotBuildNumber.equals( other.snapshotBuildNumber ) )
-        {
-            return false;
-        }
-
-        if ( snapshotTimeStamp == null )
-        {
-            if ( other.snapshotTimeStamp != null )
-            {
-                return false;
-            }
-        }
-        else if ( !snapshotTimeStamp.equals( other.snapshotTimeStamp ) )
-        {
-            return false;
-        }
-
-        if ( hash != other.hash )
-        {
-            return false;
-        }
-
-        if ( hashType == null )
-        {
-            if ( other.hashType != null )
-            {
-                return false;
-            }
-        }
-        else if ( !hashType.equals( other.hashType ) )
-        {
-            return false;
-        }
-
-        if ( signature != other.signature )
-        {
-            return false;
-        }
-
-        if ( signatureType == null )
-        {
-            if ( other.signatureType != null )
-            {
-                return false;
-            }
-        }
-        else if ( !signatureType.equals( other.signatureType ) )
+        if ( o == null || getClass() != o.getClass() )
         {
             return false;
         }
+        Gav gav = (Gav) o;
+        return snapshot == gav.snapshot && hash == gav.hash && signature == gav.signature && Objects.equals( groupId,
+                gav.groupId ) && Objects.equals( artifactId, gav.artifactId ) && Objects.equals( version,
+                gav.version ) && Objects.equals( baseVersion, gav.baseVersion ) && Objects.equals( classifier,
+                gav.classifier ) && Objects.equals( extension, gav.extension ) && Objects.equals( snapshotBuildNumber,
+                gav.snapshotBuildNumber ) && Objects.equals( snapshotTimeStamp,
+                gav.snapshotTimeStamp ) && Objects.equals( name,
+                gav.name ) && hashType == gav.hashType && signatureType == gav.signatureType;
+    }
 
-        return true;
+    @Override
+    public int hashCode()
+    {
+        return Objects.hash( groupId, artifactId, version, baseVersion, classifier, extension, snapshotBuildNumber,
+                snapshotTimeStamp, name, snapshot, hash, hashType, signature, signatureType );
     }
 }
diff --git a/indexer-core/src/main/java/org/apache/maven/index/artifact/M1ArtifactRecognizer.java b/indexer-core/src/main/java/org/apache/maven/index/artifact/M1ArtifactRecognizer.java
index 30f463b..a1dcde0 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/artifact/M1ArtifactRecognizer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/artifact/M1ArtifactRecognizer.java
@@ -45,7 +45,7 @@ public class M1ArtifactRecognizer
      */
     public static boolean isSnapshot( String path )
     {
-        return path.indexOf( "SNAPSHOT" ) != -1;
+        return path.contains( "SNAPSHOT" );
     }
 
     /**
diff --git a/indexer-core/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java b/indexer-core/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java
index faf564a..d922bd2 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java
@@ -136,10 +136,6 @@ public class M1GavCalculator
                 }
             }
         }
-        catch ( StringIndexOutOfBoundsException e )
-        {
-            return null;
-        }
         catch ( IndexOutOfBoundsException e )
         {
             return null;
diff --git a/indexer-core/src/main/java/org/apache/maven/index/artifact/M2ArtifactRecognizer.java b/indexer-core/src/main/java/org/apache/maven/index/artifact/M2ArtifactRecognizer.java
index 6dd9f1a..04d5603 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/artifact/M2ArtifactRecognizer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/artifact/M2ArtifactRecognizer.java
@@ -48,7 +48,7 @@ public class M2ArtifactRecognizer
      */
     public static boolean isSnapshot( String path )
     {
-        return path.indexOf( "SNAPSHOT" ) != -1;
+        return path.contains( "SNAPSHOT" );
     }
 
     /**
diff --git a/indexer-core/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java b/indexer-core/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java
index 7356d19..5405a0a 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java
@@ -109,11 +109,7 @@ public class M2GavCalculator
                     checksumType, signatureType );
             }
         }
-        catch ( NumberFormatException e )
-        {
-            return null;
-        }
-        catch ( StringIndexOutOfBoundsException e )
+        catch ( NumberFormatException | StringIndexOutOfBoundsException e )
         {
             return null;
         }
@@ -193,7 +189,7 @@ public class M2GavCalculator
             try
             {
                 SimpleDateFormat df = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
-                snapshotTimestamp = Long.valueOf( df.parse( sb.toString() ).getTime() );
+                snapshotTimestamp = df.parse( sb.toString() ).getTime();
             }
             catch ( ParseException e )
             {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
index 8a64a4d..d557805 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
@@ -669,12 +669,11 @@ public class DefaultIndexingContext
         try
         {
             final IndexWriter w = getIndexWriter();
-            final IndexReader directoryReader = DirectoryReader.open( directory );
-            TopScoreDocCollector collector = null;
-            try
+            try ( IndexReader directoryReader = DirectoryReader.open( directory ) )
             {
+                TopScoreDocCollector collector = null;
                 int numDocs = directoryReader.maxDoc();
-                
+
                 Bits liveDocs = MultiFields.getLiveDocs( directoryReader );
                 for ( int i = 0; i < numDocs; i++ )
                 {
@@ -717,7 +716,6 @@ public class DefaultIndexingContext
             }
             finally
             {
-                directoryReader.close();
                 commit();
             }
 
@@ -776,8 +774,8 @@ public class DefaultIndexingContext
         {
             final IndexReader r = is.getIndexReader();
 
-            Set<String> rootGroups = new LinkedHashSet<String>();
-            Set<String> allGroups = new LinkedHashSet<String>();
+            Set<String> rootGroups = new LinkedHashSet<>();
+            Set<String> allGroups = new LinkedHashSet<>();
 
             int numDocs = r.maxDoc();
             Bits liveDocs = MultiFields.getLiveDocs( r );
@@ -847,7 +845,7 @@ public class DefaultIndexingContext
         {
             indexSearcher.search( new TermQuery( new Term( field, filedValue ) ), collector );
             TopDocs topDocs = collector.topDocs();
-            Set<String> groups = new LinkedHashSet<String>( Math.max( 10, topDocs.totalHits ) );
+            Set<String> groups = new LinkedHashSet<>( Math.max( 10, topDocs.totalHits ) );
             if ( topDocs.totalHits > 0 )
             {
                 Document doc = indexSearcher.doc( topDocs.scoreDocs[0].doc );
diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java b/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
index f842959..0048e89 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
@@ -220,14 +220,14 @@ public class MergedIndexingContext
 
     public List<IndexCreator> getIndexCreators()
     {
-        HashSet<IndexCreator> creators = new HashSet<IndexCreator>();
+        HashSet<IndexCreator> creators = new HashSet<>();
 
         for ( IndexingContext ctx : getMembers() )
         {
             creators.addAll( ctx.getIndexCreators() );
         }
 
-        return new ArrayList<IndexCreator>( creators );
+        return new ArrayList<>( creators );
     }
 
     public Analyzer getAnalyzer()
@@ -335,7 +335,7 @@ public class MergedIndexingContext
     public Set<String> getAllGroups()
         throws IOException
     {
-        HashSet<String> result = new HashSet<String>();
+        HashSet<String> result = new HashSet<>();
 
         for ( IndexingContext ctx : getMembers() )
         {
@@ -354,7 +354,7 @@ public class MergedIndexingContext
     public Set<String> getRootGroups()
         throws IOException
     {
-        HashSet<String> result = new HashSet<String>();
+        HashSet<String> result = new HashSet<>();
 
         for ( IndexingContext ctx : getMembers() )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexMultiReader.java b/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexMultiReader.java
index 44bc696..9fa5cc5 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexMultiReader.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexMultiReader.java
@@ -38,7 +38,7 @@ public class NexusIndexMultiReader
 
     public NexusIndexMultiReader( final Collection<IndexingContext> contexts )
     {
-        this.contexts = Collections.unmodifiableList( new ArrayList<IndexingContext>( contexts ) );
+        this.contexts = Collections.unmodifiableList( new ArrayList<>( contexts ) );
     }
 
     public synchronized IndexReader acquire()
@@ -49,8 +49,8 @@ public class NexusIndexMultiReader
             release();
             throw new IllegalStateException( "acquire() called 2nd time without release() in between!" );
         }
-        this.searchers = new ArrayList<IndexSearcher>();
-        final ArrayList<IndexReader> contextReaders = new ArrayList<IndexReader>( contexts.size() );
+        this.searchers = new ArrayList<>();
+        final ArrayList<IndexReader> contextReaders = new ArrayList<>( contexts.size() );
         for ( IndexingContext ctx : contexts )
         {
             final IndexSearcher indexSearcher = ctx.acquireIndexSearcher();
diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java b/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
index a088fea..d087131 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
@@ -36,7 +36,7 @@ public class StaticContextMemberProvider
 
     public StaticContextMemberProvider( Collection<IndexingContext> members )
     {
-        ArrayList<IndexingContext> m = new ArrayList<IndexingContext>();
+        ArrayList<IndexingContext> m = new ArrayList<>();
 
         if ( members != null )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/TrackingLockFactory.java b/indexer-core/src/main/java/org/apache/maven/index/context/TrackingLockFactory.java
index 9bc6a02..3a55eee 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/context/TrackingLockFactory.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/context/TrackingLockFactory.java
@@ -44,7 +44,7 @@ final class TrackingLockFactory
     TrackingLockFactory( final LockFactory delegate )
     {
         this.delegate = checkNotNull( delegate );
-        this.emittedLocks = Collections.newSetFromMap( new ConcurrentHashMap<TrackingLock, Boolean>() );
+        this.emittedLocks = Collections.newSetFromMap( new ConcurrentHashMap<>() );
     }
 
     Set<? extends Lock> getEmittedLocks( String name )
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java
index 7252fff..fda8ad0 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java
@@ -56,7 +56,7 @@ public abstract class AbstractIndexCreator
     {
         this.id = id;
 
-        final ArrayList<String> deps = new ArrayList<String>();
+        final ArrayList<String> deps = new ArrayList<>();
 
         if ( creatorDependencies != null && !creatorDependencies.isEmpty() )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java
index dad2b32..c90e25f 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java
@@ -101,7 +101,7 @@ public class MavenPluginArtifactInfoIndexCreator
 
                     ai.setPrefix( plexusConfig.getChild( "goalPrefix" ).getValue() );
 
-                    ai.setGoals( new ArrayList<String>() );
+                    ai.setGoals( new ArrayList<>() );
 
                     PlexusConfiguration[] mojoConfigs = plexusConfig.getChild( "mojos" ).getChildren( "mojo" );
 
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java
index 7394e9e..6baf299 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java
@@ -620,9 +620,8 @@ public class OsgiArtifactIndexCreator
         try
         {
             MessageDigest digest = MessageDigest.getInstance( "SHA-256" );
-            DigestInputStream in = new DigestInputStream( new FileInputStream( f ), digest );
 
-            try
+            try ( DigestInputStream in = new DigestInputStream( new FileInputStream( f ), digest ) )
             {
                 byte buf[] = new byte[8192];
                 while ( in.read( buf ) >= 0 )
@@ -638,10 +637,6 @@ public class OsgiArtifactIndexCreator
                     sha256 = builder.toString();
                 }
             }
-            finally
-            {
-                in.close();
-            }
 
         }
         catch ( NoSuchAlgorithmException e )
diff --git a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
index bef2f2c..c729caa 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
@@ -247,15 +247,15 @@ public class DefaultIncrementalHandler
             }
         } );
 
-        for ( int i = 0; i < files.length; i++ )
+        for ( File file : files )
         {
-            String[] parts = files[i].getName().split( "\\." );
+            String[] parts = file.getName().split( "\\." );
 
             boolean found = false;
             for ( Entry<Object, Object> entry : properties.entrySet() )
             {
-                if ( entry.getKey().toString().startsWith( IndexingContext.INDEX_CHUNK_PREFIX )
-                    && entry.getValue().equals( parts[1] ) )
+                if ( entry.getKey().toString().startsWith(
+                        IndexingContext.INDEX_CHUNK_PREFIX ) && entry.getValue().equals( parts[1] ) )
                 {
                     found = true;
                     break;
@@ -264,7 +264,7 @@ public class DefaultIncrementalHandler
 
             if ( !found )
             {
-                files[i].delete();
+                file.delete();
             }
         }
     }
diff --git a/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java b/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
index 48233dc..9821d5c 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
@@ -194,20 +194,10 @@ public class DefaultIndexPacker
 
         Properties properties = new Properties();
 
-        FileInputStream fos = null;
-
-        try
+        try ( FileInputStream fos = new FileInputStream( file ) )
         {
-            fos = new FileInputStream( file );
             properties.load( fos );
         }
-        finally
-        {
-            if ( fos != null )
-            {
-                fos.close();
-            }
-        }
 
         return properties;
     }
diff --git a/indexer-core/src/main/java/org/apache/maven/index/packer/DigesterUtils.java b/indexer-core/src/main/java/org/apache/maven/index/packer/DigesterUtils.java
index 5adffad..27f8397 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/packer/DigesterUtils.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/packer/DigesterUtils.java
@@ -102,12 +102,7 @@ public class DigesterUtils
 
             return getDigest( "SHA1", fis );
         }
-        catch ( NoSuchAlgorithmException e )
-        {
-            // will not happen
-            return null;
-        }
-        catch ( UnsupportedEncodingException e )
+        catch ( NoSuchAlgorithmException | UnsupportedEncodingException e )
         {
             // will not happen
             return null;
@@ -146,12 +141,7 @@ public class DigesterUtils
         {
             return getDigest( "SHA1", fis );
         }
-        catch ( NoSuchAlgorithmException e )
-        {
-            // will not happen
-            return null;
-        }
-        catch ( FileNotFoundException e )
+        catch ( NoSuchAlgorithmException | FileNotFoundException e )
         {
             // will not happen
             return null;
@@ -174,12 +164,7 @@ public class DigesterUtils
 
             return getDigest( "MD5", fis );
         }
-        catch ( NoSuchAlgorithmException e )
-        {
-            // will not happen
-            return null;
-        }
-        catch ( UnsupportedEncodingException e )
+        catch ( NoSuchAlgorithmException | UnsupportedEncodingException e )
         {
             // will not happen
             return null;
@@ -219,12 +204,7 @@ public class DigesterUtils
         {
             return getDigest( "MD5", fis );
         }
-        catch ( NoSuchAlgorithmException e )
-        {
-            // will not happen
-            return null;
-        }
-        catch ( FileNotFoundException e )
+        catch ( NoSuchAlgorithmException | FileNotFoundException e )
         {
             // will not happen
             return null;
diff --git a/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java b/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
index d1a4490..f80b7b4 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
@@ -139,15 +139,13 @@ public class DefaultIndexTreeView
     {
         String path = root.getPath();
 
-        Map<String, TreeNode> folders = new HashMap<String, TreeNode>();
+        Map<String, TreeNode> folders = new HashMap<>();
 
         String rootPartialGroupId = StringUtils.strip( root.getPath().replaceAll( "/", "." ), "." );
 
         folders.put( Type.G + ":" + rootPartialGroupId, root );
 
-        IteratorSearchResponse artifacts = getArtifacts( root, request );
-
-        try
+        try ( IteratorSearchResponse artifacts = getArtifacts( root, request ) )
         {
             for ( ArtifactInfo ai : artifacts )
             {
@@ -188,17 +186,14 @@ public class DefaultIndexTreeView
                             groupResource = folders.get( groupKey );
 
                             // it needs to be created only if not found (is null) and is _below_ groupParentResource
-                            if ( groupResource == null
-                                && groupParentResource.getPath().length() < getPathForAi( ai,
-                                                                                          MAVEN.GROUP_ID ).length() )
+                            if ( groupResource == null && groupParentResource.getPath().length() < getPathForAi( ai,
+                                    MAVEN.GROUP_ID ).length() )
                             {
-                                String gNodeName =
-                                    partialGroupId.lastIndexOf( '.' ) > -1 ? partialGroupId.substring(
-                                        partialGroupId.lastIndexOf( '.' ) + 1, partialGroupId.length() )
-                                        : partialGroupId;
+                                String gNodeName = partialGroupId.lastIndexOf( '.' ) > -1 ? partialGroupId.substring(
+                                        partialGroupId.lastIndexOf( '.' ) + 1,
+                                        partialGroupId.length() ) : partialGroupId;
 
-                                groupResource =
-                                    request.getFactory().createGNode( this, request,
+                                groupResource = request.getFactory().createGNode( this, request,
                                         "/" + partialGroupId.replaceAll( "\\.", "/" ) + "/", gNodeName );
 
                                 groupParentResource.getChildren().add( groupResource );
@@ -220,15 +215,15 @@ public class DefaultIndexTreeView
                         }
 
                         artifactResource = request.getFactory().createANode( this, request, ai,
-                                                                             getPathForAi( ai, MAVEN.ARTIFACT_ID ) );
+                                getPathForAi( ai, MAVEN.ARTIFACT_ID ) );
 
                         groupParentResource.getChildren().add( artifactResource );
 
                         folders.put( artifactKey, artifactResource );
                     }
 
-                    versionResource =
-                        request.getFactory().createVNode( this, request, ai, getPathForAi( ai, MAVEN.VERSION ) );
+                    versionResource = request.getFactory().createVNode( this, request, ai,
+                            getPathForAi( ai, MAVEN.VERSION ) );
 
                     artifactResource.getChildren().add( versionResource );
 
@@ -238,13 +233,9 @@ public class DefaultIndexTreeView
                 String nodePath = getPathForAi( ai, null );
 
                 versionResource.getChildren().add(
-                    request.getFactory().createArtifactNode( this, request, ai, nodePath ) );
+                        request.getFactory().createArtifactNode( this, request, ai, nodePath ) );
             }
         }
-        finally
-        {
-            artifacts.close();
-        }
 
         if ( !request.hasFieldHints() )
         {
@@ -325,7 +316,7 @@ public class DefaultIndexTreeView
 
         int n = path.length();
 
-        Set<String> result = new HashSet<String>();
+        Set<String> result = new HashSet<>();
 
         for ( String group : allGroups )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/treeview/TreeViewRequest.java b/indexer-core/src/main/java/org/apache/maven/index/treeview/TreeViewRequest.java
index c46be1d..a14c89e 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/treeview/TreeViewRequest.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/treeview/TreeViewRequest.java
@@ -51,7 +51,7 @@ public class TreeViewRequest
 
         this.path = path;
 
-        this.fieldHints = new HashMap<Field, String>();
+        this.fieldHints = new HashMap<>();
 
         if ( hints != null && hints.size() != 0 )
         {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
index bcab914..0768918 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
@@ -541,7 +541,7 @@ public class DefaultIndexUpdater
 
         private final IndexUpdateResult result;
 
-        private final ArrayList<String> newChunks = new ArrayList<String>();
+        private final ArrayList<String> newChunks = new ArrayList<>();
 
         LocalCacheIndexAdaptor( File dir, IndexUpdateResult result )
         {
@@ -623,7 +623,7 @@ public class DefaultIndexUpdater
         public List<String> getChunks()
             throws IOException
         {
-            ArrayList<String> chunks = new ArrayList<String>();
+            ArrayList<String> chunks = new ArrayList<>();
 
             File chunksFile = new File( dir, CHUNKS_FILENAME );
             try ( BufferedReader r =
diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java
index 11550bd..f470dd1 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java
@@ -78,8 +78,8 @@ public class IndexDataWriter
         gos = new GZIPOutputStream( bos, 1024 * 2 );
         dos = new DataOutputStream( gos );
 
-        this.allGroups = new HashSet<String>();
-        this.rootGroups = new HashSet<String>();
+        this.allGroups = new HashSet<>();
+        this.rootGroups = new HashSet<>();
         this.descriptorWritten = false;
     }
 
diff --git a/indexer-core/src/main/java/org/apache/maven/index/util/IndexCreatorSorter.java b/indexer-core/src/main/java/org/apache/maven/index/util/IndexCreatorSorter.java
index 4c48116..8dbf4e5 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/util/IndexCreatorSorter.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/util/IndexCreatorSorter.java
@@ -35,7 +35,7 @@ public class IndexCreatorSorter
     {
         try
         {
-            final HashMap<String, IndexCreator> creatorsById = new HashMap<String, IndexCreator>( creators.size() );
+            final HashMap<String, IndexCreator> creatorsById = new HashMap<>( creators.size() );
 
             DAG dag = new DAG();
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java
index 6de6441..11f661b 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java
@@ -49,9 +49,9 @@ public class AbstractIndexCreatorHelper
     {
         super.setUp();
 
-        DEFAULT_CREATORS = new ArrayList<IndexCreator>();
-        FULL_CREATORS = new ArrayList<IndexCreator>();
-        MIN_CREATORS = new ArrayList<IndexCreator>();
+        DEFAULT_CREATORS = new ArrayList<>();
+        FULL_CREATORS = new ArrayList<>();
+        MIN_CREATORS = new ArrayList<>();
 
         IndexCreator min = lookup( IndexCreator.class, MinimalArtifactInfoIndexCreator.ID );
         IndexCreator mavenPlugin = lookup( IndexCreator.class, MavenPluginArtifactInfoIndexCreator.ID );
diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
index 5b34d49..554ff7a 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
@@ -567,9 +567,7 @@ public abstract class AbstractRepoNexusIndexerTest
         // org.terracotta.forge:forge-parent:1.0.5
         // org.terracotta.forge:archetype-parent:1.0.1
 
-        IteratorSearchResponse response = nexusIndexer.searchIterator( request );
-
-        try
+        try ( IteratorSearchResponse response = nexusIndexer.searchIterator( request ) )
         {
             assertEquals( response.getResults().toString(), 2, response.getTotalHitsCount() );
 
@@ -578,10 +576,6 @@ public abstract class AbstractRepoNexusIndexerTest
                 assertEquals( ai.getGroupId(), "org.terracotta.forge" );
             }
         }
-        finally
-        {
-            response.close();
-        }
     }
 
 }
diff --git a/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
index 35836af..3348752 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
@@ -191,7 +191,7 @@ public class DefaultIndexNexusIndexerTest
 
         assertEquals( 2, r.size() );
 
-        List<ArtifactInfo> list = new ArrayList<ArtifactInfo>( r );
+        List<ArtifactInfo> list = new ArrayList<>( r );
 
         assertEquals( 2, list.size() );
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/DuplicateSearchTest.java b/indexer-core/src/test/java/org/apache/maven/index/DuplicateSearchTest.java
index 8189754..a97764e 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/DuplicateSearchTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/DuplicateSearchTest.java
@@ -180,8 +180,8 @@ public class DuplicateSearchTest
         IteratorSearchRequest isReq = new IteratorSearchRequest( query );
 
         // so, how many different GA combinations exists, this is almost equal to SQLs group by "groupId, artifactId"
-        isReq.setArtifactInfoFilter( new UniqueArtifactFilterPostprocessor( new HashSet<Field>( Arrays.asList(
-            MAVEN.GROUP_ID, MAVEN.ARTIFACT_ID ) ) ) );
+        isReq.setArtifactInfoFilter( new UniqueArtifactFilterPostprocessor(
+                new HashSet<>( Arrays.asList( MAVEN.GROUP_ID, MAVEN.ARTIFACT_ID ) ) ) );
         isReq.getContexts().add( context );
         isReq.getContexts().add( context1 );
         isReq.getContexts().add( context2 );
diff --git a/indexer-core/src/test/java/org/apache/maven/index/Mindexer35NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/Mindexer35NexusIndexerTest.java
index a5b5fad..3b696c6 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/Mindexer35NexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/Mindexer35NexusIndexerTest.java
@@ -53,7 +53,7 @@ public class Mindexer35NexusIndexerTest
 
         assertThat(r.size(), is(1));
 
-        List<ArtifactInfo> list = new ArrayList<ArtifactInfo>( r );
+        List<ArtifactInfo> list = new ArrayList<>( r );
 
         ArtifactInfo ai = null;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
index e848270..042843a 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
@@ -146,7 +146,7 @@ public class Nexus13NexusIndexerTest
 
         assertEquals( 10, r.size() );
 
-        List<ArtifactInfo> list = new ArrayList<ArtifactInfo>( r );
+        List<ArtifactInfo> list = new ArrayList<>( r );
 
         assertEquals( 10, list.size() );
 
@@ -181,7 +181,7 @@ public class Nexus13NexusIndexerTest
         Collection<ArtifactInfo> r = response.getResults();
         assertEquals( r.toString(), 10, r.size() );
 
-        List<ArtifactInfo> list = new ArrayList<ArtifactInfo>( r );
+        List<ArtifactInfo> list = new ArrayList<>( r );
 
         assertEquals( 10, list.size() );
 
@@ -214,7 +214,7 @@ public class Nexus13NexusIndexerTest
 
         assertEquals( 1, ig.getArtifactInfos().size() );
 
-        List<ArtifactInfo> list = new ArrayList<ArtifactInfo>( ig.getArtifactInfos() );
+        List<ArtifactInfo> list = new ArrayList<>( ig.getArtifactInfos() );
 
         assertEquals( 1, list.size() );
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java
index 95300bd..9d19d42 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java
@@ -314,11 +314,11 @@ public class Nexus1911IncrementalTest
 
     private Set<String> getFilenamesFromFiles( File[] files )
     {
-        Set<String> filenames = new HashSet<String>();
+        Set<String> filenames = new HashSet<>();
 
-        for ( int i = 0; i < files.length; i++ )
+        for ( File file : files )
         {
-            filenames.add( files[i].getName() );
+            filenames.add( file.getName() );
         }
 
         return filenames;
@@ -330,26 +330,19 @@ public class Nexus1911IncrementalTest
         Properties props = new Properties();
         File propertyFile = null;
 
-        for ( int i = 0; i < files.length; i++ )
+        for ( File file : files )
         {
-            if ( ( IndexingContext.INDEX_REMOTE_PROPERTIES_FILE ).equalsIgnoreCase( files[i].getName() ) )
+            if ( ( IndexingContext.INDEX_REMOTE_PROPERTIES_FILE ).equalsIgnoreCase( file.getName() ) )
             {
-                propertyFile = files[i];
+                propertyFile = file;
                 break;
             }
         }
 
-        FileInputStream fis = null;
-
-        try
+        try ( FileInputStream fis = new FileInputStream( propertyFile ) )
         {
-            fis = new FileInputStream( propertyFile );
             props.load( fis );
         }
-        finally
-        {
-            fis.close();
-        }
 
         return props;
     }
diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java
index 99e00d1..6b309c9 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java
@@ -71,6 +71,6 @@ public class Nexus3881NexusIndexerTest
 
         Assert.assertTrue(
             String.format( "The relevance span should be small! (%s)",
-                new Object[] { Float.valueOf( firstRel - lastRel ) } ), firstRel - lastRel < 0.35 );
+                new Object[] {firstRel - lastRel} ), firstRel - lastRel < 0.35 );
     }
 }
diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus687NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus687NexusIndexerTest.java
index f1f0d91..51e5949 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/Nexus687NexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus687NexusIndexerTest.java
@@ -54,7 +54,7 @@ public class Nexus687NexusIndexerTest
 
         assertEquals( 1, r.size() );
 
-        List<ArtifactInfo> list = new ArrayList<ArtifactInfo>( r );
+        List<ArtifactInfo> list = new ArrayList<>( r );
 
         assertEquals( 1, list.size() );
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java b/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
index 7d86320..4874c28 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
@@ -108,7 +108,7 @@ public class SearchWithAnEmptyIndexTest
                 .build();
 
             request = new FlatSearchRequest( q );
-            request.setContexts( new ArrayList( nexusIndexer.getIndexingContexts().values() ) );
+            request.setContexts( new ArrayList<>( nexusIndexer.getIndexingContexts().values() ) );
 
             response = nexusIndexer.searchFlat( request );
 
@@ -125,7 +125,7 @@ public class SearchWithAnEmptyIndexTest
                 .build();
 
             request = new FlatSearchRequest( q );
-            request.setContexts( new ArrayList( nexusIndexer.getIndexingContexts().values() ) );
+            request.setContexts( new ArrayList<>( nexusIndexer.getIndexingContexts().values() ) );
 
             response = nexusIndexer.searchFlat( request );
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/artifact/M1GavCalculatorTest.java b/indexer-core/src/test/java/org/apache/maven/index/artifact/M1GavCalculatorTest.java
index 458281d..0f334d8 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/artifact/M1GavCalculatorTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/artifact/M1GavCalculatorTest.java
@@ -52,7 +52,7 @@ public class M1GavCalculatorTest
         }
         else
         {
-            return Long.valueOf( formatter.parse( timeStamp ).getTime() );
+            return formatter.parse( timeStamp ).getTime();
         }
     }
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/artifact/M2GavCalculatorTest.java b/indexer-core/src/test/java/org/apache/maven/index/artifact/M2GavCalculatorTest.java
index 0881010..315b462 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/artifact/M2GavCalculatorTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/artifact/M2GavCalculatorTest.java
@@ -52,7 +52,7 @@ public class M2GavCalculatorTest
         }
         else
         {
-            return Long.valueOf( formatter.parse( timeStamp ).getTime() );
+            return formatter.parse( timeStamp ).getTime();
         }
     }
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
index a7c71b0..2793b64 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
@@ -58,7 +58,7 @@ public class NexusAnalyzerTest
         Tokenizer ts = (Tokenizer) nexusAnalyzer.tokenStream(indexerField.getKey(), new StringReader( text ) );
         ts.reset();
 
-        ArrayList<String> tokenList = new ArrayList<String>();
+        ArrayList<String> tokenList = new ArrayList<>();
 
         if ( !indexerField.isKeyword() )
         {
diff --git a/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java b/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java
index f8062bb..34959bb 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java
@@ -68,7 +68,7 @@ public class MavenPluginArtifactInfoIndexCreatorTest
 
         assertEquals( "dependency", artifactContext.getArtifactInfo().getPrefix() );
 
-        List<String> goals = new ArrayList<String>( 16 );
+        List<String> goals = new ArrayList<>( 16 );
         goals.add( "analyze-dep-mgt" );
         goals.add( "analyze" );
         goals.add( "analyze-only" );
diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
index b1161b4..527176f 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
@@ -479,7 +479,7 @@ public class DefaultIndexUpdaterEmbeddingIT
         IndexCreator min = container.lookup( IndexCreator.class, "min" );
         IndexCreator jar = container.lookup( IndexCreator.class, "jarContent" );
 
-        List<IndexCreator> creators = new ArrayList<IndexCreator>();
+        List<IndexCreator> creators = new ArrayList<>();
         creators.add( min );
         creators.add( jar );
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java b/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
index 8b55b24..8c18a0b 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
@@ -55,23 +55,7 @@ public class FullBootProofOfConcept
             {
                 run( basedir );
             }
-            catch ( UnsupportedExistingLuceneIndexException e )
-            {
-                e.printStackTrace();
-            }
-            catch ( IOException e )
-            {
-                e.printStackTrace();
-            }
-            catch ( ComponentLookupException e )
-            {
-                e.printStackTrace();
-            }
-            catch ( PlexusContainerException e )
-            {
-                e.printStackTrace();
-            }
-            catch ( ParseException e )
+            catch ( UnsupportedExistingLuceneIndexException | ParseException | PlexusContainerException | ComponentLookupException | IOException e )
             {
                 e.printStackTrace();
             }
@@ -108,7 +92,7 @@ public class FullBootProofOfConcept
         IndexCreator min = container.lookup( IndexCreator.class, "min" );
         IndexCreator jar = container.lookup( IndexCreator.class, "jarContent" );
 
-        List<IndexCreator> creators = new ArrayList<IndexCreator>();
+        List<IndexCreator> creators = new ArrayList<>();
         creators.add( min );
         creators.add( jar );
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java b/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java
index 65b6b8c..03500ea 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java
@@ -151,7 +151,7 @@ public class IndexDataTest
     private Map<String, ArtifactInfo> readIndex( IndexReader r1 )
         throws CorruptIndexException, IOException
     {
-        Map<String, ArtifactInfo> map = new HashMap<String, ArtifactInfo>();
+        Map<String, ArtifactInfo> map = new HashMap<>();
 
         for ( int i = 0; i < r1.maxDoc(); i++ )
         {
diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/TrackingFetcher.java b/indexer-core/src/test/java/org/apache/maven/index/updater/TrackingFetcher.java
index a2543bf..42a8d42 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/updater/TrackingFetcher.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/updater/TrackingFetcher.java
@@ -37,7 +37,7 @@ public class TrackingFetcher
     extends DefaultIndexUpdater.FileFetcher
 {
 
-    private final ArrayList<String> resources = new ArrayList<String>();
+    private final ArrayList<String> resources = new ArrayList<>();
 
     public TrackingFetcher( File basedir )
     {
diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/fixtures/ServerTestFixture.java b/indexer-core/src/test/java/org/apache/maven/index/updater/fixtures/ServerTestFixture.java
index b86ab57..25bcf7f 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/updater/fixtures/ServerTestFixture.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/updater/fixtures/ServerTestFixture.java
@@ -152,10 +152,8 @@ public class ServerTestFixture
             }
 
             File f = new File( base, "slow" + subPath );
-            InputStream in = null;
-            try
+            try ( InputStream in = new FileInputStream( f ) )
             {
-                in = new FileInputStream( f );
                 OutputStream out = resp.getOutputStream();
 
                 int read = -1;
@@ -176,19 +174,6 @@ public class ServerTestFixture
 
                 out.flush();
             }
-            finally
-            {
-                if ( in != null )
-                {
-                    try
-                    {
-                        in.close();
-                    }
-                    catch ( IOException e )
-                    {
-                    }
-                }
-            }
         }
     }
 
diff --git a/indexer-examples/indexer-examples-spring/src/main/java/org/apache/maven/indexer/examples/indexing/IndexerConfiguration.java b/indexer-examples/indexer-examples-spring/src/main/java/org/apache/maven/indexer/examples/indexing/IndexerConfiguration.java
index 40717a3..53c2e1b 100644
--- a/indexer-examples/indexer-examples-spring/src/main/java/org/apache/maven/indexer/examples/indexing/IndexerConfiguration.java
+++ b/indexer-examples/indexer-examples-spring/src/main/java/org/apache/maven/indexer/examples/indexing/IndexerConfiguration.java
@@ -59,7 +59,7 @@ public class IndexerConfiguration
     public List<IndexCreator> getIndexersAsList()
     {
         return indexers == null ? //
-            new ArrayList<IndexCreator>( 0 ) //
+                new ArrayList<>( 0 ) //
             : new ArrayList<>( indexers.values() );
     }
 
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/ChunkReader.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/ChunkReader.java
index 159f440..0354676 100644
--- a/indexer-reader/src/main/java/org/apache/maven/index/reader/ChunkReader.java
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/ChunkReader.java
@@ -173,7 +173,7 @@ public class ChunkReader
             return null; // no more documents
         }
 
-        Map<String, String> recordMap = new HashMap<String, String>();
+        Map<String, String> recordMap = new HashMap<>();
         for ( int i = 0; i < fieldCount; i++ )
         {
             readField( recordMap, dataInput );
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexWriter.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexWriter.java
index 6dbae48..c470411 100644
--- a/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexWriter.java
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexWriter.java
@@ -155,16 +155,11 @@ public class IndexWriter
 
         try ( WritableResource writableResource = local.locate( nextChunkName ) )
         {
-            final ChunkWriter chunkWriter =
-                new ChunkWriter( nextChunkName, writableResource.write(), INDEX_V1, new Date() );
-            try
+            try ( ChunkWriter chunkWriter = new ChunkWriter( nextChunkName, writableResource.write(), INDEX_V1,
+                    new Date() ) )
             {
                 written = chunkWriter.writeChunk( iterator );
             }
-            finally
-            {
-                chunkWriter.close();
-            }
             if ( incremental )
             {
                 // TODO: update main gz file
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/Record.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/Record.java
index 046ff9b..0205e6e 100644
--- a/indexer-reader/src/main/java/org/apache/maven/index/reader/Record.java
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/Record.java
@@ -59,24 +59,24 @@ public final class Record
         }
 
         @Override
-        public boolean equals( final Object o )
+        public boolean equals( Object o )
         {
             if ( this == o )
             {
                 return true;
             }
-            if ( !( o instanceof EntryKey ) )
+            if ( o == null || getClass() != o.getClass() )
             {
                 return false;
             }
-            EntryKey entryKey = (EntryKey) o;
-            return name.equals( entryKey.name );
+            EntryKey<?> entryKey = (EntryKey<?>) o;
+            return Objects.equals( name, entryKey.name );
         }
 
         @Override
         public int hashCode()
         {
-            return name.hashCode();
+            return Objects.hash( name );
         }
 
         @Override
@@ -89,206 +89,201 @@ public final class Record
     /**
      * Key of repository ID entry, that contains {@link String}.
      */
-    public static final EntryKey<String> REPOSITORY_ID = new EntryKey<String>( "repositoryId", String.class );
+    public static final EntryKey<String> REPOSITORY_ID = new EntryKey<>( "repositoryId", String.class );
 
     /**
      * Key of all groups list entry, that contains {@link java.util.List<String>}.
      */
-    public static final EntryKey<String[]> ALL_GROUPS = new EntryKey<String[]>( "allGroups", String[].class );
+    public static final EntryKey<String[]> ALL_GROUPS = new EntryKey<>( "allGroups", String[].class );
 
     /**
      * Key of root groups list entry, that contains {@link java.util.List<String>}.
      */
-    public static final EntryKey<String[]> ROOT_GROUPS = new EntryKey<String[]>( "rootGroups", String[].class );
+    public static final EntryKey<String[]> ROOT_GROUPS = new EntryKey<>( "rootGroups", String[].class );
 
     /**
      * Key of index record modification (added to index or removed from index) timestamp entry, that contains {@link
      * Long}.
      */
-    public static final EntryKey<Long> REC_MODIFIED = new EntryKey<Long>( "recordModified", Long.class );
+    public static final EntryKey<Long> REC_MODIFIED = new EntryKey<>( "recordModified", Long.class );
 
     /**
      * Key of artifact groupId entry, that contains {@link String}.
      */
-    public static final EntryKey<String> GROUP_ID = new EntryKey<String>( "groupId", String.class );
+    public static final EntryKey<String> GROUP_ID = new EntryKey<>( "groupId", String.class );
 
     /**
      * Key of artifact artifactId entry, that contains {@link String}.
      */
-    public static final EntryKey<String> ARTIFACT_ID = new EntryKey<String>( "artifactId", String.class );
+    public static final EntryKey<String> ARTIFACT_ID = new EntryKey<>( "artifactId", String.class );
 
     /**
      * Key of artifact version entry, that contains {@link String}.
      */
-    public static final EntryKey<String> VERSION = new EntryKey<String>( "version", String.class );
+    public static final EntryKey<String> VERSION = new EntryKey<>( "version", String.class );
 
     /**
      * Key of artifact classifier entry, that contains {@link String}.
      */
-    public static final EntryKey<String> CLASSIFIER = new EntryKey<String>( "classifier", String.class );
+    public static final EntryKey<String> CLASSIFIER = new EntryKey<>( "classifier", String.class );
 
     /**
      * Key of artifact packaging entry, that contains {@link String}.
      */
-    public static final EntryKey<String> PACKAGING = new EntryKey<String>( "packaging", String.class );
+    public static final EntryKey<String> PACKAGING = new EntryKey<>( "packaging", String.class );
 
     /**
      * Key of artifact file extension, that contains {@link String}.
      */
-    public static final EntryKey<String> FILE_EXTENSION = new EntryKey<String>( "fileExtension", String.class );
+    public static final EntryKey<String> FILE_EXTENSION = new EntryKey<>( "fileExtension", String.class );
 
     /**
      * Key of artifact file last modified timestamp, that contains {@link Long}.
      */
-    public static final EntryKey<Long> FILE_MODIFIED = new EntryKey<Long>( "fileModified", Long.class );
+    public static final EntryKey<Long> FILE_MODIFIED = new EntryKey<>( "fileModified", Long.class );
 
     /**
      * Key of artifact file size in bytes, that contains {@link Long}.
      */
-    public static final EntryKey<Long> FILE_SIZE = new EntryKey<Long>( "fileSize", Long.class );
+    public static final EntryKey<Long> FILE_SIZE = new EntryKey<>( "fileSize", Long.class );
 
     /**
      * Key of artifact Sources presence flag, that contains {@link Boolean}.
      */
-    public static final EntryKey<Boolean> HAS_SOURCES = new EntryKey<Boolean>( "hasSources", Boolean.class );
+    public static final EntryKey<Boolean> HAS_SOURCES = new EntryKey<>( "hasSources", Boolean.class );
 
     /**
      * Key of artifact Javadoc presence flag, that contains {@link Boolean}.
      */
-    public static final EntryKey<Boolean> HAS_JAVADOC = new EntryKey<Boolean>( "hasJavadoc", Boolean.class );
+    public static final EntryKey<Boolean> HAS_JAVADOC = new EntryKey<>( "hasJavadoc", Boolean.class );
 
     /**
      * Key of artifact signature presence flag, that contains {@link Boolean}.
      */
-    public static final EntryKey<Boolean> HAS_SIGNATURE = new EntryKey<Boolean>( "hasSignature", Boolean.class );
+    public static final EntryKey<Boolean> HAS_SIGNATURE = new EntryKey<>( "hasSignature", Boolean.class );
 
     /**
      * Key of artifact name (as set in POM), that contains {@link String}.
      */
-    public static final EntryKey<String> NAME = new EntryKey<String>( "name", String.class );
+    public static final EntryKey<String> NAME = new EntryKey<>( "name", String.class );
 
     /**
      * Key of artifact description (as set in POM), that contains {@link String}.
      */
-    public static final EntryKey<String> DESCRIPTION = new EntryKey<String>( "description", String.class );
+    public static final EntryKey<String> DESCRIPTION = new EntryKey<>( "description", String.class );
 
     /**
      * Key of artifact SHA1 digest, that contains {@link String}.
      */
-    public static final EntryKey<String> SHA1 = new EntryKey<String>( "sha1", String.class );
+    public static final EntryKey<String> SHA1 = new EntryKey<>( "sha1", String.class );
 
     /**
      * Key of artifact contained class names, that contains {@link java.util.List<String>}. Extracted by {@code
      * JarFileContentsIndexCreator}.
      */
-    public static final EntryKey<String[]> CLASSNAMES = new EntryKey<String[]>( "classNames", String[].class );
+    public static final EntryKey<String[]> CLASSNAMES = new EntryKey<>( "classNames", String[].class );
 
     /**
      * Key of plugin artifact prefix, that contains {@link String}. Extracted by {@code
      * MavenPluginArtifactInfoIndexCreator}.
      */
-    public static final EntryKey<String> PLUGIN_PREFIX = new EntryKey<String>( "pluginPrefix", String.class );
+    public static final EntryKey<String> PLUGIN_PREFIX = new EntryKey<>( "pluginPrefix", String.class );
 
     /**
      * Key of plugin artifact goals, that contains {@link java.util.List<String>}. Extracted by {@code
      * MavenPluginArtifactInfoIndexCreator}.
      */
-    public static final EntryKey<String[]> PLUGIN_GOALS = new EntryKey<String[]>( "pluginGoals", String[].class );
+    public static final EntryKey<String[]> PLUGIN_GOALS = new EntryKey<>( "pluginGoals", String[].class );
 
     /**
      * Key of OSGi "Bundle-SymbolicName" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_BUNDLE_SYMBOLIC_NAME =
-        new EntryKey<String>( "Bundle-SymbolicName", String.class );
+    public static final EntryKey<String> OSGI_BUNDLE_SYMBOLIC_NAME = new EntryKey<>( "Bundle-SymbolicName", String.class );
 
     /**
      * Key of OSGi "Bundle-Version" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_BUNDLE_VERSION = new EntryKey<String>( "Bundle-Version", String.class );
+    public static final EntryKey<String> OSGI_BUNDLE_VERSION = new EntryKey<>( "Bundle-Version", String.class );
 
     /**
      * Key of OSGi "Export-Package" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_EXPORT_PACKAGE = new EntryKey<String>( "Export-Package", String.class );
+    public static final EntryKey<String> OSGI_EXPORT_PACKAGE = new EntryKey<>( "Export-Package", String.class );
 
     /**
      * Key of OSGi "Export-Service" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_EXPORT_SERVICE = new EntryKey<String>( "Export-Service", String.class );
+    public static final EntryKey<String> OSGI_EXPORT_SERVICE = new EntryKey<>( "Export-Service", String.class );
 
     /**
      * Key of OSGi "Bundle-Description" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_BUNDLE_DESCRIPTION =
-        new EntryKey<String>( "Bundle-Description", String.class );
+    public static final EntryKey<String> OSGI_BUNDLE_DESCRIPTION = new EntryKey<>( "Bundle-Description", String.class );
 
     /**
      * Key of OSGi "Bundle-Name" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_BUNDLE_NAME = new EntryKey<String>( "Bundle-Name", String.class );
+    public static final EntryKey<String> OSGI_BUNDLE_NAME = new EntryKey<>( "Bundle-Name", String.class );
 
     /**
      * Key of OSGi "Bundle-License" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_BUNDLE_LICENSE = new EntryKey<String>( "Bundle-License", String.class );
+    public static final EntryKey<String> OSGI_BUNDLE_LICENSE = new EntryKey<>( "Bundle-License", String.class );
 
     /**
      * Key of OSGi "Bundle-DocURL" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_EXPORT_DOCURL = new EntryKey<String>( "Bundle-DocURL", String.class );
+    public static final EntryKey<String> OSGI_EXPORT_DOCURL = new EntryKey<>( "Bundle-DocURL", String.class );
 
     /**
      * Key of OSGi "Import-Package" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_IMPORT_PACKAGE = new EntryKey<String>( "Import-Package", String.class );
+    public static final EntryKey<String> OSGI_IMPORT_PACKAGE = new EntryKey<>( "Import-Package", String.class );
 
     /**
      * Key of OSGi "Require-Bundle" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_REQUIRE_BUNDLE = new EntryKey<String>( "Require-Bundle", String.class );
+    public static final EntryKey<String> OSGI_REQUIRE_BUNDLE = new EntryKey<>( "Require-Bundle", String.class );
 
     /**
      * Key of OSGi "Provide-Capability" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_PROVIDE_CAPABILITY =
-        new EntryKey<String>( "Provide-Capability", String.class );
+    public static final EntryKey<String> OSGI_PROVIDE_CAPABILITY = new EntryKey<>( "Provide-Capability", String.class );
 
     /**
      * Key of OSGi "Require-Capability" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_REQUIRE_CAPABILITY =
-        new EntryKey<String>( "Require-Capability", String.class );
+    public static final EntryKey<String> OSGI_REQUIRE_CAPABILITY = new EntryKey<>( "Require-Capability", String.class );
 
     /**
      * Key of OSGi "Fragment-Host" manifest entry, that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_FRAGMENT_HOST = new EntryKey<String>( "Fragment-Host", String.class );
+    public static final EntryKey<String> OSGI_FRAGMENT_HOST = new EntryKey<>( "Fragment-Host", String.class );
 
     /**
      * Key of deprecated OSGi "Bundle-RequiredExecutionEnvironment" manifest entry, that contains {@link String}.
      * Extracted by {@code OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> OSGI_BREE =
-        new EntryKey<String>( "Bundle-RequiredExecutionEnvironment", String.class );
+    public static final EntryKey<String> OSGI_BREE = new EntryKey<>( "Bundle-RequiredExecutionEnvironment", String.class );
 
     /**
      * Key for SHA-256 checksum  needed for OSGI content capability that contains {@link String}. Extracted by {@code
      * OsgiArtifactIndexCreator}.
      */
-    public static final EntryKey<String> SHA_256 = new EntryKey<String>( "sha256", String.class );
+    public static final EntryKey<String> SHA_256 = new EntryKey<>( "sha256", String.class );
 
 
     /**
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordCompactor.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordCompactor.java
index 17765ef..fd29dc8 100644
--- a/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordCompactor.java
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordCompactor.java
@@ -70,7 +70,7 @@ public class RecordCompactor
 
     private static Map<String, String> compactDescriptor( final Record record )
     {
-        final Map<String, String> result = new HashMap<String, String>();
+        final Map<String, String> result = new HashMap<>();
         result.put( "DESCRIPTOR", "NexusIndex" );
         result.put( "IDXINFO", "1.0|" + record.get( Record.REPOSITORY_ID ) );
         return result;
@@ -78,7 +78,7 @@ public class RecordCompactor
 
     private static Map<String, String> compactAllGroups( final Record record )
     {
-        final Map<String, String> result = new HashMap<String, String>();
+        final Map<String, String> result = new HashMap<>();
         result.put( "allGroups", "allGroups" );
         putIfNotNullAsStringArray( record.get( Record.ALL_GROUPS ), result, "allGroupsList" );
         return result;
@@ -86,7 +86,7 @@ public class RecordCompactor
 
     private static Map<String, String> compactRootGroups( final Record record )
     {
-        final Map<String, String> result = new HashMap<String, String>();
+        final Map<String, String> result = new HashMap<>();
         result.put( "rootGroups", "allGroups" );
         putIfNotNullAsStringArray( record.get( Record.ROOT_GROUPS ), result, "rootGroupsList" );
         return result;
@@ -94,7 +94,7 @@ public class RecordCompactor
 
     private static Map<String, String> compactDeletedArtifact( final Record record )
     {
-        final Map<String, String> result = new HashMap<String, String>();
+        final Map<String, String> result = new HashMap<>();
         putIfNotNullTS( record.get( Record.REC_MODIFIED ), result, "m" );
         result.put( "del", compactUinfo( record ) );
         return result;
@@ -105,7 +105,7 @@ public class RecordCompactor
      */
     private static Map<String, String> compactAddedArtifact( final Record record )
     {
-        final Map<String, String> result = new HashMap<String, String>();
+        final Map<String, String> result = new HashMap<>();
 
         // Minimal
         result.put( UINFO, compactUinfo( record ) );
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordExpander.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordExpander.java
index 3d57525..a9d3c96 100644
--- a/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordExpander.java
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/RecordExpander.java
@@ -84,7 +84,7 @@ public class RecordExpander
 
     private static Record expandDescriptor( final Map<String, String> raw )
     {
-        final Record result = new Record( Type.DESCRIPTOR, new HashMap<EntryKey, Object>() );
+        final Record result = new Record( Type.DESCRIPTOR, new HashMap<>() );
         String[] r = FS_PATTERN.split( raw.get( "IDXINFO" ) );
         result.put( Record.REPOSITORY_ID, r[1] );
         return result;
@@ -92,21 +92,21 @@ public class RecordExpander
 
     private static Record expandAllGroups( final Map<String, String> raw )
     {
-        final Record result = new Record( Type.ALL_GROUPS, new HashMap<EntryKey, Object>() );
+        final Record result = new Record( Type.ALL_GROUPS, new HashMap<>() );
         putIfNotNullAsStringArray( raw, "allGroupsList", result, Record.ALL_GROUPS );
         return result;
     }
 
     private static Record expandRootGroups( final Map<String, String> raw )
     {
-        final Record result = new Record( Type.ROOT_GROUPS, new HashMap<EntryKey, Object>() );
+        final Record result = new Record( Type.ROOT_GROUPS, new HashMap<>() );
         putIfNotNullAsStringArray( raw, "rootGroupsList", result, Record.ROOT_GROUPS );
         return result;
     }
 
     private static Record expandDeletedArtifact( final Map<String, String> raw )
     {
-        final Record result = new Record( Type.ARTIFACT_REMOVE, new HashMap<EntryKey, Object>() );
+        final Record result = new Record( Type.ARTIFACT_REMOVE, new HashMap<>() );
         putIfNotNullTS( raw, "m", result, Record.REC_MODIFIED );
         if ( raw.containsKey( "del" ) )
         {
@@ -120,7 +120,7 @@ public class RecordExpander
      */
     private static Record expandAddedArtifact( final Map<String, String> raw )
     {
-        final Record result = new Record( Type.ARTIFACT_ADD, new HashMap<EntryKey, Object>() );
+        final Record result = new Record( Type.ARTIFACT_ADD, new HashMap<>() );
 
         // Minimal
         expandUinfo( raw.get( UINFO ), result );
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/Utils.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/Utils.java
index 855104f..e6a9afc 100644
--- a/indexer-reader/src/main/java/org/apache/maven/index/reader/Utils.java
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/Utils.java
@@ -138,7 +138,7 @@ public final class Utils
      */
     public static Record descriptor( final String repoId )
     {
-        HashMap<EntryKey, Object> entries = new HashMap<EntryKey, Object>();
+        HashMap<EntryKey, Object> entries = new HashMap<>();
         entries.put( Record.REPOSITORY_ID, repoId );
         return new Record( Type.DESCRIPTOR, entries );
     }
@@ -148,7 +148,7 @@ public final class Utils
      */
     public static Record allGroups( final Collection<String> allGroups )
     {
-        HashMap<EntryKey, Object> entries = new HashMap<EntryKey, Object>();
+        HashMap<EntryKey, Object> entries = new HashMap<>();
         entries.put( Record.ALL_GROUPS, allGroups.toArray( new String[allGroups.size()] ) );
         return new Record( Type.ALL_GROUPS, entries );
     }
@@ -158,7 +158,7 @@ public final class Utils
      */
     public static Record rootGroups( final Collection<String> rootGroups )
     {
-        HashMap<EntryKey, Object> entries = new HashMap<EntryKey, Object>();
+        HashMap<EntryKey, Object> entries = new HashMap<>();
         entries.put( Record.ROOT_GROUPS, rootGroups.toArray( new String[rootGroups.size()] ) );
         return new Record( Type.ROOT_GROUPS, entries );
     }
diff --git a/indexer-reader/src/test/java/org/apache/maven/index/reader/CachingResourceHandler.java b/indexer-reader/src/test/java/org/apache/maven/index/reader/CachingResourceHandler.java
index d12f96d..6961d9b 100644
--- a/indexer-reader/src/test/java/org/apache/maven/index/reader/CachingResourceHandler.java
+++ b/indexer-reader/src/test/java/org/apache/maven/index/reader/CachingResourceHandler.java
@@ -102,9 +102,9 @@ public class CachingResourceHandler
             throws IOException
         {
             final Resource remoteResource = remote.locate( name );
-            final WritableResource localResource = local.locate( name );
-            try (final InputStream inputStream = remoteResource.read(); //
-                 final OutputStream outputStream = localResource.write())
+            try ( WritableResource localResource = local.locate( name );
+                  final InputStream inputStream = remoteResource.read();
+                  final OutputStream outputStream = localResource.write() )
             {
                 if ( inputStream != null )
                 {
@@ -119,10 +119,6 @@ public class CachingResourceHandler
                 }
                 return false;
             }
-            finally
-            {
-                localResource.close();
-            }
         }
     }
 
diff --git a/indexer-reader/src/test/java/org/apache/maven/index/reader/IndexReaderTest.java b/indexer-reader/src/test/java/org/apache/maven/index/reader/IndexReaderTest.java
index 8fc4c34..39c695c 100644
--- a/indexer-reader/src/test/java/org/apache/maven/index/reader/IndexReaderTest.java
+++ b/indexer-reader/src/test/java/org/apache/maven/index/reader/IndexReaderTest.java
@@ -46,64 +46,56 @@ public class IndexReaderTest
 {
   @Test
   public void simple() throws IOException {
-    final IndexReader indexReader = new IndexReader(
-        null,
-        testResourceHandler("simple")
-    );
-    try {
-      assertThat(indexReader.getIndexId(), equalTo("apache-snapshots-local"));
-      assertThat(indexReader.getPublishedTimestamp().getTime(), equalTo(1243533418015L));
-      assertThat(indexReader.isIncremental(), equalTo(false));
-      assertThat(indexReader.getChunkNames(), equalTo(Arrays.asList("nexus-maven-repository-index.gz")));
+    try ( IndexReader indexReader = new IndexReader( null, testResourceHandler( "simple" ) ) )
+    {
+      assertThat( indexReader.getIndexId(), equalTo( "apache-snapshots-local" ) );
+      assertThat( indexReader.getPublishedTimestamp().getTime(), equalTo( 1243533418015L ) );
+      assertThat( indexReader.isIncremental(), equalTo( false ) );
+      assertThat( indexReader.getChunkNames(), equalTo( Arrays.asList( "nexus-maven-repository-index.gz" ) ) );
       int chunks = 0;
       int records = 0;
-      for (ChunkReader chunkReader : indexReader) {
+      for ( ChunkReader chunkReader : indexReader )
+      {
         chunks++;
-        assertThat(chunkReader.getName(), equalTo("nexus-maven-repository-index.gz"));
-        assertThat(chunkReader.getVersion(), equalTo(1));
-        assertThat(chunkReader.getTimestamp().getTime(), equalTo(1243533418015L));
-        for (Record record : transform(chunkReader, expandFunction)) {
+        assertThat( chunkReader.getName(), equalTo( "nexus-maven-repository-index.gz" ) );
+        assertThat( chunkReader.getVersion(), equalTo( 1 ) );
+        assertThat( chunkReader.getTimestamp().getTime(), equalTo( 1243533418015L ) );
+        for ( Record record : transform( chunkReader, expandFunction ) )
+        {
           records++;
         }
       }
 
-      assertThat(chunks, equalTo(1));
-      assertThat(records, equalTo(5));
-    }
-    finally {
-      indexReader.close();
+      assertThat( chunks, equalTo( 1 ) );
+      assertThat( records, equalTo( 5 ) );
     }
   }
 
   @Test
   public void simpleWithLocal() throws IOException {
     WritableResourceHandler writableResourceHandler = createWritableResourceHandler();
-    final IndexReader indexReader = new IndexReader(
-        writableResourceHandler,
-        testResourceHandler("simple")
-    );
-    try {
-      assertThat(indexReader.getIndexId(), equalTo("apache-snapshots-local"));
-      assertThat(indexReader.getPublishedTimestamp().getTime(), equalTo(1243533418015L));
-      assertThat(indexReader.isIncremental(), equalTo(false));
-      assertThat(indexReader.getChunkNames(), equalTo(Arrays.asList("nexus-maven-repository-index.gz")));
+    try ( IndexReader indexReader = new IndexReader( writableResourceHandler, testResourceHandler( "simple" ) ) )
+    {
+      assertThat( indexReader.getIndexId(), equalTo( "apache-snapshots-local" ) );
+      assertThat( indexReader.getPublishedTimestamp().getTime(), equalTo( 1243533418015L ) );
+      assertThat( indexReader.isIncremental(), equalTo( false ) );
+      assertThat( indexReader.getChunkNames(), equalTo( Arrays.asList( "nexus-maven-repository-index.gz" ) ) );
       int chunks = 0;
       int records = 0;
-      for (ChunkReader chunkReader : indexReader) {
+      for ( ChunkReader chunkReader : indexReader )
+      {
         chunks++;
-        assertThat(chunkReader.getName(), equalTo("nexus-maven-repository-index.gz"));
-        assertThat(chunkReader.getVersion(), equalTo(1));
-        assertThat(chunkReader.getTimestamp().getTime(), equalTo(1243533418015L));
-        for (Record record : transform(chunkReader, expandFunction)) {
+        assertThat( chunkReader.getName(), equalTo( "nexus-maven-repository-index.gz" ) );
+        assertThat( chunkReader.getVersion(), equalTo( 1 ) );
+        assertThat( chunkReader.getTimestamp().getTime(), equalTo( 1243533418015L ) );
+        for ( Record record : transform( chunkReader, expandFunction ) )
+        {
           records++;
         }
       }
 
-      assertThat(chunks, equalTo(1));
-      assertThat(records, equalTo(5));
-    }
-    finally {
-      indexReader.close();
+      assertThat( chunks, equalTo( 1 ) );
+      assertThat( records, equalTo( 5 ) );
     }
 
     assertThat(writableResourceHandler.locate("nexus-maven-repository-index.properties").read(), not(nullValue()));
@@ -135,32 +127,28 @@ public class IndexReaderTest
       }
     }
 
-    final IndexReader indexReader = new IndexReader(
-        null,
-        writableResourceHandler
-    );
-    try {
-      assertThat(indexReader.getIndexId(), equalTo("apache-snapshots-local"));
-      assertThat(indexReader.getPublishedTimestamp().getTime(), equalTo(published.getTime()));
-      assertThat(indexReader.isIncremental(), equalTo(false));
-      assertThat(indexReader.getChunkNames(), equalTo(Arrays.asList("nexus-maven-repository-index.gz")));
+    try ( IndexReader indexReader = new IndexReader( null, writableResourceHandler ) )
+    {
+      assertThat( indexReader.getIndexId(), equalTo( "apache-snapshots-local" ) );
+      assertThat( indexReader.getPublishedTimestamp().getTime(), equalTo( published.getTime() ) );
+      assertThat( indexReader.isIncremental(), equalTo( false ) );
+      assertThat( indexReader.getChunkNames(), equalTo( Arrays.asList( "nexus-maven-repository-index.gz" ) ) );
       int chunks = 0;
       int records = 0;
-      for (ChunkReader chunkReader : indexReader) {
+      for ( ChunkReader chunkReader : indexReader )
+      {
         chunks++;
-        assertThat(chunkReader.getName(), equalTo("nexus-maven-repository-index.gz"));
-        assertThat(chunkReader.getVersion(), equalTo(1));
+        assertThat( chunkReader.getName(), equalTo( "nexus-maven-repository-index.gz" ) );
+        assertThat( chunkReader.getVersion(), equalTo( 1 ) );
         // assertThat(chunkReader.getTimestamp().getTime(), equalTo(1243533418015L));
-        for (Record record : transform(chunkReader, expandFunction)) {
+        for ( Record record : transform( chunkReader, expandFunction ) )
+        {
           records++;
         }
       }
 
-      assertThat(chunks, equalTo(1));
-      assertThat(records, equalTo(5));
-    }
-    finally {
-      indexReader.close();
+      assertThat( chunks, equalTo( 1 ) );
+      assertThat( records, equalTo( 5 ) );
     }
   }
 
diff --git a/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java b/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java
index 957bf58..f71bb7d 100644
--- a/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java
+++ b/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java
@@ -126,7 +126,7 @@ public class TestSupport
     protected Map<Type, List<Record>> loadRecordsByType( final ChunkReader chunkReader )
         throws IOException
     {
-        HashMap<Type, List<Record>> stat = new HashMap<Type, List<Record>>();
+        HashMap<Type, List<Record>> stat = new HashMap<>();
         try
         {
             assertThat( chunkReader.getVersion(), equalTo( 1 ) );
@@ -136,7 +136,7 @@ public class TestSupport
                 final Record record = recordExpander.apply( rec );
                 if ( !stat.containsKey( record.getType() ) )
                 {
-                    stat.put( record.getType(), new ArrayList<Record>() );
+                    stat.put( record.getType(), new ArrayList<>() );
                 }
                 stat.get( record.getType() ).add( record );
             }
@@ -155,7 +155,7 @@ public class TestSupport
     protected Map<Type, Integer> countRecordsByType( final ChunkReader chunkReader )
         throws IOException
     {
-        HashMap<Type, Integer> stat = new HashMap<Type, Integer>();
+        HashMap<Type, Integer> stat = new HashMap<>();
         try
         {
             assertThat( chunkReader.getVersion(), equalTo( 1 ) );
@@ -195,9 +195,9 @@ public class TestSupport
             String[] list = file.list();
             if ( list != null )
             {
-                for ( int i = 0; i < list.length; i++ )
+                for ( String s : list )
                 {
-                    File entry = new File( file, list[i] );
+                    File entry = new File( file, s );
                     if ( !delete( entry ) )
                     {
                         return false;
diff --git a/indexer-reader/src/test/java/org/apache/maven/index/reader/TestUtils.java b/indexer-reader/src/test/java/org/apache/maven/index/reader/TestUtils.java
index 348d199..0e68cac 100644
--- a/indexer-reader/src/test/java/org/apache/maven/index/reader/TestUtils.java
+++ b/indexer-reader/src/test/java/org/apache/maven/index/reader/TestUtils.java
@@ -72,8 +72,8 @@ public final class TestUtils
   public static Iterable<Record> decorate(final Iterable<Record> iterable,
                                           final String repoId)
   {
-    final TreeSet<String> allGroupsSet = new TreeSet<String>();
-    final TreeSet<String> rootGroupsSet = new TreeSet<String>();
+    final TreeSet<String> allGroupsSet = new TreeSet<>();
+    final TreeSet<String> rootGroupsSet = new TreeSet<>();
     return transform(
         concat(
             singletonList(descriptor(repoId)),
diff --git a/indexer-reader/src/test/java/org/apache/maven/index/reader/TransformTest.java b/indexer-reader/src/test/java/org/apache/maven/index/reader/TransformTest.java
index 7d48154..a099a84 100644
--- a/indexer-reader/src/test/java/org/apache/maven/index/reader/TransformTest.java
+++ b/indexer-reader/src/test/java/org/apache/maven/index/reader/TransformTest.java
@@ -82,7 +82,7 @@ public class TransformTest
   }
 
   private Map<EntryKey, Object> artifactMap(final String groupId) {
-    final HashMap<EntryKey, Object> result = new HashMap<EntryKey, Object>();
+    final HashMap<EntryKey, Object> result = new HashMap<>();
     result.put(Record.GROUP_ID, groupId);
     result.put(Record.ARTIFACT_ID, "artifact");
     result.put(Record.VERSION, "1.0");