Java Code Examples for org.springframework.boot.configurationmetadata.ConfigurationMetadataRepositoryJsonBuilder

The following examples show how to use org.springframework.boot.configurationmetadata.ConfigurationMetadataRepositoryJsonBuilder. These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
/**
 * Resolve all configuration metadata properties prefixed with {@code spring.cloud.deployer.}
 *
 * @return the list
 */
public List<ConfigurationMetadataProperty> resolve() {
	List<ConfigurationMetadataProperty> metadataProperties = new ArrayList<>();
	ConfigurationMetadataRepositoryJsonBuilder builder = ConfigurationMetadataRepositoryJsonBuilder.create();
	try {
		Resource[] resources = applicationContext.getResources(CONFIGURATION_METADATA_PATTERN);
		for (Resource resource : resources) {
			builder.withJsonResource(resource.getInputStream());
		}
	}
	catch (IOException e) {
		throw new SkipperException("Unable to read configuration metadata", e);
	}
	ConfigurationMetadataRepository metadataRepository = builder.build();
	Map<String, ConfigurationMetadataGroup> groups = metadataRepository.getAllGroups();
	// 1. go through all groups and their properties
	// 2. filter 'spring.cloud.deployer.' properties
	// 3. pass in only group includes, empty passes through all
	// 4. pass in group excludes
	// 5. same logic for properties for includes and excludes
	// 6. what's left is white/black listed props
	groups.values().stream()
		.filter(g -> g.getId().startsWith(KEY_PREFIX))
		.filter(groupEmptyOrAnyMatch(deployerProperties.getGroupIncludes()))
		.filter(groupNoneMatch(deployerProperties.getGroupExcludes()))
		.forEach(g -> {
			g.getProperties().values().stream()
				.filter(propertyEmptyOrAnyMatch(deployerProperties.getPropertyIncludes()))
				.filter(propertyNoneMatch(deployerProperties.getPropertyExcludes()))
				.forEach(p -> {
					metadataProperties.add(p);
				});
		});
	return metadataProperties;
}
 
Example 2
Source Project: joinfaces   Source File: PropertyDocumentation.java    License: Apache License 2.0 5 votes vote down vote up
@TaskAction
public void generatePropertyDocumentation() throws IOException {
	ConfigurationMetadataRepository configurationMetadataRepository;

	configurationMetadataRepository = ConfigurationMetadataRepositoryJsonBuilder.create()
			.withJsonResource(new FileInputStream(getInputFile().getAsFile().get()))
			.build();

	try (PrintWriter writer = ResourceGroovyMethods.newPrintWriter(getOutputFile().getAsFile().get(), "UTF-8")) {

		writer.println("[source,properties,indent=0,subs=\"verbatim,attributes,macros\"]");
		writer.println("----");

		configurationMetadataRepository.getAllGroups().values().stream()
				.sorted(Comparator.comparing(ConfigurationMetadataGroup::getId))
				.forEach(group -> {
					writer.printf("## %s\n", group.getId());

					group.getSources().values()
							.stream()
							.map(ConfigurationMetadataSource::getShortDescription)
							.filter(s -> s != null && !s.isEmpty())
							.forEach(d -> writer.printf("# %s\n", d));

					group.getProperties().values().stream()
							.sorted(Comparator.comparing(ConfigurationMetadataProperty::getId))
							.forEach(property -> printProperty(writer, property));
					writer.println();
					writer.flush();
				});

		writer.println("----");
	}
}
 
Example 3
/**
 * Resolve all configuration metadata properties prefixed with {@code spring.cloud.deployer.}
 *
 * @return the list
 */
