Componente de chave-valor do Jitterbit Connector SDK
Visão geral
O componente Chave-Valor é usado para definir conjuntos de propriedades que um usuário configurando um conector pode inserir como pares de chave e valor.
Recursos do componente
No exemplo acima, do conector Zendesk, uma chave (jobStatusMaxRetries
) está associada a um valor de exibição (enumValue
). Os botões Adicionar e Remover são adicionados automaticamente pela interface do usuário do Integration Studio. Observe que, quando exibidos pela primeira vez, não haverá valores até que um usuário os adicione usando o botão Adicionar.
JSON do componente
O componente Chave-Valor tem um type
de "object"
com um array de propriedades, conforme mostrado aqui:
{
"name": "key_value_pairs_example",
"displayName": "Example Key Value Pairs",
"type": "object",
"default": "",
"multiple": true,
"properties": [
{
"name": "name",
"displayName": "Name",
"enumValues": [
{
"enumValue": "Job Status Maximum Retries",
"realValue": "jobStatusMaxRetries"
}
],
"validators": [
{
"name": "required"
}
]
},
{
"name": "value",
"displayName": "Value",
"type": "number",
"defaultValue": "300",
"validators": [
{
"name": "required"
}
]
}
]
}
Valores do componente
Para usar um valor em um conector, obtenha o valor das propriedades do conector usando código como mostrado nesses trechos.
As propriedades do conector (props
) são passadas para a fábrica do conector pelo método creatConnnection()
da ConnectionFactory
, mostrado aqui para um ExampleConnector
fictício:
@Override
public Connection createConnection(Map<String, String> props) {
return new ExampleConnectorConnection(props.get(COMPANY_URL),
props.get(API_TOKEN),
props.get(EMAIL),
getJobStatusMaxRetries(props));
}
Esse método createConnnection()
é onde você pode acessar as propriedades, recuperar valores especificados e, em seguida, passá-los para o método de conexão de um conector:
private String getJobStatusMaxRetries(Map<String, String> props) {
if (!Objects.isNull(props.get(OPTIONAL_SETTINGS_CONFIGURATION + "." + JOB_STATUS_MAX_RETRIES))) {
return props.get(OPTIONAL_SETTINGS_CONFIGURATION + "." + JOB_STATUS_MAX_RETRIES);
} else {
String config = props.get(OPTIONAL_SETTINGS_CONFIGURATION);
if (StringUtils.isEmpty(config) || config.equals("[]")) {
return null;
}
config = config.substring(1, config.length() - 1);
ObjectMapper mapper = createMapper();
try {
NameValue nv = mapper.readValue(config, NameValue.class);
return nv.getValue();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
O código acima depende do uso de um parser JSON (como Jackson
, retornado pela chamada a createMapper()
) para converter o JSON em um objeto Java. As propriedades são organizadas e chamadas usando a notação "ponto", passando o nome do elemento da interface do usuário e o nome do campo realvalue
do enum.
No exemplo acima, as strings OPTIONAL_SETTINGS_CONFIGURATION
e JOB_STATUS_MAX_RETRIES
seriam:
String OPTIONAL_SETTINGS_CONFIGURATION = "key_value_pairs_example";
String JOB_STATUS_MAX_RETRIES = "jobStatusMaxRetries";