Project Report: fawkez

Packagesummary org.jcoderz.commons.connector.http.transport

org.jcoderz.commons.connector.http.transport.Terminator

LineHitsNoteSource
1  /*
2   * $Id: Terminator.java 1011 2008-06-16 17:57:36Z amandel $
3   *
4   * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5   *
6   * Redistribution and use in source and binary forms, with or without
7   * modification, are permitted provided that the following conditions are
8   * met:
9   *
10   *    * Redistributions of source code must retain the above copyright
11   *      notice, this list of conditions and the following disclaimer.
12   *    * Redistributions in binary form must reproduce the above
13   *      copyright notice, this list of conditions and the following
14   *      disclaimer in the documentation and/or other materials
15   *      provided with the distribution.
16   *    * Neither the name of the jCoderZ.org Project nor the names of
17   *      its contributors may be used to endorse or promote products
18   *      derived from this software without specific prior written
19   *      permission.
20   *
21   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30   * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32   */
33  package org.jcoderz.commons.connector.http.transport;
34  
35  import java.io.IOException;
36  import java.io.InputStream;
37  
38  /**
39   * Class for stopping the server.
40   */
41 (1)public class Terminator
42        extends Thread
43  {
44     private final SimpleServer mServer;
45  
46     /**
47      * Constructor.
48      * @param server
49    * the server to stop
50      */
51     public Terminator (SimpleServer server)
52100    {
53100       mServer = server;
54100(2)      start();
55100    }
56  
57     /**
58      * Starting terminator thread.
59      */
60     public void run ()
61     {
620       waitForQuit ();
630       mServer.doStop();
640    }
65  
66     /**
67      * Waits for the user to enter Q or q (followed by a return).
68      *
69      * @return int
70      *          the exit status (nonzero indicates abnormal termination)
71      */
72     public int waitForQuit ()
73     {
74100       final InputStream in = System.in;
75100       char answer = '\0';
76100       int exitResult = 0;
77  
78        //System.out.print("\'q' for Quit: ");
79100       while (!((answer == 'q') || (answer == 'Q')))
80        {
81           try
82           {
83100             final int n = in.available();
84100             if (n > 0)
85              {
860                final byte[] b = new byte[n];
870                final int result = in.read(b);
880                if (result == -1)
89                 {
900                   in.close();
910                   break;
92                 }
930                answer = new String(b).charAt(0);
94              }
95100             if (interrupted())
96              {
970                in.close();
980                break;
99              }
100           }
1010          catch (IOException e)
102           {
1030(3)            e.printStackTrace();
1040             exitResult = 1;
10550          }
106        }
1070       return exitResult;
108     }
109  }
110  

Findings in this File

c (1) 41 : 0 Type Javadoc comment is missing an @author tag.
i (2) 54 : 0 new org.jcoderz.commons.connector.http.transport.Terminator(SimpleServer) invokes org.jcoderz.commons.connector.http.transport.Terminator.start() (test code) Decreased severity from 'warning' for testcode.
d (3) 103 : 13 Avoid printStackTrace(); use a logger call instead.