Merge branch 'stable-2.16'

* stable-2.16:
  Upgrade bazlets to latest stable-2.16 to build with 2.16.7 API
  Upgrade bazlets to latest stable-2.15 to build with 2.15.12 API
  Upgrade bazlets to latest stable-2.14 to build with 2.14.19 API
  Maven: Build with 2.15.11
  Upgrade bazlets to latest stable-2.15
  Upgrade bazlets to latest stable-2.14
  Update bazlets to fix build with bazel 0.23
  Upgrade bazlets to latest stable-2.15 to build with 2.15.11 API
  WORKSPACE: Make heading comment space indent consistent
  Maven: Build with Gerrit 2.15.10 API
  Upgrade bazlets to latest stable-2.15 to build with 2.15.10 API
  Upgrade bazlets to latest stable-2.15 to build with 2.15.9 API
  Maven: Build with 2.15.8 API
  Upgrade bazlets to latest stable-2.15 to build with 2.15.8 API
  Maven: Build with 2.14.18 API
  Upgrade bazlets to latest stable-2.14 to build with 2.14.18 API
  Bazel: Include eclipse-out directory in .bazelignore
  Bazel: Migrate `tools/bazel.rc` to `.bazelrc`
  Upgrade bazlets to latest stable-2.15 to build with 2.15.7 API
  Upgrade bazlets to latest stable-2.14 to build with 2.14.17 API
  PublishEventListener: Don't hard-code "All-Projects"
  PublishEventListener: Inject PluginConfigFactory via constructor
  UnsupportedMessageGenerator: Remove unused ProjectConfig member
  Maven: Build with API 2.15.6
  Maven: Build with API 2.14.16
  Upgrade bazlets to latest stable-2.15 to build with 2.15.6 API
  WORKSPACE: Replace custom local_path with template
  WORKSPACE: Replace custom local_path with template
  Upgrade bazlets to latest stable-2.14 to build with 2.14.16 API
  WebhookClient: Add missing @Override annotation
  Open auto-closeable resources in try-with-resource
  Align Eclipse compiler settings with core Gerrit's
  bazlets: Replace native.git_repository with skylark rule
  Maven: Format pom.xml with xmllint
  Maven: Remove commented-out plugins
  Maven: Upgrade maven-compiler-plugin to 3.8.0
  Maven: Build with 2.14.15 API
  bazlets: Replace native.git_repository with skylark rule
  Format all Bazel build files with buildifier
  Format all Java files with google-java-format
  Format all Bazel build files with buildifier
  Format all Java files with google-java-format
  Upgrade bazlets to latest stable-2.15 to build with 2.15.5 API
  Upgrade bazlets to latest stable-2.14 to build with 2.14.15 API
  Maven: Build with 2.14.13 API
  Bazel: Migrate `tools/bazel.rc` to `.bazelrc`
  Bazel: Update bazlets to latest stable-2.14 to build with 2.14.13 API
  Restores missing proxy config assignments
  Adds proxy support
  Adds proxy support
  Maven: Upgrade maven-jar-plugin to 3.1.0
  Maven: Build with 2.14.8 API
  Bazel: Upgrade bazlets to latest stable-2.14 revision to use 2.14.8 API
  Format all Java files with google-java-format
  Optionally ignore wip/private patch sets and notify on state change
  Bazel: Update bazlets to latest stable-2.15 to use 2.15-rc3 API
  Format WORKSPACE with buildifier
  Format all Java files with google-java-format
  Format WORKSPACE with buildifier
  Add Bazel build
  WebhookClient: Simplify getResponse method
  WebhookClient: Simplify getResponse method
  Add Bazel build
  Build with 2.14.7 API
  Add Eclipse generated files to .gitignore
  Add Eclipse generated files to .gitignore
  Upgrade maven-compiler-plugin to 3.7.0 and build with Java 8
  Upgrade maven-compiler-plugin to 3.7.0 and build with Java 8
  Build with API version 2.14.6
  Ignore no code change and rebase patch sets
  Update API dependency to 2.15-rc3
  Puts more emphasis on the commit title in published messages
  Updates unit tests for fallback message changes
  Adds commit message to the attachment fallback
  Reworks message generation

