GWT Client for AppEngine Endpoints

320 views
Skip to first unread message

Matthew Rubenstein

unread,
Dec 29, 2016, 2:00:11 PM12/29/16
to Google App Engine
Hello. I'm developing Linux desktop, Android and GWT apps as separate modules in the same Android Studio project, each of which has an AppEngine client. The desktop and Android apps are working, following guides in:

respectively. I'm trying to use the Github google/apis-client-generator to generate the GWT client code:
https://github.com/google/apis-client-generator

---------------------------------------------------------
generate_library --input=rest --language=gwt --output_dir=.
---------------------------------------------------------


but I don't understand how to use the code tree it emits:
---------------------------------------------------------
├── apis
├── build.xml
├── com
  ├── blue_green_group
    └── gdxendpoints
        └── backend
            └── api
                └── gwt
                    └── services
                        └── endpointsApi
                            └── shared
                                ├── EndpointsApi.java
                                ├── model
                                  └── MyBean.java
                                └── package-info.java
  └── google
      └── api
          └── gwt
              └── services
                  └── EndpointsApi.gwt.xml
└── rest
---------------------------------------------------------

Am I supposed to import that com/ tree into my (GWT) project? Wouldn't I do so just by gradle/import reference to the backend module already in my project, which would keep them in sync etc? The .java and .gwt.xml files are entirely redundant (identical) to the backend code already in my project that I deployed to the AppEngine server (from which I downloaded the apis and rest files that generated the new local tree), except for an EndpointsApi.gwt.xml file and a package-info.java file (just a [package <name>] line). Thanks for your insights.

George (Cloud Platform Support)

unread,
Dec 30, 2016, 4:12:39 PM12/30/16
to Google App Engine

By having run successfully the Google APIs Client Generator, you are now offered source code that is ready to get integrated into your existing GWT project. Familiarity with your app’s targeted functionality is needed, and a thorough understanding of the GWT directory structure.


You can use individual Ant tasks or entire Ant builds in your Gradle builds. It all depends on the specifics of your project. You are most welcome to come back with more precise questions on the subject.

Matthew Rubenstein

unread,
Dec 30, 2016, 8:04:52 PM12/30/16
to Google App Engine
I am using Android Studio, with Linux desktop, Android and GWT applications each a separate module in the project. The Android Studio project for example uses an AsyncTask to call methods in the Endpoints API. The source code I generated with the generate_library call is mostly classes that are exactly the same as classes I already have in my backend module that I deployed to AppEngine (and run against in my desktop and Android apps/modules).

I could use Intellij IDEA instead of Android Studio if necessary, but is it possible to include the generated code in a Gradle (not Ant) build? Is there a doc explaining how to use this toolchain instead of Eclipse/Ant?

Matthew Rubenstein

unread,
Jan 1, 2017, 12:12:47 AM1/1/17
to Google App Engine
So I copy the generated directory tree rooted at com/ into my GWT project in Android Studio. I compile the project and I get errors:
...html/src/com/blue_green_group/gdxendpoints/backend/api/gwt/services/endpointsApi/shared/EndpointsApi.java:19: error: package com.google.api.gwt.shared does not exist
import com.google.api.gwt.shared.AuthScope;
                               
^
...html/src/com/blue_green_group/gdxendpoints/backend/api/gwt/services/endpointsApi/shared/EndpointsApi.java:20: error: package com.google.api.gwt.shared does not exist
import com.google.api.gwt.shared.EmptyResponse;
                               
^
...html/src/com/blue_green_group/gdxendpoints/backend/api/gwt/services/endpointsApi/shared/EndpointsApi.java:45: error: cannot find symbol
 
