Merge branch 'stable-2.14' into stable-2.15

* stable-2.14:
  Update bazlets to the latest on stable-2.14 to use 2.14.7 release API
  Update to latest bazlets on stable-2.14
  Fix: ssh delete-project command is inconsistent with WebUI
  Use Java 8 Date/Time API
  Replace Files.notExists with file method
  Replace anonymous class with lambda
  Change project compliance to Java 8
  Use latest bazlets

Change-Id: Ibd7e703e2786531bde292407e88d5ec06dc1fbe3
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 17904c0..1792fcc 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -1,9 +1,9 @@
 #Fri Jul 16 23:39:13 PDT 2010
 eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java
index e62634a..f7124e4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteCommand.java
@@ -98,7 +98,7 @@
         | ResourceConflictException
         | OrmException
         | IOException e) {
-      die(e);
+      throw die(e);
     }
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java
index cc4c436..7797c6d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogLayout.java
@@ -14,28 +14,17 @@
 
 package com.googlesource.gerrit.plugins.deleteproject;
 
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import org.apache.log4j.Layout;
 import org.apache.log4j.spi.LoggingEvent;
 import org.eclipse.jgit.util.QuotedString;
 
 final class DeleteLogLayout extends Layout {
-  private final Calendar calendar;
-  private long lastTimeMillis;
-  private final char[] lastTimeString = new char[20];
-  private final char[] timeZone;
-
-  public DeleteLogLayout() {
-    TimeZone tz = TimeZone.getDefault();
-    calendar = Calendar.getInstance(tz);
-
-    SimpleDateFormat sdf = new SimpleDateFormat("Z");
-    sdf.setTimeZone(tz);
-    timeZone = sdf.format(new Date()).toCharArray();
-  }
+  private static final DateTimeFormatter DATE_FORMATTER =
+      DateTimeFormatter.ofPattern("'['yyyy-MM-dd HH:mm:ss,SSS xxxx']'");
 
   /**
    * Formats the events in the delete log.
@@ -51,11 +40,7 @@
   public String format(LoggingEvent event) {
     final StringBuffer buf = new StringBuffer(128);
 
-    buf.append('[');
-    formatDate(event.getTimeStamp(), buf);
-    buf.append(' ');
-    buf.append(timeZone);
-    buf.append(']');
+    buf.append(formatDate(event.getTimeStamp()));
 
     buf.append(' ');
     buf.append(event.getLevel().toString());
@@ -74,36 +59,9 @@
     return buf.toString();
   }
 
-  private void formatDate(final long now, final StringBuffer sbuf) {
-    final int millis = (int) (now % 1000);
-    final long rounded = now - millis;
-    if (rounded != lastTimeMillis) {
-      synchronized (calendar) {
-        final int start = sbuf.length();
-        calendar.setTimeInMillis(rounded);
-        sbuf.append(calendar.get(Calendar.YEAR));
-        sbuf.append('-');
-        sbuf.append(toTwoDigits(calendar.get(Calendar.MONTH) + 1));
-        sbuf.append('-');
-        sbuf.append(toTwoDigits(calendar.get(Calendar.DAY_OF_MONTH)));
-        sbuf.append(' ');
-        sbuf.append(toTwoDigits(calendar.get(Calendar.HOUR_OF_DAY)));
-        sbuf.append(':');
-        sbuf.append(toTwoDigits(calendar.get(Calendar.MINUTE)));
-        sbuf.append(':');
-        sbuf.append(toTwoDigits(calendar.get(Calendar.SECOND)));
-        sbuf.append(',');
-        sbuf.getChars(start, sbuf.length(), lastTimeString, 0);
-        lastTimeMillis = rounded;
-      }
-    } else {
-      sbuf.append(lastTimeString);
-    }
-    sbuf.append(String.format("%03d", millis));
-  }
-
-  private String toTwoDigits(int input) {
-    return String.format("%02d", input);
+  private String formatDate(long now) {
+    ZonedDateTime zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(now), ZoneId.systemDefault());
+    return zdt.format(DATE_FORMATTER);
   }
 
   private void req(String key, StringBuffer buf, LoggingEvent event) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
index c645f7a..9aae37e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
@@ -114,22 +114,19 @@
   @Override
   public void start() {
     new Thread(
-            new Runnable() {
-              @Override
-              public void run() {
-                for (Path folder : repoFolders) {
-                  if (Files.notExists(folder)) {
-                    log.debug("Base path {} does not exist", folder);
-                    continue;
-                  }
-                  try {
-                    Files.walkFileTree(folder, new TrashFolderRemover());
-                  } catch (IOException e) {
-                    log.warn("Exception while trying to delete trash folders", e);
-                  }
-                }
-              }
-            },
+        () -> {
+          for (Path folder : repoFolders) {
+            if (!folder.toFile().exists()) {
+              log.debug("Base path {} does not exist", folder);
+              continue;
+            }
+            try {
+              Files.walkFileTree(folder, new TrashFolderRemover());
+            } catch (IOException e) {
+              log.warn("Exception while trying to delete trash folders", e);
+            }
+          }
+        },
             "DeleteTrashFolders")
         .start();
   }