• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2007 Netflix, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package net.oauth;
18 
19 import java.util.HashMap;
20 import java.util.Map;
21 import net.oauth.http.HttpMessage;
22 import net.oauth.http.HttpResponseMessage;
23 
24 /**
25  * Describes an OAuth-related problem, using a set of named parameters. One
26  * parameter identifies the basic problem, and the others provide supplementary
27  * diagnostic information. This can be used to capture information from a
28  * response that conforms to the OAuth <a
29  * href="http://wiki.oauth.net/ProblemReporting">Problem Reporting
30  * extension</a>.
31  *
32  * @author John Kristian
33  * @hide
34  */
35 public class OAuthProblemException extends OAuthException {
36 
37     public static final String OAUTH_PROBLEM = "oauth_problem";
38 
OAuthProblemException()39     public OAuthProblemException() {
40     }
41 
OAuthProblemException(String problem)42     public OAuthProblemException(String problem) {
43         super(problem);
44         if (problem != null) {
45             parameters.put(OAUTH_PROBLEM, problem);
46         }
47     }
48 
49     private final Map<String, Object> parameters = new HashMap<String, Object>();
50 
51     @Override
getMessage()52     public String getMessage() {
53         String msg = super.getMessage();
54         if (msg != null)
55             return msg;
56         msg = getProblem();
57         if (msg != null)
58             return msg;
59         Object response = getParameters().get(HttpMessage.RESPONSE);
60         if (response != null) {
61             msg = response.toString();
62             int eol = msg.indexOf("\n");
63             if (eol < 0) {
64                 eol = msg.indexOf("\r");
65             }
66             if (eol >= 0) {
67                 msg = msg.substring(0, eol);
68             }
69             msg = msg.trim();
70             if (msg.length() > 0) {
71                 return msg;
72             }
73         }
74         response = getHttpStatusCode();
75         if (response != null) {
76             return HttpResponseMessage.STATUS_CODE + " " + response;
77         }
78         return null;
79     }
80 
setParameter(String name, Object value)81     public void setParameter(String name, Object value) {
82         getParameters().put(name, value);
83     }
84 
getParameters()85     public Map<String, Object> getParameters() {
86         return parameters;
87     }
88 
getProblem()89     public String getProblem() {
90         return (String) getParameters().get(OAUTH_PROBLEM);
91     }
92 
getHttpStatusCode()93     public int getHttpStatusCode() {
94         Object code = getParameters().get(HttpResponseMessage.STATUS_CODE);
95         if (code == null) {
96             return 200;
97         } else if (code instanceof Number) { // the usual case
98             return ((Number) code).intValue();
99         } else {
100             return Integer.parseInt(code.toString());
101         }
102     }
103 
104     private static final long serialVersionUID = 1L;
105 
106 }
107