Visão geral da API Capabilities para Java 8

Com a API Capabilities, é possível detectar interrupções e inatividade programada de determinados recursos da API. Como essa API detecta quando uma capacidade está indisponível e a ignora, você pode usá-la para reduzir a inatividade no aplicativo.

Por exemplo, se você usar a API Images para redimensionar imagens, poderá usar a API Capabilities para detectar quando a API Images está indisponível e ignorar o redimensionamento:

import com.google.appengine.api.capabilities.*;

CapabilitiesService service =
    CapabilitiesServiceFactory.getCapabilitiesService();
CapabilityStatus status = service.getStatus(Capability.IMAGES).getStatus();

if (status == CapabilityStatus.DISABLED) {
    // Images API is not available.
}

Você pode consultar separadamente a disponibilidade de leituras e gravações do Datastore. O exemplo a seguir mostra como detectar a disponibilidade das gravações do Datastore e, durante a inatividade, fornecer uma mensagem aos usuários:

CapabilityStatus status =
    service.getStatus(Capability.DATASTORE_WRITE).getStatus();

if (status == CapabilityStatus.DISABLED) {
    // Datastore is in read-only mode.
}

Como usar a API Capabilities no Java 8

Cada capacidade é representada por uma constante estática na classe "Capability", como Capability.DATASTORE_WRITE. Cada capacidade tem um estado que pode ser recuperado de CapabilitiesService.getStatus(Capability). Por sua vez, cada estado tem um status, que é uma enumeração que indica a disponibilidade de uma capacidade: ENABLED ou DISABLED. Veja abaixo a lista de serviços ativados nessa API no momento.

Capacidades compatíveis

No momento, a API oferece suporte aos seguintes recursos:

Capacidade Argumentos para getStatus
Disponibilidade do blobstore Capability.BLOBSTORE
Leituras do Datastore Capability.DATASTORE
Gravações do Datastore Capability.DATASTORE_WRITE
Disponibilidade do serviço de imagens Capability.IMAGES
Disponibilidade do serviço de e-mail Capability.MAIL
Disponibilidade do serviço de Memcache Capability.MEMCACHE
Disponibilidade do serviço de fila de tarefas Capability.TASKQUEUE
Disponibilidade do serviço de busca de URL Capability.URL_FETCH