/** * Creates a map with all the configurations accepted by each of the components declared in the extension. */ private Multimap<ComponentDeclaration, ConfigurationDeclaration> populateComponentConfigsMap(ConfigurationDeclaration config) { Multimap<ComponentDeclaration, ConfigurationDeclaration> componentConfigs = LinkedListMultimap.create(); config.getConstructs().forEach(construct -> componentConfigs.put(construct, config)); config.getMessageSources().forEach(source -> componentConfigs.put(source, config)); config.getOperations().forEach(operation -> componentConfigs.put(operation, config)); return componentConfigs; }
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)); } }
@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 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 flyweight() { setLoader(loaderFor(VeganExtension.class)); ExtensionDeclarer declarer = declareExtension(); final ExtensionDeclaration declaration = declarer.getDeclaration(); final ConfigurationDeclaration appleConfiguration = findDeclarationByName(declaration.getConfigurations(), APPLE); final ConfigurationDeclaration bananaConfiguration = findDeclarationByName(declaration.getConfigurations(), BANANA); final String sourceName = PaulMcCartneySource.class.getSimpleName(); SourceDeclaration appleSource = findDeclarationByName(appleConfiguration.getMessageSources(), sourceName); SourceDeclaration bananaSource = findDeclarationByName(bananaConfiguration.getMessageSources(), sourceName); assertThat(appleSource, is(sameInstance(bananaSource))); final String operationName = "spreadTheWord"; OperationDeclaration appleOperation = findDeclarationByName(appleConfiguration.getOperations(), operationName); OperationDeclaration bananaOperation = findDeclarationByName(bananaConfiguration.getOperations(), operationName); assertThat(appleOperation, is(sameInstance(bananaOperation))); }
@Test public void declaresTypeResolverInformationForDynamicResolver() throws Exception { List<OperationDeclaration> operations = declaration.getConfigurations().get(0).getOperations();
@Test public void declareStaticAndDynamicTypesInOperation() { List<ParameterDeclaration> params; List<OperationDeclaration> operations = declaration.getConfigurations().get(0).getOperations(); MetadataType outputMetadataType = IntrospectionUtils.getReturnType(new TypeWrapper(Object.class, TYPE_LOADER)); MetadataType objectParameterMetadataType = (new ParameterTypeWrapper(Object.class, TYPE_LOADER)).asMetadataType();