diff --git a/compute/mailjet/README.md b/compute/mailjet/README.md
new file mode 100644
index 00000000000..cbed566b724
--- /dev/null
+++ b/compute/mailjet/README.md
@@ -0,0 +1,44 @@
+# Java Mailjet Email Sample for Google Compute Engine
+
+This sample demonstrates how to use [Mailjet](https://www.mailjet.com/) on
+[Google Compute Engine](https://cloud.google.com/compute/)
+
+See the [sample application documentaion][sample-docs] for more detailed
+instructions.
+
+For more information about Mailjet, see their
+[documentation](http://dev.mailjet.com/email-api/v3/apikey/).
+
+[sample-docs]: https://cloud.google.com/compute/docs/tutorials/sending-mail/
+
+## Running on Compute Engine
+
+To run the sample, you will need to do the following:
+
+1. [Create a Mailjet Account](https://app.mailjet.com/signup).
+1. Create a compute instance on the Google Cloud Platform Developer's Console
+1. SSH into the instance you created
+1. Update packages and install required packages
+
+ `sudo apt-get update && sudo apt-get install git-core openjdk-8-jdk maven`
+
+1. Clone the repo
+
+ `git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git`
+
+1. Configure your Mailjet settings in the java class (MAILJET_API_KEY, SENDGRID_SENDER)
+
+ `java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java`
+
+1. Navigate back to ./Mailjet and use maven to package the class as a jar
+
+ `mvn clean package`
+
+1. Make sure that openjdk 8 is the selected java version
+
+ `sudo update-alternatives --config java`
+
+1. Execute the jar file with your intended recipient and sender emails as arguments
+ and send an email (make sure you are in the target folder)
+
+ `java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT EMAIL] [SENDER EMAIL]`
diff --git a/compute/mailjet/pom.xml b/compute/mailjet/pom.xml
new file mode 100644
index 00000000000..21db2d8bb60
--- /dev/null
+++ b/compute/mailjet/pom.xml
@@ -0,0 +1,91 @@
+
+
+ 4.0.0
+ jar
+ 1.0-SNAPSHOT
+ com.example.compute
+ compute-mailjet
+
+ com.google.cloud
+ doc-samples
+ 1.0.0
+ ../..
+
+
+
+
+ junit
+ junit
+ 4.10
+ test
+
+
+ org.mockito
+ mockito-all
+ 1.10.19
+ test
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.1.0
+ jar
+ provided
+
+
+
+ com.mailjet
+ mailjet-client
+ 4.0.1
+
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+
+
+
+
+ com.example.compute.mailjet.MailjetSender
+
+
+
+ jar-with-dependencies
+
+
+
+
+ org.apache.maven.plugins
+ 3.3
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+
+
diff --git a/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java b/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java
new file mode 100644
index 00000000000..93a06515a3e
--- /dev/null
+++ b/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright 2016 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.compute.mailjet;
+
+// [START mailjet_imports]
+import com.mailjet.client.MailjetClient;
+import com.mailjet.client.MailjetRequest;
+import com.mailjet.client.MailjetResponse;
+import com.mailjet.client.errors.MailjetException;
+import com.mailjet.client.resource.Email;
+// [END mailjet_imports]
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+// [START app]
+public class MailjetSender{
+
+ public static void main(String[] args) {
+ final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
+ final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
+ MailjetClient client = new MailjetClient(mailjetApiKey, mailjetSecretKey);
+
+ MailjetSender sender = new MailjetSender();
+ sender.sendMailjet(args[0], args[1], client);
+ }
+
+ public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client) {
+ MailjetRequest email = new MailjetRequest(Email.resource)
+ .property(Email.FROMEMAIL, sender)
+ .property(Email.FROMNAME, "pandora")
+ .property(Email.SUBJECT, "Your email flight plan!")
+ .property(Email.TEXTPART,
+ "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
+ .property(Email.HTMLPART,
+ "
Dear passenger, welcome to Mailjet!
May the delivery force be with you!")
+ .property(Email.RECIPIENTS, new JSONArray().put(new JSONObject().put("Email", recipient)));
+
+ try {
+ // trigger the API call
+ MailjetResponse response = client.post(email);
+ // Read the response data and status
+ System.out.println(response.getStatus());
+ System.out.println(response.getData());
+ return response;
+ } catch (MailjetException e) {
+ System.out.println("Mailjet Exception: " + e);
+ return null;
+ }
+ }
+}
+// [END app]
diff --git a/compute/mailjet/src/test/java/com/example/compute/mailjet/MailjetSenderTest.java b/compute/mailjet/src/test/java/com/example/compute/mailjet/MailjetSenderTest.java
new file mode 100644
index 00000000000..6212a05aa10
--- /dev/null
+++ b/compute/mailjet/src/test/java/com/example/compute/mailjet/MailjetSenderTest.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright 2016 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.compute.mailjet;
+
+import com.mailjet.client.MailjetClient;
+import com.mailjet.client.MailjetResponse;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Unit tests for {@link MailjetSender}.
+ */
+@RunWith(JUnit4.class)
+public class MailjetSenderTest {
+
+ @Mock MailjetClient mockClient;
+ @Mock MailjetResponse mockResponse;
+ private MailjetSender sender;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ Mockito.when(mockClient.post(Matchers.anyObject())).thenReturn(mockResponse);
+ sender = new MailjetSender();
+ }
+
+ @Test
+ public void doGet_defaultEnvironment_writesResponse() throws Exception {
+ sender.sendMailjet("fake recipient", "fake sender", mockClient);
+ Mockito.verify(mockClient).post(Matchers.anyObject());
+ }
+}
diff --git a/managed_vms/analytics/pom.xml b/managed_vms/analytics/pom.xml
index 3fe0e6e2cbd..47dfa08401c 100644
--- a/managed_vms/analytics/pom.xml
+++ b/managed_vms/analytics/pom.xml
@@ -35,7 +35,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/async-rest/pom.xml b/managed_vms/async-rest/pom.xml
index 212c3680c6b..fbb6073c274 100644
--- a/managed_vms/async-rest/pom.xml
+++ b/managed_vms/async-rest/pom.xml
@@ -53,7 +53,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420debugdebug
diff --git a/managed_vms/cloudstorage/pom.xml b/managed_vms/cloudstorage/pom.xml
index e09a2a27d91..370582de139 100644
--- a/managed_vms/cloudstorage/pom.xml
+++ b/managed_vms/cloudstorage/pom.xml
@@ -37,7 +37,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/cron/pom.xml b/managed_vms/cron/pom.xml
index 58f4d741a1b..5ddc7eda9e9 100644
--- a/managed_vms/cron/pom.xml
+++ b/managed_vms/cron/pom.xml
@@ -34,7 +34,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/datastore/pom.xml b/managed_vms/datastore/pom.xml
index 9bd94037992..13644d4f50a 100644
--- a/managed_vms/datastore/pom.xml
+++ b/managed_vms/datastore/pom.xml
@@ -37,7 +37,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/disk/pom.xml b/managed_vms/disk/pom.xml
index 8f2a1da2ec1..b96d9579266 100644
--- a/managed_vms/disk/pom.xml
+++ b/managed_vms/disk/pom.xml
@@ -30,7 +30,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/extending-runtime/pom.xml b/managed_vms/extending-runtime/pom.xml
index 973e62d0241..c6a6b017054 100644
--- a/managed_vms/extending-runtime/pom.xml
+++ b/managed_vms/extending-runtime/pom.xml
@@ -30,7 +30,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/helloworld/pom.xml b/managed_vms/helloworld/pom.xml
index dc8a1f0b9d8..b29c41a3417 100644
--- a/managed_vms/helloworld/pom.xml
+++ b/managed_vms/helloworld/pom.xml
@@ -34,7 +34,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/mailgun/pom.xml b/managed_vms/mailgun/pom.xml
index 4ee2239aa9b..6cd119064ac 100644
--- a/managed_vms/mailgun/pom.xml
+++ b/managed_vms/mailgun/pom.xml
@@ -47,7 +47,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/mailjet/pom.xml b/managed_vms/mailjet/pom.xml
index 6fb3a3bf061..3c21753347e 100644
--- a/managed_vms/mailjet/pom.xml
+++ b/managed_vms/mailjet/pom.xml
@@ -27,14 +27,6 @@
-
- com.mailjet
- mailjet-client
- 3.1.1
- system
- ${project.basedir}/src/main/webapp/WEB-INF/lib/client-3.1.1-jar-with-dependencies.jar
-
-
javax.servletjavax.servlet-api
@@ -44,19 +36,9 @@
- com.sun.jersey
- jersey-core
- 1.19.1
-
-
- com.sun.jersey
- jersey-client
- 1.19.1
-
-
- com.sun.jersey.contribs
- jersey-multipart
- 1.19.1
+ com.mailjet
+ mailjet-client
+ 4.0.1
@@ -67,7 +49,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/memcache/pom.xml b/managed_vms/memcache/pom.xml
index 37a054f469e..38e827f2d09 100644
--- a/managed_vms/memcache/pom.xml
+++ b/managed_vms/memcache/pom.xml
@@ -37,7 +37,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/sendgrid/pom.xml b/managed_vms/sendgrid/pom.xml
index 304931bbd48..21cd80a9940 100644
--- a/managed_vms/sendgrid/pom.xml
+++ b/managed_vms/sendgrid/pom.xml
@@ -37,7 +37,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/sparkjava/pom.xml b/managed_vms/sparkjava/pom.xml
index cdd77b4ed7d..a2a18dfb02a 100644
--- a/managed_vms/sparkjava/pom.xml
+++ b/managed_vms/sparkjava/pom.xml
@@ -95,7 +95,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420
diff --git a/managed_vms/static-files/pom.xml b/managed_vms/static-files/pom.xml
index b75c7945648..bf2ef49cacf 100644
--- a/managed_vms/static-files/pom.xml
+++ b/managed_vms/static-files/pom.xml
@@ -30,7 +30,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/managed_vms/twilio/pom.xml b/managed_vms/twilio/pom.xml
index 3179192849d..b8cbb56b315 100644
--- a/managed_vms/twilio/pom.xml
+++ b/managed_vms/twilio/pom.xml
@@ -37,7 +37,7 @@
com.google.appenginegcloud-maven-plugin
- 2.0.9.101.v20160316
+ 2.0.9.106.v20160420org.apache.maven.plugins
diff --git a/pom.xml b/pom.xml
index 0cd102fe65f..adbe586579e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,6 +74,8 @@
appengine/xmppbigquerycompute/cmdline
+ compute/error-reporting
+ compute/mailjetcompute/sendgriddatastorelogging