diff --git a/pom.xml b/pom.xml index 383ed6186d..e0e4646e9b 100644 --- a/pom.xml +++ b/pom.xml @@ -485,6 +485,7 @@ see https://blogs.oracle.com/darcy/entry/bootclasspath_older_source --> -Xlint:unchecked,-options + -parameters @@ -757,7 +758,7 @@ 4.0 - 1.4.0 + 1.4.2 9.2.10.v20150310 diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java index 0683a1d17b..4c111e6707 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java @@ -71,7 +71,7 @@ public class GroupCollectionResource { /** * Creates a new group. - * @param groupDto The group to be created. + * @param group The group to be created. * @return A response with the link to the new group (if created successfully). */ @POST @@ -86,9 +86,9 @@ public class GroupCollectionResource { }) @TypeHint(TypeHint.NO_CONTENT.class) @ResponseHeaders(@ResponseHeader(name = "Location", description = "uri to the created group")) - public Response create(@Valid @Named("group") GroupDto groupDto) { - return adapter.create(groupDto, - () -> dtoToGroupMapper.map(groupDto), - group -> resourceLinks.group().self(group.getName())); + public Response create(@Valid GroupDto group) { + return adapter.create(group, + () -> dtoToGroupMapper.map(group), + g -> resourceLinks.group().self(g.getName())); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java index 88954212f6..6d0b921d02 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java @@ -83,7 +83,7 @@ public class GroupResource { * Note: This method requires "group" privilege. * * @param name name of the group to be modified - * @param groupDto group object to modify + * @param group group object to modify */ @PUT @Path("") @@ -97,7 +97,7 @@ public class GroupResource { @ResponseCode(code = 500, condition = "internal server error") }) @TypeHint(TypeHint.NO_CONTENT.class) - public Response update(@PathParam("id") String name, @Valid @Named("group") GroupDto groupDto) { - return adapter.update(name, existing -> dtoToGroupMapper.map(groupDto)); + public Response update(@PathParam("id") String name, @Valid GroupDto group) { + return adapter.update(name, existing -> dtoToGroupMapper.map(group)); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java index 62917da8b0..20fc35923c 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java @@ -74,8 +74,8 @@ public class MeResource { }) @TypeHint(TypeHint.NO_CONTENT.class) @Consumes(VndMediaType.PASSWORD_CHANGE) - public Response changePassword(@Valid @Named("passwordChange") PasswordChangeDto passwordChangeDto) { - userManager.changePasswordForLoggedInUser(passwordService.encryptPassword(passwordChangeDto.getOldPassword()), passwordService.encryptPassword(passwordChangeDto.getNewPassword())); + public Response changePassword(@Valid PasswordChangeDto passwordChange) { + userManager.changePasswordForLoggedInUser(passwordService.encryptPassword(passwordChange.getOldPassword()), passwordService.encryptPassword(passwordChange.getNewPassword())); return Response.noContent().build(); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java index 9359746f1e..9335e2b2df 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java @@ -74,7 +74,7 @@ public class PermissionRootResource { @TypeHint(TypeHint.NO_CONTENT.class) @Consumes(VndMediaType.PERMISSION) @Path("") - public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name,@Valid @Named("permission") PermissionDto permission) { + public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name,@Valid PermissionDto permission) { log.info("try to add new permission: {}", permission); Repository repository = load(namespace, name); RepositoryPermissions.permissionWrite(repository).check(); @@ -161,7 +161,7 @@ public class PermissionRootResource { public Response update(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("permission-name") String permissionName, - @Valid @Named("permission") PermissionDto permission) { + @Valid PermissionDto permission) { log.info("try to update the permission with name: {}. the modified permission is: {}", permissionName, permission); Repository repository = load(namespace, name); RepositoryPermissions.permissionWrite(repository).check(); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java index d109714ebe..ad9c29f14e 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java @@ -72,7 +72,7 @@ public class RepositoryCollectionResource { * Note: This method requires "repository" privilege. The namespace of the given repository will * be ignored and set by the configured namespace strategy. * - * @param repositoryDto The repository to be created. + * @param repository The repository to be created. * @return A response with the link to the new repository (if created successfully). */ @POST @@ -87,9 +87,9 @@ public class RepositoryCollectionResource { }) @TypeHint(TypeHint.NO_CONTENT.class) @ResponseHeaders(@ResponseHeader(name = "Location", description = "uri to the created repository")) - public Response create(@Valid @Named("repository") RepositoryDto repositoryDto) { - return adapter.create(repositoryDto, - () -> dtoToRepositoryMapper.map(repositoryDto, null), - repository -> resourceLinks.repository().self(repository.getNamespace(), repository.getName())); + public Response create(@Valid RepositoryDto repository) { + return adapter.create(repository, + () -> dtoToRepositoryMapper.map(repository, null), + r -> resourceLinks.repository().self(r.getNamespace(), r.getName())); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java index 75615784ba..f65235db0b 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java @@ -126,7 +126,7 @@ public class RepositoryResource { * * @param namespace the namespace of the repository to be modified * @param name the name of the repository to be modified - * @param repositoryDto repository object to modify + * @param repository repository object to modify */ @PUT @Path("") @@ -140,10 +140,10 @@ public class RepositoryResource { @ResponseCode(code = 500, condition = "internal server error") }) @TypeHint(TypeHint.NO_CONTENT.class) - public Response update(@PathParam("namespace") String namespace, @PathParam("name") String name, @Valid @Named("repository") RepositoryDto repositoryDto) { + public Response update(@PathParam("namespace") String namespace, @PathParam("name") String name, @Valid RepositoryDto repository) { return adapter.update( loadBy(namespace, name), - existing -> processUpdate(repositoryDto, existing), + existing -> processUpdate(repository, existing), nameAndNamespaceStaysTheSame(namespace, name) ); } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceParameterNameProvider.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceParameterNameProvider.java deleted file mode 100644 index 986a3ca652..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceParameterNameProvider.java +++ /dev/null @@ -1,29 +0,0 @@ -package sonia.scm.api.v2.resources; - -import javax.inject.Named; -import javax.validation.ParameterNameProvider; -import javax.ws.rs.ext.Provider; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.lang.reflect.Parameter; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -@Provider -public class ResourceParameterNameProvider implements ParameterNameProvider { - @Override - public List getParameterNames(Constructor constructor) { - return Arrays.stream(constructor.getParameters()).map(this::getParameterName).collect(Collectors.toList()); - } - - @Override - public List getParameterNames(Method method) { - return Arrays.stream(method.getParameters()).map(this::getParameterName).collect(Collectors.toList()); - } - - private String getParameterName(Parameter parameter) { - return Optional.ofNullable(parameter.getAnnotation(Named.class)).map(Named::value).orElse(parameter.getName()); - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java index c19e6b35ba..a4fe9adb94 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java @@ -76,7 +76,7 @@ public class UserCollectionResource { * * Note: This method requires "user" privilege. * - * @param userDto The user to be created. + * @param user The user to be created. * @return A response with the link to the new user (if created successfully). */ @POST @@ -91,7 +91,7 @@ public class UserCollectionResource { }) @TypeHint(TypeHint.NO_CONTENT.class) @ResponseHeaders(@ResponseHeader(name = "Location", description = "uri to the created user")) - public Response create(@Valid @Named("user") UserDto userDto) { - return adapter.create(userDto, () -> dtoToUserMapper.map(userDto, passwordService.encryptPassword(userDto.getPassword())), user -> resourceLinks.user().self(user.getName())); + public Response create(@Valid UserDto user) { + return adapter.create(user, () -> dtoToUserMapper.map(user, passwordService.encryptPassword(user.getPassword())), u -> resourceLinks.user().self(u.getName())); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java index 565cc48eb9..0076d057ca 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java @@ -87,7 +87,7 @@ public class UserResource { * Note: This method requires "user" privilege. * * @param name name of the user to be modified - * @param userDto user object to modify + * @param user user object to modify */ @PUT @Path("") @@ -101,8 +101,8 @@ public class UserResource { @ResponseCode(code = 500, condition = "internal server error") }) @TypeHint(TypeHint.NO_CONTENT.class) - public Response update(@PathParam("id") String name, @Valid @Named("user") UserDto userDto) { - return adapter.update(name, existing -> dtoToUserMapper.map(userDto, existing.getPassword())); + public Response update(@PathParam("id") String name, @Valid UserDto user) { + return adapter.update(name, existing -> dtoToUserMapper.map(user, existing.getPassword())); } /** @@ -114,7 +114,7 @@ public class UserResource { * Note: This method requires "user:changeOwnPassword" privilege to modify the own password. * * @param name name of the user to be modified - * @param passwordOverwriteDto change password object to modify password. the old password is here not required + * @param passwordOverwrite change password object to modify password. the old password is here not required */ @PUT @Path("password") @@ -128,8 +128,8 @@ public class UserResource { @ResponseCode(code = 500, condition = "internal server error") }) @TypeHint(TypeHint.NO_CONTENT.class) - public Response overwritePassword(@PathParam("id") String name, @Valid @Named("passwordChange") PasswordOverwriteDto passwordOverwriteDto) { - userManager.overwritePassword(name, passwordService.encryptPassword(passwordOverwriteDto.getNewPassword())); + public Response overwritePassword(@PathParam("id") String name, @Valid PasswordOverwriteDto passwordOverwrite) { + userManager.overwritePassword(name, passwordService.encryptPassword(passwordOverwrite.getNewPassword())); return Response.noContent().build(); } } diff --git a/scm-webapp/src/main/resources/META-INF/validation.xml b/scm-webapp/src/main/resources/META-INF/validation.xml index b6feda4713..337bbff26e 100644 --- a/scm-webapp/src/main/resources/META-INF/validation.xml +++ b/scm-webapp/src/main/resources/META-INF/validation.xml @@ -1,14 +1,9 @@ - - org.hibernate.validator.HibernateValidator - org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator - org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver - org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorFactoryImpl - sonia.scm.api.v2.resources.ResourceParameterNameProvider + + org.hibernate.validator.parameternameprovider.ReflectionParameterNameProvider +