@Test void mergeIdenticalConfig() { InitializrProperties bean = load( new ClassPathResource("application-test-default.yml")); InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(bean).withInitializrProperties(bean, true) .build(); assertDefaultConfig(metadata); }
/** * Add a {@link InitializrMetadata} to be merged with other content. * @param resource a resource to a json document describing the metadata to include * @return this instance */ public InitializrMetadataBuilder withInitializrMetadata(Resource resource) { return withCustomizer(new ResourceInitializrMetadataCustomizer(resource)); }
/** * Create a builder instance from the specified {@link InitializrProperties}. * Initialize the configuration to use. * @param configuration the configuration to use * @return a new {@link InitializrMetadataBuilder} instance * @see #withInitializrProperties(InitializrProperties) */ public static InitializrMetadataBuilder fromInitializrProperties( InitializrProperties configuration) { return new InitializrMetadataBuilder(configuration) .withInitializrProperties(configuration); }
@Bean @ConditionalOnMissingBean(InitializrMetadataProvider.class) public InitializrMetadataProvider initializrMetadataProvider( InitializrProperties properties, ObjectMapper objectMapper, RestTemplateBuilder restTemplateBuilder) { InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(properties).build(); return new DefaultInitializrMetadataProvider(metadata, objectMapper, restTemplateBuilder.build()); }
/** * Build a {@link InitializrMetadata} based on the state of this builder. * @return a new {@link InitializrMetadata} instance */ public InitializrMetadata build() { InitializrConfiguration config = (this.configuration != null) ? this.configuration : new InitializrConfiguration(); InitializrMetadata metadata = createInstance(config); for (InitializrMetadataCustomizer customizer : this.customizers) { customizer.customize(metadata); } applyDefaults(metadata); metadata.validate(); return metadata; }
@Test void mergeMetadataWithBom() { InitializrMetadata metadata = InitializrMetadataBuilder.create() .withInitializrMetadata( new ClassPathResource("metadata/config/test-bom.json")) .build(); Map<String, BillOfMaterials> boms = metadata.getConfiguration().getEnv() .getBoms(); assertThat(boms).hasSize(2); BillOfMaterials myBom = boms.get("my-bom"); assertThat(myBom).isNotNull(); assertThat(myBom.getGroupId()).isEqualTo("org.acme"); assertThat(myBom.getArtifactId()).isEqualTo("my-bom"); assertThat(myBom.getVersion()).isEqualTo("2.1.1.RELEASE"); BillOfMaterials anotherBom = boms.get("another-bom"); assertThat(anotherBom).isNotNull(); assertThat(anotherBom.getGroupId()).isEqualTo("org.acme"); assertThat(anotherBom.getArtifactId()).isEqualTo("another-bom"); assertThat(anotherBom.getVersion()).isEqualTo("4.5.6.RELEASE"); }
@Test void addDependencyInCustomizer() { DependencyGroup group = DependencyGroup.create("Extra"); Dependency dependency = Dependency.withId("com.foo:foo:1.0.0"); group.getContent().add(dependency); InitializrMetadata metadata = InitializrMetadataBuilder.create() .withCustomizer((m) -> m.getDependencies().getContent().add(group)) .build(); assertThat(metadata.getDependencies().getContent()).hasSize(1); assertThat(metadata.getDependencies().getContent().get(0)).isEqualTo(group); }
@Test void initializeGroupIdAndArtifactId() { this.metadata = InitializrMetadataBuilder.create().build(); this.metadata.getGroupId().setContent("org.acme"); this.metadata.getArtifactId().setContent("my-project"); ProjectRequest request = initProjectRequest(); assertThat(request.getGroupId()).isEqualTo("org.acme"); assertThat(request.getArtifactId()).isEqualTo("my-project"); }
public InitializrMetadata build() { return this.builder.build(); }
/** * Add a {@link InitializrProperties} to be merged with other content. Merges the * settings only and not the configuration. * @param properties the properties to use * @return this instance * @see #withInitializrProperties(InitializrProperties, boolean) */ public InitializrMetadataBuilder withInitializrProperties( InitializrProperties properties) { return withInitializrProperties(properties, false); }
/** * Create an empty builder instance with a default {@link InitializrConfiguration}. * @return a new {@link InitializrMetadataBuilder} instance */ public static InitializrMetadataBuilder create() { return new InitializrMetadataBuilder(new InitializrConfiguration()); }
@Test void mergeMetadataWithRepository() throws Exception { InitializrMetadata metadata = InitializrMetadataBuilder.create() .withInitializrMetadata( new ClassPathResource("metadata/config/test-repository.json")) .build(); Map<String, Repository> repositories = metadata.getConfiguration().getEnv() .getRepositories(); assertThat(repositories).hasSize(4); // 2 standard repos Repository myRepo = repositories.get("my-repo"); assertThat(myRepo).isNotNull(); assertThat(myRepo.getName()).isEqualTo("my repo"); assertThat(myRepo.getUrl()).isEqualTo(new URL("http://example.com/my")); assertThat(myRepo.isSnapshotsEnabled()).isEqualTo(true); Repository anotherRepo = repositories.get("another-repo"); assertThat(anotherRepo).isNotNull(); assertThat(anotherRepo.getName()).isEqualTo("another repo"); assertThat(anotherRepo.getUrl()).isEqualTo(new URL("http://example.com/another")); assertThat(anotherRepo.isSnapshotsEnabled()).isEqualTo(false); }
@Bean public InitializrMetadataProvider initializrMetadataProvider( InitializrProperties properties) { return new DefaultInitializrMetadataProvider(InitializrMetadataBuilder .fromInitializrProperties(properties).build(), new ObjectMapper(), new RestTemplate()) { @Override protected void updateInitializrMetadata(InitializrMetadata metadata) { // Disable metadata fetching from spring.io } }; }
@Test void mergeSslConfiguration() { InitializrProperties config = load( new ClassPathResource("application-test-default.yml")); InitializrProperties forceSslConfig = load( new ClassPathResource("application-test-ssl.yml")); InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(config) .withInitializrProperties(forceSslConfig, true).build(); InitializrConfiguration.Env defaultEnv = new InitializrConfiguration().getEnv(); InitializrConfiguration.Env actualEnv = metadata.getConfiguration().getEnv(); assertThat(actualEnv.isForceSsl()).isEqualTo(true); }
@Test void mergeMetadata() { InitializrMetadata metadata = InitializrMetadataBuilder.create() .withInitializrMetadata( new ClassPathResource("metadata/config/test-min.json")) .build(); assertThat(metadata.getConfiguration().getEnv().isForceSsl()).isEqualTo(true); assertThat(metadata.getDependencies().getContent()).hasSize(1); Dependency dependency = metadata.getDependencies().get("test"); assertThat(dependency).isNotNull(); assertThat(dependency.getGroupId()).isEqualTo("org.springframework.boot"); assertThat(metadata.getTypes().getContent()).hasSize(1); assertThat(metadata.getBootVersions().getContent()).hasSize(2); assertThat(metadata.getPackagings().getContent()).hasSize(2); assertThat(metadata.getJavaVersions().getContent()).hasSize(1); assertThat(metadata.getLanguages().getContent()).hasSize(3); assertThat(metadata.getName().getContent()).isEqualTo("metadata-merge"); assertThat(metadata.getDescription().getContent()) .isEqualTo("Demo project for metadata merge"); assertThat(metadata.getGroupId().getContent()).isEqualTo("org.acme"); assertThat(metadata.getArtifactId().getContent()).isEqualTo("metadata"); assertThat(metadata.getVersion().getContent()).isEqualTo("1.0.0-SNAPSHOT"); assertThat(metadata.getPackageName().getContent()).isEqualTo("org.acme.demo"); }
@Test void loadDefaultConfig() { InitializrProperties bean = load( new ClassPathResource("application-test-default.yml")); InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(bean).build(); assertDefaultConfig(metadata); }
/** * Add a {@link InitializrProperties} to be merged with other content. * @param properties the settings to merge onto this instance * @param mergeConfiguration specify if service configuration should be merged as well * @return this instance */ public InitializrMetadataBuilder withInitializrProperties( InitializrProperties properties, boolean mergeConfiguration) { if (mergeConfiguration) { this.configuration.merge(properties); } return withCustomizer(new InitializerPropertiesCustomizer(properties)); }
@Test void mergeConfig() { InitializrProperties config = load( new ClassPathResource("application-test-default.yml")); InitializrProperties customDefaultsConfig = load( new ClassPathResource("application-test-custom-defaults.yml")); InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(config) .withInitializrProperties(customDefaultsConfig).build(); assertDefaultConfig(metadata); assertThat(metadata.getGroupId().getContent()).isEqualTo("org.foo"); assertThat(metadata.getArtifactId().getContent()).isEqualTo("foo-bar"); assertThat(metadata.getVersion().getContent()).isEqualTo("1.2.4-SNAPSHOT"); assertThat(metadata.getName().getContent()).isEqualTo("FooBar"); assertThat(metadata.getDescription().getContent()).isEqualTo("FooBar Project"); assertThat(metadata.getPackageName().getContent()).isEqualTo("org.foo.demo"); }
@Test void initializeRemoteConfig() throws Exception { InitializrMetadata localMetadata = this.metadataProvider.get(); InitializrMetadata metadata = InitializrMetadataBuilder.create() .withInitializrMetadata(new UrlResource(createUrl("/metadata/config"))) .build(); // Basic assertions assertThat(metadata.getDependencies().getContent()) .hasSameSizeAs(localMetadata.getDependencies().getContent()); assertThat(metadata.getTypes().getContent()) .hasSameSizeAs(localMetadata.getTypes().getContent()); assertThat(metadata.getBootVersions().getContent()) .hasSameSizeAs(localMetadata.getBootVersions().getContent()); assertThat(metadata.getPackagings().getContent()) .hasSameSizeAs(localMetadata.getPackagings().getContent()); assertThat(metadata.getJavaVersions().getContent()) .hasSameSizeAs(localMetadata.getJavaVersions().getContent()); assertThat(metadata.getLanguages().getContent()) .hasSameSizeAs(localMetadata.getLanguages().getContent()); }
public InitializrMetadataTestBuilder addType(Type type) { this.builder.withCustomizer((it) -> it.getTypes().getContent().add(type)); return this; }