public enum EndpointsApiAuthScope implements AuthScope {
                                               
^
  symbol
:   class AuthScope
  location
: interface EndpointsApi
...html/src/com/blue_green_group/gdxendpoints/backend/api/gwt/services/endpointsApi/shared/EndpointsApi.java:56: error: method does not override or implement a method from a supertype
   
@Override
   
^

Because EndpointsApi.java says
import com.google.api.gwt.shared.AuthScope;
import com.google.api.gwt.shared.EmptyResponse;

and there are no such packages in my project. Indeed I found them through googling mentioned only a few times, mainly in the long deprecated gwt-google-apis project. Mostly 
import com.google.api.gwt.oauth2.<...>

Where are those AuthScope and EmptyResponse superclasses source code supposed to come from for GWT to compile into Javascript?

Matthew Rubenstein

unread,
Jan 1, 2017, 8:45:41 PM1/1/17
to Google App Engine
Two more specific questions within:

Eventually googling turned up instances of AuthScope and EmptyResponse interfaces, which are trivial but necessary definitions, so I added them in a .shared subpackage/subdirectory to com.google.api.gwt , and then ApiCore.gwt.xml , as per the project where I found them:
https://github.com/googlearchive/gwt-google-apis/tree/master/apis/src/com/google/api/gwt

That's an archived gwt-google-apis project. 1> Is that where I'm supposed to find them to include in an Endpoints project?

Then I tried building the GWT project, but I got:
Compiling module com.blue_green_group.gdxendpoints.GdxDefinitionSuperdev
   Finding entry point classes
      Tracing compile failure path for type 'com.blue_green_group.gdxendpoints.client.HtmlLauncher'
         [ERROR] Errors in 'file:/home/myhome/AndroidStudioProjects/gdx-endpoints/html/src/com/blue_green_group/gdxendpoints/client/HtmlLauncher.java'
            [ERROR] Line 36: No source code is available for type com.blue_green_group.gdxendpoints.backend.endpointsApi.EndpointsApi; did you forget to inherit a required module?
            [ERROR] Line 89: No source code is available for type com.blue_green_group.gdxendpoints.backend.endpointsApi.EndpointsApi.Builder; did you forget to inherit a required module?

EndpointsApi (and its inner class Builder) are defined by annotation in the backend module of this project, outside the GWT module. Their source code is in 
/home/myhome/AndroidStudioProjects/gdx-endpoints/backend/build/generated-source/endpoints/java/com/blue_green_group/gdxendpoints/backend/endpointsApi

also outside the GWT module. 2> How is GWT supposed to find those source files?

George (Cloud Platform Support)

unread,
Jan 2, 2017, 2:25:49 PM1/2/17
to Google App Engine

Hello Matthew,


The Eclipse/Ant toolchain is not mutually exclusive by reference to Gradle / not Ant. There is a Gradle plugin for Eclipse, covering Java, so you may as well continue working in Eclipse, if you are familiar with that IDE.


“Those files” are found through properly-formulated references in the *.gwt.xml module. In general, all packages you want imported and compiled need to be identified / configured in the  *.gwt.xml module. Your references should look similar to entry: <source path="packagename"> or <inherits name='com.google.gwt.user.User' />. As a result, GWT is going to see and take care of  packages in:  gwt_xml_modulepath.package_name. The referencing mechanism is described in detail in the “XML Element Reference” subchapter of the GWT “Organizing Projects” page.


It is important to check and make sure you don’t include server-specific code in the client code.


There are auto-generated Google Cloud Endpoint classes included into your project; this explains how GWT finds those source files. You can find quite a few tutorials on the Internet, to further facilitate understanding of the matter.

Matthew Rubenstein

unread,
Jan 3, 2017, 2:32:30 PM1/3/17
to Google App Engine
I am working with Android Studio and Gradle. I am not working with Eclipse, though I did for years but I left it behind when Google switched Android development to Android Studio. I am not going to maintain two build systems, Gradle and a subsystem in Ant.

I would like to understand this specific problem in using the code emitted by generate_library before generally undertaking the entire GWT tutorials.

generate_library did generate code references to the interfaces AuthScope and EmptyResponse , but did not generate the interface code or an autodownload of their code nor any reference to it in the EndpointsApi.gwt.xml file it generated. Those interface implementations cannot even be found elsewhere in OSS projects on the Internet except in one or two obscure, clearly deprecated Google GWT API reference projects. Where in the GWT tutorials should I be looking for an explanation of that toolchain/workflow?

Matthew Rubenstein

unread,
Jan 4, 2017, 5:25:42 PM1/4/17
to Google App Engine
The tutorial you linked to is for Gradle + Android Studio + Endpoints, but not for GWT + Endpoints. I have Gradle + Android Studio + Endpoints working in modules for Android and (Linux desktop). Can you point me at a tutorial or other documentation for GWT + Endpoints? Googling for one has found nothing.

In fact I am starting to believe that GWT's support of source Java classes does not support the classes necessary to build an Endpoints client.


On Monday, January 2, 2017 at 2:25:49 PM UTC-5, George (Cloud Platform Support) wrote:

George (Cloud Platform Support)

unread,
Jan 5, 2017, 10:18:32 AM1/5/17
to Google App Engine

The following instructions demonstrate how to use the Endpoints command-line tool to generate a Gradle client bundle from a Maven project. The generally accepted approach is described in the APIs client generator document.


There is support though, for generating the classes necessary to build an Endpoints client; you may profit from reading the  Best way to generate a GWT client for an API in GAE cloud endpoints group discussion.


There is a GWT Gradle Plugin, and Google offers an Eclipse plugin that provides support for the development with the Google App Engine as well as GWT development.

matthew.r...@blue-green-group.com

unread,
Jan 5, 2017, 12:49:33 PM1/5/17
to 'George (Cloud Platform Support)' via Google App Engine
Thanks for the specific pointers. The most promising resource
is the Endpoints Tool but it isn't installed though the instructions
indicate it should be:

I have the google-cloud-sdk and google-cloud-sdk-app-engine-
java packages installed (on my Ubunutu workstation) and up to date, but
the endpoints-framework-tools command is not found, (locate endpoints-
framework-tools) returns nothing.

Cloud Endpoints Frameworks for App Engine Command Line Tool
https://cloud.google.com/endpoints/docs/frameworks/java/endpoints_tool
"The frameworks command line tool is provided in the SDK: endpoints-
framework-tools-2.0.0-beta.7/bin/endpoints-framework-tools."

I found in the Maven repository com.google.endpoints » endpoints-
framework-tools a endpoints-framework-tools-2.0.0-beta.12.jar
https://mvnrepository.com/artifact/com.google.endpoints/endpoints-frame
work-tools

but it's not an executable JAR (Manifest.MF doesn't contain a Main-
Class).


