private Optional<ExtensionParameter> getExtensionParameter(ParameterDeclaration parameterDeclaration) { return parameterDeclaration .getModelProperty(ExtensionParameterDescriptorModelProperty.class) .map(ExtensionParameterDescriptorModelProperty::getExtensionParameter); }
/** * Resolves the original name of a parameter before it was modified due to the usage of an Alias. * * @param parameterDeclaration parameter from which look for their original name * @return the original name */ public static String getImplementingName(ParameterDeclaration parameterDeclaration) { return getImplementingName(parameterDeclaration.getName(), () -> parameterDeclaration.getModelProperty(ImplementingParameterModelProperty.class), () -> parameterDeclaration.getModelProperty(DeclaringMemberModelProperty.class)); }
private void declareParametersCustomStaticTypes(WithParametersDeclaration operation) { for (ParameterDeclaration param : operation.getAllParameters()) { param.getModelProperty(ImplementingParameterModelProperty.class) .map(ImplementingParameterModelProperty::getParameter) .ifPresent(annotated -> getInputType(annotated).ifPresent(type -> declareCustomType(param, type))); } } }.walk(extensionLoadingContext.getExtensionDeclarer().getDeclaration());
/** * Filters the parameters of the given declaration and retrieves the ones that are required for Metadata Resolution. */ private List<String> getParametersNameRequiredForMetadata(WithParametersDeclaration declaration) { return declaration.getAllParameters() .stream() .filter(p -> p.getModelProperty(ExtensionParameterDescriptorModelProperty.class) .map(mp -> mp.getExtensionParameter().isAnnotatedWith(RequiredForMetadata.class)) .orElse(false)) .map(NamedObject::getName) .collect(toList()); } }
@Override protected void onParameter(ParameterGroupDeclaration parameterGroup, ParameterDeclaration declaration) { declaration.getModelProperty(ImplementingParameterModelProperty.class) .ifPresent(param -> declaration.setAllowedStereotypeModels(getStereotypes(param.getParameter()))); declaration.getModelProperty(DeclaringMemberModelProperty.class) .ifPresent(field -> declaration.setAllowedStereotypeModels(getStereotypes(field.getDeclaringField()))); } }.walk(extension);
private void enrichParameter(ParameterDeclaration declaration) { declaration.getModelProperty(ExtensionParameterDescriptorModelProperty.class) .ifPresent(modelProperty -> enrichDeclaration(declaration, modelProperty.getExtensionParameter())); }
private void enrichMetadataKeyParameters(ParameterizedDeclaration<?> declaration, TypeKeysResolver typeKeysResolver) { declaration.getAllParameters() .forEach(paramDeclaration -> paramDeclaration.getModelProperty(ExtensionParameterDescriptorModelProperty.class) .ifPresent(modelProperty -> parseMetadataKeyAnnotations(modelProperty.getExtensionParameter(), paramDeclaration, typeKeysResolver))); }
private void enrichOAuthParameters(ConnectionProviderDeclaration declaration) { declaration.getAllParameters().forEach(p -> p.getModelProperty(DeclaringMemberModelProperty.class) .map(DeclaringMemberModelProperty::getDeclaringField) .ifPresent(field -> { OAuthParameter annotation = field.getAnnotation(OAuthParameter.class); if (annotation != null) { validateExpressionSupport(declaration, p, field); p.setExpressionSupport(NOT_SUPPORTED); p.addModelProperty(new OAuthParameterModelProperty(annotation.requestAlias())); } })); }
private void addQueryModelProperties(OperationDeclaration declaration, Query query) { ParameterDeclaration parameterDeclaration = declaration.getAllParameters() .stream() .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).isPresent()) .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).get() .getParameter().isAnnotationPresent(MetadataKeyId.class)) .findFirst() .orElseThrow(() -> new IllegalParameterModelDefinitionException( "Query operation must have a parameter annotated with @MetadataKeyId")); parameterDeclaration.addModelProperty(new QueryParameterModelProperty(query.translator())); parameterDeclaration.setLayoutModel(builderFrom(parameterDeclaration.getLayoutModel()).asQuery().build()); }
@Before public void setUp() { when(loadingContext.getExtensionDeclarer().getDeclaration()).thenReturn(declaration); when(declaration.getConnectionProviders()).thenReturn(singletonList(connectionProviderDeclaration)); when(declaration.getConfigurations()).thenReturn(singletonList(configurationDeclaration)); ExtensionParameterDescriptorModelProperty descriptorModelProperty = mock(ExtensionParameterDescriptorModelProperty.class); when(parameterDeclaration.getModelProperty(ExtensionParameterDescriptorModelProperty.class)) .thenReturn(Optional.of(descriptorModelProperty)); when(parameterDeclaration.getName()).thenReturn(REQUIRED_PARAM); when(descriptorModelProperty.getExtensionParameter()).thenReturn(extensionParameter); }
private void assertParametersSinceMuleVersionModelProperty(ParameterizedDeclaration<?> withParams, boolean shouldAddSinceMuleVersionModelProperty) { List<ParameterDeclaration> parameters = withParams.getParameterGroup(DEFAULT_GROUP_NAME).getParameters(); parameters.stream() .forEach(parameter -> { assertThat(parameter.getModelProperty(SinceMuleVersionModelProperty.class).isPresent(), is(shouldAddSinceMuleVersionModelProperty)); if (shouldAddSinceMuleVersionModelProperty) { assertThat(parameter.getModelProperty(SinceMuleVersionModelProperty.class).get().getVersion(), is(SINCE_MULE_VERSION_MODEL_PROPERTY.getVersion())); } }); }
private Optional<ExtensionParameter> getExtensionParameter(ParameterDeclaration parameterDeclaration) { return parameterDeclaration .getModelProperty(ExtensionParameterDescriptorModelProperty.class) .map(ExtensionParameterDescriptorModelProperty::getExtensionParameter); }
/** * Resolves the original name of a parameter before it was modified due to the usage of an Alias. * * @param parameterDeclaration parameter from which look for their original name * @return the original name */ public static String getImplementingName(ParameterDeclaration parameterDeclaration) { return getImplementingName(parameterDeclaration.getName(), () -> parameterDeclaration.getModelProperty(ImplementingParameterModelProperty.class), () -> parameterDeclaration.getModelProperty(DeclaringMemberModelProperty.class)); }
private void declareParametersCustomStaticTypes(WithParametersDeclaration operation) { for (ParameterDeclaration param : operation.getAllParameters()) { param.getModelProperty(ImplementingParameterModelProperty.class) .map(ImplementingParameterModelProperty::getParameter) .ifPresent(annotated -> getInputType(annotated).ifPresent(type -> declareCustomType(param, type))); } } }.walk(extensionLoadingContext.getExtensionDeclarer().getDeclaration());
@Override protected void onParameter(ParameterGroupDeclaration parameterGroup, ParameterDeclaration declaration) { declaration.getModelProperty(ImplementingParameterModelProperty.class) .ifPresent(param -> declaration.setAllowedStereotypeModels(getStereotypes(param.getParameter()))); declaration.getModelProperty(DeclaringMemberModelProperty.class) .ifPresent(field -> declaration.setAllowedStereotypeModels(getStereotypes(field.getDeclaringField()))); } }.walk(extensionLoadingContext.getExtensionDeclarer().getDeclaration());
private void enrichParameter(ParameterDeclaration declaration) { declaration.getModelProperty(ExtensionParameterDescriptorModelProperty.class) .ifPresent(modelProperty -> enrichDeclaration(declaration, modelProperty.getExtensionParameter())); }
private void enrichMetadataKeyParameters(ParameterizedDeclaration<?> declaration, TypeKeysResolver typeKeysResolver) { declaration.getAllParameters() .forEach(paramDeclaration -> paramDeclaration.getModelProperty(ExtensionParameterDescriptorModelProperty.class) .ifPresent(modelProperty -> parseMetadataKeyAnnotations(modelProperty.getExtensionParameter(), paramDeclaration, typeKeysResolver))); }
private void enrichOAuthParameters(ConnectionProviderDeclaration declaration) { declaration.getAllParameters().forEach(p -> p.getModelProperty(DeclaringMemberModelProperty.class) .map(DeclaringMemberModelProperty::getDeclaringField) .ifPresent(field -> { OAuthParameter annotation = field.getAnnotation(OAuthParameter.class); if (annotation != null) { validateExpressionSupport(declaration, p, field); p.setExpressionSupport(NOT_SUPPORTED); p.addModelProperty(new OAuthParameterModelProperty(annotation.requestAlias())); } })); }
private void addQueryModelProperties(OperationDeclaration declaration, Query query) { ParameterDeclaration parameterDeclaration = declaration.getAllParameters() .stream() .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).isPresent()) .filter(p -> p.getModelProperty(ImplementingParameterModelProperty.class).get() .getParameter().isAnnotationPresent(MetadataKeyId.class)) .findFirst() .orElseThrow(() -> new IllegalParameterModelDefinitionException( "Query operation must have a parameter annotated with @MetadataKeyId")); parameterDeclaration.addModelProperty(new QueryParameterModelProperty(query.translator())); parameterDeclaration.setLayoutModel(builderFrom(parameterDeclaration.getLayoutModel()).asQuery().build()); }