Проблема с Mule SDK - невозможно получить ключи для метаданных с помощью @MetadataKeyId

Я использую Mule SDK для разработки настраиваемого коннектора. Я работаю над получением необходимых метаданных. Я использую следующие два фрагмента: WeatherConnectrOperations.java:

public class WeatherConnectrOperations {

 public void select(@MetadataKeyId(RecordKeysResolver.class) String type) {
 }
}

RecordKeysResolver.java:

public class RecordKeysResolver implements TypeKeysResolver {

 @Override
 public String getCategoryName() {
     return "Records";
 }
 @Override
 public Set<MetadataKey> getKeys(MetadataContext context) throws MetadataResolvingException, ConnectionException {
     System.out.println("Hello");
     List<String> keyIds = Arrays.asList("Author_id", "BookList_id", "Book_id");
     HashSet<MetadataKey> keys = new HashSet<>();
     for (String id : keyIds) {
         MetadataKeyBuilder builder = MetadataKeyBuilder.newKey(id);
         builder.withDisplayName(StringUtils.removeEnd(id, "_id"));
         keys.add(builder.build());
     }
     return keys;
 }
}

Моя проблема в том, что поле типа не заполняется необходимыми ключами

Я делаю в соответствии с этим документом - https://docs.mulesoft.com/mule-sdk/1.1/metadata-keys


person Nikeshh Baskaran    schedule 09.06.2019    source источник


Ответы (1)


Это не упоминается в документации, но кажется, что ключи метаданных не будут разрешены, если нет соответствующего Input / OutputTypeResolver.

Убедитесь, что соответствующий Input / OutputTypeResolver имеет то же CategoryName, что и KeyResolver, и я также обнаружил, что имя переменной должно быть таким же в Operation method и Input / OutputTypeResolver.

Думаю, логика в том, что вам не нужен ключ метаданных, если у вас нет преобразователя метаданных. Если вам просто нужен раскрывающийся список значений, вы можете использовать поставщиков значений (https://docs.mulesoft.com/mule-sdk/1.1/value-providers)

person mp77    schedule 25.10.2019