-

The apis-client-generator generates some .java source files but
is missing dependencies, as we've discussed in this thread.

I already have the gwt-gradle-plugin in my project
build.gradle, which is how I'm building the GWT project before adding
Endpoints:
-------------------------
    dependencies {
        classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
        classpath 'com.android.tools.build:gradle:2.2.3'
-------------------------


On Thu, 2017-01-05 at 07:18 -0800, 'George (Cloud Platform Support)'
> -- 
> You received this message because you are subscribed to a topic in
> the Google Groups "Google App Engine" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/top
> ic/google-appengine/swjJgsDhX9o/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to g
> oogle-appengi...@googlegroups.com.
> To post to this group, send email to google-a...@googlegroups.co
> m.
> Visit this group at https://groups.google.com/group/google-appengine.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/google-appengine/02210f18-17ac-4968-992f-
> 3858d74df445%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

George (Cloud Platform Support)

unread,
Jan 5, 2017, 3:24:42 PM1/5/17
to Google App Engine

In the Endpoints Command Tool documentation, there is a recommendation that you use the latest version of this feature, which is renamed to Cloud Endpoints Frameworks for App Engine. This is the updated source of information.


There are Required Files and Configuration. Your project must contain, at a minimum, the set of files described on that page. Bare minimum contents for the appengine-web.xml file and web.xml file are described on that page as well.

Matthew Rubenstein

unread,
Jan 5, 2017, 3:59:52 PM1/5/17
to Google App Engine
OK, those are more current clues to how to complete this process. The Cloud Endpoints Frameworks for App Engine page does have different instructions starting with "Generate the OpenApi-spec configuration file and deploy it as described in the Quickstart." as the Quickstart instructions are different from the instructions I used to deploy the Endpoints API backend to App Engine (which works OK with my Android Endpoints client). Also the Quickstart uses Maven, not Gradle. And there's a beta.12 version of the endpoints-framework-tools the Generating a Client Library for Android page says to use, later than beta.7:

I will start over using that workflow starting point. I hope this newly revealed way works. These outdated doc pages and processes are a bewildering maze.

In the meantime, on the hunch that 
---------------------------------------------
Cloud Endpoints Frameworks for App Engine Command Line Tool 
"The frameworks command line tool is provided in the SDK: endpoints- 
framework-tools-2.0.0-beta.7/bin/endpoints-framework-tools." 
---------------------------------------------

meant by "the SDK" not the google-cloud-sdk[-app-engine-java] SDK, but rather the App Engine SDK for Java

 I downloaded that and found in it appengine-java-sdk-1.9.48/bin/endpoints.sh which is a wrapper on several tools in that SDK, including what appears to be the actual tool referred to in
Cloud Endpoints Frameworks for App Engine Command Line Tool

as endpoints-framework-tools , as endpoints.sh takes the <command> <options> [class-name] arguments
----------------------------------------------------------------
$ endpoints.sh 
Command line tool for Google Cloud Endpoints.

usage: <endpoints-tool> <command> <options> [args]

<command> must be one of:

get-discovery-doc
get-client-lib
help
----------------------------------------------------------------

Also its <options> includes
----------------------------------------------------------------
$ endpoints.sh help get-client-lib
get-client-lib

Generates a client library

Usage: <Endpoints tool> get-client-lib <options> <service class>...

Options:
  -l LANGUAGE, --language=LANGUAGE
    Sets the target output programming language. Default: java.
----------------------------------------------------------------

which is consistent with the generate_library docs that indicate "-l [java|gwt|...]" is used to select the target language of the generated code.

But it still doesn't work, and gives a pretty cryptic error:
----------------------------------------------------------------
$ endpoints.sh \
  get-client-lib \
  -l gwt \
  -bs gradle \
  -w /home/myhome/AndroidStudioProjects/gdx-endpoints/backend/src/main/webapp \
  -o ./wrk com.blue_green_group.gdxendpoints.backend.endpointsApi.EndpointsApi
Error: com.blue_green_group.gdxendpoints.backend.endpointsApi.EndpointsApi
----------------------------------------------------------------

I get that same error even if I include a classpath flag as documented in endpoints.sh commandline help:
----------------------------------------------------------------
$ endpoints.sh help get-client-lib
get-client-lib

Generates a client library

Usage: <Endpoints tool> get-client-lib <options> <service class>...

Options:
  -cp CLASSPATH, --classpath=CLASSPATH
    Lets you specify the service class or classes from a path other than the
    default <war-directory>/WEB-INF/libs and <war-directory>/WEB-INF/classes,
    where <war-directory is the directory specified in the war option, or simply
    ./war if that option is not supplied.
----------------------------------------------------------------

The EndpointsApi class is generated by an @Api() annotation processor, so:
----------------------------------------------------------------
$ endpoints.sh \
  get-client-lib \
  -l gwt  \
  -bs gradle \
  -w /home/myhome/AndroidStudioProjects/gdx-endpoints/backend/src/main/webapp \
  -o ./wrk \
  -cp /home/myhome/AndroidStudioProjects/gdx-endpoints/backend/build/classes/endpointsSrc/com/blue_green_group/gdxendpoints/backend/endpointsApi \
  com.blue_green_group.gdxendpoints.backend.endpointsApi.EndpointsApi
Error: com.blue_green_group.gdxendpoints.backend.endpointsApi.EndpointsApi
----------------------------------------------------------------

George (Cloud Platform Support)

unread,
Jan 6, 2017, 12:00:29 PM1/6/17
to Google App Engine
You may consider starting with a simple GWT tutorial, then add features gradually. 
Message has been deleted

Matthew Rubenstein

unread,
Jan 6, 2017, 11:43:20 PM1/6/17
to Google App Engine
That project is unusable. Its deployment doc links to a replacement project's non-GWT page. Is there a simple GWT/Endpoints tutorial that is complete and works with the current infrastructure? Preferably with Android Studio, though I'm learning to adapt Ant build files to Gradle (after years of not using Ant).


* Details:
I cloned its googlearchive/appengine-gwtguestbook-namespaces-java project from its current location

and imported it into Android Studio. I downloaded gwt-2.8.0 . I added a build.gradle consisting of 
ant.importBuild 'build.xml'

and added to build.properties the correct values for gwt.home and appengine.home . Then from the commandline I executed gradle build . I had to add to the gwtc target JVM arg -Xss16M because the build ran out of memory, but it built OK. It built a lot of classes, libraries, a war directory. gradle runserver started a server on localhost and it seemed to execute a guestbook messaging system OK.

But how to deploy it to App Engine? The README.md file says:
You can then upload your application following the instructions described in the Google App Engine Java Runtime SDK documentation: 
 http://code.google.com/appengine/docs/java/gettingstarted/uploading.html

But that code.google.com URL redirects to
"App Engine > Documentation > Java
Deploying the Application
In this final part of the Guestbook tutorial, you learn how to deploy your application, including generating the Google Cloud Datastore indexes required for deployment. This page is part of a multi-page tutorial. To start from the beginning and see instructions for setting up, go to Creating a Guestbook."

That doc is not consistent with the original project. It doesn't refer to GWT at all. It says that running the app on the dev server (ie. gradle runserver ) would generate indexes in datastore-indexes-auto.xml but that file contained a comment indicating my gradle runserver invocation wrote indices, but the XML contained only "<datastore-indexes/>".

Maybe the indexes aren't necessary. But how to deploy it? Android Studio's menu Build > Deploy Module to App Engine... gives only 'This project does not contain any App Engine modules. To add an App Engine module for your project,
open “File > New Module…” menu and choose one of App Engine modules.' Menu File > New > New Module... shows a Google Cloud Module option, but it wants a "Client module" value, and the dropdown is empty. The "App Engine Java Endpoints Module" page linked from the new module dialog is the Github GoogleCloudPlatform/gradle-appengine-templates/HelloEndpoints page for adding an Endpoints backend to an Android app. Again, nothing about GWT.

FWIW inspecting the actual Java source showed most classes were unresolved, such as EntryPoint and the "core" part of "import com.google.gwt.core.client.EntryPoint;" etc. I suppose the build converts the Java to Javascript against the GWT libraries without having the necessary dependencies for the Java to build targeting the JVM.


On Friday, January 6, 2017 at 3:09:00 PM UTC-5, Matthew Rubenstein wrote:
        That GWT tutorial is inactive, superseded by a project that is
for Java but not GWT. It seems like all the Google projects
demonstrating GWT integration with App Engine (or Endpoints to
anywhere) are being replaced by projects for Java not GWT.

Inactive:

https://github.com/googlearchive/appengine-gwtguestbook-namespaces-java
------------------------------
status: inactive
This project is no longer actively developed or maintained.

For new work on this check out relevant link

Google App Engine Java Runtime SDK - GWT Guestbook Demo
------------------------------

Links to GoogleCloudPlatform/java-docs-samples
https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/appengine/multitenancy/
------------------------------
Multitenancy Java sample

Shows the usage of the Namespaces API.

An App Engine guestbook using Java, Maven, and Objectify.
------------------------------


On Fri, 2017-01-06 at 09:00 -0800, 'George (Cloud Platform Support)'
via Google App Engine wrote:

Matthew Rubenstein

unread,
Jan 6, 2017, 11:47:13 PM1/6/17
to Google App Engine
        That GWT tutorial is inactive, superseded by a project that is 
for Java but not GWT. It seems like all the Google projects 
demonstrating GWT integration with App Engine (or Endpoints to 
anywhere) are being replaced by projects for Java not GWT. 

Inactive: 

https://github.com/googlearchive/appengine-gwtguestbook-namespaces-java 
------------------------------ 
status: inactive 
This project is no longer actively developed or maintained. 

For new work on this check out relevant link 

Google App Engine Java Runtime SDK - GWT Guestbook Demo 
------------------------------ 

Links to GoogleCloudPlatform/java-docs-samples 
https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/appengine/multitenancy/ 
------------------------------ 
Multitenancy Java sample 

Shows the usage of the Namespaces API. 

An App Engine guestbook using Java, Maven, and Objectify. 
------------------------------ 


On Fri, 2017-01-06 at 09:00 -0800, 'George (Cloud Platform Support)' 
via Google App Engine wrote: 

Matthew Rubenstein

unread,
Jan 9, 2017, 11:23:49 PM1/9/17
to Google App Engine
In my latest attempt to follow your guidance I followed the "Build a GWT app" tutorial. Rather than spend many hours proceeding with yet another GWT project that fails after hours of work despite following the instructions exactly, I found that the tutorial offers starting with the completed code that is then configured for deployment to App Engine:
"Deploy to GAE / Set up a project (without Eclipse)":

"Alternatively, If you would like to skip the Build a Sample GWT Application tutorial, then download and unzip this file."

Like all of the GWT instructional projects documentation so far, this one's link is broken as its project has been archived. But the file is still available from:

But after editing its various config files according to the tutorial instructions, and fixing some defects not mentioned in the instructions (like increasing the javac heap size to 512M, and adding <threadsafe>true</threadsafe> to appengine-web.xml , and removing old lib/ JARs that have substitute JARs downloaded by Ant, etc) the project launches in a browser in ant devmode but the browser app fails to include any actual UI widgets.

Look, I appreciate the pointers to GWT resources. But I've spent hours and weeks using them only to find they're all obsolete and broken. Is there any GWT / Endpoints example project that is actually known to work recently? Or is GWT with Endpoints just not used anymore, so any resources are all ruined by bitrot and there's no point trying to use them anymore.

Jeff Schnitzer

unread,
Jan 10, 2017, 1:48:25 AM1/10/17
to Google App Engine
Hi. I don’t have an easy answer for you, but I’ve been watching this thread and can give you some advice. GWT and Cloud Endpoints have changed over the years and there are probably no tutorials currently relevant. That shouldn’t really matter. Cloud Endpoints will generate some javascript for you, so you just need to figure out how to get GWT to interact with the javascript just like any other javascript library. This is really just a straight-up GWT question.

Are you using JsInterop? I used GWT heavily back in the days of JSNI and JSOs, which really sucked for JS interoperability. JsInterop looks pretty awesome… it looks like some people have even gotten it working with Angular. So get it working with a simple JS library, and from there it should be possible to get it working with the Endpoints-generated javascript.

I’m actually pretty surprised by how much progress GWT has been making. I’m almost (but not quite) tempted to go back to it. Maybe in another year or two if/when 3.0 is out…

Jeff

--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengine+unsubscribe@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.

Matthew Rubenstein

unread,
Jan 10, 2017, 8:49:01 AM1/10/17
to Google App Engine, je...@infohazard.org
Thanks for chiming in. I was hoping someone else in the list might do so, one reason I documented so much of what I tried and failed. I've been disappointed by how unusable the "Google Platform Support" responses have been to achieve my specific goal: adding a GAE Endpoints client to a GWT module in an Android Studio project.

I'm not presently using JsInterop. I'm not actually writing Javascript apps; that's one reason I'm interested in GWT: writing Java that's converted into JS. I see in the main GWT site a tutorial that explains building with JsInterop, but all their other tutorials have been defective so far so I'm wary of sinking even more hours into yet another dead end. But research into the previous JSNI approach did seem like another even more inefficient development exercise.

What I'm trying to achieve is to add an Endpoints client to a LibGDX project. The LibGDX project setup application generates as an Android Studio Gradle project, like this game demo:

including Android, desktop, GWT ("html" module) and even Ios modules (the platform-nonspecific code is implemented in the "core" module). I've added a simple HTTP XML client to a LigGDX GWT module. But it's not really an Endpoints client; it doesn't share the API from the rest of the project as an API, just as a component of a URL string. Do you think there's a direct way to add an Endpoints client to that GWT module that can share the API? If the only way is to tack on yet another programming environment, JsInterop, in a Javascript phase after GWT just to add the Endpoints client to what is otherwise a Java project, then that's my fate. Thanks for your insights.


On Tuesday, January 10, 2017 at 1:48:25 AM UTC-5, Jeff Schnitzer wrote:
Hi. I don’t have an easy answer for you, but I’ve been watching this thread and can give you some advice. GWT and Cloud Endpoints have changed over the years and there are probably no tutorials currently relevant. That shouldn’t really matter. Cloud Endpoints will generate some javascript for you, so you just need to figure out how to get GWT to interact with the javascript just like any other javascript library. This is really just a straight-up GWT question.

Are you using JsInterop? I used GWT heavily back in the days of JSNI and JSOs, which really sucked for JS interoperability. JsInterop looks pretty awesome… it looks like some people have even gotten it working with Angular. So get it working with a simple JS library, and from there it should be possible to get it working with the Endpoints-generated javascript.

I’m actually pretty surprised by how much progress GWT has been making. I’m almost (but not quite) tempted to go back to it. Maybe in another year or two if/when 3.0 is out…

Jeff
On Mon, Jan 9, 2017 at 8:23 PM, Matthew Rubenstein <matthew.r...@blue-green-group.com> wrote:
In my latest attempt to follow your guidance I followed the "Build a GWT app" tutorial. Rather than spend many hours proceeding with yet another GWT project that fails after hours of work despite following the instructions exactly, I found that the tutorial offers starting with the completed code that is then configured for deployment to App Engine:
"Deploy to GAE / Set up a project (without Eclipse)":

"Alternatively, If you would like to skip the Build a Sample GWT Application tutorial, then download and unzip this file."

Like all of the GWT instructional projects documentation so far, this one's link is broken as its project has been archived. But the file is still available from:

But after editing its various config files according to the tutorial instructions, and fixing some defects not mentioned in the instructions (like increasing the javac heap size to 512M, and adding <threadsafe>true</threadsafe> to appengine-web.xml , and removing old lib/ JARs that have substitute JARs downloaded by Ant, etc) the project launches in a browser in ant devmode but the browser app fails to include any actual UI widgets.

Look, I appreciate the pointers to GWT resources. But I've spent hours and weeks using them only to find they're all obsolete and broken. Is there any GWT / Endpoints example project that is actually known to work recently? Or is GWT with Endpoints just not used anymore, so any resources are all ruined by bitrot and there's no point trying to use them anymore.

On Friday, January 6, 2017 at 12:00:29 PM UTC-5, George (Cloud Platform Support) wrote:
You may consider starting with a simple GWT tutorial, then add features gradually. 

--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengi...@googlegroups.com.
To post to this group, send email to google-a...@googlegroups.com.

Paul Mazzuca

unread,
Jan 10, 2017, 2:17:06 PM1/10/17
to Google App Engine, je...@infohazard.org
Hi all,

I actually have successfully been using GAE Endpoints with GWT 2.8.0 for some time now.  My setup includes Maven and RestyGWT which has worked extremely well.  I will try and post a archetype soon, but unfortunately have been extremely busy.  If you have specific GWT questions (i.e JSInterop related), I would switch to the GWT Users group for that discussion.  I can try and answer specific questions there. 

As far as GAE endpoints goes, once you set up an endpoint, there are a variety of ways for clients to access it, including via a GWT client App.  In other words, if you can ping your endpoint via Curl or Wget, then I would shift the focus to GWT users for client side specific questions.   GWT, though powerful, has unfortunately been lacking in documentation lately.  I will try and help out the best I can on the GWT Users forum.

Matthew Rubenstein

unread,
Jan 11, 2017, 10:50:37 AM1/11/17
to Google App Engine, je...@infohazard.org
Thanks, I posted a version of this question in the GWT Users group:
Reply all
Reply to author
Forward
0 new messages