private void documentConfigurations(ExtensionDeclaration extensionDeclaration, TypeElement extensionElement) { Set<TypeElement> configurations = processor.getTypeElementsAnnotatedWith(Configuration.class, roundEnv); if (!configurations.isEmpty()) { configurations .forEach(config -> findMatchingConfiguration(extensionDeclaration, config) .ifPresent(configDeclaration -> configDocumenter.document(extensionDeclaration, configDeclaration, config))); configDocumenter.documentConnectionProviders(extensionDeclaration, extensionElement); } else { configDocumenter.document(extensionDeclaration, extensionDeclaration.getConfigurations().get(0), extensionElement); extensionDeclaration.getConfigurations().get(0).setDescription(DEFAULT_CONFIG_DESCRIPTION); } }
private void assertOperation(String configName, String operationName) { ConfigurationDeclaration config = extensionDeclaration.getConfigurations().stream().filter(c -> c.getName().equals(configName)).findFirst() .orElseThrow(() -> new IllegalArgumentException("No config with name " + configName)); OperationDeclaration operation = config.getOperations().stream().filter(model -> model.getName().equals(operationName)) .findFirst().orElseThrow(() -> new IllegalArgumentException("No operation with name " + operationName)); assertThat(operation.getName(), is(operationName)); } }
@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); }
@Test public void verifyConfigurationModelPropertyOnOperation() { ParameterDeclaration booleanDeclaration = getNamedObject(declaration.getConfigurations().get(0).getAllParameters(), "lovesMinerals"); assertThat(booleanDeclaration.isRequired(), is(FALSE)); assertThat(booleanDeclaration.getDefaultValue(), is(valueOf(FALSE))); booleanDeclaration = getNamedObject(declaration.getConfigurations().get(0).getAllParameters(), "worksAtDEA"); assertThat(booleanDeclaration.isRequired(), is(FALSE)); assertThat(booleanDeclaration.getDefaultValue(), is(valueOf(TRUE))); } }
@Before public void before() throws Exception { when(extensionLoadingContext.getExtensionDeclarer()).thenReturn(extensionDeclarer); when(extensionDeclarer.getDeclaration()).thenReturn(extensionDeclaration); when(extensionDeclaration.getConfigurations()).thenReturn(asList(configurationDeclaration)); when(extensionDeclaration.getConnectionProviders()).thenReturn(asList(connectionProviderDeclaration)); mockImplementingProperty(configurationDeclaration, TestNameAwareConfig.class); mockImplementingProperty(connectionProviderDeclaration, TestNameAwareConnectionProvider.class); configNameField = getAllFields(TestNameAwareConfig.class, withAnnotation(RefName.class)).iterator().next(); providerNameField = getAllFields(TestNameAwareConnectionProvider.class, withAnnotation(RefName.class)).iterator().next(); }
@Test public void nonDeprecatedConfigurationTestCase() { ExtensionDeclaration extensionDeclaration = getEnrichedExtensionDeclaration(DeprecatedExtension.class); ConfigurationDeclaration configurationDeclaration = extensionDeclaration.getConfigurations().get(1); assertFalse(configurationDeclaration.getDeprecation().isPresent()); }
@Test public void deprecatedConnectionProviderTestCase() { ExtensionDeclaration extensionDeclaration = getEnrichedExtensionDeclaration(DeprecatedExtension.class); ConfigurationDeclaration configurationDeclaration = extensionDeclaration.getConfigurations().get(1); ConnectionProviderDeclaration connectionProviderDeclaration = configurationDeclaration.getConnectionProviders().get(0); assertTrue(connectionProviderDeclaration.getDeprecation().isPresent()); assertThat(connectionProviderDeclaration.getDeprecation().get().getMessage(), is("You should use the new connection provider")); assertThat(connectionProviderDeclaration.getDeprecation().get().getDeprecatedSince(), is("1.4.0")); assertTrue(connectionProviderDeclaration.getDeprecation().get().getToRemoveIn().isPresent()); assertThat(connectionProviderDeclaration.getDeprecation().get().getToRemoveIn().get(), is("2.0.0")); }
@Test public void nonDeprecatedConnectionProviderTestCase() { ExtensionDeclaration extensionDeclaration = getEnrichedExtensionDeclaration(DeprecatedExtension.class); ConfigurationDeclaration configurationDeclaration = extensionDeclaration.getConfigurations().get(1); ConnectionProviderDeclaration connectionProviderDeclaration = configurationDeclaration.getConnectionProviders().get(1); assertFalse(connectionProviderDeclaration.getDeprecation().isPresent()); }
@Test public void deprecatedConfigurationTestCase() { ExtensionDeclaration extensionDeclaration = getEnrichedExtensionDeclaration(DeprecatedExtension.class); ConfigurationDeclaration configurationDeclaration = extensionDeclaration.getConfigurations().get(0); assertTrue(configurationDeclaration.getDeprecation().isPresent()); assertThat(configurationDeclaration.getDeprecation().get().getMessage(), is("This configuration is deprecated.")); assertThat(configurationDeclaration.getDeprecation().get().getDeprecatedSince(), is("1.3.0")); assertFalse(configurationDeclaration.getDeprecation().get().getToRemoveIn().isPresent()); }
@Test public void heisenbergPointerPlusExternalConfig() { setLoader(loaderFor(HeisenbergPointerPlusExternalConfig.class)); ExtensionDeclaration extensionDeclaration = declareExtension().getDeclaration(); assertExtensionProperties(extensionDeclaration, OTHER_HEISENBERG); assertThat(extensionDeclaration.getConfigurations().size(), equalTo(2)); ConfigurationDeclaration configuration = extensionDeclaration.getConfigurations().get(1); assertThat(configuration, is(notNullValue())); assertThat(configuration.getName(), equalTo(EXTENDED_CONFIG_NAME)); assertThat(configuration.getAllParameters(), hasSize(32)); assertParameter(configuration.getAllParameters(), "extendedProperty", "", STRING_TYPE, true, SUPPORTED, null); }
@Test public void verifyConfigurationModelPropertyOnSource() { SourceDeclaration sourceDeclaration = getDeclaration(declaration.getConfigurations().get(0).getMessageSources(), LISTEN_PAYMENTS); final ConfigTypeModelProperty configTypeModelProperty = checkIsPresent(sourceDeclaration, ConfigTypeModelProperty.class); assertType(configTypeModelProperty); }
@Test public void parseDisplayNameAnnotationOnParameterGroup() { ExtensionDeclaration extensionDeclaration = heisenbergDeclarer.getDeclaration(); List<ParameterDeclaration> parameters = extensionDeclaration.getConfigurations().get(0).getAllParameters(); assertParameterDisplayName(findParameter(parameters, PARAMETER_GROUP_ORIGINAL_DISPLAY_NAME), PARAMETER_GROUP_DISPLAY_NAME); }
@Test public void parseDisplayAnnotationsOnParameter() { ExtensionDeclaration extensionDeclaration = heisenbergDeclarer.getDeclaration(); List<ParameterDeclaration> parameters = extensionDeclaration.getConfigurations().get(0).getAllParameters(); assertParameterDisplayName(findParameter(parameters, PARAMETER_ORIGINAL_OVERRIDED_DISPLAY_NAME), PARAMETER_OVERRIDED_DISPLAY_NAME); }
@Test public void verifyConfigurationModelPropertyOnOperation() { OperationDeclaration operationDeclaration = getDeclaration(declaration.getConfigurations().get(0).getOperations(), GET_ENEMY); final ConfigTypeModelProperty configTypeModelProperty = checkIsPresent(operationDeclaration, ConfigTypeModelProperty.class); assertType(configTypeModelProperty); }
@Test public void parseSummaryAnnotationOnConfigParameter() { ExtensionDeclaration extensionDeclaration = heisenbergDeclarer.getDeclaration(); List<ParameterDeclaration> parameters = extensionDeclaration.getConfigurations().get(0).getAllParameters(); assertParameterSummary(findParameter(parameters, "ricinPacks"), RICIN_PACKS_SUMMARY); }
@Test public void parseExampleAnnotationOnConfigParameter() { ExtensionDeclaration extensionDeclaration = heisenbergDeclarer.getDeclaration(); List<ParameterDeclaration> parameters = extensionDeclaration.getConfigurations().get(0).getAllParameters(); assertParameterExample(findParameter(parameters, "labAddress"), LAB_ADDRESS_EXAMPLE); }
@Test public void extension() { assertThat(extensionDeclaration.getName(), is(VEGAN)); assertThat(extensionDeclaration.getConfigurations(), hasSize(6)); assertOperation(APPLE, "eatApple"); assertOperation(BANANA, "eatBanana"); assertOperation(KIWI, "eatKiwi"); }
@Test public void parseLayoutAnnotationsOnParameter() { ExtensionDeclarer declarer = declareExtension(); ExtensionDeclaration extensionDeclaration = declarer.getDeclaration(); final ConfigurationDeclaration configurationDeclaration = extensionDeclaration.getConfigurations().get(0); assertParameterPlacement(findParameterInGroup(configurationDeclaration, "labeledRicin"), RICIN_GROUP_NAME, 1); assertParameterPlacement(findParameterInGroup(configurationDeclaration, "ricinPacks"), RICIN_GROUP_NAME, 2); }
@Test public void parseMetadataAnnotationsOnParameter() { final OperationDeclaration operationDeclaration = getDeclaration(declaration.getConfigurations().get(0).getOperations(), CONTENT_METADATA_WITH_KEY_ID); final List<ParameterDeclaration> parameters = operationDeclaration.getAllParameters(); assertParameterIsMetadataKeyPart(getDeclaration(parameters, "type")); assertParameterIsMetadataContent(getDeclaration(parameters, "content")); }
@Test public void parseLayoutAnnotationsOnParameterGroup() { ExtensionDeclarer declarer = declareExtension(); ExtensionDeclaration extensionDeclaration = declarer.getDeclaration(); ConfigurationDeclaration config = extensionDeclaration.getConfigurations().get(0); assertParameterPlacement(findParameterInGroup(config, "myName"), PERSONAL_INFORMATION_GROUP_NAME, 1); assertParameterPlacement(findParameterInGroup(config, "age"), PERSONAL_INFORMATION_GROUP_NAME, 2); assertParameterPlacement(findParameterInGroup(config, "dateOfConception"), PERSONAL_INFORMATION_GROUP_NAME, 3); assertParameterPlacement(findParameterInGroup(config, "dateOfBirth"), PERSONAL_INFORMATION_GROUP_NAME, 4); assertParameterPlacement(findParameterInGroup(config, "dateOfDeath"), PERSONAL_INFORMATION_GROUP_NAME, 5); }