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 11:50:45 UTC

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

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

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

commit 3e4db241b9c251142310d9f0eadbdd6ca781103b
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");