1 package org.apache.archiva.redback.rest.services.interceptors;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import org.apache.archiva.redback.policy.PasswordRuleViolationException;
22 import org.apache.archiva.redback.policy.PasswordRuleViolations;
23 import org.apache.archiva.redback.rest.api.model.ErrorMessage;
24 import org.apache.archiva.redback.rest.api.model.RedbackRestError;
25 import org.springframework.stereotype.Service;
26
27 import javax.ws.rs.core.Response;
28 import javax.ws.rs.ext.ExceptionMapper;
29 import javax.ws.rs.ext.Provider;
30 import java.util.ArrayList;
31 import java.util.List;
32
33
34
35
36
37 @Provider
38 @Service( "passwordRuleViolationExceptionMapper" )
39 public class PasswordRuleViolationExceptionMapper
40 implements ExceptionMapper<PasswordRuleViolationException>
41 {
42 public Response toResponse( PasswordRuleViolationException e )
43 {
44 RedbackRestError restError = new RedbackRestError();
45
46 List<ErrorMessage> errorMessages = new ArrayList<ErrorMessage>( e.getViolations().getViolations().size() );
47 for ( PasswordRuleViolations.MessageReference messageReference : e.getViolations().getViolations() )
48 {
49 errorMessages.add( new ErrorMessage( messageReference.getKey(), messageReference.getArgs() ) );
50 }
51 restError.setErrorMessages( errorMessages );
52 Response.ResponseBuilder responseBuilder = Response.status( 500 ).entity( restError );
53 return responseBuilder.build();
54 }
55 }