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 java.io.IOException;
23
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServlet;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 public class RedirectionServlet
30 extends HttpServlet
31 {
32
33 private static final long serialVersionUID = 1L;
34
35 private final String targetPath;
36
37 private final int code;
38
39 private final int maxRedirects;
40
41 private int redirectCount = 0;
42
43 private final String myPath;
44
45 public RedirectionServlet( final int code, final String path )
46 {
47 this.code = code;
48 this.targetPath = path;
49 this.maxRedirects = 1;
50 this.myPath = null;
51 }
52
53 public RedirectionServlet( final int code, final String myPath, final String targetPath, final int maxRedirects )
54 {
55 this.code = code;
56 this.myPath = myPath;
57 this.targetPath = targetPath;
58 this.maxRedirects = maxRedirects;
59 }
60
61 public int getRedirectCount()
62 {
63 return redirectCount;
64 }
65
66 @Override
67 protected void service( final HttpServletRequest req, final HttpServletResponse resp )
68 throws ServletException, IOException
69 {
70 redirectCount++;
71
72 if ( myPath == null )
73 {
74 resp.setStatus( code );
75 resp.setHeader( "Location", targetPath );
76 }
77 else if ( maxRedirects < 0 )
78 {
79 resp.setStatus( code );
80 resp.setHeader( "Location", myPath );
81 }
82 else if ( redirectCount <= maxRedirects )
83 {
84 resp.setStatus( code );
85 resp.setHeader( "Location", myPath );
86 }
87 else
88 {
89 resp.setStatus( code );
90 resp.setHeader( "Location", targetPath );
91 }
92 }
93
94 }