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();