1 package org.apache.maven.wagon.tck.http.fixture;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import javax.servlet.ServletException;
23 import javax.servlet.http.HttpServlet;
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26 import java.io.IOException;
27
28
29
30
31 public class RedirectionServlet
32 extends HttpServlet
33 {
34
35 private static final long serialVersionUID = 1L;
36
37 private final String targetPath;
38
39 private final int code;
40
41 private final int maxRedirects;
42
43 private int redirectCount = 0;
44
45 private final String myPath;
46
47 public RedirectionServlet( final int code, final String targetPath )
48 {
49 this.code = code;
50 this.targetPath = targetPath;
51 this.maxRedirects = 1;
52 this.myPath = null;
53 }
54
55 public RedirectionServlet( final int code, final String myPath, final String targetPath, final int maxRedirects )
56 {
57 this.code = code;
58 this.myPath = myPath;
59 this.targetPath = targetPath;
60 this.maxRedirects = maxRedirects;
61 }
62
63 public int getRedirectCount()
64 {
65 return redirectCount;
66 }
67
68 @Override
69 protected void service( final HttpServletRequest req, final HttpServletResponse resp )
70 throws ServletException, IOException
71 {
72 redirectCount++;
73
74 if ( myPath == null )
75 {
76 resp.setStatus( code );
77 resp.setHeader( "Location", targetPath );
78 }
79 else if ( maxRedirects < 0 )
80 {
81 resp.setStatus( code );
82 resp.setHeader( "Location", myPath );
83 }
84 else if ( redirectCount <= maxRedirects )
85 {
86 resp.setStatus( code );
87 resp.setHeader( "Location", myPath + "/" + redirectCount );
88 }
89 else
90 {
91 resp.setStatus( code );
92 resp.setHeader( "Location", targetPath );
93 }
94 }
95
96 }