1 /*
2  * Hibernate Validator, declare and validate application constraints
3  *
4  * License: Apache License, Version 2.0
5  * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
6  */

7 package org.hibernate.validator.internal.engine;
8
9 import java.lang.reflect.Constructor;
10 import java.lang.reflect.Executable;
11 import java.lang.reflect.Method;
12 import java.lang.reflect.Parameter;
13 import java.util.ArrayList;
14 import java.util.Collections;
15 import java.util.List;
16
17 import javax.validation.ParameterNameProvider;
18
19 /**
20  * A default {@link ParameterNameProvider} implementation which returns parameter names obtained from the Java
21  * reflection API as mandated by the BV specification.
22  *
23  * @author Hardy Ferentschik
24  * @author Gunnar Morling
25  */

26 public class DefaultParameterNameProvider implements ParameterNameProvider {
27
28     @Override
29     public List<String> getParameterNames(Constructor<?> constructor) {
30         return doGetParameterNames( constructor );
31     }
32
33     @Override
34     public List<String> getParameterNames(Method method) {
35         return doGetParameterNames( method );
36     }
37
38     private List<String> doGetParameterNames(Executable executable) {
39         Parameter[] parameters = executable.getParameters();
40         List<String> parameterNames = new ArrayList<>( parameters.length );
41
42         for ( Parameter parameter : parameters ) {
43             parameterNames.add( parameter.getName() );
44         }
45
46         return Collections.unmodifiableList( parameterNames );
47     }
48 }
49