Change-Id: I705de7a3fc52f60fc991dfc5c5762abcef21aaf6
diff --git a/.bazelignore b/.bazelignore
new file mode 100644
index 0000000..30f1613
--- /dev/null
+++ b/.bazelignore
@@ -0,0 +1 @@
+eclipse-out
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..40e022d
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,126 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=enabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.processAnnotations=enabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/WORKSPACE b/WORKSPACE
index a32b00c..a78b414 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -4,7 +4,7 @@
 
 load_bazlets(
     commit = "738ddb525810a50c792736d7115a1bb5289bd3d3",
-    #local_path = "/home/<user>/projects/bazlets",
+    #local_path = "/home/<user>/projects/bazlets"
 )
 
 # Snapshot Plugin API
diff --git a/pom.xml b/pom.xml
index 3ba2250..4d88a1b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,7 +93,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.7.0</version>
+                <version>3.8.0</version>
                 <configuration>
                     <source>1.8</source>
                     <target>1.8</target>
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java b/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
index 05e2768..148d15a 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
@@ -22,6 +22,7 @@
 import com.cisco.gerrit.plugins.slack.message.MessageGenerator;
 import com.cisco.gerrit.plugins.slack.message.MessageGeneratorFactory;
 import com.google.gerrit.extensions.annotations.Listen;
+import com.google.gerrit.server.config.AllProjectsName;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.events.ChangeMergedEvent;
 import com.google.gerrit.server.events.CommentAddedEvent;
