diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
index dc0258d..f23d11f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
@@ -152,11 +152,8 @@
 
     @Override
     public AtomicLong load(Project.NameKey project) throws IOException {
-      Repository git = gitManager.openRepository(project);
-      try {
+      try (Repository git = gitManager.openRepository(project)){
         return new AtomicLong(getDiskUsage(git.getDirectory()));
-      } finally {
-        git.close();
       }
     }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/Publisher.java b/src/main/java/com/googlesource/gerrit/plugins/quota/Publisher.java
index f44c92a..71181e4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/Publisher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/Publisher.java
@@ -48,7 +48,7 @@
       return;
     }
 
-    List<UsageDataPublishedListener.Event> events = new ArrayList<UsageDataPublishedListener.Event>(3);
+    List<UsageDataPublishedListener.Event> events = new ArrayList<>(3);
     for (UsageDataEventCreator creator : creators) {
       try {
         events.add(creator.create());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java b/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java
index 8293ebe..9baf36a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java
@@ -51,7 +51,7 @@
   @Override
   public String getName() {
     return REPO_SIZE.getName();
-  };
+  }
 
   @Override
   public Event create() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/UsageDataEvent.java b/src/main/java/com/googlesource/gerrit/plugins/quota/UsageDataEvent.java
index c596b09..8dfaa55 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/UsageDataEvent.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/UsageDataEvent.java
@@ -31,7 +31,7 @@
   public UsageDataEvent(MetaData metaData) {
     this.metaData = metaData;
     timestamp = new Timestamp(System.currentTimeMillis());
-    data = new ArrayList<Data>();
+    data = new ArrayList<>();
   }
 
   void addData(final long value, final String projectName) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
index f79079f..291b4dd 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
@@ -26,6 +26,7 @@
 import org.apache.log4j.Logger;
 import org.apache.log4j.spi.LoggingEvent;
 import org.easymock.Capture;
+import org.easymock.EasyMock;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -56,7 +57,7 @@
 
   @Before
   public void setupLogging() {
-    captor = new Capture<LoggingEvent>();
+    captor = EasyMock.newCapture();
     appender = createMock(Appender.class);
     appender.doAppend(capture(captor));
     expectLastCall().anyTimes();
