23
23
import java .util .zip .ZipOutputStream ;
24
24
25
25
/**
26
- * Minimal AppServer with adequate performance for a single user
26
+ * Minimal AppServer with adequate performance for a single user.
27
+ * Uses some older java constructs to support SDK-16
27
28
*
28
29
* @author chrisws
29
30
*/
@@ -83,8 +84,7 @@ private void runServer(final int socketNum, final String token) throws IOExcepti
83
84
try {
84
85
Socket socket = serverSocket .accept ();
85
86
log ("Accepted connection from " + socket .getRemoteSocketAddress ().toString ());
86
- Request request = new Request (socket , token );
87
- THREAD_POOL .submit (request );
87
+ THREAD_POOL .submit (new Request (socket , token ));
88
88
} catch (Exception e ) {
89
89
log ("Server failed" , e );
90
90
}
@@ -98,18 +98,18 @@ public abstract static class AbstractRequest {
98
98
final Socket socket ;
99
99
final String method ;
100
100
final String url ;
101
- final String token ;
101
+ final String requestToken ;
102
+ final String tokenKey ;
102
103
final List <String > headers ;
103
104
final InputStream inputStream ;
104
- final String tokenKey ;
105
105
106
106
public AbstractRequest (Socket socket , String tokenKey ) throws IOException {
107
107
this .socket = socket ;
108
108
this .tokenKey = tokenKey ;
109
109
this .inputStream = socket .getInputStream ();
110
110
this .headers = getHeaders ();
111
- this .token = getToken (headers );
112
- String first = headers .get (0 );
111
+ this .requestToken = getToken (headers );
112
+ String first = headers .size () > 0 ? headers . get (0 ) : null ;
113
113
String [] fields ;
114
114
if (first != null ) {
115
115
fields = first .split ("\\ s" );
@@ -175,7 +175,7 @@ private List<String> getHeaders() throws IOException {
175
175
ByteArrayOutputStream line = new ByteArrayOutputStream (LINE_SIZE );
176
176
final char [] endHeader = {'\r' , '\n' , '\r' , '\n' };
177
177
int index = 0 ;
178
- int firstChar = 0 ;
178
+ int firstChar ;
179
179
for (int b = firstChar = inputStream .read (); b != -1 ; b = inputStream .read ()) {
180
180
if (b == endHeader [index ]) {
181
181
index ++;
@@ -311,11 +311,11 @@ public void run() {
311
311
if (!headers .isEmpty ()) {
312
312
log ("URL: " + url );
313
313
if ("GET" .equals (method )) {
314
- handleGet (getParameters (url ), tokenKey );
314
+ handleGet (getParameters (url ));
315
315
} else if ("POST" .equals (method )) {
316
- handlePost (getPostData (inputStream ), tokenKey );
316
+ handlePost (getPostData (inputStream ));
317
317
} else if ("RUN" .equals (method )) {
318
- handleRun (inputStream , tokenKey );
318
+ handleRun (inputStream );
319
319
} else {
320
320
log ("Invalid request" );
321
321
}
@@ -324,11 +324,11 @@ public void run() {
324
324
log ("request failed" , e );
325
325
}
326
326
finally {
327
- socketCleanup ();
327
+ afterRun ();
328
328
}
329
329
}
330
330
331
- private void socketCleanup () {
331
+ private void afterRun () {
332
332
log ("socket cleanup" );
333
333
try {
334
334
if (socket != null ) {
@@ -412,9 +412,9 @@ private Response handleFileList() throws IOException {
412
412
/**
413
413
* Handler for GET requests
414
414
*/
415
- private void handleGet (Map <String , Collection <String >> parameters , String tokenKey ) throws IOException {
415
+ private void handleGet (Map <String , Collection <String >> parameters ) throws IOException {
416
416
if (url .startsWith ("/api/download?" )) {
417
- if (tokenKey .equals (token )) {
417
+ if (tokenKey .equals (requestToken )) {
418
418
handleDownload (parameters ).send (socket , null );
419
419
} else {
420
420
log ("Invalid token" );
@@ -428,10 +428,10 @@ private void handleGet(Map<String, Collection<String>> parameters, String tokenK
428
428
/**
429
429
* Handler for POST requests
430
430
*/
431
- private void handlePost (Map <String , String > data , String tokenKey ) throws IOException {
431
+ private void handlePost (Map <String , String > data ) throws IOException {
432
432
String userToken = data .get (TOKEN );
433
433
if (userToken == null ) {
434
- userToken = token ;
434
+ userToken = requestToken ;
435
435
}
436
436
log ("userToken=" + userToken );
437
437
if (tokenKey .equals (userToken )) {
@@ -473,8 +473,8 @@ private Response handleRename(Map<String, String> data) throws IOException {
473
473
return result ;
474
474
}
475
475
476
- private void handleRun (InputStream inputStream , String tokenKey ) throws IOException {
477
- if (tokenKey .equals (token )) {
476
+ private void handleRun (InputStream inputStream ) throws IOException {
477
+ if (tokenKey .equals (requestToken )) {
478
478
execStream (inputStream );
479
479
} else {
480
480
log ("Invalid token" );
0 commit comments