Como usar propriedades no JavaCallout

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

O que é uma frase de destaque do Java?

Se você é iniciante nas chamadas do Java, comece com Como criar uma frase de destaque Java.

Como usar propriedades em políticas JavaCallout

As propriedades permitem especificar pares de nome/valor em uma política JavaCallout que pode ser acessada a partir do seu código Java no ambiente de execução. Você precisa especificar um valor de string literal para cada propriedade. Não é possível referenciar variáveis de fluxo neste elemento.

Confira um exemplo simples de política JavaCallout que usa propriedades. Neste exemplo, criamos um proxy com uma política JavaCallout. A política usa o elemento <Properties> para especificar um par de nome/valor. No código Java, recuperamos o valor e o usamos para definir um cabeçalho de resposta.

Fazer o download do projeto

Para simplificar, faça o download deste projeto do repositório api-platform-samples da Apigee no GitHub.

  1. Faça o download ou clone api-platform-samples no seu sistema.
  2. Em um terminal ou editor de código de sua escolha, acesse o projeto api-platform-samples/doc-samples/java-properties.

A política JavaCallout

A política usa o elemento <Properties>. Esse elemento permite especificar pares de nome/valor. No ambiente de execução, seu código Java pode acessar os valores das propriedades especificadas na política, como veremos em breve.

<JavaCallout name="java-callout">
    <ClassName>com.apigeesample.JavaProperties</ClassName>
    <ResourceURL>java://edge-custom-policy-java-properties.jar</ResourceURL>
    <Properties>
        <Property name="prop">WORLD!</Property>
    </Properties>
</JavaCallout>

A amostra de código Java

O código Java dessa amostra mostra como recuperar uma propriedade que foi especificada na política JavaCallout. No projeto de amostra, você encontra o código-fonte em java-properties/callout/src/main/java/JavaProperties.java. Mostraremos as etapas para compilar e implantar esse código posteriormente neste tópico.

package com.apigeesample;

import com.apigee.flow.execution.ExecutionContext;
import com.apigee.flow.execution.ExecutionResult;
import com.apigee.flow.execution.spi.Execution;
import com.apigee.flow.message.MessageContext;

import java.util.Map;

public class JavaProperties implements Execution {

	private Map <String,String> properties; // read-only

	public JavaProperties(Map <String,String> properties) {
	        this.properties = properties;
	}

	public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {

		try {

		    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));

            return ExecutionResult.SUCCESS;

		} catch (Exception e) {
			return ExecutionResult.ABORT;
		}
	}
}

Compilar o código com o Maven

O projeto é configurado para que você possa compilar com o Maven. Se você quiser usar javac, incluiremos um exemplo também.

  1. Verifique se você tem o Maven instalado:
    mvn -version
  2. Execute o script a java-properties/buildsetup.sh. Esse script instala as dependências JAR necessárias no seu repositório Maven local.
  3. cd para o diretório java-properties/callout.
  4. Execute o Maven:
    mvn clean package
  5. Se você quiser, verifique se o arquivo JAR edge-custom-policy-java-properties.jar foi copiado para java-properties/apiproxy/resources/java. Esse é o local necessário para os arquivos JAR que você quer implantar com um proxy.

Compilar com javac (opcional)

Se você quiser usar javac para compilar o código, faça algo semelhante ao seguinte (do diretório java-properties). Os arquivos JAR necessários são fornecidos a você no diretório java-properties/lib.

  1. cd para api-platform-samples/doc-samples/java-properties.
  2. Verifique se você tem javac no seu caminho.

    javac -version
  3. Execute o seguinte comando javac:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/JavaProperties.java
  4. Crie um arquivo JAR:

    jar -cvf edge-custom-policy-java-properties.jar ./com/apigeesample/JavaProperties.class
  5. Copie o arquivo JAR para o diretório apiproxy/resources/java. Esse é o local necessário para os arquivos JAR que você quer implantar com um proxy.
    cp edge-custom-policy-java-properties.jar apiproxy/resources/java

Implantar e chamar o proxy

Um script de implantação é fornecido no diretório ./java-properties. Mas, antes de executá-lo, você precisa fazer uma configuração rápida.

  1. cd para api-platform-samples/doc-samples/java-properties
  2. A maneira mais simples de implantar o proxy é agrupá-lo em um arquivo ZIP e fazer upload do pacote de proxy em um ambiente na sua organização da Apigee. Consulte Como criar um proxy de API. Use a opção Fazer upload de pacote de proxy. Veja também Dicas e truques para fazer upload de proxy de API em um pacote proxy na comunidade Apigee.
  3. Quando o proxy estiver implantado, tente chamá-lo:
    curl  https://$HOSTNAME/java-properties

    O proxy retorna o cabeçalho: X-PROPERTY-HELLO: WORLD!. Não se esqueça de que adicionamos na política um par de nome/valor de propriedade "prop/WORLD!". A política JavaCallout recupera o valor "WORLD!" e o define em um cabeçalho chamado X-PROPERTY-HELLO:

    messageContext.getMessage().setHeader("X-PROPERTY-HELLO", this.properties.get("prop"));