Resolução de problemas de erro de implementação da política de operações de mapas de chaves-valores

Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do Apigee Edge.

InvalidIndex

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

Error Saving Revision revision_number
Invalid index index in KeyValueMapStepDefinition policy_name.

Exemplo de mensagem de erro

Error Saving Revision 2
Invalid index 0 in KeyValueMapStepDefinition GetKVM.

Captura de ecrã de erro de exemplo

Ocorreu um erro ao guardar a revisão 2.

Causa

Se o atributo index especificado no elemento <Get> de uma política de operações de mapa de chave-valor for zero ou um número negativo, a implementação do proxy de API falha. O índice começa em 1, pelo que um índice de zero ou um número inteiro negativo é considerado inválido.

Por exemplo, se o index especificado for 0 no elemento <Get> de uma política de operações de mapa de valores-chave, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política de operações do mapa de valores-chave onde ocorreu o erro e o índice inválido. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, o nome da política é GetKVM e o índice inválido é 0:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.

  2. Verifique se o valor do índice especificado no elemento <Get> da política de operações de mapa de valores-chave com falhas corresponde ao valor identificado na mensagem de erro (passo n.º 1 acima). Por exemplo, a seguinte política especifica o valor do índice como 0, que corresponde ao que está na mensagem de erro:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
        <DisplayName>GetKVM</DisplayName>
        <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
        <Scope>environment</Scope>
        <Get assignTo="foo_variable" index="0">
            <Key>
                <Parameter>FooKey_1</Parameter>
            </Key>
        </Get>
    </KeyValueMapOperations>
    
  3. Se o índice especificado for zero ou um número inteiro negativo, essa é a causa do erro.

    No exemplo da política de operações de mapeamento de chaves-valores apresentado acima, o valor do índice é 0, que é inválido. Por conseguinte, a implementação do proxy de API falha com o erro:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.
    

Resolução

Certifique-se de que o atributo de índice especificado no elemento <Get> da política de operações de mapeamento de chaves-valores é válido (inteiro não nulo ou negativo).

Para corrigir a política de operações de mapa de valor-chave de exemplo apresentada acima, pode modificar o índice para 1.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
    <DisplayName>GetKVM</DisplayName>
    <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
    <Scope>environment</Scope>
    <Get assignTo="foo_variable" index="1">
        <Key>
            <Parameter>FooKey_1</Parameter>
        </Key>
    </Get>
</KeyValueMapOperations>

KeyIsMissing

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml
Reason: - Non null value expected for element Parameter in Entry.

Exemplo de mensagem de erro

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry

Captura de ecrã de erro de exemplo

Ocorreu um erro ao guardar a revisão 3.

Causa

Este erro ocorre se o elemento <Key> estiver completamente em falta ou se o elemento <Parameter> estiver em falta no elemento <Key> abaixo do elemento <Entry> da política de operações de mapa de valores-chave.<InitialEntries>

Diagnóstico

  1. Identifique a política de operações de mapa de chaves-valores onde ocorreu o erro. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, o nome da política de operações de mapeamento de valores-chave é GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry
    
  2. Na política de operações de mapa de valores-chave com falhas, verifique se existe algum elemento <Entry> com um elemento <Key> ou <Parameter> em falta abaixo de <InitialEntries>.

    Segue-se um exemplo de uma política de operações de mapa de valor-chave que tem um elemento <Parameter> em falta no elemento <Key>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
        <DisplayName>GetKVM</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key/>
                <Value>v1</Value>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
    

    Neste caso, o primeiro elemento está a causar o problema.

Resolução

Certifique-se de que todos os elementos <Entry> abaixo do elemento <InitialEntries> na Política de Operações de Mapas de Valores-Chave têm um elemento <Key> seguido de um elemento <Parameter>.

Para corrigir a política de operações de mapeamento de chaves-valores do exemplo apresentado acima, a adição de um elemento <Parameter> resolve o problema:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
    <DisplayName>GetKVM</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...

ValueIsMissing

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml. Reason: - Non null value expected for element Value in Entry.

Exemplo de mensagem de erro

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml.Reason: - Non null value expected for element Value in Entry

Captura de ecrã de erro de exemplo

Ocorreu um erro ao guardar a revisão 3.

Causa

Este erro ocorre se o elemento <Value> estiver em falta abaixo do elemento <Entry> do elemento <InitialEntries> da política de operações de mapa de valores-chave.

Diagnóstico

  1. Identifique a política de operações de mapa de chaves-valores onde ocorreu o erro. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, o nome da política de operações de mapeamento de valores-chave é GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Value in Entry
    
  2. Na política de operações de mapa de chaves-valores com falhas, verifique se existe algum elemento <Entry> com um elemento <Value> em falta abaixo do elemento <InitialEntries>.

    Segue-se um exemplo de uma política de operações de mapa de valor-chave que tem o elemento <Value> em falta:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
        <DisplayName>GetKVM3</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key>
                    <Parameter>k1</Parameter>
                </Key>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
        ...
    
    

Resolução

Certifique-se de que todos os elementos <Entry> abaixo do elemento <InitialEntries> na Política de Operações de Mapas de Valores-Chave têm um elemento <Value>.

Para corrigir a política de operações de mapeamento de chaves-valores do exemplo apresentado acima, a adição de um elemento <Value> resolve o problema:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
    <DisplayName>GetKVM3</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...