Search

Branding area + project tagline.

CapeDwarf documentation

For information on how to build and run CapeDwarf, see the README at our GitHub repo.

For in-depth documentation of Google AppEngine APIs, please refer to  Google Developer's Guide at https://developers.google.com/appengine/docs/

Below is a short summary of the APIs available in Google AppEngine and information on how those APIs are implemented in CapeDwarf.

List of App Engine APIs:

 

AppIdentity API

The AppIdentity API allows your application to assert its identity when making requests to either Google’s or third-party external systems.

CapeDwarf’s implementation currently only supports signing requests for external non-Google systems.

More info about this API is available in the Google App Engine documentation.

 

Blobstore API

The Blobstore API allows your application to store and serve large data objects (containing either text or binary data). Compared to the Datastore API, where the size of the data is constrained, the Blobstore API imposes no such constraints on the size of the stored data objects.

The Blobstore API uses GAE’s Files API. CapeDwarf’s implementation of the Files API is implemented on top of Infinispan’s GridFileSystem, which is an API that exposes an Infinispan-backed data grid as a file system.

More info about this API is available in the Google App Engine documentation.

 

Capabilities API

In Google AppEngine, your application can detect outages and scheduled downtime for specific API capabilities through the Capabilities API. Currently, CapeDwarf contains only a stub implement of the Capabilities API. It simply returns the ENABLED status for every capability.

More info about this API is available in the Google App Engine documentation.

 

The Channel API

The Channel API allows your Google AppEngine application to push messages from the server to the web client. This is useful for applications that must update the client immediately when new information is available (such as when a user sends a chat message to another user of a web chat application).

CapeDwarf currently contains only an initial implementation of the Channel API.

More info about this API is available in the Google App Engine documentation.

 

The Datastore API

The App Engine Datastore is a schema-less persistent data storage API, allowing applications to store, retrieve and query data. The Java Datastore SDK includes implementations of the Java Data Objects (JDO) and Java Persistence API (JPA) interfaces, as well as a low-level Datastore API.

CapeDwarf’s implementation of the Datastore API is based on Infinispan. Infinispan is an extremely scalable, highly available data grid platform - 100% open source, and written in Java. Querying is implemented through Infinispan’s Query module, which adds querying capabilities to Infinispan. It uses Hibernate Search and Lucene to index objects as they are stored in the cache.

More info about this API is available in the Google App Engine documentation.

 

The Images API

Google App Engine provides the ability to manipulate image data using a dedicated Images service. The Images service can resize, rotate, flip, and crop images. It can also enhance photographs using a predefined algorithm.

CapeDwarf currently performs all the image manipulations through Java’s java.awt.image classes. All the image operations are implemented, except the “I’m feeling lucky” operation, which is currently simply a NoOp.

More info about this API is available in the Google App Engine documentation.

 

The Logging API

Everything your application logs through java.util.logging.Logger or even to System.out, is captured and stored and can be viewed through the Admin Console.

CapeDwarf currently stores all log lines as entities in the Datastore. This will be changed soon.The log lines will be stored in a persistent Infinispan cache directly instead of through the Datastore API.

More info about this API is available in the Google App Engine documentation.

 

The Mail API

App Engine applications can send email messages on behalf of the app's administrators, and on behalf of users with Google Accounts. Apps can receive email at various addresses. Apps send messages using the Mail service and receive messages in the form of HTTP requests initiated by App Engine and posted to the app.

More info about this API is available in the Google App Engine documentation.

 

The Memcache API

High performance scalable web applications often use a distributed in-memory data cache in front of or in place of robust persistent storage for some tasks. App Engine includes a memory cache service for this purpose.

CapeDwarf’s Memcache API implementation uses Infinispan as the cache.

More info about this API is available in the Google App Engine documentation.

 

Multitenancy API

Multitenancy is achieved through the use of the Namespace API, which allows you to set a namespace for the current context. The Datastore, Memcache and other APIs consider the currently set namespace when storing or retrieving data. This allows your data to be partitioned into different namespaces, with every tenant usually having their own namespace assigned to them.

More info about this API is available in the Google App Engine documentation.

 

OAuth API

OAuth is a protocol that allows a user to grant a third party limited permission to access a web application on her behalf, without sharing her credentials (username and password) with the third party. The third party can be a web application, or any other application with the capability of invoking a web browser for the user, such as a desktop application or an app running on a smart phone.

CapeDwarf’s implementation of the OAuth API is currently not available yet, but is a work in progress.

More info about this API is available in the Google App Engine documentation.

 

Prospective Search

Prospective search allows an application to register a large set of queries that are simultaneously matched against a stream of input documents. For every document presented, prospective search returns the IDs of all registered queries matching the document. Prospective search is particularly useful when building applications that process streaming data sources such as those that provide notification, monitoring, or filtering services.

CapeDwarf's implementation of the Prospective Search API is based on Infinispan and Lucene's MemoryIndex.

More info about this API is available in the Google App Engine documentation.

 

Search API

The Search API gives your application the capability to perform Google-like searches over structured data within your application. You can perform full-text searches across several different types of text (plain text, HTML, atom, and others). Searches return a ranked list of matching text, and you can customize the ranking of results.

CapeDwarf's implementation of the Search API is based on Infinispan and Hibernate-Search.

More info about this API is available in the Google App Engine documentation.

 

The Task Queue API

With the Task Queue API, applications can perform work initiated by a user request, outside of that request. If an app needs to execute some background work, it may use the Task Queue API to organize that work into small, discrete units, called tasks. The app then inserts these tasks into one or more queues based on the queue's configuration.

For push queues CapeDwarf uses JMS. For pull queues CapeDwarf uses Infinispan with a custom purge mechanism..

More info about this API is available in the Google App Engine documentation.

 

The URL Fetch API

App Engine applications can perform POST or GET HTTP requests on remote resources and communicate with other hosts over the HTTP and HTTPS protocols.

CapeDwarf’s implementation of the URL Fetch API uses the Apache HttpComponents HttpClient to perform requests.

More info about this API is available in the Google App Engine documentation.

 

The Users API

App Engine applications can authenticate users who have Google Accounts, accounts on your own Google Apps domain, or OpenID identifiers. An application can detect whether the current user has signed in, and can redirect the user to a sign-in page to sign in or create a new account. While a user is signed in to the application, the app can detect whether the current user is an administrator, making it easy to implement admin-only areas of the app.

Currently, administrators are defined through a special file called capedwarf-web.xml.

More info about this API is available in the Google App Engine documentation.

 

The XMPP API

App Engine applications can send and receive instant messages to and from users of XMPP-compatible instant message services, including Google Talk.

CapeDwarf’s implementation of the XMPP API is currently only able to send XMPP messages, but not receive them. The support for receiving XMPP messages is planned for the future.

More info about this API is available in the Google App Engine documentation.