src/jdk.management.rest/share/classes/jdk/internal/management/remote/rest/http/HttpResponse.java
author hb
Fri, 19 Jan 2018 13:46:27 +0530
branchjmx-rest-api
changeset 56026 bd531f08d7c7
permissions -rw-r--r--
1. Removed all changes to Java SE APIs 2. Changed module name to jdk.management.rest 3. Rest Adapter invoked via Module service provider 4. changed package name to jdk.internal.management.remote.rest 5. rest module and httpserver module part of platform modules
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56026
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     1
/*
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     2
 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     4
 *
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    10
 *
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    15
 * accompanied this code).
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    16
 *
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    20
 *
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    23
 * questions.
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    24
 */
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    25
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    26
package jdk.internal.management.remote.rest.http;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    27
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    28
import jdk.internal.management.remote.rest.json.JSONObject;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    29
import jdk.internal.management.remote.rest.json.JSONPrimitive;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    30
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    31
import java.io.PrintWriter;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    32
import java.io.StringWriter;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    33
import java.net.HttpURLConnection;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    34
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    35
/**
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    36
 * Container class for standard HTTP reponses. Returns a JSON string for status
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    37
 */
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    38
public class HttpResponse {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    39
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    40
    public static final HttpResponse OK = new HttpResponse(HttpURLConnection.HTTP_OK, "Success");
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    41
    public static final HttpResponse SERVER_ERROR = new HttpResponse(HttpURLConnection.HTTP_INTERNAL_ERROR, "Internal server error");
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    42
    public static final HttpResponse METHOD_NOT_ALLOWED = new HttpResponse(HttpURLConnection.HTTP_BAD_METHOD, "Method not allowed");
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    43
    public static final HttpResponse BAD_REQUEST = new HttpResponse(HttpURLConnection.HTTP_BAD_REQUEST, "Bad request");
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    44
    public static final HttpResponse REQUEST_NOT_FOUND = new HttpResponse(HttpURLConnection.HTTP_NOT_FOUND, "Request not found");
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    45
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    46
    private final int code;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    47
    private final String message;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    48
    private final String body;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    49
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    50
    public HttpResponse(int code, String message) {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    51
        this(code, message, "");
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    52
    }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    53
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    54
    public HttpResponse(String message) {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    55
        this(200,message,"");
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    56
    }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    57
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    58
    public HttpResponse(int code, String message, String detail) {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    59
        this.code = code;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    60
        this.message = message;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    61
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    62
        if (code != HttpURLConnection.HTTP_OK) {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    63
            JSONObject jobj = new JSONObject();
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    64
            jobj.put("status", new JSONPrimitive(code));
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    65
            jobj.put("message", new JSONPrimitive(message));
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    66
            if (detail != null && !detail.isEmpty()) {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    67
                jobj.put("details", new JSONPrimitive(detail));
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    68
            }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    69
            this.body = jobj.toJsonString();
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    70
        } else {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    71
            this.body = message;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    72
        }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    73
    }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    74
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    75
    public HttpResponse(HttpResponse response, String detail) {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    76
        this(response.code, response.message, detail);
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    77
    }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    78
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    79
    public int getCode() {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    80
        return code;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    81
    }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    82
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    83
    public String getBody() {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    84
        return body;
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    85
    }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    86
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    87
    public static String getErrorMessage(Exception ex) {
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    88
        StringWriter sw = new StringWriter();
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    89
        PrintWriter pw = new PrintWriter(sw);
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    90
        ex.printStackTrace(pw);
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    91
        return sw.toString();
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    92
    }
bd531f08d7c7 1. Removed all changes to Java SE APIs
hb
parents:
diff changeset
    93
}