@Override protected void onSource(WithSourcesDeclaration owner, SourceDeclaration declaration) { Optional<MetadataType> outputType = declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class) .filter(mp -> mp.getType() instanceof SourceElement) .map(mp -> (SourceElement) mp.getType()) .map(SourceElement::getReturnMetadataType); declareMimeTypeParameters(declaration, outputType); }
private <T extends Annotation> Optional<T> getAnnotation(SourceDeclaration declaration, Class<T> annotation) { return declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class) .map(ExtensionTypeDescriptorModelProperty::getType) .filter(type -> type.isAnnotatedWith(annotation)) .flatMap(type -> type.getAnnotation(annotation)); }
@Override protected void onSource(WithSourcesDeclaration owner, SourceDeclaration source) { source.getModelProperty(ImplementingTypeModelProperty.class) .map(ImplementingTypeModelProperty::getType) .ifPresent(clazz -> { getOutputType(clazz).ifPresent(type -> declareCustomType(source.getOutput(), type)); getAttributesType(clazz).ifPresent(type -> declareCustomType(source.getOutputAttributes(), type)); }); source.getSuccessCallback().ifPresent(this::declareParametersCustomStaticTypes); source.getErrorCallback().ifPresent(this::declareParametersCustomStaticTypes); }
private void enrichSourceMetadata(SourceDeclaration declaration) { declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class) .ifPresent(prop -> { final Type sourceType = prop.getType(); MetadataScopeAdapter metadataScope = new DefaultMetadataScopeAdapter(extensionType, sourceType, declaration); enrichResolversInformation(declaration, metadataScope); }); }
@Override protected void onSource(SourceDeclaration sourceDeclaration) { BackPressureStrategyModelProperty property; Optional<ExtensionTypeDescriptorModelProperty> extensionTypeDescriptorModelProperty = sourceDeclaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); if (extensionTypeDescriptorModelProperty.isPresent()) { Type sourceType = extensionTypeDescriptorModelProperty.get().getType(); property = sourceType.getAnnotation(BackPressure.class) .map(BackPressureStrategyModelProperty::of) .orElseGet(BackPressureStrategyModelProperty::getDefault); sourceDeclaration.addModelProperty(property); if (property.getSupportedModes().size() > 1) { addBackPressureParameter(extensionDeclaration, sourceDeclaration, property); } } } }.walk(extensionDeclaration);
@Override protected void onSource(WithSourcesDeclaration owner, SourceDeclaration declaration) { final StereotypeModel defaultStereotype = createStereotype(declaration.getName(), sourceParent); ifPresent(declaration.getModelProperty(ImplementingTypeModelProperty.class) .map(ImplementingTypeModelProperty::getType) .map(declaringType -> new TypeWrapper(declaringType, typeLoader)), type -> resolveStereotype(type, declaration, defaultStereotype), () -> declaration.withStereotype(defaultStereotype)); addConfigRefStereoTypesIfNeeded(declaration); }
private void mockExtensionTypeDescriptorModelProperty(Class sourceClass) { SourceElement sourceElement = new SourceTypeWrapper(sourceClass, typeLoader); when(source.getModelProperty(ExtensionTypeDescriptorModelProperty.class)) .thenReturn(of(new ExtensionTypeDescriptorModelProperty(sourceElement))); }
private void setSourceClass(Class<? extends Source> sourceClass) { ExtensionTypeDescriptorModelProperty property = new ExtensionTypeDescriptorModelProperty(new TypeWrapper(sourceClass, typeLoader)); when(sourceDeclaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class)).thenReturn(Optional.of(property)); }
@Before public void before() { when(extensionLoadingContext.getExtensionDeclarer()).thenReturn(extensionDeclarer); when(extensionDeclarer.getDeclaration()).thenReturn(extensionDeclaration); when(extensionDeclaration.getOperations()).thenReturn(singletonList(operation)); when(extensionDeclaration.getMessageSources()).thenReturn(singletonList(source)); when(source.getSuccessCallback()).thenReturn(empty()); when(source.getErrorCallback()).thenReturn(empty()); when(source.getModelProperty(ExtensionTypeDescriptorModelProperty.class)).thenReturn(empty()); when(operation.getModelProperty(ExtensionOperationDescriptorModelProperty.class)).thenReturn(empty()); when(operation.getParameterGroup(DEFAULT_GROUP_NAME)).thenReturn(new ParameterGroupDeclaration(DEFAULT_GROUP_NAME)); when(source.getParameterGroup(DEFAULT_GROUP_NAME)).thenReturn(new ParameterGroupDeclaration(DEFAULT_GROUP_NAME)); mockMediaType(operation, false); mockMediaType(source, false); }
private void assertHeisenbergSource(SourceDeclaration source, String sourceName, Class<? extends Source> type) { assertThat(source.getName(), is(sourceName)); List<ParameterDeclaration> parameters = source.getAllParameters(); assertThat(parameters, hasSize(31)); assertParameter(parameters, SOURCE_PARAMETER, "", INT_TYPE, true, NOT_SUPPORTED, null); assertParameter(parameters, SOURCE_CALLBACK_PARAMETER, "", toMetadataType(Long.class), false, SUPPORTED, "#[payload]"); assertParameter(parameters, SOURCE_REPEATED_CALLBACK_PARAMETER, "", STRING_TYPE, false, SUPPORTED, null); assertParameter(parameters, "methylamine", "", toMetadataType(Methylamine.class), false, SUPPORTED, null); ImplementingTypeModelProperty typeModelProperty = source.getModelProperty(ImplementingTypeModelProperty.class).get(); assertThat(typeModelProperty.getType(), equalTo(type)); }
private <T extends Annotation> Optional<T> getAnnotation(SourceDeclaration declaration, Class<T> annotation) { return declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class) .map(ExtensionTypeDescriptorModelProperty::getType) .filter(type -> type.isAnnotatedWith(annotation)) .flatMap(type -> type.getAnnotation(annotation)); }
@Override protected void onSource(WithSourcesDeclaration owner, SourceDeclaration source) { source.getModelProperty(ImplementingTypeModelProperty.class) .map(ImplementingTypeModelProperty::getType) .ifPresent(clazz -> { getOutputType(clazz).ifPresent(type -> declareCustomType(source.getOutput(), type)); getAttributesType(clazz).ifPresent(type -> declareCustomType(source.getOutputAttributes(), type)); }); source.getSuccessCallback().ifPresent(this::declareParametersCustomStaticTypes); source.getErrorCallback().ifPresent(this::declareParametersCustomStaticTypes); }
@Override protected void onSource(SourceDeclaration sourceDeclaration) { BackPressureStrategyModelProperty property; Optional<ExtensionTypeDescriptorModelProperty> extensionTypeDescriptorModelProperty = sourceDeclaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); if (extensionTypeDescriptorModelProperty.isPresent()) { Type sourceType = extensionTypeDescriptorModelProperty.get().getType(); property = sourceType.getAnnotation(BackPressure.class) .map(BackPressureStrategyModelProperty::of) .orElseGet(BackPressureStrategyModelProperty::getDefault); sourceDeclaration.addModelProperty(property); if (property.getSupportedModes().size() > 1) { addBackPressureParameter(extensionDeclaration, sourceDeclaration, property); } } } }.walk(extensionDeclaration);
@Override protected void onSource(WithSourcesDeclaration owner, SourceDeclaration declaration) { declaration.getModelProperty(ImplementingTypeModelProperty.class) .map(ImplementingTypeModelProperty::getType) .ifPresent(declaringType -> new ClassStereotypeResolver(new TypeWrapper(declaringType, typeLoader), declaration, namespace, SOURCE, stereotypes) .resolveStereotype()); } }.walk(declaration);
private void enrichSourceMetadata(SourceDeclaration declaration) { declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class) .ifPresent(prop -> { final Type sourceType = prop.getType(); MetadataScopeAdapter metadataScope = new MetadataScopeAdapter(extensionType, sourceType, declaration); declareMetadataResolverFactory(declaration, metadataScope); enrichMetadataKeyParameters(declaration, metadataScope.getKeysResolver().get()); }); }