public List<ConfigurationMetadataProperty> resolve() {
	List<ConfigurationMetadataProperty> metadataProperties = new ArrayList<>();
	ConfigurationMetadataRepositoryJsonBuilder builder = ConfigurationMetadataRepositoryJsonBuilder.create();
	try {
		Resource[] resources = applicationContext.getResources(CONFIGURATION_METADATA_PATTERN);
		for (Resource resource : resources) {
			builder.withJsonResource(resource.getInputStream());
		}
	}
	catch (IOException e) {
		throw new SkipperException("Unable to read configuration metadata", e);
	}
	ConfigurationMetadataRepository metadataRepository = builder.build();
	Map<String, ConfigurationMetadataGroup> groups = metadataRepository.getAllGroups();
	// 1. go through all groups and their properties
	// 2. filter 'spring.cloud.deployer.' properties
	// 3. pass in only group includes, empty passes through all
	// 4. pass in group excludes
	// 5. same logic for properties for includes and excludes
	// 6. what's left is white/black listed props
	groups.values().stream()
		.filter(g -> g.getId().startsWith(KEY_PREFIX))
		.filter(groupEmptyOrAnyMatch(deployerProperties.getGroupIncludes()))
		.filter(groupNoneMatch(deployerProperties.getGroupExcludes()))
		.forEach(g -> {
			g.getProperties().values().stream()
				.filter(propertyEmptyOrAnyMatch(deployerProperties.getPropertyIncludes()))
				.filter(propertyNoneMatch(deployerProperties.getPropertyExcludes()))
				.forEach(p -> {
					metadataProperties.add(p);
				});
		});
	return metadataProperties;
}
 
Example 4
Source Project: building-microservices   Source File: MetaDataTests.java    License: Apache License 2.0 5 votes vote down vote up
@Test
public void writeMetadataInfo() throws Exception {
	InputStream inputStream = new FileInputStream(
			"target/classes/META-INF/spring-configuration-metadata.json");
	ConfigurationMetadataRepository repository = ConfigurationMetadataRepositoryJsonBuilder
			.create(UTF_8).withJsonResource(inputStream).build();

	for (Map.Entry<String, ConfigurationMetadataProperty> entry : repository
			.getAllProperties().entrySet()) {
		System.out.println(
				entry.getKey() + " = " + entry.getValue().getShortDescription());
	}
}
 
Example 5
Source Project: nb-springboot   Source File: SpringBootServiceImpl.java    License: Apache License 2.0 4 votes vote down vote up
private void updateConfigRepo() {
    logger.fine("Updating config metadata repo");
    repo = new SimpleConfigurationMetadataRepository();
    final List<FileObject> cfgMetaFiles = cpExec.findAllResources(METADATA_JSON);
    for (FileObject fo : cfgMetaFiles) {
        try {
            ConfigurationMetadataRepositoryJsonBuilder builder = ConfigurationMetadataRepositoryJsonBuilder.create();
            ConfigurationMetadataRepository currRepo;
            FileObject archiveFo = FileUtil.getArchiveFile(fo);
            if (archiveFo != null) {
                // parse and cache configuration metadata from JSON file in jar
                String archivePath = archiveFo.getPath();
                if (!reposInJars.containsKey(archivePath)) {
                    logger.log(INFO, "Unmarshalling configuration metadata from {0}", FileUtil.getFileDisplayName(fo));
                    ConfigurationMetadataRepository jarRepo = builder.withJsonResource(fo.getInputStream()).build();
                    reposInJars.put(archivePath, jarRepo);
                }
                currRepo = reposInJars.get(archivePath);
            } else {
                // parse configuration metadata from standalone JSON file (usually produced by spring configuration processor)
                logger.log(INFO, "Unmarshalling configuration metadata from {0}", FileUtil.getFileDisplayName(fo));
                currRepo = builder.withJsonResource(fo.getInputStream()).build();
            }
            repo.include(currRepo);
        } catch (Exception ex) {
            Exceptions.printStackTrace(ex);
        }
    }
    // update cached values
    cachedProperties = repo.getAllProperties();
    // extract collection/map properties names based on heuristics
    for (Map.Entry<String, ConfigurationMetadataProperty> entry : cachedProperties.entrySet()) {
        final String type = entry.getValue().getType();
        if (type != null) {
            final String key = entry.getKey();
            if (type.startsWith("java.util.Map<")) {
                mapProperties.add(key);
            }
            if (type.startsWith("java.util.List<")
                    || type.startsWith("java.util.Set<")
                    || type.startsWith("java.util.Collection<")) {
                collectionProperties.add(key);
            }
        }
    }
}