diff --git a/appengine-java8/endpoints-v2-backend/README.md b/appengine-java8/endpoints-v2-backend/README.md
index 4c226cda3b0..2fba2449dc1 100644
--- a/appengine-java8/endpoints-v2-backend/README.md
+++ b/appengine-java8/endpoints-v2-backend/README.md
@@ -3,7 +3,9 @@
This sample demonstrates how to use Google Cloud Endpoints Frameworks using
Java on App Engine Standard.
-## Adding the project ID to the sample API code
+## Build with Maven
+
+### Adding the project ID to the sample API code
You must add the project ID obtained when you created your project to the
sample's `pom.xml` before you can deploy the code.
@@ -21,19 +23,19 @@ your project ID.
0. Save your changes.
-## Building the sample project
+### Building the sample project
To build the project:
mvn clean package
-## Generating the openapi.json file
+### Generating the openapi.json file
To generate the required configuration file `openapi.json`:
mvn exec:java -DGetSwaggerDoc
-## Deploying the sample API to App Engine
+### Deploying the sample API to App Engine
To deploy the sample API:
@@ -51,7 +53,94 @@ To deploy the sample API:
0. Wait for the upload to finish.
-## Sending a request to the sample API
+### Sending a request to the sample API
+
+After you deploy the API and its configuration file, you can send requests
+to the API.
+
+To send a request to the API, from a command line, invoke the following `cURL`
+command:
+
+ curl \
+ -H "Content-Type: application/json" \
+ -X POST \
+ -d '{"message":"echo"}' \
+ https://$PROJECT_ID.appspot.com/_ah/api/echo/v1/echo
+
+You will get a 200 response with the following data:
+
+ {
+ "message": "echo"
+ }
+
+## Build with gradle
+
+### Adding the project ID to the sample API code
+
+0. Edit the file `build.gradle`.
+
+0. For `def projectId = 'YOUR_PROJECT_ID'`, replace the value `YOUR_PROJECT_ID`
+with your project ID.
+
+0. Edit the file `src/main/java/com/example/echo/Echo.java
+
+0. Replace the value `YOUR-PROJECT-ID` with your project ID.
+
+0. Save your changes.
+
+### Building the sample project
+
+To build the project on unix-based systems:
+
+ ./gradlew build
+
+Windows users: Use `gradlew.bat` instead of `./gradlew`
+
+
+ more details
+ The project contains the standard java and war plugins and in addition to that it contains the following plugins:
+ https://github.com/GoogleCloudPlatform/endpoints-framework-gradle-plugin for the endpoint related tasks and
+ https://github.com/GoogleCloudPlatform/app-gradle-plugin for the appengine standard related tasks.
+
+ Check the links for details about the available Plugin Goals and Parameters.
+
+
+### Generating the openapi.json file
+
+To generate the required configuration file `openapi.json`:
+
+ ./gradlew endpointsOpenApiDocs
+
+This results in a file in build/endpointsOpenApiDocs/openapi.json
+
+### Deploying the sample API to App Engine
+
+To deploy the sample API:
+
+0. Invoke the `gcloud` command to deploy the API configuration file:
+
+ gcloud service-management deploy build/endpointsOpenApiDocs/openapi.json
+
+0. Deploy the API implementation code by invoking:
+
+ ./gradlew appengineDeploy
+
+ The first time you upload a sample app, you may be prompted to authorize the
+ deployment. Follow the prompts: when you are presented with a browser window
+ containing a code, copy it to the terminal window.
+
+
+ ERROR: (gcloud.app.deploy) The current Google Cloud project [...] does not contain an App Engine application.
+ If you create a fresh cloud project that doesn't contain a appengine application you may receive this Error:
+
+ ERROR: (gcloud.app.deploy) The current Google Cloud project [...] does not contain an App Engine application. Use `gcloud app create` to initialize an App Engine application within the project.
+
+ In that case just execute `gcloud app create`, you will be asked to select a region and the app will be created. Then run gradle appengineDeploy again.
+
+
+0. Wait for the upload to finish.
+
+### Sending a request to the sample API
After you deploy the API and its configuration file, you can send requests
to the API.
diff --git a/appengine-java8/endpoints-v2-backend/build.gradle b/appengine-java8/endpoints-v2-backend/build.gradle
new file mode 100644
index 00000000000..e09ba4c3851
--- /dev/null
+++ b/appengine-java8/endpoints-v2-backend/build.gradle
@@ -0,0 +1,68 @@
+// Copyright 2017 Google Inc.
+//
+// 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.import org.apache.tools.ant.filters.ReplaceTokens
+
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:+'
+ classpath 'com.google.cloud.tools:appengine-gradle-plugin:+'
+ }
+}
+
+repositories {
+ maven {
+ url 'https://maven-central.storage.googleapis.com'
+ }
+ jcenter()
+ mavenCentral()
+}
+
+task wrapper(type: Wrapper) {
+ gradleVersion = '3.5'
+}
+
+def projectId = 'YOUR_PROJECT_ID'
+
+apply plugin: 'java'
+apply plugin: 'war'
+apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
+apply plugin: 'com.google.cloud.tools.appengine'
+
+dependencies {
+ // For real projects: use concrete versions here instead of the '+' to make your build consistent
+ compile 'com.google.endpoints:endpoints-framework:+'
+ compile 'com.google.endpoints:endpoints-management-control-appengine:+'
+ compile 'com.google.endpoints:endpoints-framework-auth:+'
+}
+
+endpointsServer {
+ // Endpoints Framework Plugin server-side configuration
+ hostname = "echo-api.endpoints.${projectId}.cloud.goog"
+}
+
+sourceCompatibility = 1.7 // App Engine Standard uses Java 7
+targetCompatibility = 1.7 // App Engine Standard uses Java 7
+
+// this replaces the ${endpoints.project.id} in appengine-web.xml and web.xml
+task replaceProjectId(type: Copy) {
+ from 'src/main/webapp/WEB-INF/'
+ include '*.xml'
+ into 'build/exploded-backend/WEB-INF'
+ expand(endpoints:[project:[id:projectId]])
+ filteringCharset = 'UTF-8'
+}
+assemble.dependsOn replaceProjectId
diff --git a/appengine-java8/endpoints-v2-backend/gradle/wrapper/gradle-wrapper.jar b/appengine-java8/endpoints-v2-backend/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000000..28caa99c214
Binary files /dev/null and b/appengine-java8/endpoints-v2-backend/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/appengine-java8/endpoints-v2-backend/gradle/wrapper/gradle-wrapper.properties b/appengine-java8/endpoints-v2-backend/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000000..7c8a3c1ce22
--- /dev/null
+++ b/appengine-java8/endpoints-v2-backend/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Thu Jun 01 15:23:25 PDT 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip
diff --git a/appengine-java8/endpoints-v2-backend/gradlew b/appengine-java8/endpoints-v2-backend/gradlew
new file mode 100755
index 00000000000..4453ccea33d
--- /dev/null
+++ b/appengine-java8/endpoints-v2-backend/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save ( ) {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/appengine-java8/endpoints-v2-backend/gradlew.bat b/appengine-java8/endpoints-v2-backend/gradlew.bat
new file mode 100644
index 00000000000..e95643d6a2c
--- /dev/null
+++ b/appengine-java8/endpoints-v2-backend/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/appengine-java8/endpoints-v2-migration/README.md b/appengine-java8/endpoints-v2-migration/README.md
index b9357a8af1c..a213447c5b1 100644
--- a/appengine-java8/endpoints-v2-migration/README.md
+++ b/appengine-java8/endpoints-v2-migration/README.md
@@ -1,7 +1,12 @@
# Hello World Google Cloud Endpoints for App Engine
This sample provides an example of a [migration][7] from the prior version of
-[Google Cloud Endpoints Frameworks][3] to new [Google Cloud Endpoints Frameworks for App Engine][8].
+[Google Cloud Endpoints Frameworks][3] to new
+[Google Cloud Endpoints Frameworks for App Engine][8] using a
+**Discovery Document**. Additionally, this sample provides an example of using
+the new App Engine Maven and Gradle plugins for deploying your Google App Engine
+Standard applications.
+
This sample contains comments of how to use the prior Endpoints Frameworks as
well. For clarity, the prior Endpoints Frameworks and the new Endpoints
Frameworks are denoted as Endpoints Frameworks v1.0 and Endpoints Frameworks
@@ -22,10 +27,21 @@ process is explained [here][8] and a quickstart is provided [here][9].
- [Google Cloud Endpoints Frameworks v1.0][3]
## Build and Deployment Plugins
+- [Google App Engine Maven plugin][14]
+- [Google App Engine Gradle plugin][15]
+
+## Discovery Document and Client Library Generation Plugins
- [Google Cloud Endpoints Frameworks Maven Plugin][10]
- [Google Cloud Endpoints Frameworks Gradle Plugin][11]
## Setup
+1. Change `YOUR-PROJECT-ID` with your project id in the hostname parameter
+ defined in either the Maven or Gradle build script. Hostname is used when a
+ discovery document is generated.
+
+ - Maven - pom.xml
+ - Gradle - build.gradle
+
1. [Optional]: User Authenticating with Google Accounts in Web Clients
1. Update the `WEB_CLIENT_ID` in [Constants.java](src/main/java/com/example/helloendpoints/Constants.java)
@@ -37,12 +53,16 @@ process is explained [here][8] and a quickstart is provided [here][9].
have registered in the
[Credentials on Developers Console for OAuth 2.0 client IDs][6].
-1. [Optional]: User Authenticating with Google Accounts in other Applications Types
+1. [Optional]: User Authenticating with Google Accounts in other Applications
+ Types
- - Inside [Constants.java](src/main/java/com/example/helloendpoints/Constants.java) you will find placeholders for Android
- applications using Google Accounts client IDs registered in the
+ - Inside [Constants.java](src/main/java/com/example/helloendpoints/Constants.java)
+ you will find placeholders for Android applications using Google Accounts
+ client IDs registered in the
[Credentials on Developers Console for OAuth 2.0 client IDs][6].
+ - Note: iOS support should work but has not been fully tested.
+
- These client IDs are used when defining annotation for this sample API
found in [Greetings.java](src/main/java/com/example/helloendpoints/Greetings.java).
@@ -65,61 +85,66 @@ process is explained [here][8] and a quickstart is provided [here][9].
### Maven
-1. Build a fresh binary by using:
-
- `mvn clean compile`
-
-1. Run the application locally at [http://localhost:8080][5] by using:
+1. Build and Run the application locally at [http://localhost:8080][5] by using:
- `mvn appengine:run`
+ `mvn clean appengine:run`
1. Explore local server's API explorer by browsing to:
[http://localhost:8080/_ah/api/explorer][13]
-1. Generate the client library located at `target/client-libs/helloworld-v1-java.zip`
- by using:
+1. Generate the discovery document located at
+ `target/discovery-docs/helloworld-v1-rest.discovery` by using:
+
+ `mvn endpoints-framework:discoveryDocs`
+
+1. Generate the client library located at
+ `target/client-libs/helloworld-v1-java.zip` by using:
`mvn endpoints-framework:clientLibs`
-1. Deploy your application to Google App Engine by using:
+1. Build and Deploy your application to Google App Engine by using:
- `mvn appengine:deploy`
+ `mvn clean appengine:deploy`
### Gradle
-1. Build a fresh binary by using:
-
- `gradle clean compileJava`
+1. Build and Run the application locally at [http://localhost:8080][5] by using:
-1. Run the application locally at [http://localhost:8080][5] by using:
+ `./gradlew clean appengineRun`
- `gradle appengineRun`
+ Windows users: Use `gradlew.bat` instead of `./gradlew`
1. Explore local server's API explorer by browsing to:
[http://localhost:8080/_ah/api/explorer][13]
-1. Generate the client library located at `build/endpointsClientLibs/helloworld-v1-java.zip`
- by using:
+1. Generate the discovery document located at
+ `build/endpointsDiscoveryDocs/helloworld-v1-rest.discovery` by using:
- `gradle endpointsClientLibs`
+ `./gradlew endpointsDiscoveryDocs`
-1. Deploy your application to Google App Engine by using:
+1. Generate the client library located at
+ `build/endpointsClientLibs/helloworld-v1-java.zip` by using:
+
+ `./gradlew endpointsClientLibs`
- `gradle appengineDeploy`
+1. Deploy your application to Google App Engine by using:
+ `./gradlew appengineDeploy`
[1]: https://cloud.google.com/appengine/docs/java/
[2]: http://java.com/en/
-[3]: https://cloud.google.com/appengine/docs/java/endpoints/
+[3]: https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java
[4]: https://cloud.google.com/appengine/docs/java/tools/maven
[5]: http://localhost:8080/
[6]: https://console.developers.google.com/project/_/apiui/credential
-[7]: https://cloud.google.com/appengine/docs/java/endpoints/migrating
+[7]: https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/migrating
[8]: https://cloud.google.com/endpoints/docs/frameworks/java/about-cloud-endpoints-frameworks
[9]: https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java
[10]: https://github.com/GoogleCloudPlatform/endpoints-framework-maven-plugin
[11]: https://github.com/GoogleCloudPlatform/endpoints-framework-gradle-plugin
[12]: https://cloud.google.com/endpoints/docs/authenticating-users-frameworks
[13]: http://localhost:8080/_ah/api/explorer
+[14]: https://github.com/GoogleCloudPlatform/app-maven-plugin
+[15]: https://github.com/GoogleCloudPlatform/app-gradle-plugin
diff --git a/appengine-java8/endpoints-v2-migration/build.gradle b/appengine-java8/endpoints-v2-migration/build.gradle
index 30b47fd9d20..a7db40d57f4 100644
--- a/appengine-java8/endpoints-v2-migration/build.gradle
+++ b/appengine-java8/endpoints-v2-migration/build.gradle
@@ -20,10 +20,10 @@ buildscript { // Configuration for building
}
dependencies {
// App Engine Gradle plugin
- classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.1.1'
+ classpath 'com.google.cloud.tools:appengine-gradle-plugin:+'
// Endpoints Frameworks Gradle plugin
- classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.0-beta6'
+ classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:+'
}
}
// [END buildscript]
@@ -49,13 +49,13 @@ dependencies {
compile 'jstl:jstl:1.2'
compile group: 'javax.inject', name: 'javax.inject', version: '1'
- // Uncomment to use Endpoints Frameworks v1.0
- // compile group: 'com.google.appengine', name: 'appengine-endpoints', version: '1.9.48'
+ // Uncomment to use Endpoints Frameworks v1.0 and comment the v2.0 section
+ // compile group: 'com.google.appengine', name: 'appengine-endpoints', version: '+'
// End of Endpoints Frameworks v1.0
// Endpoints Frameworks v2.0
// [START endpoints-tools]
- compile group: 'com.google.endpoints', name: 'endpoints-framework-tools', version: '2.0.4'
+ compile group: 'com.google.endpoints', name: 'endpoints-framework-tools', version: '+'
// [END endpoints-tools]
// End of Endpoints Frameworks v2.0
}
@@ -74,6 +74,7 @@ appengine { // App Engine tasks configuration
/* [START endpoints-server]
endpointsServer {
// Endpoints Framework Plugin server-side configuration
+ hostname = 'YOUR-PROJECT-ID.appspot.com'
}
[END endpoints-server] */
diff --git a/appengine-java8/endpoints-v2-migration/gradle/wrapper/gradle-wrapper.jar b/appengine-java8/endpoints-v2-migration/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000000..5a3f8f1cbeb
Binary files /dev/null and b/appengine-java8/endpoints-v2-migration/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/appengine-java8/endpoints-v2-migration/gradle/wrapper/gradle-wrapper.properties b/appengine-java8/endpoints-v2-migration/gradle/wrapper/gradle-wrapper.properties
index 4a7d80cfe22..c59ee869ac2 100644
--- a/appengine-java8/endpoints-v2-migration/gradle/wrapper/gradle-wrapper.properties
+++ b/appengine-java8/endpoints-v2-migration/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Mon Jan 16 22:18:59 PST 2017
+#Thu Jun 01 13:22:47 PDT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip
diff --git a/appengine-java8/endpoints-v2-migration/jenkins.sh b/appengine-java8/endpoints-v2-migration/jenkins.sh
index 3bc1515636c..c7928c1f080 100755
--- a/appengine-java8/endpoints-v2-migration/jenkins.sh
+++ b/appengine-java8/endpoints-v2-migration/jenkins.sh
@@ -23,7 +23,7 @@ function TestEndpoints () {
curl -X GET \
"https://${2}-dot-${1}.appspot.com/_ah/api/helloworld/v1/hellogreeting/0" | \
tee "$ERROR_OUTPUT_DIR/response.json" | \
- grep "hello version-${2}"
+ grep "hello ${3} version-${2}"
# Test getGreeting Endpoint (goodbye world!)
curl -X GET \
@@ -48,7 +48,10 @@ function TestEndpoints () {
# Jenkins provides values for GOOGLE_PROJECT_ID and GOOGLE_VERSION_ID
# Update Greetings.java
-sed -i'.bak' -e "s/hello world!/hello version-${GOOGLE_VERSION_ID}!/g" src/main/java/com/example/helloendpoints/Greetings.java
+UNIQUE_MAVEN_STRING="maven"
+sed -i'.bak' \
+ -e "s/hello world!/hello ${UNIQUE_MAVEN_STRING} version-${GOOGLE_VERSION_ID}!/g" \
+ src/main/java/com/example/helloendpoints/Greetings.java
# Test with Maven
mvn clean appengine:deploy \
@@ -56,14 +59,17 @@ mvn clean appengine:deploy \
-Dapp.deploy.promote=false
# End-2-End tests
-TestEndpoints "${GOOGLE_PROJECT_ID}" "${GOOGLE_VERSION_ID}"
+TestEndpoints "${GOOGLE_PROJECT_ID}" "${GOOGLE_VERSION_ID}" "${UNIQUE_MAVEN_STRING}"
# Clean
mvn clean
# Test with Gradle
# Modify Greetings.java for Gradle
-sed -i'.bak' -e "s/hello version-${GOOGLE_VERSION_ID}!/hello version-${GOOGLE_VERSION_ID}!/g" src/main/java/com/example/helloendpoints/Greetings.java
+UNIQUE_GRADLE_STRING="gradle"
+sed -i'.bak' \
+ -e "s/hello ${UNIQUE_MAVEN_STRING} version-${GOOGLE_VERSION_ID}!/hello ${UNIQUE_GRADLE_STRING} version-${GOOGLE_VERSION_ID}!/g" \
+ src/main/java/com/example/helloendpoints/Greetings.java
# Deploy Gradle
gradle -Pappengine.deploy.promote=false \
@@ -71,7 +77,7 @@ gradle -Pappengine.deploy.promote=false \
appengineDeploy
# End-2-End tests
-TestEndpoints "${GOOGLE_PROJECT_ID}" "${GOOGLE_VERSION_ID}"
+TestEndpoints "${GOOGLE_PROJECT_ID}" "${GOOGLE_VERSION_ID}" "${UNIQUE_GRADLE_STRING}"
# Clean
gradle clean
diff --git a/appengine-java8/endpoints-v2-migration/pom.xml b/appengine-java8/endpoints-v2-migration/pom.xml
index 5694301ea67..21a25d7f0c5 100644
--- a/appengine-java8/endpoints-v2-migration/pom.xml
+++ b/appengine-java8/endpoints-v2-migration/pom.xml
@@ -26,20 +26,18 @@ limitations under the License.
appengine-java8-samples
com.google.cloud
1.0.0
- ../..
+ ..
- 1
1.8
1.8
- 2.1
UTF-8
-
+
+
+ com.google.appengine
+ appengine-api-1.0-sdk
+ 1.9.53
+
javax.servlet
javax.servlet-api
@@ -69,7 +72,7 @@ limitations under the License.
javax.inject
javax.inject
- ${javax.inject.version}
+ 1
@@ -100,7 +103,7 @@ limitations under the License.
org.codehaus.mojo
versions-maven-plugin
- ${mojo.versions.maven.version}
+ 2.3
compile
diff --git a/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Constants.java b/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Constants.java
index 327b7e290ac..255a3dd9e25 100644
--- a/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Constants.java
+++ b/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Constants.java
@@ -22,6 +22,7 @@
public class Constants {
public static final String WEB_CLIENT_ID = "replace this with your web client ID";
public static final String ANDROID_CLIENT_ID = "replace this with your Android client ID";
+ public static final String IOS_CLIENT_ID = "replace this with your iOS client ID";
public static final String ANDROID_AUDIENCE = WEB_CLIENT_ID;
public static final String EMAIL_SCOPE = "https://www.googleapis.com/auth/userinfo.email";
diff --git a/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Greetings.java b/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Greetings.java
index 4bda5c883b4..716d2c597e1 100644
--- a/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Greetings.java
+++ b/appengine-java8/endpoints-v2-migration/src/main/java/com/example/helloendpoints/Greetings.java
@@ -34,8 +34,9 @@
*/
@Api(name = "helloworld",
version = "v1",
+ // You can add additional SCOPES as a comma separated list of values
scopes = {Constants.EMAIL_SCOPE},
- clientIds = {Constants.WEB_CLIENT_ID, Constants.ANDROID_CLIENT_ID},
+ clientIds = {Constants.WEB_CLIENT_ID, Constants.ANDROID_CLIENT_ID, Constants.IOS_CLIENT_ID},
audiences = {Constants.ANDROID_AUDIENCE}
)
public class Greetings {
diff --git a/appengine-java8/endpoints-v2-migration/src/main/webapp/WEB-INF/web.xml b/appengine-java8/endpoints-v2-migration/src/main/webapp/WEB-INF/web.xml
index 7f42fd562d4..ac8425ad923 100644
--- a/appengine-java8/endpoints-v2-migration/src/main/webapp/WEB-INF/web.xml
+++ b/appengine-java8/endpoints-v2-migration/src/main/webapp/WEB-INF/web.xml
@@ -19,7 +19,7 @@ limitations under the License.
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
-
+
-
+
@@ -64,16 +57,21 @@ limitations under the License.
+
+ com.google.appengine
+ appengine-api-1.0-sdk
+ 1.9.53
+
javax.servlet
servlet-api
- ${servlet.api.version}
+ 2.5
provided
javax.inject
javax.inject
- ${javax.inject.version}
+ 1
@@ -105,7 +103,7 @@ limitations under the License.
org.codehaus.mojo
versions-maven-plugin
- ${mojo.versions.maven.version}
+ 2.3
compile
diff --git a/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Constants.java b/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Constants.java
index 327b7e290ac..255a3dd9e25 100644
--- a/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Constants.java
+++ b/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Constants.java
@@ -22,6 +22,7 @@
public class Constants {
public static final String WEB_CLIENT_ID = "replace this with your web client ID";
public static final String ANDROID_CLIENT_ID = "replace this with your Android client ID";
+ public static final String IOS_CLIENT_ID = "replace this with your iOS client ID";
public static final String ANDROID_AUDIENCE = WEB_CLIENT_ID;
public static final String EMAIL_SCOPE = "https://www.googleapis.com/auth/userinfo.email";
diff --git a/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Greetings.java b/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Greetings.java
index 4bda5c883b4..716d2c597e1 100644
--- a/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Greetings.java
+++ b/appengine/endpoints-frameworks-v2/migration-example/src/main/java/com/example/helloendpoints/Greetings.java
@@ -34,8 +34,9 @@
*/
@Api(name = "helloworld",
version = "v1",
+ // You can add additional SCOPES as a comma separated list of values
scopes = {Constants.EMAIL_SCOPE},
- clientIds = {Constants.WEB_CLIENT_ID, Constants.ANDROID_CLIENT_ID},
+ clientIds = {Constants.WEB_CLIENT_ID, Constants.ANDROID_CLIENT_ID, Constants.IOS_CLIENT_ID},
audiences = {Constants.ANDROID_AUDIENCE}
)
public class Greetings {
diff --git a/appengine/endpoints-frameworks-v2/migration-example/src/main/webapp/WEB-INF/web.xml b/appengine/endpoints-frameworks-v2/migration-example/src/main/webapp/WEB-INF/web.xml
index be7073d2745..d1e3861449a 100644
--- a/appengine/endpoints-frameworks-v2/migration-example/src/main/webapp/WEB-INF/web.xml
+++ b/appengine/endpoints-frameworks-v2/migration-example/src/main/webapp/WEB-INF/web.xml
@@ -1,4 +1,5 @@
-
+
+
-
+