@@ -41,9 +42,14 @@
 public class PublishEventListener implements EventListener {
   private static final Logger LOGGER = LoggerFactory.getLogger(PublishEventListener.class);
 
-  private static final String ALL_PROJECTS = "All-Projects";
+  private final PluginConfigFactory configFactory;
+  private final AllProjectsName allProjectsName;
 
-  @Inject private PluginConfigFactory configFactory;
+  @Inject
+  PublishEventListener(PluginConfigFactory configFactory, AllProjectsName allProjectsName) {
+    this.configFactory = configFactory;
+    this.allProjectsName = allProjectsName;
+  }
 
   @Override
   public void onEvent(Event event) {
@@ -89,9 +95,9 @@
       } else {
         LOGGER.debug("Event " + event + " not currently supported");
 
-        config = new ProjectConfig(configFactory, ALL_PROJECTS);
+        config = new ProjectConfig(configFactory, allProjectsName.get());
 
-        messageGenerator = MessageGeneratorFactory.newInstance(event, config);
+        messageGenerator = MessageGeneratorFactory.newInstance(event);
       }
 
       if (messageGenerator.shouldPublish()) {
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/client/WebhookClient.java b/src/main/java/com/cisco/gerrit/plugins/slack/client/WebhookClient.java
index c609d7d..81287b2 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/client/WebhookClient.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/client/WebhookClient.java
@@ -108,12 +108,10 @@
         connection.setDoInput(true);
         connection.setDoOutput(true);
 
-        DataOutputStream request;
-        request = new DataOutputStream(connection.getOutputStream());
-
-        request.write(message.getBytes(StandardCharsets.UTF_8));
-        request.flush();
-        request.close();
+        try (DataOutputStream request = new DataOutputStream(connection.getOutputStream())) {
+          request.write(message.getBytes(StandardCharsets.UTF_8));
+          request.flush();
+        }
       } catch (IOException e) {
         throw new RuntimeException("Error posting message to Slack: [" + e.getMessage() + "].", e);
       }
@@ -143,6 +141,7 @@
           Authenticator authenticator;
           authenticator =
               new Authenticator() {
+                @Override
                 public PasswordAuthentication getPasswordAuthentication() {
                   return (new PasswordAuthentication(
                       config.getProxyUsername(), config.getProxyPassword().toCharArray()));
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java b/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java
index b1a08cb..c1c5c9a 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java
@@ -126,12 +126,11 @@
    * Creates a new MessageGenerator for unsupported events.
    *
    * @param event An Event instance
-   * @param config A ProjectConfig instance for the given event
    * @return A MessageGenerator instance capable of generating a message for an unsupported Event.
    */
-  public static MessageGenerator newInstance(Event event, ProjectConfig config) {
+  public static MessageGenerator newInstance(Event event) {
     UnsupportedMessageGenerator messageGenerator;
-    messageGenerator = new UnsupportedMessageGenerator(event, config);
+    messageGenerator = new UnsupportedMessageGenerator(event);
 
     return messageGenerator;
   }
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java b/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java
index 323c976..714a617 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java
@@ -17,7 +17,6 @@
 
 package com.cisco.gerrit.plugins.slack.message;
 
-import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
 import com.google.gerrit.server.events.Event;
 
 /**
@@ -27,16 +26,14 @@
  * @author Matthew Montgomery
  */
 public class UnsupportedMessageGenerator implements MessageGenerator {
-  private ProjectConfig config;
   private Event event;
 
-  UnsupportedMessageGenerator(Event event, ProjectConfig config) {
+  UnsupportedMessageGenerator(Event event) {
     if (event == null) {
       throw new NullPointerException("event cannot be null");
     }
 
     this.event = event;
-    this.config = config;
   }
 
   @Override
diff --git a/src/test/java/com/cisco/gerrit/plugins/slack/PublishEventListenerTest.java b/src/test/java/com/cisco/gerrit/plugins/slack/PublishEventListenerTest.java
index 3729708..c5ab66a 100644
--- a/src/test/java/com/cisco/gerrit/plugins/slack/PublishEventListenerTest.java
+++ b/src/test/java/com/cisco/gerrit/plugins/slack/PublishEventListenerTest.java
@@ -20,20 +20,20 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
-import com.google.gerrit.server.events.ChangeMergedEvent;
-import com.google.gerrit.server.events.PatchSetCreatedEvent;
+import com.google.gerrit.server.config.AllProjectsName;
+import com.google.gerrit.server.config.PluginConfigFactory;
 import org.junit.Before;
 import org.junit.Test;
 
 public class PublishEventListenerTest {
-  private PatchSetCreatedEvent mockPatchSetCreatedEvent = mock(PatchSetCreatedEvent.class);
-  private ChangeMergedEvent mockChangeMergedEvent = mock(ChangeMergedEvent.class);
+  private PluginConfigFactory mockConfigFactory = mock(PluginConfigFactory.class);
+  private AllProjectsName mockAllProjectsName = mock(AllProjectsName.class);
 
   private PublishEventListener publishEventListener;
 
   @Before
   public void setup() throws Exception {
-    publishEventListener = new PublishEventListener();
+    publishEventListener = new PublishEventListener(mockConfigFactory, mockAllProjectsName);
   }
 
   @Test
diff --git a/src/test/java/com/cisco/gerrit/plugins/slack/client/WebhookClientIntegrationTest.java b/src/test/java/com/cisco/gerrit/plugins/slack/client/WebhookClientIntegrationTest.java
index 8f02fcc..b5e8011 100644
--- a/src/test/java/com/cisco/gerrit/plugins/slack/client/WebhookClientIntegrationTest.java
+++ b/src/test/java/com/cisco/gerrit/plugins/slack/client/WebhookClientIntegrationTest.java
@@ -77,14 +77,10 @@
     WebhookClient client;
     client = new WebhookClient(getConfig());
 
-    InputStream testProperties;
-    testProperties = ResourceHelper.loadNamedResourceAsStream("test.properties");
-
-    Properties properties;
-    properties = new Properties();
-    properties.load(testProperties);
-
-    testProperties.close();
+    Properties properties = new Properties();
+    try (InputStream testProperties = ResourceHelper.loadNamedResourceAsStream("test.properties")) {
+      properties.load(testProperties);
+    }
 
     MessageTemplate template;
     template = new MessageTemplate();
@@ -109,14 +105,10 @@
     WebhookClient client;
     client = new WebhookClient(getConfig());
 
-    InputStream testProperties;
-    testProperties = ResourceHelper.loadNamedResourceAsStream("test.properties");
-
-    Properties properties;
-    properties = new Properties();
-    properties.load(testProperties);
-
-    testProperties.close();
+    Properties properties = new Properties();
+    try (InputStream testProperties = ResourceHelper.loadNamedResourceAsStream("test.properties")) {
+      properties.load(testProperties);
+    }
 
     MessageTemplate template;
     template = new MessageTemplate();