/** * Given a component declaration, adds all the stereotypes accepted by the config-ref parameter if it has one. */ private void addConfigRefStereoTypesIfNeeded(ComponentDeclaration<?> declaration) { Collection<ConfigurationDeclaration> configs = componentConfigs.get(declaration); if (configs != null && !configs.isEmpty()) { List<StereotypeModel> stereotypes = configs.stream().map(StereotypedDeclaration::getStereotype).collect(toList()); declaration.getAllParameters().stream() .filter(p -> CONFIG_ATTRIBUTE_NAME.equals(p.getName())) .findAny() .ifPresent(configRef -> configRef.setAllowedStereotypeModels(stereotypes)); } } }
private void declareInputResolvers(ComponentDeclaration<?> declaration, MetadataScopeAdapter metadataScope) { if (metadataScope.hasInputResolvers()) { Set<String> dynamicParameters = metadataScope.getInputResolvers().keySet(); declaration.getAllParameters().stream() .filter(p -> dynamicParameters.contains(p.getName())) .forEach(this::declareDynamicType); } }
private Optional<Pair<MetadataKeyId, MetadataType>> locateMetadataKeyId( ComponentDeclaration<? extends ComponentDeclaration> component) { Optional<Pair<MetadataKeyId, MetadataType>> keyId = component.getAllParameters().stream() .map((declaration) -> new ImmutablePair<>(declaration, getAnnotatedElement(declaration))) .filter(p -> p.getRight().isPresent() && p.getRight().get().isAnnotationPresent(MetadataKeyId.class)) .map(p -> (Pair<MetadataKeyId, MetadataType>) new ImmutablePair<>(p.getRight().get().getAnnotation(MetadataKeyId.class), p.getLeft().getType())) .findFirst(); if (!keyId.isPresent()) { for (ParameterGroupDeclaration group : component.getParameterGroups()) { keyId = group.getModelProperty(ParameterGroupModelProperty.class) .map(ParameterGroupModelProperty::getDescriptor) .filter(g -> g.getAnnotatedContainer().isAnnotatedWith(MetadataKeyId.class)) .map(g -> new ImmutablePair<>(g.getContainer().getAnnotation(MetadataKeyId.class), g.getType().asMetadataType())); if (keyId.isPresent()) { break; } } } return keyId; }
private void declareInputResolvers(ComponentDeclaration<?> declaration, MetadataScopeAdapter metadataScope) { if (metadataScope.hasInputResolvers()) { Set<String> dynamicParameters = metadataScope.getInputResolvers().keySet(); declaration.getAllParameters().stream() .filter(p -> dynamicParameters.contains(p.getName())) .forEach(this::declareDynamicType); } }
private Optional<Pair<MetadataKeyId, MetadataType>> locateMetadataKeyId( ComponentDeclaration<? extends ComponentDeclaration> component) { Optional<Pair<MetadataKeyId, MetadataType>> keyId = component.getAllParameters().stream() .map((declaration) -> new ImmutablePair<>(declaration, getAnnotatedElement(declaration))) .filter(p -> p.getRight().isPresent() && p.getRight().get().isAnnotationPresent(MetadataKeyId.class)) .map(p -> (Pair<MetadataKeyId, MetadataType>) new ImmutablePair<>(p.getRight().get().getAnnotation(MetadataKeyId.class), p.getLeft().getType())) .findFirst(); if (!keyId.isPresent()) { for (ParameterGroupDeclaration group : component.getParameterGroups()) { keyId = group.getModelProperty(ParameterGroupModelProperty.class) .map(ParameterGroupModelProperty::getDescriptor) .filter(g -> g.getAnnotatedContainer().isAnnotatedWith(MetadataKeyId.class)) .map(g -> new ImmutablePair<>(g.getContainer().getAnnotation(MetadataKeyId.class), g.getType().asMetadataType())); if (keyId.isPresent()) { break; } } } return keyId; }