5
5
import main .exceptions .AqualityQueryParameterException ;
6
6
import main .model .dto .DtoMapperGeneral ;
7
7
import org .jetbrains .annotations .NotNull ;
8
- import org .jetbrains .annotations .Nullable ;
9
8
10
9
import javax .naming .AuthenticationException ;
11
10
import javax .servlet .ServletContext ;
14
13
import javax .servlet .http .HttpServletResponse ;
15
14
import java .io .*;
16
15
import java .net .URLDecoder ;
17
- import java .sql .SQLException ;
18
16
import java .util .Objects ;
19
17
import java .util .logging .Logger ;
20
18
21
19
import static java .nio .charset .StandardCharsets .*;
22
20
import static javax .ws .rs .core .MediaType .*;
23
21
24
- public class BaseServlet extends HttpServlet {
22
+ public class BaseServlet extends HttpServlet {
25
23
protected static Logger log = Logger .getLogger (BaseServlet .class .getName ());
26
24
protected DtoMapperGeneral mapper = new DtoMapperGeneral ();
25
+ protected static final String PROJECT_ID_KEY = "project_id" ;
27
26
28
27
protected Session createSession (HttpServletRequest req ) throws AqualityException , AuthenticationException {
29
28
String importToken = getStringQueryParameter (req , "importToken" );
@@ -47,7 +46,7 @@ private String replacer(String value) {
47
46
return data ;
48
47
}
49
48
50
- protected String getRequestJson (@ NotNull HttpServletRequest req ){
49
+ protected String getRequestJson (@ NotNull HttpServletRequest req ) {
51
50
try {
52
51
req .setCharacterEncoding (UTF_8 .toString ());
53
52
} catch (UnsupportedEncodingException e ) {
@@ -66,23 +65,39 @@ protected String getRequestJson(@NotNull HttpServletRequest req){
66
65
return replacer (sb .toString ());
67
66
}
68
67
69
- protected String getStringQueryParameter (@ NotNull HttpServletRequest req , String name ){
68
+ protected String getStringQueryParameter (@ NotNull HttpServletRequest req , String name ) {
70
69
return (req .getParameterMap ().containsKey (name ) && !req .getParameter (name ).equals ("" ))
71
70
? req .getParameter (name )
72
71
: null ;
73
72
}
74
73
75
- protected Integer getIntegerQueryParameter (@ NotNull HttpServletRequest req , String name ){
74
+ protected Integer getIntegerQueryParameter (@ NotNull HttpServletRequest req , String name ) {
76
75
return (req .getParameterMap ().containsKey (name ) && !req .getParameter (name ).equals ("" ))
77
76
? Integer .parseInt (req .getParameter (name ))
78
77
: null ;
79
78
}
80
79
81
- protected Boolean getBooleanQueryParameter (@ NotNull HttpServletRequest req , String name ){
80
+ protected Integer validateAndGetProjectId (@ NotNull HttpServletRequest req ) throws AqualityException {
81
+ return getProjectId (req , true );
82
+ }
83
+
84
+ protected Integer getProjectId (@ NotNull HttpServletRequest req , Boolean withValidation ) throws AqualityException {
85
+
86
+ Integer projectId = (req .getParameterMap ().containsKey (PROJECT_ID_KEY ) && !req .getParameter (PROJECT_ID_KEY ).isEmpty ())
87
+ ? getIntegerQueryParameter (req , PROJECT_ID_KEY )
88
+ : null ;
89
+ if (projectId == null && withValidation ) {
90
+ throw new AqualityException ("Project id is not defined!" );
91
+ }
92
+
93
+ return projectId ;
94
+ }
95
+
96
+ protected Boolean getBooleanQueryParameter (@ NotNull HttpServletRequest req , String name ) {
82
97
return (req .getParameterMap ().containsKey (name ) && !req .getParameter (name ).equals ("" )) && Boolean .parseBoolean (req .getParameter (name ));
83
98
}
84
99
85
- protected void setPostResponseHeaders (@ NotNull HttpServletResponse resp ){
100
+ protected void setPostResponseHeaders (@ NotNull HttpServletResponse resp ) {
86
101
resp .addHeader ("Access-Control-Allow-Methods" , "Post" );
87
102
resp .addHeader ("Access-Control-Allow-Origin" , "*" );
88
103
resp .addHeader ("Access-Control-Allow-Headers" , "Authorization" );
@@ -91,15 +106,15 @@ protected void setPostResponseHeaders(@NotNull HttpServletResponse resp){
91
106
resp .addHeader ("Access-Control-Allow-Headers" , "ErrorMessage" );
92
107
}
93
108
94
- protected void setEncoding (@ NotNull HttpServletResponse resp ){
109
+ protected void setEncoding (@ NotNull HttpServletResponse resp ) {
95
110
resp .setCharacterEncoding (UTF_8 .name ());
96
111
}
97
112
98
- protected void setJSONContentType (@ NotNull HttpServletResponse resp ){
113
+ protected void setJSONContentType (@ NotNull HttpServletResponse resp ) {
99
114
resp .setContentType (APPLICATION_JSON );
100
115
}
101
116
102
- protected void setDeleteResponseHeaders (@ NotNull HttpServletResponse resp ){
117
+ protected void setDeleteResponseHeaders (@ NotNull HttpServletResponse resp ) {
103
118
resp .addHeader ("Access-Control-Allow-Methods" , "Delete" );
104
119
resp .addHeader ("Access-Control-Allow-Origin" , "*" );
105
120
resp .addHeader ("Access-Control-Allow-Headers" , "Authorization" );
@@ -108,7 +123,7 @@ protected void setDeleteResponseHeaders(@NotNull HttpServletResponse resp){
108
123
resp .addHeader ("Access-Control-Allow-Headers" , "ErrorMessage" );
109
124
}
110
125
111
- protected void setGetResponseHeaders (@ NotNull HttpServletResponse resp ){
126
+ protected void setGetResponseHeaders (@ NotNull HttpServletResponse resp ) {
112
127
resp .addHeader ("Access-Control-Allow-Methods" , "Get" );
113
128
resp .addHeader ("Access-Control-Allow-Origin" , "*" );
114
129
resp .addHeader ("Access-Control-Allow-Headers" , "Authorization" );
@@ -119,7 +134,7 @@ protected void setGetResponseHeaders(@NotNull HttpServletResponse resp){
119
134
resp .addHeader ("Access-Control-Allow-Headers" , "Content-Disposition" );
120
135
}
121
136
122
- protected void setOptionsResponseHeaders (@ NotNull HttpServletResponse resp ){
137
+ protected void setOptionsResponseHeaders (@ NotNull HttpServletResponse resp ) {
123
138
resp .addHeader ("Access-Control-Allow-Methods" , "GET, POST, OPTIONS, PUT, DELETE" );
124
139
resp .addHeader ("Access-Control-Allow-Origin" , "*" );
125
140
resp .addHeader ("Access-Control-Allow-Headers" , "Authorization, authorization, ErrorMessage, Disposition" );
@@ -129,23 +144,23 @@ protected void setOptionsResponseHeaders(@NotNull HttpServletResponse resp){
129
144
resp .setStatus (204 );
130
145
}
131
146
132
- private void setAuthorizationProblem (@ NotNull HttpServletResponse resp , @ NotNull Exception e ){
147
+ private void setAuthorizationProblem (@ NotNull HttpServletResponse resp , @ NotNull Exception e ) {
133
148
resp .setStatus (401 );
134
149
resp .addHeader ("ErrorMessage" , !Objects .equals (e .getMessage (), "" ) ? e .getMessage () : "Are you sure you logged in?" );
135
150
}
136
151
137
- protected void setAuthorizationProblem (@ NotNull HttpServletResponse resp ){
152
+ protected void setAuthorizationProblem (@ NotNull HttpServletResponse resp ) {
138
153
resp .setStatus (401 );
139
154
resp .addHeader ("ErrorMessage" , "Are you sure you logged in?" );
140
155
}
141
156
142
- protected void setErrorHeader (@ NotNull HttpServletResponse resp , String errorMessage ){
157
+ protected void setErrorHeader (@ NotNull HttpServletResponse resp , String errorMessage ) {
143
158
resp .addHeader ("ErrorMessage" , errorMessage );
144
159
}
145
160
146
161
private String getSessionId (@ NotNull HttpServletRequest req ) throws AqualityException , AuthenticationException {
147
162
String header = req .getHeader ("Authorization" );
148
- if (header != null ){
163
+ if (header != null ) {
149
164
validateAuthHeader (header );
150
165
String [] strings = header .split (" " );
151
166
return strings [1 ];
@@ -154,7 +169,7 @@ private String getSessionId(@NotNull HttpServletRequest req) throws AqualityExce
154
169
}
155
170
156
171
private void validateAuthHeader (String header ) throws AqualityException {
157
- if (!header .toLowerCase ().startsWith ("basic " .toLowerCase ())){
172
+ if (!header .toLowerCase ().startsWith ("basic " .toLowerCase ())) {
158
173
throw new AqualityException ("Use Basic Authorization Header! (Should start with 'Basic ')" );
159
174
}
160
175
}
@@ -188,14 +203,14 @@ protected void processResponse(HttpServletResponse response, String filePath) {
188
203
}
189
204
}
190
205
191
- protected void handleException (HttpServletResponse resp , @ NotNull Exception e ){
206
+ protected void handleException (HttpServletResponse resp , @ NotNull Exception e ) {
192
207
e .printStackTrace ();
193
- switch (e .getClass ().getSimpleName ()){
208
+ switch (e .getClass ().getSimpleName ()) {
194
209
case "UnsupportedOperationException" :
195
210
setNotImplementedFunction (resp , e );
196
211
return ;
197
212
case "AuthenticationException" :
198
- setAuthorizationProblem (resp ,e );
213
+ setAuthorizationProblem (resp , e );
199
214
return ;
200
215
case "AqualityPermissionsException" :
201
216
case "AqualityException" :
0 commit comments