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()); } }
private void addComponentKeys(List<? extends ComponentModel> components, MetadataContext metadataContext, MetadataKeysContainerBuilder keysBuilder) throws MetadataResolvingException, ConnectionException { for (ComponentModel component : components) { TypeKeysResolver keysResolver = getMetadataResolverFactory(component).getKeyResolver(); String categoryName = keysResolver.getCategoryName(); if (!NULL_CATEGORY_NAME.equals(categoryName) && !keysBuilder.containsCategory(categoryName)) { keysBuilder.add(categoryName, keysResolver.getKeys(metadataContext)); } } }
/** * {@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()); }
MetadataResult<MetadataKeysContainer> toKeysMetadataResult() { MetadataKeysContainerBuilder builder = MetadataKeysContainerBuilder.getInstance(); return failures.isEmpty() ? success(builder.addAll((Map) keys).build()) : failure(builder.build(), failures); } }
public static MetadataKeysContainerBuilder getInstance() { return new MetadataKeysContainerBuilder(); }
/** * {@inheritDoc} */ @Override public MetadataResult<MetadataKeysContainer> getMetadataKeys() throws MetadataResolvingException { MetadataKeysContainerBuilder keysBuilder = MetadataKeysContainerBuilder.getInstance(); ClassLoader classLoader = getClassLoader(getExtensionModel()); return withContextClassLoader(classLoader, () -> { MetadataContext metadataContext = null; try { metadataContext = getMetadataContext(classLoader); addComponentKeys(getConfigurationModel().getOperationModels(), metadataContext, keysBuilder); addComponentKeys(getConfigurationModel().getSourceModels(), metadataContext, keysBuilder); return success(keysBuilder.build()); } catch (Exception e) { return failure(newFailure(e).onKeys()); } finally { if (metadataContext != null) { metadataContext.dispose(); } } }); }
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()); } }
private void addComponentKeys(List<? extends ComponentModel> components, MetadataContext metadataContext, MetadataKeysContainerBuilder keysBuilder) throws MetadataResolvingException, ConnectionException { for (ComponentModel component : components) { TypeKeysResolver keysResolver = getMetadataResolverFactory(component).getKeyResolver(); String categoryName = keysResolver.getCategoryName(); if (!NULL_CATEGORY_NAME.equals(categoryName) && !keysBuilder.containsCategory(categoryName)) { keysBuilder.add(categoryName, keysResolver.getKeys(metadataContext)); } } }
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()); } }
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()); } }