001 /*
002 * Copyright 2011-2012 UnboundID Corp.
003 *
004 * This program is free software; you can redistribute it and/or modify
005 * it under the terms of the GNU General Public License (GPLv2 only)
006 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
007 * as published by the Free Software Foundation.
008 *
009 * This program is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012 * GNU General Public License for more details.
013 *
014 * You should have received a copy of the GNU General Public License
015 * along with this program; if not, see <http://www.gnu.org/licenses>.
016 */
017
018 package com.unboundid.scim.wink;
019
020 import com.unboundid.scim.schema.ResourceDescriptor;
021 import com.unboundid.scim.sdk.SCIMBackend;
022
023 import javax.servlet.ServletContext;
024 import javax.ws.rs.Consumes;
025 import javax.ws.rs.DELETE;
026 import javax.ws.rs.GET;
027 import javax.ws.rs.POST;
028 import javax.ws.rs.PUT;
029 import javax.ws.rs.Path;
030 import javax.ws.rs.PathParam;
031 import javax.ws.rs.Produces;
032 import javax.ws.rs.QueryParam;
033 import javax.ws.rs.core.Context;
034 import javax.ws.rs.core.HttpHeaders;
035 import javax.ws.rs.core.MediaType;
036 import javax.ws.rs.core.Response;
037 import javax.ws.rs.core.SecurityContext;
038 import javax.ws.rs.core.UriInfo;
039 import java.io.InputStream;
040
041 import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_FILTER;
042 import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_PAGE_SIZE;
043 import static com.unboundid.scim.sdk.SCIMConstants.
044 QUERY_PARAMETER_PAGE_START_INDEX;
045 import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_SORT_BY;
046 import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_SORT_ORDER;
047
048
049
050 /**
051 * This class is a Wink dynamic resource implementation for operations
052 * on a SCIM resource. The set of supported resources and their endpoints
053 * are not known until run-time hence it must be implemented as a dynamic
054 * resource.
055 */
056 public class SCIMResource extends AbstractSCIMResource
057 {
058 /**
059 * Create a new SCIM wink resource for operations on a SCIM endpoint.
060 *
061 * @param resourceDescriptor The resource descriptor to use.
062 * @param resourceStats The ResourceStats instance to use.
063 * @param backend The SCIMBackend to use to process requests.
064 */
065 public SCIMResource(final ResourceDescriptor resourceDescriptor,
066 final ResourceStats resourceStats,
067 final SCIMBackend backend)
068 {
069 super(resourceDescriptor.getEndpoint(), resourceDescriptor,
070 resourceStats, backend);
071 }
072
073
074
075 /**
076 * Implement the GET query operation producing JSON format.
077 *
078 * @param servletContext The servlet context of the current request.
079 * @param securityContext The security context of the current request.
080 * @param headers The request headers.
081 * @param uriInfo The URI info for the request.
082 * @param filterString The filter query parameter, or {@code null}.
083 * @param sortBy The sortBy query parameter, or {@code null}.
084 * @param sortOrder The sortOrder query parameter, or {@code null}.
085 * @param pageStartIndex The startIndex query parameter, or {@code null}.
086 * @param pageSize The count query parameter, or {@code null}.
087 *
088 * @return The response to the request.
089 */
090 @GET
091 @Produces(MediaType.APPLICATION_JSON)
092 public Response doJsonGet(@Context final ServletContext servletContext,
093 @Context final SecurityContext securityContext,
094 @Context final HttpHeaders headers,
095 @Context final UriInfo uriInfo,
096 @QueryParam(QUERY_PARAMETER_FILTER)
097 final String filterString,
098 @QueryParam(QUERY_PARAMETER_SORT_BY)
099 final String sortBy,
100 @QueryParam(QUERY_PARAMETER_SORT_ORDER)
101 final String sortOrder,
102 @QueryParam(QUERY_PARAMETER_PAGE_START_INDEX)
103 final String pageStartIndex,
104 @QueryParam(QUERY_PARAMETER_PAGE_SIZE)
105 final String pageSize)
106 {
107 final RequestContext requestContext =
108 new RequestContext(servletContext, securityContext, headers, uriInfo,
109 MediaType.APPLICATION_JSON_TYPE,
110 MediaType.APPLICATION_JSON_TYPE);
111
112 return getUsers(requestContext, filterString, sortBy, sortOrder,
113 pageStartIndex, pageSize);
114 }
115
116
117
118 /**
119 * Implement the GET query operation producing XML format.
120 *
121 * @param servletContext The servlet context of the current request.
122 * @param securityContext The security context of the current request.
123 * @param headers The request headers.
124 * @param uriInfo The URI info for the request.
125 * @param filterString The filter query parameter, or {@code null}.
126 * @param sortBy The sortBy query parameter, or {@code null}.
127 * @param sortOrder The sortOrder query parameter, or {@code null}.
128 * @param pageStartIndex The startIndex query parameter, or {@code null}.
129 * @param pageSize The count query parameter, or {@code null}.
130 *
131 * @return The response to the request.
132 */
133 @GET
134 @Produces(MediaType.APPLICATION_XML)
135 public Response doXmlGet(@Context final ServletContext servletContext,
136 @Context final SecurityContext securityContext,
137 @Context final HttpHeaders headers,
138 @Context final UriInfo uriInfo,
139 @QueryParam(QUERY_PARAMETER_FILTER)
140 final String filterString,
141 @QueryParam(QUERY_PARAMETER_SORT_BY)
142 final String sortBy,
143 @QueryParam(QUERY_PARAMETER_SORT_ORDER)
144 final String sortOrder,
145 @QueryParam(QUERY_PARAMETER_PAGE_START_INDEX)
146 final String pageStartIndex,
147 @QueryParam(QUERY_PARAMETER_PAGE_SIZE)
148 final String pageSize)
149 {
150 final RequestContext requestContext =
151 new RequestContext(servletContext, securityContext, headers, uriInfo,
152 MediaType.APPLICATION_XML_TYPE,
153 MediaType.APPLICATION_XML_TYPE);
154
155 return getUsers(requestContext, filterString, sortBy, sortOrder,
156 pageStartIndex, pageSize);
157 }
158
159
160
161 /**
162 * Implement the GET operation on a specified user resource producing
163 * JSON format.
164 *
165 * @param userID The requested user ID.
166 * @param servletContext The servlet context for the request.
167 * @param securityContext The security context for the request.
168 * @param headers The request headers.
169 * @param uriInfo The URI info for the request.
170 *
171 * @return The response to the request.
172 */
173 @GET
174 @Path("{userID}")
175 @Produces(MediaType.APPLICATION_JSON)
176 public Response doJsonGet(@PathParam("userID") final String userID,
177 @Context final ServletContext servletContext,
178 @Context final SecurityContext securityContext,
179 @Context final HttpHeaders headers,
180 @Context final UriInfo uriInfo)
181 {
182 final RequestContext requestContext =
183 new RequestContext(servletContext, securityContext, headers, uriInfo,
184 MediaType.APPLICATION_JSON_TYPE,
185 MediaType.APPLICATION_JSON_TYPE);
186 return getUser(requestContext, userID);
187 }
188
189
190
191 /**
192 * Implement the GET operation on a specified user resource producing
193 * XML format.
194 *
195 * @param userID The requested user ID.
196 * @param servletContext The servlet context for the request.
197 * @param securityContext The security context for the request.
198 * @param headers The request headers.
199 * @param uriInfo The URI info for the request.
200 *
201 * @return The response to the request.
202 */
203 @GET
204 @Path("{userID}")
205 @Produces(MediaType.APPLICATION_XML)
206 public Response doXmlGet(@PathParam("userID") final String userID,
207 @Context final ServletContext servletContext,
208 @Context final SecurityContext securityContext,
209 @Context final HttpHeaders headers,
210 @Context final UriInfo uriInfo)
211 {
212 final RequestContext requestContext =
213 new RequestContext(servletContext, securityContext, headers, uriInfo,
214 MediaType.APPLICATION_XML_TYPE,
215 MediaType.APPLICATION_XML_TYPE);
216 return getUser(requestContext, userID);
217 }
218
219
220
221 /**
222 * Implement the GET operation on a specified user resource where the URL
223 * specifies JSON content type.
224 *
225 * @param userID The requested user ID.
226 * @param servletContext The servlet context for the request.
227 * @param securityContext The security context for the request.
228 * @param headers The request headers.
229 * @param uriInfo The URI info for the request.
230 *
231 * @return The response to the request.
232 */
233 @GET
234 @Path("{userID}.json")
235 @Produces(MediaType.APPLICATION_JSON)
236 public Response doDotJsonGet(@PathParam("userID") final String userID,
237 @Context final ServletContext servletContext,
238 @Context final SecurityContext securityContext,
239 @Context final HttpHeaders headers,
240 @Context final UriInfo uriInfo)
241 {
242 final RequestContext requestContext =
243 new RequestContext(servletContext, securityContext, headers, uriInfo,
244 MediaType.APPLICATION_JSON_TYPE,
245 MediaType.APPLICATION_JSON_TYPE);
246 return getUser(requestContext, userID);
247 }
248
249
250
251 /**
252 * Implement the GET operation on a specified user resource where the URL
253 * specifies XML content type.
254 *
255 * @param userID The requested user ID.
256 * @param servletContext The servlet context for the request.
257 * @param securityContext The security context for the request.
258 * @param headers The request headers.
259 * @param uriInfo The URI info for the request.
260 *
261 * @return The response to the request.
262 */
263 @GET
264 @Path("{userID}.xml")
265 @Produces(MediaType.APPLICATION_XML)
266 public Response doDotXmlGet(@PathParam("userID") final String userID,
267 @Context final ServletContext servletContext,
268 @Context final SecurityContext securityContext,
269 @Context final HttpHeaders headers,
270 @Context final UriInfo uriInfo)
271 {
272 final RequestContext requestContext =
273 new RequestContext(servletContext, securityContext, headers, uriInfo,
274 MediaType.APPLICATION_XML_TYPE,
275 MediaType.APPLICATION_XML_TYPE);
276 return getUser(requestContext, userID);
277 }
278
279
280
281 /**
282 * Implement the POST operation consuming and producing JSON format.
283 *
284 * @param inputStream The content to be consumed.
285 * @param servletContext The servlet context for the request.
286 * @param securityContext The security context for the request.
287 * @param headers The request headers.
288 * @param uriInfo The URI info for the request.
289 *
290 * @return The response to the request.
291 */
292 @POST
293 @Consumes(MediaType.APPLICATION_JSON)
294 @Produces(MediaType.APPLICATION_JSON)
295 public Response doJsonJsonPost(final InputStream inputStream,
296 @Context final ServletContext servletContext,
297 @Context final SecurityContext securityContext,
298 @Context final HttpHeaders headers,
299 @Context final UriInfo uriInfo)
300 {
301 final RequestContext requestContext =
302 new RequestContext(servletContext, securityContext, headers, uriInfo,
303 MediaType.APPLICATION_JSON_TYPE,
304 MediaType.APPLICATION_JSON_TYPE);
305 return postUser(requestContext, inputStream);
306 }
307
308
309
310 /**
311 * Implement the POST operation consuming and producing XML format.
312 *
313 * @param inputStream The content to be consumed.
314 * @param servletContext The servlet context for the request.
315 * @param securityContext The security context for the request.
316 * @param headers The request headers.
317 * @param uriInfo The URI info for the request.
318 *
319 * @return The response to the request.
320 */
321 @POST
322 @Consumes(MediaType.APPLICATION_XML)
323 @Produces(MediaType.APPLICATION_XML)
324 public Response doXmlXmlPost(final InputStream inputStream,
325 @Context final ServletContext servletContext,
326 @Context final SecurityContext securityContext,
327 @Context final HttpHeaders headers,
328 @Context final UriInfo uriInfo)
329 {
330 final RequestContext requestContext =
331 new RequestContext(servletContext, securityContext, headers, uriInfo,
332 MediaType.APPLICATION_XML_TYPE,
333 MediaType.APPLICATION_XML_TYPE);
334 return postUser(requestContext, inputStream);
335 }
336
337
338
339 /**
340 * Implement the POST operation consuming XML format and producing JSON
341 * format.
342 *
343 * @param inputStream The content to be consumed.
344 * @param servletContext The servlet context for the request.
345 * @param securityContext The security context for the request.
346 * @param headers The request headers.
347 * @param uriInfo The URI info for the request.
348 *
349 * @return The response to the request.
350 */
351 @POST
352 @Consumes(MediaType.APPLICATION_XML)
353 @Produces(MediaType.APPLICATION_JSON)
354 public Response doXmlJsonPost(final InputStream inputStream,
355 @Context final ServletContext servletContext,
356 @Context final SecurityContext securityContext,
357 @Context final HttpHeaders headers,
358 @Context final UriInfo uriInfo)
359 {
360 final RequestContext requestContext =
361 new RequestContext(servletContext, securityContext, headers, uriInfo,
362 MediaType.APPLICATION_XML_TYPE,
363 MediaType.APPLICATION_JSON_TYPE);
364 return postUser(requestContext, inputStream);
365 }
366
367
368
369 /**
370 * Implement the POST operation consuming JSON format and producing XML
371 * format.
372 *
373 * @param inputStream The content to be consumed.
374 * @param servletContext The servlet context for the request.
375 * @param securityContext The security context for the request.
376 * @param headers The request headers.
377 * @param uriInfo The URI info for the request.
378 *
379 * @return The response to the request.
380 */
381 @POST
382 @Consumes(MediaType.APPLICATION_JSON)
383 @Produces(MediaType.APPLICATION_XML)
384 public Response doJsonXmlPost(final InputStream inputStream,
385 @Context final ServletContext servletContext,
386 @Context final SecurityContext securityContext,
387 @Context final HttpHeaders headers,
388 @Context final UriInfo uriInfo)
389 {
390 final RequestContext requestContext =
391 new RequestContext(servletContext, securityContext, headers, uriInfo,
392 MediaType.APPLICATION_JSON_TYPE,
393 MediaType.APPLICATION_XML_TYPE);
394 return postUser(requestContext, inputStream);
395 }
396
397
398
399 /**
400 * Implement the PUT operation consuming and producing JSON format.
401 *
402 * @param inputStream The content to be consumed.
403 * @param userID The target user ID.
404 * @param servletContext The servlet context for the request.
405 * @param securityContext The security context for the request.
406 * @param headers The request headers.
407 * @param uriInfo The URI info for the request.
408 *
409 * @return The response to the request.
410 */
411 @PUT
412 @Path("{userID}")
413 @Consumes(MediaType.APPLICATION_JSON)
414 @Produces(MediaType.APPLICATION_JSON)
415 public Response doJsonJsonPut(final InputStream inputStream,
416 @PathParam("userID") final String userID,
417 @Context final ServletContext servletContext,
418 @Context final SecurityContext securityContext,
419 @Context final HttpHeaders headers,
420 @Context final UriInfo uriInfo)
421 {
422 final RequestContext requestContext =
423 new RequestContext(servletContext, securityContext, headers, uriInfo,
424 MediaType.APPLICATION_JSON_TYPE,
425 MediaType.APPLICATION_JSON_TYPE);
426 return putUser(requestContext, userID, inputStream);
427 }
428
429
430
431 /**
432 * Implement the PUT operation where the URL specifies JSON format.
433 *
434 * @param inputStream The content to be consumed.
435 * @param userID The target user ID.
436 * @param servletContext The servlet context for the request.
437 * @param securityContext The security context for the request.
438 * @param headers The request headers.
439 * @param uriInfo The URI info for the request.
440 *
441 * @return The response to the request.
442 */
443 @PUT
444 @Path("{userID}.json")
445 @Consumes(MediaType.APPLICATION_JSON)
446 @Produces(MediaType.APPLICATION_JSON)
447 public Response doDotJsonPut(final InputStream inputStream,
448 @PathParam("userID") final String userID,
449 @Context final ServletContext servletContext,
450 @Context final SecurityContext securityContext,
451 @Context final HttpHeaders headers,
452 @Context final UriInfo uriInfo)
453 {
454 final RequestContext requestContext =
455 new RequestContext(servletContext, securityContext, headers, uriInfo,
456 MediaType.APPLICATION_JSON_TYPE,
457 MediaType.APPLICATION_JSON_TYPE);
458 return putUser(requestContext,
459 userID,
460 inputStream);
461 }
462
463
464
465 /**
466 * Implement the PUT operation where the URL specifies XML format.
467 *
468 * @param inputStream The content to be consumed.
469 * @param userID The target user ID.
470 * @param servletContext The servlet context for the request.
471 * @param securityContext The security context for the request.
472 * @param headers The request headers.
473 * @param uriInfo The URI info for the request.
474 *
475 * @return The response to the request.
476 */
477 @PUT
478 @Path("{userID}.xml")
479 @Consumes(MediaType.APPLICATION_XML)
480 @Produces(MediaType.APPLICATION_XML)
481 public Response doDotXmlPut(final InputStream inputStream,
482 @PathParam("userID") final String userID,
483 @Context final ServletContext servletContext,
484 @Context final SecurityContext securityContext,
485 @Context final HttpHeaders headers,
486 @Context final UriInfo uriInfo)
487 {
488 final RequestContext requestContext =
489 new RequestContext(servletContext, securityContext, headers, uriInfo,
490 MediaType.APPLICATION_XML_TYPE,
491 MediaType.APPLICATION_XML_TYPE);
492 return putUser(requestContext,
493 userID,
494 inputStream);
495 }
496
497
498
499 /**
500 * Implement the PUT operation consuming and producing XML format.
501 *
502 * @param inputStream The content to be consumed.
503 * @param userID The target user ID.
504 * @param servletContext The servlet context for the request.
505 * @param securityContext The security context for the request.
506 * @param headers The request headers.
507 * @param uriInfo The URI info for the request.
508 *
509 * @return The response to the request.
510 */
511 @PUT
512 @Path("{userID}")
513 @Consumes(MediaType.APPLICATION_XML)
514 @Produces(MediaType.APPLICATION_XML)
515 public Response doXmlXmlPut(final InputStream inputStream,
516 @PathParam("userID") final String userID,
517 @Context final ServletContext servletContext,
518 @Context final SecurityContext securityContext,
519 @Context final HttpHeaders headers,
520 @Context final UriInfo uriInfo)
521 {
522 final RequestContext requestContext =
523 new RequestContext(servletContext, securityContext, headers, uriInfo,
524 MediaType.APPLICATION_XML_TYPE,
525 MediaType.APPLICATION_XML_TYPE);
526 return putUser(requestContext, userID, inputStream);
527 }
528
529
530
531 /**
532 * Implement the PUT operation consuming XML format and producing JSON
533 * format.
534 *
535 * @param inputStream The content to be consumed.
536 * @param userID The target user ID.
537 * @param servletContext The servlet context for the request.
538 * @param securityContext The security context for the request.
539 * @param headers The request headers.
540 * @param uriInfo The URI info for the request.
541 *
542 * @return The response to the request.
543 */
544 @PUT
545 @Path("{userID}")
546 @Consumes(MediaType.APPLICATION_XML)
547 @Produces(MediaType.APPLICATION_JSON)
548 public Response doXmlJsonPut(final InputStream inputStream,
549 @PathParam("userID") final String userID,
550 @Context final ServletContext servletContext,
551 @Context final SecurityContext securityContext,
552 @Context final HttpHeaders headers,
553 @Context final UriInfo uriInfo)
554 {
555 final RequestContext requestContext =
556 new RequestContext(servletContext, securityContext, headers, uriInfo,
557 MediaType.APPLICATION_XML_TYPE,
558 MediaType.APPLICATION_JSON_TYPE);
559 return putUser(requestContext, userID, inputStream);
560 }
561
562
563
564 /**
565 * Implement the PUT operation consuming JSON format and producing XML
566 * format.
567 *
568 * @param inputStream The content to be consumed.
569 * @param userID The target user ID.
570 * @param servletContext The servlet context for the request.
571 * @param securityContext The security context for the request.
572 * @param headers The request headers.
573 * @param uriInfo The URI info for the request.
574 *
575 * @return The response to the request.
576 */
577 @PUT
578 @Path("{userID}")
579 @Consumes(MediaType.APPLICATION_JSON)
580 @Produces(MediaType.APPLICATION_XML)
581 public Response doJsonXmlPut(final InputStream inputStream,
582 @PathParam("userID") final String userID,
583 @Context final ServletContext servletContext,
584 @Context final SecurityContext securityContext,
585 @Context final HttpHeaders headers,
586 @Context final UriInfo uriInfo)
587 {
588 final RequestContext requestContext =
589 new RequestContext(servletContext, securityContext, headers, uriInfo,
590 MediaType.APPLICATION_JSON_TYPE,
591 MediaType.APPLICATION_XML_TYPE);
592 return putUser(requestContext, userID, inputStream);
593 }
594
595
596
597 /**
598 * Implement the DELETE operation on a specified user resource producing
599 * JSON format.
600 *
601 * @param userID The target user ID.
602 * @param servletContext The servlet context for the request.
603 * @param securityContext The security context for the request.
604 * @param headers The request headers.
605 * @param uriInfo The URI info for the request.
606 *
607 * @return The response to the request.
608 */
609 @DELETE
610 @Path("{userID}")
611 @Produces(MediaType.APPLICATION_JSON)
612 public Response doJsonDelete(@PathParam("userID") final String userID,
613 @Context final ServletContext servletContext,
614 @Context final SecurityContext securityContext,
615 @Context final HttpHeaders headers,
616 @Context final UriInfo uriInfo)
617 {
618 final RequestContext requestContext =
619 new RequestContext(servletContext, securityContext, headers, uriInfo,
620 MediaType.APPLICATION_JSON_TYPE,
621 MediaType.APPLICATION_JSON_TYPE);
622 return deleteUser(requestContext, userID);
623 }
624
625
626
627 /**
628 * Implement the DELETE operation on a specified user resource producing
629 * XML format.
630 *
631 * @param userID The target user ID.
632 * @param servletContext The servlet context for the request.
633 * @param securityContext The security context for the request.
634 * @param headers The request headers.
635 * @param uriInfo The URI info for the request.
636 *
637 * @return The response to the request.
638 */
639 @DELETE
640 @Path("{userID}")
641 @Produces(MediaType.APPLICATION_XML)
642 public Response doXmlDelete(@PathParam("userID") final String userID,
643 @Context final ServletContext servletContext,
644 @Context final SecurityContext securityContext,
645 @Context final HttpHeaders headers,
646 @Context final UriInfo uriInfo)
647 {
648 final RequestContext requestContext =
649 new RequestContext(servletContext, securityContext, headers, uriInfo,
650 MediaType.APPLICATION_XML_TYPE,
651 MediaType.APPLICATION_XML_TYPE);
652 return deleteUser(requestContext, userID);
653 }
654
655
656
657 /**
658 * Implement the DELETE operation on a specified user resource where the URL
659 * specifies JSON content type.
660 *
661 * @param userID The target user ID.
662 * @param servletContext The servlet context for the request.
663 * @param securityContext The security context for the request.
664 * @param headers The request headers.
665 * @param uriInfo The URI info for the request.
666 *
667 * @return The response to the request.
668 */
669 @DELETE
670 @Path("{userID}.json")
671 @Produces(MediaType.APPLICATION_JSON)
672 public Response doDotJsonDelete(@PathParam("userID") final String userID,
673 @Context
674 final ServletContext servletContext,
675 @Context
676 final SecurityContext securityContext,
677 @Context final HttpHeaders headers,
678 @Context final UriInfo uriInfo)
679 {
680 final RequestContext requestContext =
681 new RequestContext(servletContext, securityContext, headers, uriInfo,
682 MediaType.APPLICATION_JSON_TYPE,
683 MediaType.APPLICATION_JSON_TYPE);
684 return deleteUser(requestContext, userID);
685 }
686
687
688
689 /**
690 * Implement the DELETE operation on a specified user resource where the URL
691 * specifies XML content type.
692 *
693 * @param userID The target user ID.
694 * @param servletContext The servlet context for the request.
695 * @param securityContext The security context for the request.
696 * @param headers The request headers.
697 * @param uriInfo The URI info for the request.
698 *
699 * @return The response to the request.
700 */
701 @DELETE
702 @Path("{userID}.xml")
703 @Produces(MediaType.APPLICATION_XML)
704 public Response doDotXmlDelete(@PathParam("userID") final String userID,
705 @Context final ServletContext servletContext,
706 @Context final SecurityContext securityContext,
707 @Context final HttpHeaders headers,
708 @Context final UriInfo uriInfo)
709 {
710 final RequestContext requestContext =
711 new RequestContext(servletContext, securityContext, headers, uriInfo,
712 MediaType.APPLICATION_XML_TYPE,
713 MediaType.APPLICATION_XML_TYPE);
714 return deleteUser(requestContext, userID);
715 }
716 }