Revision 48312
Added by Katerina Iatropoulou almost 7 years ago
HelloWorldService.java | ||
---|---|---|
1 |
package eu.dnetlib.openaire.rest; |
|
2 |
|
|
3 |
import com.google.gson.*; |
|
4 |
import eu.dnetlib.api.enabling.ISLookUpService; |
|
5 |
import eu.dnetlib.api.enabling.ISLookUpServiceException; |
|
6 |
import eu.dnetlib.data.claims.migration.ClaimValidationException; |
|
7 |
import eu.dnetlib.data.claims.migration.entity.Claim; |
|
8 |
import eu.dnetlib.data.claims.migration.handler.ClaimHandler; |
|
9 |
import eu.dnetlib.data.claims.migration.handler.DirectIndexHandler; |
|
10 |
import eu.dnetlib.data.claims.migration.handler.FetchClaimHandler; |
|
11 |
import eu.dnetlib.data.claims.migration.handler.FetchProjectHandler; |
|
12 |
import eu.dnetlib.data.claimsDemo.SQLStoreException; |
|
13 |
import gr.uoa.di.driver.util.ServiceLocator; |
|
14 |
import org.apache.commons.validator.EmailValidator; |
|
15 |
import org.apache.log4j.Logger; |
|
16 |
import org.json.XML; |
|
17 |
import org.springframework.beans.factory.annotation.Autowired; |
|
18 |
import org.springframework.stereotype.Component; |
|
19 |
|
|
20 |
import javax.annotation.Resource; |
|
21 |
import javax.servlet.http.HttpServletRequest; |
|
22 |
import javax.ws.rs.*; |
|
23 |
import javax.ws.rs.core.Context; |
|
24 |
import javax.ws.rs.core.MediaType; |
|
25 |
import javax.ws.rs.core.Response; |
|
26 |
import java.util.ArrayList; |
|
27 |
import java.util.List; |
|
28 |
|
|
29 |
/** |
|
30 |
* Created by kiatrop on 15/4/2016. |
|
31 |
*/ |
|
32 |
@Component |
|
33 |
@Path("/claimsService") |
|
34 |
public class HelloWorldService { |
|
35 |
|
|
36 |
private static final Logger logger = Logger.getLogger(HelloWorldService.class); |
|
37 |
|
|
38 |
@Autowired |
|
39 |
private FetchClaimHandler fetchClaimHandler = null; |
|
40 |
|
|
41 |
@Autowired |
|
42 |
private FetchProjectHandler fetchProjectHandler= null; |
|
43 |
|
|
44 |
@Resource |
|
45 |
private ServiceLocator<ISLookUpService> lookupServiceLocator = null; |
|
46 |
|
|
47 |
@Autowired |
|
48 |
private ClaimHandler claimHandler = null; |
|
49 |
|
|
50 |
@Autowired |
|
51 |
private DirectIndexHandler directIndexHandler = null; |
|
52 |
|
|
53 |
@Autowired |
|
54 |
public Authorization authorization = null; |
|
55 |
|
|
56 |
|
|
57 |
@GET |
|
58 |
@Path("projects/{projectId}/claims") |
|
59 |
@Produces(MediaType.APPLICATION_JSON) |
|
60 |
public Response getProjectClaims(@PathParam("projectId") String projectId, |
|
61 |
@DefaultValue("0") @QueryParam("offset") int offset, |
|
62 |
@DefaultValue("20") @QueryParam("limit") int limit, |
|
63 |
@DefaultValue("") @QueryParam("keyword") String keyword, |
|
64 |
@DefaultValue("") @QueryParam("sortby") String orderby, |
|
65 |
@DefaultValue("true") @QueryParam("descending") boolean descending, |
|
66 |
@DefaultValue("") @QueryParam("types") String types, |
|
67 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
68 |
@CookieParam("AccessToken") String cookie, |
|
69 |
@Context HttpServletRequest request) { |
|
70 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
71 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
72 |
|
|
73 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
74 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
75 |
.type(MediaType.APPLICATION_JSON) |
|
76 |
.build(); |
|
77 |
} |
|
78 |
|
|
79 |
if(authorization.isAdmin(token)) { |
|
80 |
|
|
81 |
int total = -1; |
|
82 |
|
|
83 |
if (projectId == null || projectId.isEmpty()) { |
|
84 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("Project id cannot be empty.")) |
|
85 |
.type(MediaType.APPLICATION_JSON).build(); |
|
86 |
} |
|
87 |
|
|
88 |
List<Claim> claims = null; |
|
89 |
List<String> listTypes = new ArrayList<String>(); |
|
90 |
String[] types_array = types.split(","); |
|
91 |
for (int i = 0; i < types_array.length; i++) { |
|
92 |
if (types_array[i].length() > 0) { |
|
93 |
listTypes.add(types_array[i]); |
|
94 |
} |
|
95 |
} |
|
96 |
try { |
|
97 |
claims = fetchClaimHandler.fetchClaimsByProject(projectId, limit, offset, keyword, orderby, descending, listTypes,false); |
|
98 |
total = fetchClaimHandler.countClaimsByProject(projectId, keyword, listTypes); |
|
99 |
|
|
100 |
} catch (SQLStoreException|Exception e) { //TODO check this with exception |
|
101 |
logger.error("Could not fetch claims for project with id " + projectId, e); |
|
102 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims" + |
|
103 |
" for projects with id " + projectId + ".", e)).type(MediaType.APPLICATION_JSON).build(); |
|
104 |
|
|
105 |
} |
|
106 |
|
|
107 |
return Response.status(200).entity(composeDataResponse(request, claims, total, offset, limit)).build(); |
|
108 |
} |
|
109 |
|
|
110 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access")) |
|
111 |
.type(MediaType.APPLICATION_JSON) |
|
112 |
.build(); |
|
113 |
} |
|
114 |
|
|
115 |
@GET |
|
116 |
@Path("project/claims") |
|
117 |
@Produces(MediaType.APPLICATION_JSON) |
|
118 |
public Response getProjectClaimsByToken(@QueryParam("projectToken") String projectToken, |
|
119 |
@DefaultValue("-1") @QueryParam("offset") int offset, |
|
120 |
@DefaultValue("-1") @QueryParam("limit") int limit, |
|
121 |
@DefaultValue("") @QueryParam("keyword") String keyword, |
|
122 |
@DefaultValue("") @QueryParam("sortby") String orderby, |
|
123 |
@DefaultValue("true") @QueryParam("descending") boolean descending, |
|
124 |
@DefaultValue("") @QueryParam("types") String types, |
|
125 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
126 |
@CookieParam("AccessToken") String cookie, |
|
127 |
@Context HttpServletRequest request) { |
|
128 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
129 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
130 |
|
|
131 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
132 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
133 |
.type(MediaType.APPLICATION_JSON) |
|
134 |
.build(); |
|
135 |
} |
|
136 |
|
|
137 |
UserInfo userInfo = authorization.getUserHandler().getUserInfo(token); |
|
138 |
if(authorization.isProjectCurator(userInfo)) { |
|
139 |
String userMail = userInfo.getEmail(); |
|
140 |
|
|
141 |
int total = -1; |
|
142 |
|
|
143 |
if (projectToken == null || projectToken.isEmpty()) { |
|
144 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("Project token cannot be empty.")) |
|
145 |
.type(MediaType.APPLICATION_JSON).build(); |
|
146 |
} |
|
147 |
|
|
148 |
List<Claim> claims = null; |
|
149 |
List<String> listTypes = new ArrayList<String>(); |
|
150 |
String[] types_array = types.split(","); |
|
151 |
for (int i = 0; i < types_array.length; i++) { |
|
152 |
if (types_array[i].length() > 0) { |
|
153 |
listTypes.add(types_array[i]); |
|
154 |
} |
|
155 |
} |
|
156 |
try { |
|
157 |
String projectId = fetchProjectHandler.fetchProjectIdByToken(projectToken,userMail); |
|
158 |
if(projectId == null){ |
|
159 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access")) |
|
160 |
.type(MediaType.APPLICATION_JSON) |
|
161 |
.build(); |
|
162 |
}else{ |
|
163 |
if(offset == -1 && limit == -1) { |
|
164 |
// when offset and limit are -1 fetch claims with null values, to ignore paging and limit clause |
|
165 |
claims = fetchClaimHandler.fetchClaimsByProject(projectId, null, null, keyword, orderby, descending, listTypes, true); |
|
166 |
} else { |
|
167 |
claims = fetchClaimHandler.fetchClaimsByProject(projectId, limit, offset, keyword, orderby, descending, listTypes, true); |
|
168 |
} |
|
169 |
total = fetchClaimHandler.countClaimsByProject(projectId, keyword, listTypes); |
|
170 |
|
|
171 |
return Response.status(200).entity(composeDataResponse(request, claims, total, offset, limit)).build(); |
|
172 |
} |
|
173 |
|
|
174 |
} catch (SQLStoreException|Exception e) { |
|
175 |
logger.error("Could not fetch claims for project token " + projectToken, e); |
|
176 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims" + |
|
177 |
" for projects with token " + projectToken + ".", e)).type(MediaType.APPLICATION_JSON).build(); |
|
178 |
} |
|
179 |
} |
|
180 |
|
|
181 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access")) |
|
182 |
.type(MediaType.APPLICATION_JSON) |
|
183 |
.build(); |
|
184 |
} |
|
185 |
@GET |
|
186 |
@Path("/contexts/{contextId}/claims") |
|
187 |
@Produces(MediaType.APPLICATION_JSON) |
|
188 |
public Response getContextClaims(@PathParam("contextId") String contextId, |
|
189 |
@DefaultValue("0") @QueryParam("offset") int offset, |
|
190 |
@DefaultValue("20") @QueryParam("limit") int limit, |
|
191 |
@DefaultValue("") @QueryParam("keyword") String keyword, |
|
192 |
@DefaultValue("") @QueryParam("sortby") String orderby, |
|
193 |
@DefaultValue("true") @QueryParam("descending") boolean descending, |
|
194 |
@DefaultValue("") @QueryParam("types") String types, |
|
195 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
196 |
@CookieParam("AccessToken") String cookie, |
|
197 |
@Context HttpServletRequest request) { |
|
198 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
199 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
200 |
|
|
201 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
202 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
203 |
.type(MediaType.APPLICATION_JSON) |
|
204 |
.build(); |
|
205 |
} |
|
206 |
logger.debug("Calling API for context with token " + token); |
|
207 |
|
|
208 |
if(authorization.isAdmin(token)) { |
|
209 |
|
|
210 |
int total = -1; |
|
211 |
if (contextId == null || contextId.isEmpty()) { |
|
212 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("Context id cannot be empty.")) |
|
213 |
.type(MediaType.APPLICATION_JSON).build(); |
|
214 |
} |
|
215 |
|
|
216 |
List<Claim> claims = null; |
|
217 |
List<String> listTypes = new ArrayList<String>(); |
|
218 |
String[] types_array = types.split(","); |
|
219 |
for (int i = 0; i < types_array.length; i++) { |
|
220 |
if (types_array[i].length() > 0) { |
|
221 |
listTypes.add(types_array[i]); |
|
222 |
} |
|
223 |
} |
|
224 |
try { |
|
225 |
claims = fetchClaimHandler.fetchClaimsByContext(contextId, limit, offset, keyword, orderby, descending, listTypes,false); |
|
226 |
total = fetchClaimHandler.countClaimsByContext(contextId, keyword, listTypes); |
|
227 |
|
|
228 |
} catch (SQLStoreException|Exception e) { |
|
229 |
logger.error("Could not fetch claims for context with id " + contextId, e); |
|
230 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims" + |
|
231 |
" for context with id " + contextId + ".", e)).type(MediaType.APPLICATION_JSON).build(); |
|
232 |
} |
|
233 |
|
|
234 |
return Response.status(200).entity(composeDataResponse(request, claims, total, offset, limit)).build(); |
|
235 |
} |
|
236 |
|
|
237 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access")) |
|
238 |
.type(MediaType.APPLICATION_JSON) |
|
239 |
.build(); |
|
240 |
} |
|
241 |
|
|
242 |
|
|
243 |
@GET |
|
244 |
@Path("/results/{resultId}/claims") |
|
245 |
@Produces(MediaType.APPLICATION_JSON) |
|
246 |
public Response getResultClaims(@PathParam("resultId") String resultId, |
|
247 |
@DefaultValue("0") @QueryParam("offset") int offset, |
|
248 |
@DefaultValue("20") @QueryParam("limit") int limit, |
|
249 |
@DefaultValue("") @QueryParam("keyword") String keyword, |
|
250 |
@DefaultValue("") @QueryParam("sortby") String orderby, |
|
251 |
@DefaultValue("true") @QueryParam("descending") boolean descending, |
|
252 |
@DefaultValue("") @QueryParam("types") String types, |
|
253 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
254 |
@CookieParam("AccessToken") String cookie, |
|
255 |
@Context HttpServletRequest request) { |
|
256 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
257 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
258 |
|
|
259 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
260 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
261 |
.type(MediaType.APPLICATION_JSON) |
|
262 |
.build(); |
|
263 |
} |
|
264 |
|
|
265 |
if(authorization.isAdmin(token)) { |
|
266 |
|
|
267 |
int total = -1; |
|
268 |
if (resultId == null || resultId.isEmpty()) { |
|
269 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("Context id cannot be empty.")) |
|
270 |
.type(MediaType.APPLICATION_JSON).build(); |
|
271 |
} |
|
272 |
|
|
273 |
List<Claim> claims = null; |
|
274 |
List<String> listTypes = new ArrayList<String>(); |
|
275 |
String[] types_array = types.split(","); |
|
276 |
for (int i = 0; i < types_array.length; i++) { |
|
277 |
if (types_array[i].length() > 0) { |
|
278 |
listTypes.add(types_array[i]); |
|
279 |
} |
|
280 |
} |
|
281 |
|
|
282 |
try { |
|
283 |
claims = fetchClaimHandler.fetchClaimsByResult(resultId, limit, offset, keyword, orderby, descending, listTypes,false); |
|
284 |
total = fetchClaimHandler.countClaimsByResult(resultId, keyword, listTypes); |
|
285 |
|
|
286 |
} catch (SQLStoreException|Exception e) { |
|
287 |
logger.error("Could not fetch claims for result with id " + resultId, e); |
|
288 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims" + |
|
289 |
" for result with id " + resultId + ".", e)).type(MediaType.APPLICATION_JSON).build(); |
|
290 |
} |
|
291 |
|
|
292 |
return Response.status(200).entity(composeDataResponse(request, claims, total, offset, limit)).build(); |
|
293 |
} |
|
294 |
|
|
295 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access")) |
|
296 |
.type(MediaType.APPLICATION_JSON) |
|
297 |
.build(); |
|
298 |
} |
|
299 |
|
|
300 |
|
|
301 |
@GET |
|
302 |
@Path("/users/claims") |
|
303 |
@Produces(MediaType.APPLICATION_JSON) |
|
304 |
public Response getUserClaims(@DefaultValue("0") @QueryParam("offset") int offset, |
|
305 |
@DefaultValue("20") @QueryParam("limit") int limit, |
|
306 |
@DefaultValue("") @QueryParam("keyword") String keyword, |
|
307 |
@DefaultValue("") @QueryParam("sortby") String orderby, |
|
308 |
@DefaultValue("true") @QueryParam("descending") boolean descending, |
|
309 |
@DefaultValue("") @QueryParam("types") String types, |
|
310 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
311 |
@CookieParam("AccessToken") String cookie, |
|
312 |
@Context HttpServletRequest request) { |
|
313 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
314 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
315 |
|
|
316 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
317 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
318 |
.type(MediaType.APPLICATION_JSON) |
|
319 |
.build(); |
|
320 |
} |
|
321 |
|
|
322 |
UserInfo userInfo = authorization.getUserHandler().getUserInfo(token); |
|
323 |
if(authorization.isRegistered(userInfo)) { |
|
324 |
String userMail = userInfo.getEmail(); |
|
325 |
logger.debug("User is registerd " ); |
|
326 |
int total = -1; |
|
327 |
EmailValidator emailValidator = EmailValidator.getInstance(); |
|
328 |
|
|
329 |
if (userMail == null || userMail.isEmpty()) { |
|
330 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("User e-mail cannot be empty.")) |
|
331 |
.type(MediaType.APPLICATION_JSON).build(); |
|
332 |
} |
|
333 |
|
|
334 |
if (!emailValidator.isValid(userMail)) { |
|
335 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("User e-mail is not valid.")) |
|
336 |
.type(MediaType.APPLICATION_JSON).build(); |
|
337 |
} |
|
338 |
|
|
339 |
List<Claim> claims = null; |
|
340 |
List<String> listTypes = new ArrayList<String>(); |
|
341 |
String[] types_array = types.split(","); |
|
342 |
for (int i = 0; i < types_array.length; i++) { |
|
343 |
if (types_array[i].length() > 0) { |
|
344 |
listTypes.add(types_array[i]); |
|
345 |
} |
|
346 |
} |
|
347 |
try { |
|
348 |
logger.debug("About to fetch claims" ); |
|
349 |
claims = fetchClaimHandler.fetchClaimsByUser(userMail, limit, offset, keyword, orderby, descending, listTypes,false); |
|
350 |
total = fetchClaimHandler.countClaimsByUser(userMail, keyword, listTypes); |
|
351 |
|
|
352 |
} catch (SQLStoreException|Exception e) { |
|
353 |
logger.error("Could not fetch claims for result with id " + userMail, e); |
|
354 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims" + |
|
355 |
" for user with e-mail " + userMail + ".", e)).type(MediaType.APPLICATION_JSON).build(); |
|
356 |
} |
|
357 |
|
|
358 |
return Response.status(200).entity(composeDataResponse(request, claims, total, offset, limit)).build(); |
|
359 |
} |
|
360 |
logger.debug("User is *NOT* registerd " ); |
|
361 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
362 |
.type(MediaType.APPLICATION_JSON) |
|
363 |
.build(); |
|
364 |
} |
|
365 |
|
|
366 |
@GET |
|
367 |
@Path("/claims/{claimId}") |
|
368 |
@Produces(MediaType.APPLICATION_JSON) |
|
369 |
public Response getClaimsById(@PathParam("claimId") String claimId, |
|
370 |
@DefaultValue("0") @QueryParam("offset") int offset, |
|
371 |
@DefaultValue("20") @QueryParam("limit") int limit, |
|
372 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
373 |
@CookieParam("AccessToken") String cookie, |
|
374 |
@Context HttpServletRequest request) { |
|
375 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
376 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
377 |
|
|
378 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
379 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
380 |
.type(MediaType.APPLICATION_JSON) |
|
381 |
.build(); |
|
382 |
} |
|
383 |
|
|
384 |
if(authorization.isRegistered(token)) { |
|
385 |
|
|
386 |
List<Claim> claims = null; |
|
387 |
|
|
388 |
int total = -1; |
|
389 |
if (claimId == null || claimId.isEmpty()) { |
|
390 |
try { |
|
391 |
claims = fetchClaimHandler.fetchAllClaims(limit, offset,false); |
|
392 |
total = fetchClaimHandler.countAllClaims("", new ArrayList<String>()); |
|
393 |
|
|
394 |
return Response.status(200).entity(composeDataResponse(request, claims, total, offset, limit)).type(MediaType.APPLICATION_JSON).build(); |
|
395 |
|
|
396 |
} catch (SQLStoreException|Exception e) { |
|
397 |
logger.error("Could not fetch claims.", e); |
|
398 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims.", e)) |
|
399 |
.type(MediaType.APPLICATION_JSON).build(); |
|
400 |
} |
|
401 |
} |
|
402 |
|
|
403 |
try { |
|
404 |
Claim claim = fetchClaimHandler.fetchClaimById(claimId,false); |
|
405 |
if (claim == null) { |
|
406 |
return Response.status(Response.Status.NOT_FOUND).entity(compose404Message("Cannot find claim with id " + claimId + ".")) |
|
407 |
.type(MediaType.APPLICATION_JSON).build(); |
|
408 |
} |
|
409 |
|
|
410 |
return Response.status(200).entity(composeDataResponse(claim)).build(); |
|
411 |
|
|
412 |
} catch (SQLStoreException|Exception e) { |
|
413 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claim " + |
|
414 |
"with id " + claimId + " id.", e)).type(MediaType.APPLICATION_JSON).build(); |
|
415 |
} |
|
416 |
} |
|
417 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
418 |
.type(MediaType.APPLICATION_JSON) |
|
419 |
.build(); |
|
420 |
} |
|
421 |
|
|
422 |
@GET |
|
423 |
@Path("/claims") |
|
424 |
@Produces(MediaType.APPLICATION_JSON) |
|
425 |
public Response getAllClaims(@DefaultValue("0") @QueryParam("offset") int offset, |
|
426 |
@DefaultValue("20") @QueryParam("limit") int limit, |
|
427 |
@DefaultValue("") @QueryParam("keyword") String keyword, |
|
428 |
@DefaultValue("date") @QueryParam("sortby") String orderby, |
|
429 |
@DefaultValue("true") @QueryParam("descending") boolean descending, |
|
430 |
@DefaultValue("") @QueryParam("types") String types, |
|
431 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
432 |
@HeaderParam("Origin") String origin, |
|
433 |
@CookieParam("AccessToken") String cookie, |
|
434 |
@Context HttpServletRequest request) { |
|
435 |
|
|
436 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
437 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
438 |
logger.debug("Header \"Origin\" has value " + origin); |
|
439 |
|
|
440 |
|
|
441 |
|
|
442 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
443 |
logger.debug("User is not authorized - Eroor 403"); |
|
444 |
|
|
445 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
446 |
.type(MediaType.APPLICATION_JSON) |
|
447 |
.build(); |
|
448 |
} |
|
449 |
|
|
450 |
if(authorization.isAdmin(token)) { |
|
451 |
logger.debug("User is authorized ! !"); |
|
452 |
List<Claim> claims = null; |
|
453 |
List<String> listTypes = new ArrayList<String>(); |
|
454 |
String[] types_array = types.split(","); |
|
455 |
for (int i = 0; i < types_array.length; i++) { |
|
456 |
if (types_array[i].length() > 0) { |
|
457 |
listTypes.add(types_array[i]); |
|
458 |
} |
|
459 |
} |
|
460 |
logger.debug("Types: " + listTypes.toString()); |
|
461 |
|
|
462 |
int total = -1; |
|
463 |
try { |
|
464 |
claims = fetchClaimHandler.fetchAllClaims(limit, offset, keyword, orderby, descending, listTypes,false); |
|
465 |
total = fetchClaimHandler.countAllClaims(keyword, listTypes); |
|
466 |
|
|
467 |
return Response.status(200).entity(composeDataResponse(request, claims, total, offset, limit)).build(); |
|
468 |
|
|
469 |
} catch (SQLStoreException|Exception e) { |
|
470 |
logger.error("Could not fetch claims.", e); |
|
471 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims.", e)) |
|
472 |
.type(MediaType.APPLICATION_JSON).build(); |
|
473 |
} |
|
474 |
} |
|
475 |
|
|
476 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access")) |
|
477 |
.type(MediaType.APPLICATION_JSON) |
|
478 |
.build(); |
|
479 |
} |
|
480 |
|
|
481 |
//ARGIRO TODO: Na thn tsekarw |
|
482 |
// @POST |
|
483 |
// @Path("/claims/{claimId}") |
|
484 |
// @Produces(MediaType.APPLICATION_JSON) |
|
485 |
// public Response deleteClaim(@PathParam("claimId") String claimId, |
|
486 |
// @QueryParam("token") String token) { |
|
487 |
// |
|
488 |
// if(!JWTValidator.isValid(token)) { |
|
489 |
// return Response.status(Response.Status.UNAUTHORIZED).entity(compose404Message("Not valid Token")) |
|
490 |
// .type(MediaType.APPLICATION_JSON) |
|
491 |
// .build(); |
|
492 |
// } |
|
493 |
// try { |
|
494 |
// |
|
495 |
// if (authorization.isRegistered(token) && (authorization.getUserHandler().getMail(token).equals(fetchClaimHandler.fetchClaimById(claimId).getUserMail()))) { |
|
496 |
// if (claimId == null || claimId.isEmpty()) { |
|
497 |
// return Response.status(Response.Status.NOT_FOUND).entity(compose404Message("Claim id cannot be empty.")) |
|
498 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
499 |
// } |
|
500 |
// |
|
501 |
// try { |
|
502 |
// if (claimHandler.deleteClaim(claimId)) { |
|
503 |
// return Response.status(204).entity(compose204Message()).type(MediaType.APPLICATION_JSON).build(); |
|
504 |
// } |
|
505 |
// |
|
506 |
// } catch (Exception e) { |
|
507 |
// logger.error("Fail to delete claim with id " + claimId + ".", e); |
|
508 |
// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to delete claim with id " + claimId + ".", e)) |
|
509 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
510 |
// } |
|
511 |
// |
|
512 |
// return Response.status(Response.Status.NOT_FOUND).entity(compose404Message("Claim id cannot be empty.")) |
|
513 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
514 |
// } |
|
515 |
// |
|
516 |
// return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
517 |
// .type(MediaType.APPLICATION_JSON) |
|
518 |
// .build(); |
|
519 |
// |
|
520 |
// } catch (Exception e) { |
|
521 |
// logger.error("Could not fetch claims.", e); |
|
522 |
// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to fetch claims.", e)) |
|
523 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
524 |
// } |
|
525 |
// } |
|
526 |
/* |
|
527 |
|
|
528 |
@DELETE |
|
529 |
@Path("/claims/{claimId}") |
|
530 |
public Response deleteClaim(@PathParam("claimId") String claimId) { |
|
531 |
|
|
532 |
if (claimId == null || claimId.isEmpty()) { |
|
533 |
return Response.status(Response.Status.NOT_FOUND).entity(compose404Message("Claim id cannot be empty.")).header("Access-Control-Allow-Origin", "*") |
|
534 |
.header("Access-Control-Allow-Methods", "DELETE") |
|
535 |
.type(MediaType.APPLICATION_JSON).build(); |
|
536 |
} |
|
537 |
|
|
538 |
try { |
|
539 |
if(claimHandler.deleteClaim(claimId)) { |
|
540 |
return Response.status(204).entity(compose204Message()).header("Access-Control-Allow-Origin", "*") |
|
541 |
.header("Access-Control-Allow-Methods", "DELETE").type(MediaType.APPLICATION_JSON).build(); |
|
542 |
} |
|
543 |
|
|
544 |
} catch (Exception e) {return Response.status(Response.Status.UNAUTHORIZED).entity(compose404Message("Not valid Token")) |
|
545 |
.type(MediaType.APPLICATION_JSON) |
|
546 |
.build(); |
|
547 |
logger.error("Fail to delete claim with id " + claimId + ".", e); |
|
548 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to delete claim with id " + claimId +".", e)) |
|
549 |
.header("Access-Control-Allow-Origin", "*") |
|
550 |
.header("Access-Control-Allow-Methods", "DELETE") |
|
551 |
.type(MediaType.APPLICATION_JSON).build(); |
|
552 |
} |
|
553 |
|
|
554 |
return Response.status(Response.Status.NOT_FOUND).entity(compose404Message("Claim id cannot be empty.")).header("Access-Control-Allow-Origin", "*") |
|
555 |
.header("Access-Control-Allow-Methods", "DELETE") |
|
556 |
.type(MediaType.APPLICATION_JSON).build(); |
|
557 |
} |
|
558 |
*/ |
|
559 |
@DELETE |
|
560 |
@Path("/claims/bulk") |
|
561 |
@Produces(MediaType.APPLICATION_JSON) |
|
562 |
public Response deleteBulkClaims(@QueryParam("claimId") List<String> claimIds, |
|
563 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
564 |
@HeaderParam("Origin") String origin, |
|
565 |
@CookieParam("AccessToken") String cookie){ |
|
566 |
|
|
567 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
568 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
569 |
|
|
570 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)|| !authorization.hasValidOrigin(origin)){ |
|
571 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
572 |
.type(MediaType.APPLICATION_JSON) |
|
573 |
.build(); |
|
574 |
} |
|
575 |
|
|
576 |
|
|
577 |
ArrayList<String> deletedIds= new ArrayList<String>(); |
|
578 |
ArrayList<String> notFoundIds= new ArrayList<String>(); |
|
579 |
|
|
580 |
if (claimIds == null || claimIds.size() == 0) { |
|
581 |
return Response.status(Response.Status.NOT_FOUND).entity(compose404BulkDeleteMessage("Claim ids cannot be empty.",deletedIds,notFoundIds)) |
|
582 |
.type(MediaType.APPLICATION_JSON).build(); |
|
583 |
} |
|
584 |
|
|
585 |
logger.debug("Trying to delete claims with ids: " + claimIds.toString() + "."); |
|
586 |
|
|
587 |
for (String claimId : claimIds) { |
|
588 |
try { |
|
589 |
|
|
590 |
if (authorization.isRegistered(token)) { |
|
591 |
if (authorization.isAdmin(token) || authorization.getUserHandler().getMail(token).equals(fetchClaimHandler.fetchClaimById(claimId,false).getUserMail())) { |
|
592 |
if (claimHandler.deleteClaim(claimId)) { |
|
593 |
deletedIds.add(claimId); |
|
594 |
} else { |
|
595 |
notFoundIds.add(claimId); |
|
596 |
} |
|
597 |
} else { |
|
598 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to delete.")) |
|
599 |
.type(MediaType.APPLICATION_JSON) |
|
600 |
.build(); |
|
601 |
} |
|
602 |
} else { |
|
603 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
604 |
.type(MediaType.APPLICATION_JSON) |
|
605 |
.build(); |
|
606 |
} |
|
607 |
} catch (SQLStoreException|Exception e) { |
|
608 |
logger.error("Fail to delete claim with id " + claimId + ".", e); |
|
609 |
notFoundIds.add(claimId); |
|
610 |
} |
|
611 |
} |
|
612 |
logger.debug("Successfully deleted " + deletedIds.size() + " from " + claimIds.size() +". Deleted claims with ids: " + deletedIds.toString() + "."); |
|
613 |
if (claimIds.size() == notFoundIds.size()) { |
|
614 |
return Response.status(Response.Status.NOT_FOUND).entity(compose404BulkDeleteMessage("Claim ids cannot be empty.",deletedIds,notFoundIds)) |
|
615 |
.type(MediaType.APPLICATION_JSON).build(); |
|
616 |
} else if (claimIds.size() == notFoundIds.size()) { |
|
617 |
return Response.status(204).entity(compose204BulkDeleteMessage(deletedIds,notFoundIds)).type(MediaType.APPLICATION_JSON).build(); |
|
618 |
} else { |
|
619 |
return Response.status(204).entity(compose204BulkDeleteMessage(deletedIds,notFoundIds)).type(MediaType.APPLICATION_JSON).build(); |
|
620 |
} |
|
621 |
} |
|
622 |
|
|
623 |
@POST |
|
624 |
@Path("/claims") |
|
625 |
@Produces(MediaType.APPLICATION_JSON) |
|
626 |
@Consumes(MediaType.APPLICATION_JSON) |
|
627 |
public Response addClaim(String input, @Context HttpServletRequest request, |
|
628 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
629 |
@HeaderParam("Origin") String origin, |
|
630 |
@CookieParam("AccessToken") String cookie) { |
|
631 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
632 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
633 |
|
|
634 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token) || !authorization.hasValidOrigin(origin)){ |
|
635 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
636 |
.type(MediaType.APPLICATION_JSON) |
|
637 |
.build(); |
|
638 |
} |
|
639 |
|
|
640 |
UserInfo userInfo = authorization.getUserHandler().getUserInfo(token); |
|
641 |
if(authorization.isRegistered(userInfo)) { |
|
642 |
JsonObject jsonObject = new JsonParser().parse(input).getAsJsonObject(); |
|
643 |
|
|
644 |
String claimedBy = userInfo.getEmail(); |
|
645 |
logger.info("claimedBy " + claimedBy); |
|
646 |
|
|
647 |
String sourceId = jsonObject.get("sourceId").getAsString(); |
|
648 |
logger.info("sourceId " + sourceId); |
|
649 |
String sourceType = jsonObject.get("sourceType").getAsString(); |
|
650 |
logger.info("sourceType " + sourceType); |
|
651 |
String sourceCollectedFrom = jsonObject.get("sourceCollectedFrom").getAsString(); |
|
652 |
logger.info("sourceCollectedFrom " + sourceCollectedFrom); |
|
653 |
String sourceAccessRights = jsonObject.get("sourceAccessRights").getAsString(); |
|
654 |
logger.info("sourceAccessRights " + sourceAccessRights); |
|
655 |
String sourceEmbargoEndDate = jsonObject.get("sourceEmbargoEndDate").getAsString(); |
|
656 |
sourceEmbargoEndDate = (sourceEmbargoEndDate != null && sourceEmbargoEndDate.equals("")) ? null : sourceEmbargoEndDate; |
|
657 |
logger.info("sourceEmbargoEndDate " + sourceEmbargoEndDate); |
|
658 |
|
|
659 |
String targetId = jsonObject.get("targetId").getAsString(); |
|
660 |
logger.info("targetId " + targetId); |
|
661 |
String targetType = jsonObject.get("targetType").getAsString(); |
|
662 |
logger.info("targetType " + targetType); |
|
663 |
String targetCollectedFrom = jsonObject.get("targetCollectedFrom").getAsString(); |
|
664 |
logger.info("targetCollectedFrom " + targetCollectedFrom); |
|
665 |
String targetAccessRights = jsonObject.get("targetAccessRights").getAsString(); |
|
666 |
logger.info("targetAccessRights " + targetAccessRights); |
|
667 |
String targetEmbargoEndDate = jsonObject.get("targetEmbargoEndDate").getAsString(); |
|
668 |
targetEmbargoEndDate = (targetEmbargoEndDate != null && targetEmbargoEndDate.equals("")) ? null : targetEmbargoEndDate; |
|
669 |
logger.info("targetEmbargoEndDate " + targetEmbargoEndDate); |
|
670 |
|
|
671 |
EmailValidator emailValidator = EmailValidator.getInstance(); |
|
672 |
if (!emailValidator.isValid(claimedBy)) { |
|
673 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("User e-mail is invalid.")) |
|
674 |
.type(MediaType.APPLICATION_JSON).build(); |
|
675 |
} |
|
676 |
|
|
677 |
|
|
678 |
try { |
|
679 |
String claimId = claimHandler.buildAndInsertClaim(claimedBy, sourceType, sourceId, sourceCollectedFrom, sourceAccessRights, sourceEmbargoEndDate, targetType, targetId, targetCollectedFrom, targetAccessRights, targetEmbargoEndDate); |
|
680 |
return Response.status(200).entity(compose201PostMessage(request, claimId)).type(MediaType.APPLICATION_JSON).build(); |
|
681 |
|
|
682 |
} catch (ClaimValidationException ve) { |
|
683 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("The given ids are wrong.", ve)) |
|
684 |
.type(MediaType.APPLICATION_JSON).build(); |
|
685 |
|
|
686 |
} catch (SQLStoreException|Exception e) { |
|
687 |
logger.error("Fail to add new claim.", e); |
|
688 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to add new claim.", e)) |
|
689 |
.type(MediaType.APPLICATION_JSON).build(); |
|
690 |
} |
|
691 |
} |
|
692 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access.")) |
|
693 |
.type(MediaType.APPLICATION_JSON) |
|
694 |
.build(); |
|
695 |
} |
|
696 |
|
|
697 |
@POST |
|
698 |
@Path("/claims/bulk") |
|
699 |
@Produces(MediaType.APPLICATION_JSON) |
|
700 |
@Consumes(MediaType.APPLICATION_JSON) |
|
701 |
public Response addBulkClaims(String input, @Context HttpServletRequest request, |
|
702 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
703 |
@HeaderParam("Origin") String origin, |
|
704 |
@CookieParam("AccessToken") String cookie) { |
|
705 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
706 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
707 |
|
|
708 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)|| !authorization.hasValidOrigin(origin)){ |
|
709 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
710 |
.type(MediaType.APPLICATION_JSON) |
|
711 |
.build(); |
|
712 |
} |
|
713 |
|
|
714 |
UserInfo userInfo = authorization.getUserHandler().getUserInfo(token); |
|
715 |
if(authorization.isRegistered(userInfo)) { |
|
716 |
ArrayList<String> insertedIds = new ArrayList<String>(); |
|
717 |
JsonArray errorInClaims = new JsonArray(); |
|
718 |
|
|
719 |
int code200 = 0; |
|
720 |
int code400 = 0; |
|
721 |
int code500 = 0; |
|
722 |
|
|
723 |
JsonArray jsonArray = new JsonParser().parse(input).getAsJsonArray(); |
|
724 |
for (JsonElement je : jsonArray) { |
|
725 |
JsonObject jsonObject = je.getAsJsonObject(); |
|
726 |
|
|
727 |
logger.info("targetId " + jsonObject.toString()); |
|
728 |
String claimedBy = userInfo.getEmail(); |
|
729 |
logger.info("claimedBy " + claimedBy); |
|
730 |
|
|
731 |
String sourceId = jsonObject.get("sourceId").getAsString(); |
|
732 |
logger.info("sourceId " + sourceId); |
|
733 |
String sourceType = jsonObject.get("sourceType").getAsString(); |
|
734 |
logger.info("sourceType " + sourceType); |
|
735 |
String sourceCollectedFrom = jsonObject.get("sourceCollectedFrom").getAsString(); |
|
736 |
logger.info("sourceCollectedFrom " + sourceCollectedFrom); |
|
737 |
String sourceAccessRights = jsonObject.get("sourceAccessRights").getAsString(); |
|
738 |
logger.info("sourceAccessRights " + sourceAccessRights); |
|
739 |
String sourceEmbargoEndDate = jsonObject.get("sourceEmbargoEndDate").getAsString(); |
|
740 |
sourceEmbargoEndDate = (sourceEmbargoEndDate != null && sourceEmbargoEndDate.equals("")) ? null : sourceEmbargoEndDate; |
|
741 |
logger.info("sourceEmbargoEndDate " + sourceEmbargoEndDate); |
|
742 |
|
|
743 |
String targetId = jsonObject.get("targetId").getAsString(); |
|
744 |
logger.info("targetId " + targetId); |
|
745 |
String targetType = jsonObject.get("targetType").getAsString(); |
|
746 |
logger.info("targetType " + targetType); |
|
747 |
String targetCollectedFrom = jsonObject.get("targetCollectedFrom").getAsString(); |
|
748 |
logger.info("targetCollectedFrom " + targetCollectedFrom); |
|
749 |
String targetAccessRights = jsonObject.get("targetAccessRights").getAsString(); |
|
750 |
logger.info("targetAccessRights " + targetAccessRights); |
|
751 |
String targetEmbargoEndDate = jsonObject.get("targetEmbargoEndDate").getAsString(); |
|
752 |
targetEmbargoEndDate = (targetEmbargoEndDate != null && targetEmbargoEndDate.equals("")) ? null : targetEmbargoEndDate; |
|
753 |
logger.info("targetEmbargoEndDate " + targetEmbargoEndDate); |
|
754 |
|
|
755 |
EmailValidator emailValidator = EmailValidator.getInstance(); |
|
756 |
if (!emailValidator.isValid(claimedBy)) { |
|
757 |
jsonObject.addProperty("error", "user"); |
|
758 |
// return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("User e-mail is invalid.")) |
|
759 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
760 |
code400++; |
|
761 |
errorInClaims.add(jsonObject); |
|
762 |
} |
|
763 |
|
|
764 |
|
|
765 |
try { |
|
766 |
String claimId = claimHandler.buildAndInsertClaim(claimedBy, sourceType, sourceId, sourceCollectedFrom, sourceAccessRights, sourceEmbargoEndDate, targetType, targetId, targetCollectedFrom, targetAccessRights, targetEmbargoEndDate); |
|
767 |
insertedIds.add(claimId); |
|
768 |
code200++; |
|
769 |
// return Response.status(200).entity(compose201PostMessage(request, claimId)).type(MediaType.APPLICATION_JSON).build(); |
|
770 |
|
|
771 |
} catch (ClaimValidationException ve) { |
|
772 |
// return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("The given ids are wrong.", ve)) |
|
773 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
774 |
jsonObject.addProperty("error", "validation"); |
|
775 |
errorInClaims.add(jsonObject); |
|
776 |
code400++; |
|
777 |
|
|
778 |
} catch (SQLStoreException|Exception e) { |
|
779 |
// logger.error("Fail to add new claim.", e); |
|
780 |
// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500Message("Fail to add new claim.", e)) |
|
781 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
782 |
jsonObject.addProperty("error", "insertion"); |
|
783 |
errorInClaims.add(jsonObject); |
|
784 |
code500++; |
|
785 |
} |
|
786 |
} |
|
787 |
if (jsonArray.size() == code500) { |
|
788 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500BulkInsertMessage("Fail to add new claim.", insertedIds, errorInClaims)) |
|
789 |
.type(MediaType.APPLICATION_JSON).build(); |
|
790 |
} else if (code200 > 0) { |
|
791 |
return Response.status(200).entity(compose201BulkInsertMessage(insertedIds, errorInClaims)).type(MediaType.APPLICATION_JSON).build(); |
|
792 |
} else { |
|
793 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400BulkInsertMessage("The given ids are wrong.", insertedIds, errorInClaims)) |
|
794 |
.type(MediaType.APPLICATION_JSON).build(); |
|
795 |
} |
|
796 |
} |
|
797 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
798 |
.type(MediaType.APPLICATION_JSON) |
|
799 |
.build(); |
|
800 |
|
|
801 |
} |
|
802 |
@POST |
|
803 |
@Path("/curate/bulk") |
|
804 |
@Produces(MediaType.APPLICATION_JSON) |
|
805 |
@Consumes(MediaType.APPLICATION_JSON) |
|
806 |
public Response curateBulkClaims(String input, @Context HttpServletRequest request, |
|
807 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
808 |
@HeaderParam("Origin") String origin, |
|
809 |
@CookieParam("AccessToken") String cookie) { |
|
810 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
811 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
812 |
|
|
813 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)|| !authorization.hasValidOrigin(origin)){ |
|
814 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
815 |
.type(MediaType.APPLICATION_JSON) |
|
816 |
.build(); |
|
817 |
} |
|
818 |
|
|
819 |
if (authorization.isRegistered(token)) { |
|
820 |
ArrayList<String> insertedIds = new ArrayList<String>(); |
|
821 |
JsonArray errorInClaims = new JsonArray(); |
|
822 |
int code200 = 0; |
|
823 |
int code400 = 0; |
|
824 |
int code500 = 0; |
|
825 |
JsonArray jsonArray = new JsonParser().parse(input).getAsJsonArray(); |
|
826 |
String curatedBy = authorization.getUserHandler().getMail(token); |
|
827 |
|
|
828 |
for (JsonElement je : jsonArray) { |
|
829 |
JsonObject jsonObject = je.getAsJsonObject(); |
|
830 |
|
|
831 |
String id = jsonObject.get("id").getAsString(); |
|
832 |
logger.info("id " + id); |
|
833 |
|
|
834 |
Boolean approved = jsonObject.get("approved").getAsBoolean(); |
|
835 |
logger.info("approved " + approved); |
|
836 |
EmailValidator emailValidator = EmailValidator.getInstance(); |
|
837 |
if (!emailValidator.isValid(curatedBy)) { |
|
838 |
jsonObject.addProperty("error", "user"); |
|
839 |
// return Response.status(Response.Status.BAD_REQUEST).entity(compose400Message("User e-mail is invalid.")) |
|
840 |
// .type(MediaType.APPLICATION_JSON).build(); |
|
841 |
code400++; |
|
842 |
errorInClaims.add(jsonObject); |
|
843 |
} |
|
844 |
|
|
845 |
try { |
|
846 |
claimHandler.updateClaimCurationInfo(curatedBy,id, approved); |
|
847 |
insertedIds.add(id); |
|
848 |
code200++; |
|
849 |
|
|
850 |
} catch (SQLStoreException|Exception e) { |
|
851 |
jsonObject.addProperty("error", "insertion"); |
|
852 |
errorInClaims.add(jsonObject); |
|
853 |
code500++; |
|
854 |
} |
|
855 |
} |
|
856 |
if (jsonArray.size() == code500) { |
|
857 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500BulkInsertMessage("Fail to update claims.", insertedIds, errorInClaims)) |
|
858 |
.type(MediaType.APPLICATION_JSON).build(); |
|
859 |
} else if (code200 > 0) { |
|
860 |
return Response.status(200).entity(compose201BulkInsertMessage(insertedIds, errorInClaims)).type(MediaType.APPLICATION_JSON).build(); |
|
861 |
} else { |
|
862 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400BulkInsertMessage("The given ids are wrong.", insertedIds, errorInClaims)) |
|
863 |
.type(MediaType.APPLICATION_JSON).build(); |
|
864 |
} |
|
865 |
} |
|
866 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
867 |
.type(MediaType.APPLICATION_JSON) |
|
868 |
.build(); |
|
869 |
|
|
870 |
} |
|
871 |
@POST |
|
872 |
@Path("/feed/bulk") |
|
873 |
@Produces(MediaType.APPLICATION_JSON) |
|
874 |
@Consumes(MediaType.APPLICATION_JSON) |
|
875 |
public Response feedBulkRecords(String input, @Context HttpServletRequest request, |
|
876 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
877 |
@HeaderParam("Origin") String origin, |
|
878 |
@CookieParam("AccessToken") String cookie) { |
|
879 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
880 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
881 |
|
|
882 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)|| !authorization.hasValidOrigin(origin)){ |
|
883 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
884 |
.type(MediaType.APPLICATION_JSON) |
|
885 |
.build(); |
|
886 |
} |
|
887 |
|
|
888 |
if (authorization.isRegistered(token)) { |
|
889 |
ArrayList<String> insertedIds = new ArrayList<String>(); |
|
890 |
JsonArray errorInClaims = new JsonArray(); |
|
891 |
int code200 = 0; |
|
892 |
int code400 = 0; |
|
893 |
int code500 = 0; |
|
894 |
JsonArray jsonArray = new JsonParser().parse(input).getAsJsonArray(); |
|
895 |
for (JsonElement je : jsonArray) { |
|
896 |
JsonObject jsonObject = je.getAsJsonObject(); |
|
897 |
Boolean inserted = directIndexHandler.insertRecord(new Gson().toJson(jsonObject.get("record"))); |
|
898 |
if (inserted) { |
|
899 |
insertedIds.add(jsonObject.get("id").getAsString()); |
|
900 |
code200++; |
|
901 |
} else { |
|
902 |
errorInClaims.add(jsonObject.get("id").getAsString()); |
|
903 |
code400++; |
|
904 |
} |
|
905 |
|
|
906 |
|
|
907 |
} |
|
908 |
if (jsonArray.size() == code500) { |
|
909 |
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(compose500BulkInsertMessage("Fail to add new claim.", insertedIds, errorInClaims)) |
|
910 |
.type(MediaType.APPLICATION_JSON).build(); |
|
911 |
} else if (code200 > 0) { |
|
912 |
return Response.status(200).entity(compose201BulkInsertMessage(insertedIds, errorInClaims)).type(MediaType.APPLICATION_JSON).build(); |
|
913 |
} else { |
|
914 |
return Response.status(Response.Status.BAD_REQUEST).entity(compose400BulkInsertMessage("The given ids are wrong.", insertedIds, errorInClaims)) |
|
915 |
.type(MediaType.APPLICATION_JSON).build(); |
|
916 |
} |
|
917 |
} |
|
918 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
919 |
.type(MediaType.APPLICATION_JSON) |
|
920 |
.build(); |
|
921 |
|
|
922 |
} |
|
923 |
|
|
924 |
@Path("/communities") |
|
925 |
@GET |
|
926 |
@Produces(MediaType.APPLICATION_JSON) |
|
927 |
public Response fetchCommunities(@HeaderParam("X-XSRF-TOKEN") String token, |
|
928 |
@CookieParam("AccessToken") String cookie) throws ISLookUpServiceException { |
|
929 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
930 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
931 |
|
|
932 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
933 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
934 |
.type(MediaType.APPLICATION_JSON) |
|
935 |
.build(); |
|
936 |
} |
|
937 |
|
|
938 |
if (authorization.isRegistered(token)) { |
|
939 |
//it needs to have at lease one category with @claim=true |
|
940 |
List<String> communities = lookupServiceLocator.getService().quickSearchProfile |
|
941 |
("for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType') \n" + |
|
942 |
" where $x//context[@type='community']//category[@claim='true'] \n" + |
|
943 |
" return <communities>{$x//context/@id}{$x//context/@label}</communities>"); |
|
944 |
|
|
945 |
return Response.status(200).entity(composeDataResponse(xml2Json(communities))).type(MediaType.APPLICATION_JSON).build(); |
|
946 |
} |
|
947 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
948 |
.type(MediaType.APPLICATION_JSON) |
|
949 |
.build(); |
|
950 |
} |
|
951 |
|
|
952 |
@Path("/communities/{communityid}/categories") |
|
953 |
@GET |
|
954 |
@Produces(MediaType.APPLICATION_JSON) |
|
955 |
public Response fetchCommunityCategories(@PathParam("communityid") String communityid, |
|
956 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
957 |
@CookieParam("AccessToken") String cookie) throws ISLookUpServiceException { |
|
958 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
959 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
960 |
|
|
961 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
962 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
963 |
.type(MediaType.APPLICATION_JSON) |
|
964 |
.build(); |
|
965 |
} |
|
966 |
|
|
967 |
if (authorization.isRegistered(token)) { |
|
968 |
List<String> categories = lookupServiceLocator.getService().quickSearchProfile |
|
969 |
("for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType')//context[@id='" + communityid + "']//category[@claim=\'true\']\n" + |
|
970 |
"return <category>{$x/@id}{$x/@label}</category>"); |
|
971 |
|
|
972 |
logger.info("for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType')//context[@id='" + communityid + "']//category[@claim=\'true\']\n" + |
|
973 |
"return <category>{$x/@id}{$x/@label}</category>"); |
|
974 |
|
|
975 |
if (categories == null || categories.isEmpty()) { |
|
976 |
return Response.status(404).entity(compose404Message("There are no categories for community with id " + communityid)).type(MediaType.APPLICATION_JSON).build(); |
|
977 |
} |
|
978 |
|
|
979 |
xml2Json(categories); |
|
980 |
|
|
981 |
return Response.status(200).entity(composeDataResponse(xml2Json(categories))).type(MediaType.APPLICATION_JSON).build(); |
|
982 |
} |
|
983 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
984 |
.type(MediaType.APPLICATION_JSON) |
|
985 |
.build(); |
|
986 |
} |
|
987 |
|
|
988 |
@Path("/categories/{categoryid}/concepts") |
|
989 |
@GET |
|
990 |
@Produces(MediaType.APPLICATION_JSON) |
|
991 |
public Response fetchCategoryConcepts(@PathParam("categoryid") String categoryid, |
|
992 |
@HeaderParam("X-XSRF-TOKEN") String token, |
|
993 |
@CookieParam("AccessToken") String cookie) throws ISLookUpServiceException { |
|
994 |
logger.debug("header \"X-XSRF-TOKEN\" has value " + token); |
|
995 |
logger.debug("cookie \"AccessToken\" has value " + cookie); |
|
996 |
|
|
997 |
if(token == null || token.isEmpty() || cookie == null || cookie.isEmpty() || !cookie.equals(token)){ |
|
998 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. Maybe you are not registered.")) |
|
999 |
.type(MediaType.APPLICATION_JSON) |
|
1000 |
.build(); |
|
1001 |
} |
|
1002 |
|
|
1003 |
if (authorization.isRegistered(token)) { |
|
1004 |
List<String> concepts = lookupServiceLocator.getService().quickSearchProfile |
|
1005 |
("for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType') return $x//category[@id='" + categoryid + "']//concept"); |
|
1006 |
|
|
1007 |
if (concepts == null || concepts.isEmpty()) { |
|
1008 |
return Response.status(404).entity(compose404Message("There are no concepts for category with id " + categoryid)).type(MediaType.APPLICATION_JSON).build(); |
|
1009 |
} |
|
1010 |
|
|
1011 |
return Response.status(200).entity(composeDataResponse(xml2Json(concepts))).type(MediaType.APPLICATION_JSON).build(); |
|
1012 |
} |
|
1013 |
return Response.status(Response.Status.FORBIDDEN).entity(compose403Message("Forbidden: You don't have permission to access. You are not registered.")) |
|
1014 |
.type(MediaType.APPLICATION_JSON) |
|
1015 |
.build(); |
|
1016 |
} |
|
1017 |
|
|
1018 |
private String xml2Json(List<String> input) { |
|
1019 |
StringBuilder builder = new StringBuilder(); |
|
1020 |
for(String category: input) { |
|
1021 |
builder.append(category); |
|
1022 |
} |
|
1023 |
return builder.toString(); |
|
1024 |
} |
|
1025 |
|
|
1026 |
private String compose400Message(String message) { |
|
1027 |
return "{ \"status\" : \"error\", \"code\" : \"400\", \"message\" : \" " + message +" \" }"; |
|
1028 |
} |
|
1029 |
|
|
1030 |
private String compose400Message(String message, Exception exception) { |
|
1031 |
return "{ \"status\" : \"error\", \"code\" : \"400\", \"message\" : \" " + message +"\", " + |
|
1032 |
"\"description\" : \""+ exception.getMessage() +"\" }"; |
|
1033 |
} |
|
1034 |
|
|
1035 |
private String compose403Message(String message) { |
|
1036 |
return "{ \"status\" : \"error\", \"code\" : \"400\", \"message\" : \" " + message +"\", " + |
|
1037 |
"\"description\" : \"\" }"; |
|
1038 |
} |
|
1039 |
|
|
1040 |
private String compose404BulkDeleteMessage(String message, List<String> deletedIds, List<String> notFoundIds) { |
|
1041 |
return "{ \"status\" : \"error\", \"code\" : \"404\", \"message\" : \" " + message +" \""+ "\"deletedIds\" : " + new Gson().toJson(deletedIds) +","+ "\"notFoundIds\" : " + new Gson().toJson(notFoundIds) + " }"; |
|
1042 |
} |
|
1043 |
private String compose404Message(String message) { |
|
1044 |
return "{ \"status\" : \"error\", \"code\" : \"404\", \"message\" : \" " + message +" \" }"; |
|
1045 |
} |
|
1046 |
|
|
1047 |
private String compose400BulkInsertMessage(String message, List<String> insertedIds,JsonArray errorInClaims) { |
|
1048 |
return "{ \"status\" : \"error\", \"code\" : \"400\", \"message\" : \" " + message +" \""+ ", \"insertedIds\" : " + new Gson().toJson(insertedIds) +","+ "\"errorInClaims\" : " + new Gson().toJson(errorInClaims) + " }"; |
|
1049 |
} |
|
1050 |
|
|
1051 |
private String compose500Message(String message, Throwable throwable) { |
|
1052 |
return "{ \"status\" : \"fail\", \"code\" : \"500\", \"message\" : \" " + message + "\", " + |
|
1053 |
"\"description\" : \""+ throwable.getMessage() +"\" }"; |
|
1054 |
} |
|
1055 |
|
|
1056 |
private String compose500BulkInsertMessage(String message, List<String> insertedIds, JsonArray errorInClaims) { |
|
1057 |
return "{ \"status\" : \"fail\", \"code\" : \"500\", \"message\" : \" " + message + "\", " + |
|
1058 |
"\"description\" : \""+ "\" , " + "\"insertedIds\" : " + new Gson().toJson(insertedIds) +","+ "\"errorInClaims\" : " + new Gson().toJson(errorInClaims) + " }"; |
|
1059 |
} |
|
1060 |
|
|
1061 |
/* |
|
1062 |
TODO check if needed |
|
1063 |
private String compose500BulkDeleteMessage(String message, List<String> deletedIds, List<String> notFoundIds, Exception exception) { |
|
1064 |
return "{ \"status\" : \"fail\", \"code\" : \"500\", \"message\" : \" " + message + "\", " + |
|
1065 |
"\"description\" : \""+ exception.getMessage() +"\" ," + "\"deletedIds\" : " + new Gson().toJson(deletedIds) +","+ "\"notFoundIds\" : " + new Gson().toJson(notFoundIds) + " }"; |
|
1066 |
} |
|
1067 |
|
|
1068 |
TODO check if needed |
|
1069 |
private String compose200Message(){ |
|
1070 |
return " { \"status\" : \"success\", \"code\": \"200\" }"; |
|
1071 |
} |
|
1072 |
|
|
1073 |
TODO check if needed |
|
1074 |
private String compose204Message(){ |
|
1075 |
return " { \"status\" : \"success\", \"code\": \"204\" }"; |
|
1076 |
} */ |
|
1077 |
|
|
1078 |
private String compose204BulkDeleteMessage(List<String> deletedIds, List<String> notFoundIds){ |
|
1079 |
return " { \"status\" : \"success\", \"code\": \"204\", "+ "\"deletedIds\" : " + new Gson().toJson(deletedIds) +","+ "\"notFoundIds\" : " + new Gson().toJson(notFoundIds) + "}"; |
|
1080 |
} |
|
1081 |
|
|
1082 |
|
|
1083 |
private String compose201PostMessage(@Context HttpServletRequest request, String claimId){ |
|
1084 |
String url = request.getRequestURL().toString(); |
|
1085 |
//String query = request.getQueryString(); |
|
1086 |
|
|
1087 |
return " { \"status\" : \"success\", \"code\": \"201\", \"link\": \"" + url +"/"+ claimId +"\" }"; |
|
1088 |
} |
|
1089 |
private String compose201BulkInsertMessage(List<String> insertedIds, JsonArray errorInClaims){ |
|
1090 |
//String url = request.getRequestURL().toString(); |
|
1091 |
//String query = request.getQueryString(); |
|
1092 |
|
|
1093 |
return " { \"status\" : \"success\", \"code\": \"201\","+ "\"insertedIds\" : " + new Gson().toJson(insertedIds) +","+ "\"errorInClaims\" : " + new Gson().toJson(errorInClaims)+ "}"; |
|
1094 |
} |
|
1095 |
private String composeDataResponse(HttpServletRequest request, List<Claim> claims, int total, int offset, int limit) { |
|
1096 |
if(offset != -1 && limit != -1) { // if offset and limit are -1, no paging in the response |
|
1097 |
return " { \"status\" : \"success\", \"code\": \"200\", "+composeTotalResults(total)+", " + composePaging(request, total, offset, limit) + ", " |
|
1098 |
+ "\"data\" : " + new Gson().toJson(claims) + " }"; |
|
1099 |
} else { |
|
1100 |
return " { \"status\" : \"success\", \"code\": \"200\", "+composeTotalResults(total)+", " |
|
1101 |
+ "\"data\" : " + new Gson().toJson(claims) + " }"; |
|
1102 |
} |
|
1103 |
} |
|
1104 |
|
|
1105 |
private String composeDataResponse(String xml) { |
|
1106 |
return " { \"status\" : \"success\", \"code\": \"200\", " |
|
1107 |
+ "\"data\" : " + XML.toJSONObject(xml).toString() + " }"; |
|
1108 |
} |
|
1109 |
|
|
1110 |
private String composeDataResponse(Claim claim) { |
|
1111 |
return " { \"status\" : \"success\", \"code\": \"200\", " + "\"data\" : " + new Gson().toJson(claim) + " }"; |
|
1112 |
} |
|
1113 |
|
|
1114 |
private static String composePaging(HttpServletRequest request, int total, int currentOffset, int limit) { |
|
1115 |
logger.info("total " + total); |
|
1116 |
logger.info("currentOffset " + currentOffset); |
|
1117 |
logger.info("limit " + limit); |
|
1118 |
|
|
1119 |
String url = request.getRequestURL().toString(); |
|
1120 |
//String query = request.getQueryString(); |
|
1121 |
|
|
1122 |
String first = url+"?offset=0&limit=20"; |
|
1123 |
|
|
1124 |
int previousPage; |
|
1125 |
int nextPage; |
|
1126 |
int lastPage; |
|
1127 |
|
|
1128 |
if (total <= limit) { |
|
1129 |
lastPage = 0; |
|
1130 |
} else { |
|
1131 |
if(total%limit == 0) { |
|
1132 |
lastPage = total/limit-1; |
|
1133 |
} else { |
|
1134 |
lastPage = total/limit ; |
|
1135 |
} |
|
1136 |
} |
|
1137 |
String last = url+"?offset=" + lastPage + "&limit=20"; |
|
1138 |
|
|
1139 |
if (currentOffset-1 <= 0) { |
|
1140 |
previousPage = 0; |
|
1141 |
} else { |
|
1142 |
previousPage = currentOffset-1; |
|
1143 |
} |
|
1144 |
String previous = url+"?offset=" + previousPage + "&limit=20"; |
|
1145 |
|
|
1146 |
if (currentOffset+1 >= lastPage) { |
|
1147 |
nextPage = lastPage; |
|
1148 |
|
|
1149 |
} else { |
|
1150 |
nextPage = currentOffset + 1; |
|
1151 |
} |
|
1152 |
String next = url+"?offset=" + nextPage + "&limit=20"; |
|
1153 |
|
|
1154 |
return "\"paging\": [" + "{\"rel\":\"first\", \"href\":\"" + first +"\"}, {\"rel\":\"last\", \"href\":\"" + last + "\"}, {\"rel\":\"previous\", \"href\": \"" + previous + "\"}, {\"rel\":\"next\", \"href\":\"" + next +"\"}"+ "]"; |
|
1155 |
} |
|
1156 |
private String composeTotalResults(int total) { |
|
1157 |
return "\"total\": \""+total+"\""; |
|
1158 |
} |
|
1159 |
|
|
1160 |
public static void main(String[] args) { |
|
1161 |
|
|
1162 |
/* |
|
1163 |
EmailValidator emailValidator = EmailValidator.getInstance(); |
|
1164 |
System.out.println(emailValidator.isValid("jate@gdddd")); |
|
1165 |
|
|
1166 |
InternetAddress emailAddr = null; |
|
1167 |
try { |
|
1168 |
emailAddr = new InternetAddress("jate@gdddd"); |
|
1169 |
emailAddr.validate(); |
|
1170 |
} catch (AddressException e) { |
|
1171 |
System.out.println("false"); |
|
1172 |
} |
|
1173 |
System.out.println("true"); |
|
1174 |
|
|
1175 |
ArrayList<String> insertedIds= new ArrayList<String>(); |
|
1176 |
insertedIds.add("1"); |
|
1177 |
insertedIds.add("2"); |
|
1178 |
insertedIds.add("3"); |
|
1179 |
System.out.println(helloWorldService.compose403Message("hello")); |
|
1180 |
|
|
1181 |
*/ |
|
1182 |
// BasicConfigurator.configure(); |
|
1183 |
// ApplicationContext context = new ClassPathXmlApplicationContext("eu/dnetlib/openaire/rest/springContext-claims-authorization.xml"); |
|
1184 |
// |
|
1185 |
// Authorization authorization = context.getBean(Authorization.class); |
|
1186 |
// UserHandler userHandler = context.getBean(UserHandler.class); |
|
1187 |
// System.out.println(authorization.getAdminRoles()); |
|
1188 |
// authorization.isAdmin("eyJraWQiOiJvaWRjIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIwOTMxNzMwMTMyODMzNjMyQG9wZW5taW50ZWQuZXUiLCJhenAiOiIyNGU4MzE3Ni0xMzEyLTRiYTMtYmMwYi1mZmVlYmVhMTYwM2UiLCJpc3MiOiJodHRwczpcL1wvYWFpLm9wZW5taW50ZWQuZXVcL29pZGNcLyIsImV4cCI6MTQ5ODQ4NTk3NiwiaWF0IjoxNDk4NDcxNTc2LCJqdGkiOiJkMWRlZjc1Yi00MTEyLTRiZDktYTIyNi0wZThhOWI2M2Y3MWQifQ.WVYOb_yO8OaxIIt2jRYEDQBhGGFRDTBw3DgtVV_smuN5yx1ScCj6aehLu3JKPSArme4m2SGF4TEGhpwNJkwhM2WapGtxmtuCmCzYIo_QlC1Yki9hr2OT2rXMcQsJCiKaBSf6pLue6Sn78GMB5yaUTvOQHRgidXGiZXH5lsuZUx15Q6Equ_wzond_rgP9mRheRkTyIFuvvg4PuzmudBc11Ty863vIIQtoWF7_p98zTbHxiNF9lLPwzPZKxDoQ8JeayQEC-jsWVLgxmp-h0jG_Ko5jFVVJeeosqMMucOrs2FT_NKHVYVqB6VVh0C6nOufeiLrNDeMUlDT4dAvKD2zE9w"); |
|
1189 |
|
|
1190 |
} |
|
1191 |
|
|
1192 |
} |
Also available in: Unified diff
MERGE newClaimsAPI 42190:48301