diff --git a/appengine-java8/images/pom.xml b/appengine-java8/images/pom.xml
index c3cd74df480..95e5dab7a6c 100644
--- a/appengine-java8/images/pom.xml
+++ b/appengine-java8/images/pom.xml
@@ -52,6 +52,7 @@ Copyright 2015 Google Inc.
provided
+
${project.build.directory}/${project.build.finalName}/WEB-INF/classes
@@ -65,6 +66,12 @@ Copyright 2015 Google Inc.
true
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
+
diff --git a/appengine-java8/images/src/main/java/com/example/appengine/images/ImagesServlet.java b/appengine-java8/images/src/main/java/com/example/appengine/images/ImagesServlet.java
index 2f0c1f9864a..5b929c86ada 100644
--- a/appengine-java8/images/src/main/java/com/example/appengine/images/ImagesServlet.java
+++ b/appengine-java8/images/src/main/java/com/example/appengine/images/ImagesServlet.java
@@ -15,6 +15,7 @@
*/
package com.example.appengine.images;
+
import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
@@ -35,12 +36,16 @@
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// [START example]
@SuppressWarnings("serial")
+@WebServlet(name = "images",
+ description = "Images: Write an image to a bucket and display it in various sizes",
+ urlPatterns = "/images")
public class ImagesServlet extends HttpServlet {
final String bucket = "YOUR-BUCKETNAME-HERE";
@@ -59,7 +64,7 @@ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOExc
// Read the image.jpg resource into a ByteBuffer.
FileInputStream fileInputStream = new FileInputStream(new File("WEB-INF/image.jpg"));
FileChannel fileChannel = fileInputStream.getChannel();
- ByteBuffer byteBuffer = ByteBuffer.allocate((int)fileChannel.size());
+ ByteBuffer byteBuffer = ByteBuffer.allocate((int) fileChannel.size());
fileChannel.read(byteBuffer);
byte[] imageBytes = byteBuffer.array();
diff --git a/appengine-java8/images/src/main/webapp/WEB-INF/web.xml b/appengine-java8/images/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 3ab41c29a64..00000000000
--- a/appengine-java8/images/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- images
- com.example.appengine.images.ImagesServlet
-
-
- images
- /
-
-
diff --git a/appengine-java8/logs/pom.xml b/appengine-java8/logs/pom.xml
index 3746dd6b2b2..b6296c6c843 100644
--- a/appengine-java8/logs/pom.xml
+++ b/appengine-java8/logs/pom.xml
@@ -15,62 +15,68 @@
limitations under the License.
-->
- 4.0.0
- war
- 1.0-SNAPSHOT
- com.example.appengine
- appengine-logs-j8
-
-
- com.google.cloud
- appengine-java8-samples
- 1.0.0
- ..
-
-
-
- com.google.appengine
- appengine-api-1.0-sdk
- ${appengine.sdk.version}
-
-
- com.google.guava
- guava
- 20.0
-
+ 4.0.0
+ war
+ 1.0-SNAPSHOT
+ com.example.appengine
+ appengine-logs-j8
+
+
+ com.google.cloud
+ appengine-java8-samples
+ 1.0.0
+ ..
+
+
+
+ com.google.appengine
+ appengine-api-1.0-sdk
+ ${appengine.sdk.version}
+
+
+ com.google.guava
+ guava
+ 20.0
+
-
- javax.servlet
- javax.servlet-api
- 3.1.0
- jar
- provided
-
+
+ javax.servlet
+ javax.servlet-api
+ 3.1.0
+ jar
+ provided
+
-
- org.json
- json
- 20160810
-
-
- joda-time
- joda-time
- 2.9.9
-
-
-
-
- ${project.build.directory}/${project.build.finalName}/WEB-INF/classes
-
-
- com.google.cloud.tools
- appengine-maven-plugin
- 1.3.1
-
- true
- true
-
-
-
-
+
+ org.json
+ json
+ 20160810
+
+
+ joda-time
+ joda-time
+ 2.9.9
+
+
+
+
+ ${project.build.directory}/${project.build.finalName}/WEB-INF/classes
+
+
+
+ com.google.cloud.tools
+ appengine-maven-plugin
+ 1.3.1
+
+ true
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
+
+
+
diff --git a/appengine-java8/logs/src/main/java/com/example/appengine/logs/LogsServlet.java b/appengine-java8/logs/src/main/java/com/example/appengine/logs/LogsServlet.java
index a889763e989..57ce0283464 100644
--- a/appengine-java8/logs/src/main/java/com/example/appengine/logs/LogsServlet.java
+++ b/appengine-java8/logs/src/main/java/com/example/appengine/logs/LogsServlet.java
@@ -25,6 +25,7 @@
import java.io.IOException;
import java.io.PrintWriter;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -32,6 +33,8 @@
// Get request logs along with their app log lines and display them 5 at
// a time, using a Next link to cycle through to the next 5.
+@WebServlet(name = "logs", description = "Logs: Display 5 lines of the request log",
+ urlPatterns = "/logs")
public class LogsServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
diff --git a/appengine-java8/logs/src/main/webapp/WEB-INF/web.xml b/appengine-java8/logs/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 5f039c7d869..00000000000
--- a/appengine-java8/logs/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- logs
- com.example.appengine.logs.LogsServlet
-
-
- logs
- /
-
-
diff --git a/appengine-java8/memcache/pom.xml b/appengine-java8/memcache/pom.xml
index e9c5c27dc8e..49e8c6dac1c 100644
--- a/appengine-java8/memcache/pom.xml
+++ b/appengine-java8/memcache/pom.xml
@@ -63,6 +63,13 @@ Copyright 2015 Google Inc.
true
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
+
+
diff --git a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheAsyncCacheServlet.java b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheAsyncCacheServlet.java
index d1960e06cb5..3307dfce37f 100644
--- a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheAsyncCacheServlet.java
+++ b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheAsyncCacheServlet.java
@@ -27,11 +27,14 @@
import java.util.logging.Level;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
+@WebServlet(name = "MemcacheAsync", description = "Memcache: Async Access",
+ urlPatterns = "/memcache/async")
public class MemcacheAsyncCacheServlet extends HttpServlet {
@Override
diff --git a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheBestPracticeServlet.java b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheBestPracticeServlet.java
index b4bd8cc9cc9..dd102386664 100644
--- a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheBestPracticeServlet.java
+++ b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheBestPracticeServlet.java
@@ -24,12 +24,15 @@
import java.util.logging.Level;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// [START example]
@SuppressWarnings("serial")
+@WebServlet(name = "memcache", description = "Memcache: Best Practices",
+ urlPatterns = "/memcache")
public class MemcacheBestPracticeServlet extends HttpServlet {
@Override
diff --git a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheConcurrentServlet.java b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheConcurrentServlet.java
index 212c5d990a8..8a7c88041e5 100644
--- a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheConcurrentServlet.java
+++ b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheConcurrentServlet.java
@@ -24,12 +24,15 @@
import java.math.BigInteger;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// [START example]
@SuppressWarnings("serial")
+@WebServlet(name = "MemcacheConcurrent", description = "Memcache: Concurrent",
+ urlPatterns = "/memcache/concurrent")
public class MemcacheConcurrentServlet extends HttpServlet {
@Override
diff --git a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheSyncCacheServlet.java b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheSyncCacheServlet.java
index 97307dc10e6..dfec0a349f8 100644
--- a/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheSyncCacheServlet.java
+++ b/appengine-java8/memcache/src/main/java/com/example/appengine/memcache/MemcacheSyncCacheServlet.java
@@ -25,12 +25,15 @@
import java.util.logging.Level;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// [START example]
@SuppressWarnings("serial")
+@WebServlet(name = "MemcacheSync", description = "Memcache: Synchronous",
+ urlPatterns = "/memcache/sync")
public class MemcacheSyncCacheServlet extends HttpServlet {
@Override
diff --git a/appengine-java8/memcache/src/main/webapp/WEB-INF/web.xml b/appengine-java8/memcache/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index afbd918d067..00000000000
--- a/appengine-java8/memcache/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
- memcache-best-practice
- com.example.appengine.memcache.MemcacheBestPracticeServlet
-
-
- memcache-best-practice
- /
-
-
- memcache-async
- com.example.appengine.memcache.MemcacheAsyncCacheServlet
-
-
- memcache-async
- /async
-
-
- memcache-sync
- com.example.appengine.memcache.MemcacheSyncCacheServlet
-
-
- memcache-sync
- /sync
-
-
- memcache-concurrent
- com.example.appengine.memcache.MemcacheConcurrentServlet
-
-
- memcache-concurrent
- /concurrent
-
-
-
diff --git a/appengine-java8/oauth2/pom.xml b/appengine-java8/oauth2/pom.xml
index 7a343adf8d8..c98f713c1f7 100644
--- a/appengine-java8/oauth2/pom.xml
+++ b/appengine-java8/oauth2/pom.xml
@@ -62,6 +62,13 @@
true
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
+
+
diff --git a/appengine-java8/oauth2/src/main/java/com/example/appengine/HelloServlet.java b/appengine-java8/oauth2/src/main/java/com/example/appengine/HelloServlet.java
index 35e0e1762ed..f51864864e0 100644
--- a/appengine-java8/oauth2/src/main/java/com/example/appengine/HelloServlet.java
+++ b/appengine-java8/oauth2/src/main/java/com/example/appengine/HelloServlet.java
@@ -24,12 +24,15 @@
import java.io.IOException;
import java.io.PrintWriter;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// [START example]
@SuppressWarnings("serial")
+@WebServlet(name = "oauth2", description = "Oauth2: restricted helloWorld",
+ urlPatterns = "/oauth2hello")
public class HelloServlet extends HttpServlet {
@Override
diff --git a/appengine-java8/oauth2/src/main/java/com/example/appengine/Oauth2Filter.java b/appengine-java8/oauth2/src/main/java/com/example/appengine/Oauth2Filter.java
index f5cf8a969da..f857bd43ecc 100644
--- a/appengine-java8/oauth2/src/main/java/com/example/appengine/Oauth2Filter.java
+++ b/appengine-java8/oauth2/src/main/java/com/example/appengine/Oauth2Filter.java
@@ -13,8 +13,6 @@
*/
package com.example.appengine;
-import static com.google.appengine.api.utils.SystemProperty.environment;
-
import com.google.appengine.api.oauth.OAuthRequestException;
import com.google.appengine.api.oauth.OAuthService;
import com.google.appengine.api.oauth.OAuthServiceFactory;
@@ -31,6 +29,7 @@
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
/**
@@ -40,6 +39,7 @@
*
Note - this is to demonstrate the OAuth2 APIs, as it is possible to lockdown some
* of your app's URL's using cloud console by adding service accounts to the project.
*/
+@WebFilter(urlPatterns = "/oauth2hello")
public class Oauth2Filter implements Filter {
private ServletContext context;
@@ -65,7 +65,7 @@ public void doFilter(
OAuthService oauth = OAuthServiceFactory.getOAuthService();
// Only check Oauth2 when in production, skip if run in development.
- SystemProperty.Environment.Value env = environment.value();
+ SystemProperty.Environment.Value env = SystemProperty.environment.value();
if (env == SystemProperty.Environment.Value.Production) { // APIs only work in Production
try {
String tokenAudience = oauth.getClientId(scope);
diff --git a/appengine-java8/oauth2/src/main/webapp/WEB-INF/web.xml b/appengine-java8/oauth2/src/main/webapp/WEB-INF/web.xml
index 4aa5ce5ec15..4efcce9a36c 100644
--- a/appengine-java8/oauth2/src/main/webapp/WEB-INF/web.xml
+++ b/appengine-java8/oauth2/src/main/webapp/WEB-INF/web.xml
@@ -19,25 +19,7 @@
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
-
- Oauth2Filter
- com.example.appengine.Oauth2Filter
-
-
- Oauth2Filter
- /hello
-
-
-
- hello
- com.example.appengine.HelloServlet
-
-
- hello
- /hello
-
-
- index.html
+ oauth2.html
diff --git a/appengine-java8/oauth2/src/main/webapp/index.html b/appengine-java8/oauth2/src/main/webapp/oauth2.html
similarity index 88%
rename from appengine-java8/oauth2/src/main/webapp/index.html
rename to appengine-java8/oauth2/src/main/webapp/oauth2.html
index cb2401db6ab..40138a5c548 100644
--- a/appengine-java8/oauth2/src/main/webapp/index.html
+++ b/appengine-java8/oauth2/src/main/webapp/oauth2.html
@@ -45,9 +45,10 @@
-
-
-
-
+
+
+
+
+
Hello World