diff --git a/src/main/java/org/springframework/hateoas/core/MethodParameters.java b/src/main/java/org/springframework/hateoas/core/MethodParameters.java index b130c408..cefef4c7 100644 --- a/src/main/java/org/springframework/hateoas/core/MethodParameters.java +++ b/src/main/java/org/springframework/hateoas/core/MethodParameters.java @@ -17,9 +17,11 @@ package org.springframework.hateoas.core; import java.lang.annotation.Annotation; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.IntStream; import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.MethodParameter; @@ -59,14 +61,11 @@ public class MethodParameters { public MethodParameters(Method method, AnnotationAttribute namingAnnotation) { Assert.notNull(method, "Method must not be null!"); - this.parameters = new ArrayList<>(); - for (int i = 0; i < method.getParameterTypes().length; i++) { - - MethodParameter parameter = new AnnotationNamingMethodParameter(method, i, namingAnnotation); - parameter.initParameterNameDiscovery(DISCOVERER); - parameters.add(parameter); - } + this.parameters = IntStream.range(0, method.getParameterTypes().length) // + .mapToObj(it -> new AnnotationNamingMethodParameter(method, it, namingAnnotation)) // + .peek(it -> it.initParameterNameDiscovery(DISCOVERER)) // + .collect(Collectors.toList()); } /** @@ -84,17 +83,13 @@ public class MethodParameters { * @param name must not be {@literal null} or empty. * @return */ - public MethodParameter getParameter(String name) { + public Optional getParameter(String name) { Assert.hasText(name, "Parameter name must not be null!"); - for (MethodParameter parameter : parameters) { - if (name.equals(parameter.getParameterName())) { - return parameter; - } - } - - return null; + return getParameters().stream() // + .filter(it -> name.equals(it.getParameterName())) // + .findFirst(); } /** @@ -107,15 +102,10 @@ public class MethodParameters { public List getParametersOfType(Class type) { Assert.notNull(type, "Type must not be null!"); - List result = new ArrayList<>(); - for (MethodParameter parameter : getParameters()) { - if (parameter.getParameterType().equals(type)) { - result.add(parameter); - } - } - - return result; + return getParameters().stream() // + .filter(it -> it.getParameterType().equals(type)) // + .collect(Collectors.toList()); } /** @@ -129,15 +119,10 @@ public class MethodParameters { return parametersWithAnnotationCache.computeIfAbsent(annotation, key -> { Assert.notNull(annotation, "Annotation must not be null!"); - List result = new ArrayList<>(); - for (MethodParameter parameter : getParameters()) { - if (parameter.hasParameterAnnotation(annotation)) { - result.add(parameter); - } - } - - return result; + return getParameters().stream()// + .filter(it -> it.hasParameterAnnotation(annotation))// + .collect(Collectors.toList()); }); } diff --git a/src/main/java/org/springframework/hateoas/hal/DefaultCurieProvider.java b/src/main/java/org/springframework/hateoas/hal/DefaultCurieProvider.java index 99c26d78..03248044 100644 --- a/src/main/java/org/springframework/hateoas/hal/DefaultCurieProvider.java +++ b/src/main/java/org/springframework/hateoas/hal/DefaultCurieProvider.java @@ -15,11 +15,13 @@ */ package org.springframework.hateoas.hal; -import java.util.ArrayList; +import lombok.Getter; + import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import org.springframework.hateoas.IanaRels; import org.springframework.hateoas.Link; @@ -97,9 +99,9 @@ public class DefaultCurieProvider implements CurieProvider { @Override public Collection getCurieInformation(Links links) { - List result = new ArrayList<>(curies.size()); - - curies.forEach((name, template) -> result.add(new Curie(name, getCurieHref(name, template)))); + List result = curies.entrySet().stream() // + .map(it -> new Curie(it.getKey(), getCurieHref(it.getKey(), it.getValue()))) // + .collect(Collectors.toList()); return Collections.unmodifiableCollection(result); } @@ -151,16 +153,12 @@ public class DefaultCurieProvider implements CurieProvider { private static final long serialVersionUID = 1L; - private final String name; + private final @Getter String name; public Curie(String name, String href) { super(href, "curies"); this.name = name; } - - public String getName() { - return name; - } } } diff --git a/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java b/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java index 4ee37b8b..38193f97 100644 --- a/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java +++ b/src/main/java/org/springframework/hateoas/hal/Jackson2HalModule.java @@ -179,7 +179,9 @@ public class Jackson2HalModule extends SimpleModule { curiedLinkPresent = true; } - sortedLinks.computeIfAbsent(rel, key -> new ArrayList<>()).add(toHalLink(link)); + sortedLinks // + .computeIfAbsent(rel, key -> new ArrayList<>())// + .add(toHalLink(link)); links.add(link); } diff --git a/src/test/java/org/springframework/hateoas/core/MethodParametersUnitTest.java b/src/test/java/org/springframework/hateoas/core/MethodParametersUnitTest.java index f5e89667..d12280e1 100755 --- a/src/test/java/org/springframework/hateoas/core/MethodParametersUnitTest.java +++ b/src/test/java/org/springframework/hateoas/core/MethodParametersUnitTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2014 the original author or authors. + * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,9 +37,9 @@ public class MethodParametersUnitTest { Method method = Sample.class.getMethod("method", String.class, String.class, Object.class); MethodParameters parameters = new MethodParameters(method, new AnnotationAttribute(Qualifier.class)); - assertThat(parameters.getParameter("param")).isNotNull(); - assertThat(parameters.getParameter("foo")).isNotNull(); - assertThat(parameters.getParameter("another")).isNull(); + assertThat(parameters.getParameter("param")).isPresent(); + assertThat(parameters.getParameter("foo")).isPresent(); + assertThat(parameters.getParameter("another")).isNotPresent(); } /**