Commit 236b1bc4 authored by Phillip Webb's avatar Phillip Webb

Merge pull request #12626 from igor-suhorukov

* pr/12626:
  Polish "Use lambdas for map entry iteration where possible"
  Use lambdas for map entry iteration where possible
parents 78a94caf 685babc8
...@@ -123,30 +123,21 @@ public class ConditionsReportEndpoint { ...@@ -123,30 +123,21 @@ public class ConditionsReportEndpoint {
this.negativeMatches = new LinkedHashMap<>(); this.negativeMatches = new LinkedHashMap<>();
this.exclusions = report.getExclusions(); this.exclusions = report.getExclusions();
this.unconditionalClasses = report.getUnconditionalClasses(); this.unconditionalClasses = report.getUnconditionalClasses();
for (Map.Entry<String, ConditionAndOutcomes> entry : report report.getConditionAndOutcomesBySource().forEach(
.getConditionAndOutcomesBySource().entrySet()) { (source, conditionAndOutcomes) -> add(source, conditionAndOutcomes));
if (entry.getValue().isFullMatch()) {
add(this.positiveMatches, entry.getKey(), entry.getValue());
}
else {
add(this.negativeMatches, entry.getKey(), entry.getValue());
}
}
this.parentId = context.getParent() == null ? null this.parentId = context.getParent() == null ? null
: context.getParent().getId(); : context.getParent().getId();
} }
private void add(Map<String, MessageAndConditions> map, String source, private void add(String source, ConditionAndOutcomes conditionAndOutcomes) {
ConditionAndOutcomes conditionAndOutcomes) {
String name = ClassUtils.getShortName(source);
map.put(name, new MessageAndConditions(conditionAndOutcomes));
}
private void add(MultiValueMap<String, MessageAndCondition> map, String source,
ConditionAndOutcomes conditionAndOutcomes) {
String name = ClassUtils.getShortName(source); String name = ClassUtils.getShortName(source);
for (ConditionAndOutcome conditionAndOutcome : conditionAndOutcomes) { if (conditionAndOutcomes.isFullMatch()) {
map.add(name, new MessageAndCondition(conditionAndOutcome)); conditionAndOutcomes.forEach((conditionAndOutcome) -> this.positiveMatches
.add(name, new MessageAndCondition(conditionAndOutcome)));
}
else {
this.negativeMatches.put(name,
new MessageAndConditions(conditionAndOutcomes));
} }
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -44,10 +44,8 @@ public abstract class CompositeHealthIndicatorConfiguration<H extends HealthIndi ...@@ -44,10 +44,8 @@ public abstract class CompositeHealthIndicatorConfiguration<H extends HealthIndi
} }
CompositeHealthIndicator composite = new CompositeHealthIndicator( CompositeHealthIndicator composite = new CompositeHealthIndicator(
this.healthAggregator); this.healthAggregator);
for (Map.Entry<String, S> entry : beans.entrySet()) { beans.forEach((name, source) -> composite.addHealthIndicator(name,
composite.addHealthIndicator(entry.getKey(), createHealthIndicator(source)));
createHealthIndicator(entry.getValue()));
}
return composite; return composite;
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -43,10 +43,8 @@ public abstract class CompositeReactiveHealthIndicatorConfiguration<H extends Re ...@@ -43,10 +43,8 @@ public abstract class CompositeReactiveHealthIndicatorConfiguration<H extends Re
} }
CompositeReactiveHealthIndicator composite = new CompositeReactiveHealthIndicator( CompositeReactiveHealthIndicator composite = new CompositeReactiveHealthIndicator(
this.healthAggregator); this.healthAggregator);
for (Map.Entry<String, S> entry : beans.entrySet()) { beans.forEach((name, source) -> composite.addHealthIndicator(name,
composite.addHealthIndicator(entry.getKey(), createHealthIndicator(source)));
createHealthIndicator(entry.getValue()));
}
return composite; return composite;
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -84,11 +84,11 @@ public class DataSourceHealthIndicatorAutoConfiguration extends ...@@ -84,11 +84,11 @@ public class DataSourceHealthIndicatorAutoConfiguration extends
return null; return null;
} }
Map<String, DataSource> dataSources = new LinkedHashMap<>(); Map<String, DataSource> dataSources = new LinkedHashMap<>();
for (Map.Entry<String, DataSource> entry : candidates.entrySet()) { candidates.forEach((name, dataSource) -> {
if (!(entry.getValue() instanceof AbstractRoutingDataSource)) { if (!(dataSource instanceof AbstractRoutingDataSource)) {
dataSources.put(entry.getKey(), entry.getValue()); dataSources.put(name, dataSource);
} }
} });
return dataSources; return dataSources;
} }
......
...@@ -140,15 +140,14 @@ class AutoConfigurationSorter { ...@@ -140,15 +140,14 @@ class AutoConfigurationSorter {
} }
public Set<String> getClassesRequestedAfter(String className) { public Set<String> getClassesRequestedAfter(String className) {
Set<String> rtn = new LinkedHashSet<>(); Set<String> classesRequestedAfter = new LinkedHashSet<>();
rtn.addAll(get(className).getAfter()); classesRequestedAfter.addAll(get(className).getAfter());
for (Map.Entry<String, AutoConfigurationClass> entry : this.classes this.classes.forEach((name, autoConfigurationClass) -> {
.entrySet()) { if (autoConfigurationClass.getBefore().contains(className)) {
if (entry.getValue().getBefore().contains(className)) { classesRequestedAfter.add(name);
rtn.add(entry.getKey());
} }
} });
return rtn; return classesRequestedAfter;
} }
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -74,9 +74,8 @@ class ImportAutoConfigurationImportSelector extends AutoConfigurationImportSelec ...@@ -74,9 +74,8 @@ class ImportAutoConfigurationImportSelector extends AutoConfigurationImportSelec
AnnotationAttributes attributes) { AnnotationAttributes attributes) {
List<String> candidates = new ArrayList<>(); List<String> candidates = new ArrayList<>();
Map<Class<?>, List<Annotation>> annotations = getAnnotations(metadata); Map<Class<?>, List<Annotation>> annotations = getAnnotations(metadata);
for (Map.Entry<Class<?>, List<Annotation>> entry : annotations.entrySet()) { annotations.forEach((source, sourceAnnotations) -> collectCandidateConfigurations(
collectCandidateConfigurations(entry.getKey(), entry.getValue(), candidates); source, sourceAnnotations, candidates));
}
return candidates; return candidates;
} }
......
...@@ -159,13 +159,9 @@ public abstract class AbstractNestedCondition extends SpringBootCondition ...@@ -159,13 +159,9 @@ public abstract class AbstractNestedCondition extends SpringBootCondition
public List<ConditionOutcome> getMatchOutcomes() { public List<ConditionOutcome> getMatchOutcomes() {
List<ConditionOutcome> outcomes = new ArrayList<>(); List<ConditionOutcome> outcomes = new ArrayList<>();
for (Map.Entry<AnnotationMetadata, List<Condition>> entry : this.memberConditions this.memberConditions.forEach((metadata, conditions) -> outcomes
.entrySet()) { .add(new MemberOutcomes(this.context, metadata, conditions)
AnnotationMetadata metadata = entry.getKey(); .getUltimateOutcome()));
List<Condition> conditions = entry.getValue();
outcomes.add(new MemberOutcomes(this.context, metadata, conditions)
.getUltimateOutcome());
}
return Collections.unmodifiableList(outcomes); return Collections.unmodifiableList(outcomes);
} }
......
...@@ -24,6 +24,7 @@ import java.util.Iterator; ...@@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
...@@ -112,13 +113,11 @@ final class BeanTypeRegistry implements SmartInitializingSingleton { ...@@ -112,13 +113,11 @@ final class BeanTypeRegistry implements SmartInitializingSingleton {
*/ */
Set<String> getNamesForType(Class<?> type) { Set<String> getNamesForType(Class<?> type) {
updateTypesIfNecessary(); updateTypesIfNecessary();
Set<String> matches = new LinkedHashSet<>(); return this.beanTypes.entrySet().stream()
for (Map.Entry<String, Class<?>> entry : this.beanTypes.entrySet()) { .filter((entry) -> entry.getValue() != null
if (entry.getValue() != null && type.isAssignableFrom(entry.getValue())) { && type.isAssignableFrom(entry.getValue()))
matches.add(entry.getKey()); .map(Map.Entry::getKey)
} .collect(Collectors.toCollection(LinkedHashSet::new));
}
return matches;
} }
/** /**
...@@ -132,14 +131,11 @@ final class BeanTypeRegistry implements SmartInitializingSingleton { ...@@ -132,14 +131,11 @@ final class BeanTypeRegistry implements SmartInitializingSingleton {
*/ */
Set<String> getNamesForAnnotation(Class<? extends Annotation> annotation) { Set<String> getNamesForAnnotation(Class<? extends Annotation> annotation) {
updateTypesIfNecessary(); updateTypesIfNecessary();
Set<String> matches = new LinkedHashSet<>(); return this.beanTypes.entrySet().stream()
for (Map.Entry<String, Class<?>> entry : this.beanTypes.entrySet()) { .filter((entry) -> entry.getValue() != null && AnnotationUtils
if (entry.getValue() != null && AnnotationUtils .findAnnotation(entry.getValue(), annotation) != null)
.findAnnotation(entry.getValue(), annotation) != null) { .map(Map.Entry::getKey)
matches.add(entry.getKey()); .collect(Collectors.toCollection(LinkedHashSet::new));
}
}
return matches;
} }
@Override @Override
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -24,7 +24,6 @@ import java.util.Iterator; ...@@ -24,7 +24,6 @@ import java.util.Iterator;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap; import java.util.TreeMap;
...@@ -112,12 +111,11 @@ public final class ConditionEvaluationReport { ...@@ -112,12 +111,11 @@ public final class ConditionEvaluationReport {
*/ */
public Map<String, ConditionAndOutcomes> getConditionAndOutcomesBySource() { public Map<String, ConditionAndOutcomes> getConditionAndOutcomesBySource() {
if (!this.addedAncestorOutcomes) { if (!this.addedAncestorOutcomes) {
for (Map.Entry<String, ConditionAndOutcomes> entry : this.outcomes this.outcomes.forEach((source, sourceOutcomes) -> {
.entrySet()) { if (!sourceOutcomes.isFullMatch()) {
if (!entry.getValue().isFullMatch()) { addNoMatchOutcomeToAncestors(source);
addNoMatchOutcomeToAncestors(entry.getKey());
} }
} });
this.addedAncestorOutcomes = true; this.addedAncestorOutcomes = true;
} }
return Collections.unmodifiableMap(this.outcomes); return Collections.unmodifiableMap(this.outcomes);
...@@ -125,13 +123,13 @@ public final class ConditionEvaluationReport { ...@@ -125,13 +123,13 @@ public final class ConditionEvaluationReport {
private void addNoMatchOutcomeToAncestors(String source) { private void addNoMatchOutcomeToAncestors(String source) {
String prefix = source + "$"; String prefix = source + "$";
for (Entry<String, ConditionAndOutcomes> entry : this.outcomes.entrySet()) { this.outcomes.forEach((candidateSource, sourceOutcomes) -> {
if (entry.getKey().startsWith(prefix)) { if (candidateSource.startsWith(prefix)) {
ConditionOutcome outcome = ConditionOutcome.noMatch(ConditionMessage ConditionOutcome outcome = ConditionOutcome.noMatch(ConditionMessage
.forCondition("Ancestor " + source).because("did not match")); .forCondition("Ancestor " + source).because("did not match"));
entry.getValue().add(ANCESTOR_CONDITION, outcome); sourceOutcomes.add(ANCESTOR_CONDITION, outcome);
} }
} });
} }
/** /**
...@@ -190,16 +188,16 @@ public final class ConditionEvaluationReport { ...@@ -190,16 +188,16 @@ public final class ConditionEvaluationReport {
public ConditionEvaluationReport getDelta(ConditionEvaluationReport previousReport) { public ConditionEvaluationReport getDelta(ConditionEvaluationReport previousReport) {
ConditionEvaluationReport delta = new ConditionEvaluationReport(); ConditionEvaluationReport delta = new ConditionEvaluationReport();
for (Entry<String, ConditionAndOutcomes> entry : this.outcomes.entrySet()) { this.outcomes.forEach((source, sourceOutcomes) -> {
ConditionAndOutcomes previous = previousReport.outcomes.get(entry.getKey()); ConditionAndOutcomes previous = previousReport.outcomes.get(source);
if (previous == null if (previous == null
|| previous.isFullMatch() != entry.getValue().isFullMatch()) { || previous.isFullMatch() != sourceOutcomes.isFullMatch()) {
entry.getValue() sourceOutcomes.forEach(
.forEach((conditionAndOutcome) -> delta.recordConditionEvaluation( (conditionAndOutcome) -> delta.recordConditionEvaluation(source,
entry.getKey(), conditionAndOutcome.getCondition(), conditionAndOutcome.getCondition(),
conditionAndOutcome.getOutcome())); conditionAndOutcome.getOutcome()));
} }
} });
List<String> newExclusions = new ArrayList<>(this.exclusions); List<String> newExclusions = new ArrayList<>(this.exclusions);
newExclusions.removeAll(previousReport.getExclusions()); newExclusions.removeAll(previousReport.getExclusions());
delta.recordExclusions(newExclusions); delta.recordExclusions(newExclusions);
......
...@@ -166,18 +166,17 @@ class OnBeanCondition extends SpringBootCondition implements ConfigurationCondit ...@@ -166,18 +166,17 @@ class OnBeanCondition extends SpringBootCondition implements ConfigurationCondit
private void appendMessageForMatches(StringBuilder reason, private void appendMessageForMatches(StringBuilder reason,
Map<String, Collection<String>> matches, String description) { Map<String, Collection<String>> matches, String description) {
if (!matches.isEmpty()) { if (!matches.isEmpty()) {
for (Map.Entry<String, Collection<String>> match : matches.entrySet()) { matches.forEach((key, value) -> {
if (reason.length() > 0) { if (reason.length() > 0) {
reason.append(" and "); reason.append(" and ");
} }
reason.append("found beans "); reason.append("found beans ");
reason.append(description); reason.append(description);
reason.append(" '"); reason.append(" '");
reason.append(match.getKey()); reason.append(key);
reason.append("' "); reason.append("' ");
reason.append( reason.append(StringUtils.collectionToDelimitedString(value, ", "));
StringUtils.collectionToDelimitedString(match.getValue(), ", ")); });
}
} }
} }
......
...@@ -20,7 +20,6 @@ import java.util.ArrayList; ...@@ -20,7 +20,6 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import org.springframework.boot.autoconfigure.condition.ConditionMessage.Style; import org.springframework.boot.autoconfigure.condition.ConditionMessage.Style;
import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.Condition;
...@@ -69,8 +68,8 @@ class OnPropertyCondition extends SpringBootCondition { ...@@ -69,8 +68,8 @@ class OnPropertyCondition extends SpringBootCondition {
private List<AnnotationAttributes> annotationAttributesFromMultiValueMap( private List<AnnotationAttributes> annotationAttributesFromMultiValueMap(
MultiValueMap<String, Object> multiValueMap) { MultiValueMap<String, Object> multiValueMap) {
List<Map<String, Object>> maps = new ArrayList<>(); List<Map<String, Object>> maps = new ArrayList<>();
for (Entry<String, List<Object>> entry : multiValueMap.entrySet()) { multiValueMap.forEach((key, value) -> {
for (int i = 0; i < entry.getValue().size(); i++) { for (int i = 0; i < value.size(); i++) {
Map<String, Object> map; Map<String, Object> map;
if (i < maps.size()) { if (i < maps.size()) {
map = maps.get(i); map = maps.get(i);
...@@ -79,9 +78,9 @@ class OnPropertyCondition extends SpringBootCondition { ...@@ -79,9 +78,9 @@ class OnPropertyCondition extends SpringBootCondition {
map = new HashMap<>(); map = new HashMap<>();
maps.add(map); maps.add(map);
} }
map.put(entry.getKey(), entry.getValue().get(i)); map.put(key, value.get(i));
} }
} });
List<AnnotationAttributes> annotationAttributes = new ArrayList<>(maps.size()); List<AnnotationAttributes> annotationAttributes = new ArrayList<>(maps.size());
for (Map<String, Object> map : maps) { for (Map<String, Object> map : maps) {
annotationAttributes.add(AnnotationAttributes.fromMap(map)); annotationAttributes.add(AnnotationAttributes.fromMap(map));
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -124,19 +124,23 @@ class NoSuchBeanDefinitionFailureAnalyzer ...@@ -124,19 +124,23 @@ class NoSuchBeanDefinitionFailureAnalyzer
private void collectReportedConditionOutcomes(NoSuchBeanDefinitionException cause, private void collectReportedConditionOutcomes(NoSuchBeanDefinitionException cause,
List<AutoConfigurationResult> results) { List<AutoConfigurationResult> results) {
for (Map.Entry<String, ConditionAndOutcomes> entry : this.report this.report.getConditionAndOutcomesBySource().forEach(
.getConditionAndOutcomesBySource().entrySet()) { (source, sourceOutcomes) -> collectReportedConditionOutcomes(cause,
Source source = new Source(entry.getKey()); new Source(source), sourceOutcomes, results));
ConditionAndOutcomes conditionAndOutcomes = entry.getValue(); }
if (!conditionAndOutcomes.isFullMatch()) {
BeanMethods methods = new BeanMethods(source, cause); private void collectReportedConditionOutcomes(NoSuchBeanDefinitionException cause,
for (ConditionAndOutcome conditionAndOutcome : conditionAndOutcomes) { Source source, ConditionAndOutcomes sourceOutcomes,
if (!conditionAndOutcome.getOutcome().isMatch()) { List<AutoConfigurationResult> results) {
for (MethodMetadata method : methods) { if (sourceOutcomes.isFullMatch()) {
results.add(new AutoConfigurationResult(method, return;
conditionAndOutcome.getOutcome(), source.isMethod())); }
} BeanMethods methods = new BeanMethods(source, cause);
} for (ConditionAndOutcome conditionAndOutcome : sourceOutcomes) {
if (!conditionAndOutcome.getOutcome().isMatch()) {
for (MethodMetadata method : methods) {
results.add(new AutoConfigurationResult(method,
conditionAndOutcome.getOutcome(), source.isMethod()));
} }
} }
} }
......
...@@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.jersey; ...@@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.jersey;
import java.util.Arrays; import java.util.Arrays;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Map.Entry;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.servlet.DispatcherType; import javax.servlet.DispatcherType;
...@@ -181,9 +180,7 @@ public class JerseyAutoConfiguration implements ServletContextAware { ...@@ -181,9 +180,7 @@ public class JerseyAutoConfiguration implements ServletContextAware {
} }
private void addInitParameters(DynamicRegistrationBean<?> registration) { private void addInitParameters(DynamicRegistrationBean<?> registration) {
for (Entry<String, String> entry : this.jersey.getInit().entrySet()) { this.jersey.getInit().forEach(registration::addInitParameter);
registration.addInitParameter(entry.getKey(), entry.getValue());
}
} }
private static String findApplicationPath(ApplicationPath annotation) { private static String findApplicationPath(ApplicationPath annotation) {
......
...@@ -22,6 +22,7 @@ import java.util.Map; ...@@ -22,6 +22,7 @@ import java.util.Map;
import org.springframework.boot.WebApplicationType; import org.springframework.boot.WebApplicationType;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
/** /**
* Mappings between {@link StoreType} and {@code @Configuration}. * Mappings between {@link StoreType} and {@code @Configuration}.
...@@ -31,69 +32,70 @@ import org.springframework.util.Assert; ...@@ -31,69 +32,70 @@ import org.springframework.util.Assert;
*/ */
final class SessionStoreMappings { final class SessionStoreMappings {
private static final Map<StoreType, Map<WebApplicationType, Class<?>>> MAPPINGS; private static final Map<StoreType, Configurations> MAPPINGS;
static { static {
Map<StoreType, Map<WebApplicationType, Class<?>>> mappings = new EnumMap<>( Map<StoreType, Configurations> mappings = new EnumMap<>(StoreType.class);
StoreType.class); mappings.put(StoreType.REDIS, new Configurations(RedisSessionConfiguration.class,
mappings.put(StoreType.REDIS, createMapping(RedisSessionConfiguration.class,
RedisReactiveSessionConfiguration.class)); RedisReactiveSessionConfiguration.class));
mappings.put(StoreType.MONGODB, createMapping(MongoSessionConfiguration.class, mappings.put(StoreType.MONGODB,
MongoReactiveSessionConfiguration.class)); new Configurations(MongoSessionConfiguration.class,
mappings.put(StoreType.JDBC, createMapping(JdbcSessionConfiguration.class)); MongoReactiveSessionConfiguration.class));
mappings.put(StoreType.JDBC,
new Configurations(JdbcSessionConfiguration.class, null));
mappings.put(StoreType.HAZELCAST, mappings.put(StoreType.HAZELCAST,
createMapping(HazelcastSessionConfiguration.class)); new Configurations(HazelcastSessionConfiguration.class, null));
mappings.put(StoreType.NONE, createMapping(NoOpSessionConfiguration.class, mappings.put(StoreType.NONE, new Configurations(NoOpSessionConfiguration.class,
NoOpReactiveSessionConfiguration.class)); NoOpReactiveSessionConfiguration.class));
MAPPINGS = Collections.unmodifiableMap(mappings); MAPPINGS = Collections.unmodifiableMap(mappings);
} }
static Map<WebApplicationType, Class<?>> createMapping( private SessionStoreMappings() {
Class<?> servletConfiguration) {
return createMapping(servletConfiguration, null);
} }
static Map<WebApplicationType, Class<?>> createMapping(Class<?> servletConfiguration, public static String getConfigurationClass(WebApplicationType webApplicationType,
Class<?> reactiveConfiguration) { StoreType sessionStoreType) {
Map<WebApplicationType, Class<?>> mapping = new EnumMap<>( Configurations configurations = MAPPINGS.get(sessionStoreType);
WebApplicationType.class); Assert.state(configurations != null,
mapping.put(WebApplicationType.SERVLET, servletConfiguration); () -> "Unknown session store type " + sessionStoreType);
if (reactiveConfiguration != null) { return configurations.getConfiguration(webApplicationType);
mapping.put(WebApplicationType.REACTIVE, reactiveConfiguration);
}
return mapping;
} }
private SessionStoreMappings() { public static StoreType getType(WebApplicationType webApplicationType,
String configurationClass) {
return MAPPINGS.entrySet().stream()
.filter((entry) -> ObjectUtils.nullSafeEquals(configurationClass,
entry.getValue().getConfiguration(webApplicationType)))
.map(Map.Entry::getKey).findFirst()
.orElseThrow(() -> new IllegalStateException(
"Unknown configuration class " + configurationClass));
} }
static String getConfigurationClass(WebApplicationType webApplicationType, private static class Configurations {
StoreType sessionStoreType) {
Map<WebApplicationType, Class<?>> configurationClasses = MAPPINGS private final Class<?> servletConfiguration;
.get(sessionStoreType);
Assert.state(configurationClasses != null, private final Class<?> reactiveConfiguration;
() -> "Unknown session store type " + sessionStoreType);
Class<?> configurationClass = configurationClasses.get(webApplicationType); Configurations(Class<?> servletConfiguration, Class<?> reactiveConfiguration) {
if (configurationClass == null) { this.servletConfiguration = servletConfiguration;
return null; this.reactiveConfiguration = reactiveConfiguration;
} }
return configurationClass.getName();
}
static StoreType getType(WebApplicationType webApplicationType, public String getConfiguration(WebApplicationType webApplicationType) {
String configurationClassName) { switch (webApplicationType) {
for (Map.Entry<StoreType, Map<WebApplicationType, Class<?>>> storeEntry : MAPPINGS case SERVLET:
.entrySet()) { return getName(this.servletConfiguration);
for (Map.Entry<WebApplicationType, Class<?>> entry : storeEntry.getValue() case REACTIVE:
.entrySet()) { return getName(this.reactiveConfiguration);
if (entry.getKey() == webApplicationType
&& entry.getValue().getName().equals(configurationClassName)) {
return storeEntry.getKey();
}
} }
return null;
}
private String getName(Class<?> configuration) {
return (configuration == null ? null : configuration.getName());
} }
throw new IllegalStateException(
"Unknown configuration class " + configurationClassName);
} }
} }
...@@ -24,7 +24,6 @@ import java.util.Collections; ...@@ -24,7 +24,6 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.ListIterator; import java.util.ListIterator;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional; import java.util.Optional;
import javax.servlet.Servlet; import javax.servlet.Servlet;
...@@ -236,9 +235,7 @@ public class WebMvcAutoConfiguration { ...@@ -236,9 +235,7 @@ public class WebMvcAutoConfiguration {
} }
Map<String, MediaType> mediaTypes = this.mvcProperties.getContentnegotiation() Map<String, MediaType> mediaTypes = this.mvcProperties.getContentnegotiation()
.getMediaTypes(); .getMediaTypes();
for (Entry<String, MediaType> mediaType : mediaTypes.entrySet()) { mediaTypes.forEach(configurer::mediaType);
configurer.mediaType(mediaType.getKey(), mediaType.getValue());
}
} }
@Bean @Bean
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.webservices; ...@@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.webservices;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
...@@ -83,9 +82,7 @@ public class WebServicesAutoConfiguration { ...@@ -83,9 +82,7 @@ public class WebServicesAutoConfiguration {
servlet, urlMapping); servlet, urlMapping);
WebServicesProperties.Servlet servletProperties = this.properties.getServlet(); WebServicesProperties.Servlet servletProperties = this.properties.getServlet();
registration.setLoadOnStartup(servletProperties.getLoadOnStartup()); registration.setLoadOnStartup(servletProperties.getLoadOnStartup());
for (Map.Entry<String, String> entry : servletProperties.getInit().entrySet()) { servletProperties.getInit().forEach(registration::addInitParameter);
registration.addInitParameter(entry.getKey(), entry.getValue());
}
return registration; return registration;
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -20,7 +20,6 @@ import java.net.URI; ...@@ -20,7 +20,6 @@ import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -423,14 +422,8 @@ class ProjectGenerationRequest { ...@@ -423,14 +422,8 @@ class ProjectGenerationRequest {
private static void filter(Map<String, ProjectType> projects, String tag, private static void filter(Map<String, ProjectType> projects, String tag,
String tagValue) { String tagValue) {
for (Iterator<Map.Entry<String, ProjectType>> it = projects.entrySet() projects.entrySet().removeIf(
.iterator(); it.hasNext();) { (entry) -> !tagValue.equals(entry.getValue().getTags().get(tag)));
Map.Entry<String, ProjectType> entry = it.next();
String value = entry.getValue().getTags().get(tag);
if (!tagValue.equals(value)) {
it.remove();
}
}
} }
} }
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -19,7 +19,6 @@ package org.springframework.boot.cli.compiler; ...@@ -19,7 +19,6 @@ package org.springframework.boot.cli.compiler;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import org.codehaus.groovy.ast.ASTNode; import org.codehaus.groovy.ast.ASTNode;
...@@ -68,14 +67,10 @@ public abstract class AnnotatedNodeASTTransformation implements ASTTransformatio ...@@ -68,14 +67,10 @@ public abstract class AnnotatedNodeASTTransformation implements ASTTransformatio
for (ImportNode importNode : module.getStarImports()) { for (ImportNode importNode : module.getStarImports()) {
visitAnnotatedNode(importNode, annotationNodes); visitAnnotatedNode(importNode, annotationNodes);
} }
for (Map.Entry<String, ImportNode> entry : module.getStaticImports() module.getStaticImports().forEach((name,
.entrySet()) { importNode) -> visitAnnotatedNode(importNode, annotationNodes));
visitAnnotatedNode(entry.getValue(), annotationNodes); module.getStaticStarImports().forEach((name,
} importNode) -> visitAnnotatedNode(importNode, annotationNodes));
for (Map.Entry<String, ImportNode> entry : module.getStaticStarImports()
.entrySet()) {
visitAnnotatedNode(entry.getValue(), annotationNodes);
}
for (ClassNode classNode : module.getClasses()) { for (ClassNode classNode : module.getClasses()) {
visitAnnotatedNode(classNode, annotationNodes); visitAnnotatedNode(classNode, annotationNodes);
classNode.visitContents(classVisitor); classNode.visitContents(classVisitor);
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -63,13 +63,13 @@ public class DevToolsSettings { ...@@ -63,13 +63,13 @@ public class DevToolsSettings {
private Map<String, Pattern> getPatterns(Map<?, ?> properties, String prefix) { private Map<String, Pattern> getPatterns(Map<?, ?> properties, String prefix) {
Map<String, Pattern> patterns = new LinkedHashMap<>(); Map<String, Pattern> patterns = new LinkedHashMap<>();
for (Map.Entry<?, ?> entry : properties.entrySet()) { properties.forEach((key, value) -> {
String name = String.valueOf(entry.getKey()); String name = String.valueOf(key);
if (name.startsWith(prefix)) { if (name.startsWith(prefix)) {
Pattern pattern = Pattern.compile((String) entry.getValue()); Pattern pattern = Pattern.compile((String) value);
patterns.put(name, pattern); patterns.put(name, pattern);
} }
} });
return patterns; return patterns;
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -18,13 +18,15 @@ package org.springframework.boot.autoconfigureprocessor; ...@@ -18,13 +18,15 @@ package org.springframework.boot.autoconfigureprocessor;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.RoundEnvironment;
...@@ -156,25 +158,25 @@ public class AutoConfigureAnnotationProcessor extends AbstractProcessor { ...@@ -156,25 +158,25 @@ public class AutoConfigureAnnotationProcessor extends AbstractProcessor {
return result.toString(); return result.toString();
} }
@SuppressWarnings("unchecked")
private List<Object> getValues(AnnotationMirror annotation) { private List<Object> getValues(AnnotationMirror annotation) {
List<Object> result = new ArrayList<>(); return annotation.getElementValues().entrySet().stream()
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : annotation .filter(this::isNameOrValueAttribute).flatMap(this::getValues)
.getElementValues().entrySet()) { .collect(Collectors.toList());
String attributeName = entry.getKey().getSimpleName().toString(); }
if ("name".equals(attributeName) || "value".equals(attributeName)) {
Object value = entry.getValue().getValue(); private boolean isNameOrValueAttribute(Entry<? extends ExecutableElement, ?> entry) {
if (value instanceof List) { String attributeName = entry.getKey().getSimpleName().toString();
for (AnnotationValue annotationValue : (List<AnnotationValue>) value) { return "name".equals(attributeName) || "value".equals(attributeName);
result.add(processValue(annotationValue.getValue())); }
}
} @SuppressWarnings("unchecked")
else { private Stream<Object> getValues(Entry<?, ? extends AnnotationValue> entry) {
result.add(processValue(value)); Object value = entry.getValue().getValue();
} if (value instanceof List) {
} return ((List<AnnotationValue>) value).stream()
.map((annotation) -> processValue(annotation.getValue()));
} }
return result; return Stream.of(processValue(value));
} }
private Object processValue(Object value) { private Object processValue(Object value) {
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -93,17 +93,11 @@ public class SimpleConfigurationMetadataRepository ...@@ -93,17 +93,11 @@ public class SimpleConfigurationMetadataRepository
} }
else { else {
// Merge properties // Merge properties
for (Map.Entry<String, ConfigurationMetadataProperty> entry : group group.getProperties().forEach((name, value) -> putIfAbsent(
.getProperties().entrySet()) { existingGroup.getProperties(), name, value));
putIfAbsent(existingGroup.getProperties(), entry.getKey(),
entry.getValue());
}
// Merge sources // Merge sources
for (Map.Entry<String, ConfigurationMetadataSource> entry : group group.getSources().forEach((name,
.getSources().entrySet()) { value) -> putIfAbsent(existingGroup.getSources(), name, value));
putIfAbsent(existingGroup.getSources(), entry.getKey(),
entry.getValue());
}
} }
} }
......
...@@ -36,7 +36,6 @@ import javax.annotation.processing.RoundEnvironment; ...@@ -36,7 +36,6 @@ import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedAnnotationTypes;
import javax.lang.model.SourceVersion; import javax.lang.model.SourceVersion;
import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.Element; import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind; import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.ExecutableElement;
...@@ -282,10 +281,7 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor ...@@ -282,10 +281,7 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
private void processSimpleTypes(String prefix, TypeElement element, private void processSimpleTypes(String prefix, TypeElement element,
ExecutableElement source, TypeElementMembers members, ExecutableElement source, TypeElementMembers members,
Map<String, Object> fieldValues) { Map<String, Object> fieldValues) {
for (Map.Entry<String, ExecutableElement> entry : members.getPublicGetters() members.getPublicGetters().forEach((name, getter) -> {
.entrySet()) {
String name = entry.getKey();
ExecutableElement getter = entry.getValue();
TypeMirror returnType = getter.getReturnType(); TypeMirror returnType = getter.getReturnType();
ExecutableElement setter = members.getPublicSetter(name, returnType); ExecutableElement setter = members.getPublicSetter(name, returnType);
VariableElement field = members.getFields().get(name); VariableElement field = members.getFields().get(name);
...@@ -305,7 +301,7 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor ...@@ -305,7 +301,7 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
dataType, sourceType, null, description, defaultValue, dataType, sourceType, null, description, defaultValue,
(deprecated ? getItemDeprecation(getter) : null))); (deprecated ? getItemDeprecation(getter) : null)));
} }
} });
} }
private ItemDeprecation getItemDeprecation(ExecutableElement getter) { private ItemDeprecation getItemDeprecation(ExecutableElement getter) {
...@@ -325,11 +321,9 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor ...@@ -325,11 +321,9 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
private void processSimpleLombokTypes(String prefix, TypeElement element, private void processSimpleLombokTypes(String prefix, TypeElement element,
ExecutableElement source, TypeElementMembers members, ExecutableElement source, TypeElementMembers members,
Map<String, Object> fieldValues) { Map<String, Object> fieldValues) {
for (Map.Entry<String, VariableElement> entry : members.getFields().entrySet()) { members.getFields().forEach((name, field) -> {
String name = entry.getKey();
VariableElement field = entry.getValue();
if (!isLombokField(field, element)) { if (!isLombokField(field, element)) {
continue; return;
} }
TypeMirror returnType = field.asType(); TypeMirror returnType = field.asType();
Element returnTypeElement = this.processingEnv.getTypeUtils() Element returnTypeElement = this.processingEnv.getTypeUtils()
...@@ -348,32 +342,27 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor ...@@ -348,32 +342,27 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
dataType, sourceType, null, description, defaultValue, dataType, sourceType, null, description, defaultValue,
(deprecated ? new ItemDeprecation() : null))); (deprecated ? new ItemDeprecation() : null)));
} }
} });
} }
private void processNestedTypes(String prefix, TypeElement element, private void processNestedTypes(String prefix, TypeElement element,
ExecutableElement source, TypeElementMembers members) { ExecutableElement source, TypeElementMembers members) {
for (Map.Entry<String, ExecutableElement> entry : members.getPublicGetters() members.getPublicGetters().forEach((name, getter) -> {
.entrySet()) {
String name = entry.getKey();
ExecutableElement getter = entry.getValue();
VariableElement field = members.getFields().get(name); VariableElement field = members.getFields().get(name);
processNestedType(prefix, element, source, name, getter, field, processNestedType(prefix, element, source, name, getter, field,
getter.getReturnType()); getter.getReturnType());
} });
} }
private void processNestedLombokTypes(String prefix, TypeElement element, private void processNestedLombokTypes(String prefix, TypeElement element,
ExecutableElement source, TypeElementMembers members) { ExecutableElement source, TypeElementMembers members) {
for (Map.Entry<String, VariableElement> entry : members.getFields().entrySet()) { members.getFields().forEach((name, field) -> {
String name = entry.getKey();
VariableElement field = entry.getValue();
if (isLombokField(field, element)) { if (isLombokField(field, element)) {
ExecutableElement getter = members.getPublicGetter(name, field.asType()); ExecutableElement getter = members.getPublicGetter(name, field.asType());
processNestedType(prefix, element, source, name, getter, field, processNestedType(prefix, element, source, name, getter, field,
field.asType()); field.asType());
} }
} });
} }
private boolean isLombokField(VariableElement field, TypeElement element) { private boolean isLombokField(VariableElement field, TypeElement element) {
...@@ -544,11 +533,8 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor ...@@ -544,11 +533,8 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
private Map<String, Object> getAnnotationElementValues(AnnotationMirror annotation) { private Map<String, Object> getAnnotationElementValues(AnnotationMirror annotation) {
Map<String, Object> values = new LinkedHashMap<>(); Map<String, Object> values = new LinkedHashMap<>();
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : annotation annotation.getElementValues().forEach((name, value) -> values
.getElementValues().entrySet()) { .put(name.getSimpleName().toString(), value.getValue()));
values.put(entry.getKey().getSimpleName().toString(),
entry.getValue().getValue());
}
return values; return values;
} }
......
...@@ -78,13 +78,11 @@ class TypeElementMembers { ...@@ -78,13 +78,11 @@ class TypeElementMembers {
processField(field); processField(field);
} }
try { try {
Map<String, Object> fieldValues = this.fieldValuesParser this.fieldValuesParser.getFieldValues(element).forEach((name, value) -> {
.getFieldValues(element); if (!this.fieldValues.containsKey(name)) {
for (Map.Entry<String, Object> entry : fieldValues.entrySet()) { this.fieldValues.put(name, value);
if (!this.fieldValues.containsKey(entry.getKey())) {
this.fieldValues.put(entry.getKey(), entry.getValue());
} }
} });
} }
catch (Exception ex) { catch (Exception ex) {
// continue // continue
......
...@@ -62,9 +62,8 @@ class TypeUtils { ...@@ -62,9 +62,8 @@ class TypeUtils {
static { static {
Map<String, TypeKind> primitives = new HashMap<>(); Map<String, TypeKind> primitives = new HashMap<>();
for (Map.Entry<TypeKind, Class<?>> entry : PRIMITIVE_WRAPPERS.entrySet()) { PRIMITIVE_WRAPPERS.forEach(
primitives.put(entry.getValue().getName(), entry.getKey()); (kind, wrapperClass) -> primitives.put(wrapperClass.getName(), kind));
}
WRAPPER_TO_PRIMITIVE = primitives; WRAPPER_TO_PRIMITIVE = primitives;
} }
......
...@@ -20,7 +20,6 @@ import java.io.File; ...@@ -20,7 +20,6 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import org.gradle.api.Action; import org.gradle.api.Action;
import org.gradle.api.Project; import org.gradle.api.Project;
...@@ -110,9 +109,7 @@ public class BuildInfo extends ConventionTask { ...@@ -110,9 +109,7 @@ public class BuildInfo extends ConventionTask {
private Map<String, String> coerceToStringValues(Map<String, Object> input) { private Map<String, String> coerceToStringValues(Map<String, Object> input) {
Map<String, String> output = new HashMap<>(); Map<String, String> output = new HashMap<>();
for (Entry<String, Object> entry : input.entrySet()) { input.forEach((key, value) -> output.put(key, value.toString()));
output.put(entry.getKey(), entry.getValue().toString());
}
return output; return output;
} }
......
...@@ -22,7 +22,6 @@ import java.io.IOException; ...@@ -22,7 +22,6 @@ import java.io.IOException;
import java.time.Instant; import java.time.Instant;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties; import java.util.Properties;
/** /**
...@@ -79,10 +78,8 @@ public final class BuildPropertiesWriter { ...@@ -79,10 +78,8 @@ public final class BuildPropertiesWriter {
DateTimeFormatter.ISO_INSTANT.format(project.getTime())); DateTimeFormatter.ISO_INSTANT.format(project.getTime()));
} }
if (project.getAdditionalProperties() != null) { if (project.getAdditionalProperties() != null) {
for (Map.Entry<String, String> entry : project.getAdditionalProperties() project.getAdditionalProperties()
.entrySet()) { .forEach((name, value) -> properties.put("build." + name, value));
properties.put("build." + entry.getKey(), entry.getValue());
}
} }
return properties; return properties;
} }
...@@ -118,11 +115,11 @@ public final class BuildPropertiesWriter { ...@@ -118,11 +115,11 @@ public final class BuildPropertiesWriter {
private static void validateAdditionalProperties( private static void validateAdditionalProperties(
Map<String, String> additionalProperties) { Map<String, String> additionalProperties) {
if (additionalProperties != null) { if (additionalProperties != null) {
for (Entry<String, String> property : additionalProperties.entrySet()) { additionalProperties.forEach((name, value) -> {
if (property.getValue() == null) { if (value == null) {
throw new NullAdditionalPropertyValueException(property.getKey()); throw new NullAdditionalPropertyValueException(name);
} }
} });
} }
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -19,7 +19,6 @@ package org.springframework.boot.maven; ...@@ -19,7 +19,6 @@ package org.springframework.boot.maven;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
import java.util.Map.Entry;
import java.util.Properties; import java.util.Properties;
import java.util.jar.JarEntry; import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream; import java.util.jar.JarOutputStream;
...@@ -59,18 +58,17 @@ public class PropertiesMergingResourceTransformer implements ResourceTransformer ...@@ -59,18 +58,17 @@ public class PropertiesMergingResourceTransformer implements ResourceTransformer
} }
@Override @Override
public void processResource(String resource, InputStream is, public void processResource(String resource, InputStream inputStream,
List<Relocator> relocators) throws IOException { List<Relocator> relocators) throws IOException {
Properties properties = new Properties(); Properties properties = new Properties();
properties.load(is); properties.load(inputStream);
is.close(); inputStream.close();
for (Entry<Object, Object> entry : properties.entrySet()) { properties.forEach((name, value) -> process((String) name, (String) value));
String name = (String) entry.getKey(); }
String value = (String) entry.getValue();
String existing = this.data.getProperty(name); private void process(String name, String value) {
this.data.setProperty(name, String existing = this.data.getProperty(name);
existing == null ? value : existing + "," + value); this.data.setProperty(name, (existing == null ? value : existing + "," + value));
}
} }
@Override @Override
......
...@@ -140,13 +140,11 @@ public final class Verify { ...@@ -140,13 +140,11 @@ public final class Verify {
} }
private ZipEntry getEntryStartingWith(String entryName) { private ZipEntry getEntryStartingWith(String entryName) {
for (Map.Entry<String, ZipEntry> entry : this.content.entrySet()) { return this.content.entrySet().stream()
if (entry.getKey().startsWith(entryName)) { .filter(entry -> entry.getKey().startsWith(entryName))
return entry.getValue(); .map(Map.Entry::getValue).findFirst()
} .orElseThrow(() -> new IllegalStateException(
} "Unable to find entry starting with " + entryName));
throw new IllegalStateException(
"Unable to find entry starting with " + entryName);
} }
public boolean hasEntry(String entry) { public boolean hasEntry(String entry) {
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -156,12 +156,11 @@ public abstract class LoggingSystem { ...@@ -156,12 +156,11 @@ public abstract class LoggingSystem {
} }
return get(classLoader, loggingSystem); return get(classLoader, loggingSystem);
} }
for (Map.Entry<String, String> entry : SYSTEMS.entrySet()) { return SYSTEMS.entrySet().stream()
if (ClassUtils.isPresent(entry.getKey(), classLoader)) { .filter((entry) -> ClassUtils.isPresent(entry.getKey(), classLoader))
return get(classLoader, entry.getValue()); .map((entry) -> get(classLoader, entry.getValue())).findFirst()
} .orElseThrow(() -> new IllegalStateException(
} "No suitable logging system located"));
throw new IllegalStateException("No suitable logging system located");
} }
private static LoggingSystem get(ClassLoader classLoader, String loggingSystemClass) { private static LoggingSystem get(ClassLoader classLoader, String loggingSystemClass) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment