use of org.mule.runtime.api.metadata.MetadataKeysContainerBuilder in project mule by mulesoft.
the class MetadataKeysDelegate method getMetadataKeys.
MetadataResult<MetadataKeysContainer> getMetadataKeys(MetadataContext context, Object partialKey, ReflectionCache reflectionCache) {
final TypeKeysResolver keyResolver = resolverFactory.getKeyResolver();
final String componentResolverName = keyResolver.getCategoryName();
final MetadataKeysContainerBuilder keysContainer = MetadataKeysContainerBuilder.getInstance();
if (keyParts.isEmpty()) {
return success(keysContainer.add(componentResolverName, ImmutableSet.of(new NullMetadataKey())).build());
}
try {
final Map<Integer, ParameterModel> partsByOrder = getPartOrderMapping(keyParts);
Set<MetadataKey> metadataKeys;
if (keyResolver instanceof PartialTypeKeysResolver && hasInitialLevel(partialKey, partsByOrder, reflectionCache)) {
metadataKeys = singleton(((PartialTypeKeysResolver) keyResolver).resolveChilds(context, partialKey));
} else {
metadataKeys = keyResolver.getKeys(context);
}
final Set<MetadataKey> enrichedMetadataKeys = metadataKeys.stream().map(metadataKey -> cloneAndEnrichMetadataKey(metadataKey, partsByOrder)).map(MetadataKeyBuilder::build).collect(toSet());
keysContainer.add(componentResolverName, enrichedMetadataKeys);
return success(keysContainer.build());
} catch (Exception e) {
return failure(newFailure(e).onKeys());
}
}
use of org.mule.runtime.api.metadata.MetadataKeysContainerBuilder in project mule by mulesoft.
the class ConfigurationProviderToolingAdapter method getMetadataKeys.
/**
* {@inheritDoc}
*/
@Override
public MetadataResult<MetadataKeysContainer> getMetadataKeys() throws MetadataResolvingException {
MetadataKeysContainerBuilder keysBuilder = MetadataKeysContainerBuilder.getInstance();
try {
MetadataContext metadataContext = getMetadataContext();
addComponentKeys(getConfigurationModel().getOperationModels(), metadataContext, keysBuilder);
addComponentKeys(getConfigurationModel().getSourceModels(), metadataContext, keysBuilder);
metadataContext.dispose();
} catch (Exception e) {
return failure(newFailure(e).onKeys());
}
return success(keysBuilder.build());
}
use of org.mule.runtime.api.metadata.MetadataKeysContainerBuilder in project mule by mulesoft.
the class EntityMetadataMediator method getEntityKeys.
public MetadataResult<MetadataKeysContainer> getEntityKeys(MetadataContext context) {
try {
QueryEntityResolver queryEntityResolver = resolverFactory.getQueryEntityResolver();
Set<MetadataKey> entityKeys = queryEntityResolver.getEntityKeys(context);
final MetadataKeysContainerBuilder keyBuilder = MetadataKeysContainerBuilder.getInstance();
if (entityKeys.stream().anyMatch(key -> key.getChilds().size() > 0)) {
return failure(newFailure().withMessage("Error retrieving entity keys, Only single level keys are supported for entity metadata").withReason("There are at least one key that contains childs").withFailureCode(INVALID_METADATA_KEY).onKeys());
}
return success(keyBuilder.add(queryEntityResolver.getResolverName(), entityKeys).build());
} catch (Exception e) {
return failure(newFailure(e).onKeys());
}
}
Aggregations