001/* 002 * Copyright 2011-2013 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 018package com.unboundid.scim.wink; 019 020import com.unboundid.scim.sdk.OAuthTokenHandler; 021 022import javax.servlet.http.HttpServletRequest; 023import javax.ws.rs.Consumes; 024import javax.ws.rs.DELETE; 025import javax.ws.rs.GET; 026import javax.ws.rs.POST; 027import javax.ws.rs.PUT; 028import javax.ws.rs.Path; 029import javax.ws.rs.PathParam; 030import javax.ws.rs.Produces; 031import javax.ws.rs.QueryParam; 032import javax.ws.rs.core.Context; 033import javax.ws.rs.core.HttpHeaders; 034import javax.ws.rs.core.MediaType; 035import javax.ws.rs.core.Response; 036import javax.ws.rs.core.SecurityContext; 037import javax.ws.rs.core.UriInfo; 038import java.io.InputStream; 039 040import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_BASE_ID; 041import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_FILTER; 042import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_PAGE_SIZE; 043import static com.unboundid.scim.sdk.SCIMConstants. 044 QUERY_PARAMETER_PAGE_START_INDEX; 045import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_SCOPE; 046import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_SORT_BY; 047import static com.unboundid.scim.sdk.SCIMConstants.QUERY_PARAMETER_SORT_ORDER; 048 049 050 051/** 052 * This class is a Wink resource implementation for operations 053 * on a SCIM resource. 054 */ 055@Path("{endpoint}") 056public class SCIMResource extends AbstractSCIMResource 057{ 058 /** 059 * Create a new SCIM wink resource for operations on a SCIM endpoint. 060 * 061 * @param application The SCIMApplication initializing this reosurce. 062 * @param tokenHandler The token handler to use for OAuth 063 * authentication. 064 */ 065 public SCIMResource(final SCIMApplication application, 066 final OAuthTokenHandler tokenHandler) 067 { 068 super(application, tokenHandler); 069 } 070 071 072 073 /** 074 * Implement the GET query operation producing JSON format. 075 * 076 * @param endpoint The resource endpoint. 077 * @param request The current HTTP servlet request. 078 * @param securityContext The security context of the current request. 079 * @param headers The request headers. 080 * @param uriInfo The URI info for the request. 081 * @param filterString The filter query parameter, or {@code null}. 082 * @param baseID The SCIM resource ID of the search base entry, 083 * or {@code null}. 084 * @param searchScope The LDAP search scope to use, or {@code null}. 085 * @param sortBy The sortBy query parameter, or {@code null}. 086 * @param sortOrder The sortOrder query parameter, or {@code null}. 087 * @param pageStartIndex The startIndex query parameter, or {@code null}. 088 * @param pageSize The count query parameter, or {@code null}. 089 * 090 * @return The response to the request. 091 */ 092 @GET 093 @Produces(MediaType.APPLICATION_JSON) 094 public Response doJsonGet(@PathParam("endpoint") final String endpoint, 095 @Context final HttpServletRequest request, 096 @Context final SecurityContext securityContext, 097 @Context final HttpHeaders headers, 098 @Context final UriInfo uriInfo, 099 @QueryParam(QUERY_PARAMETER_FILTER) 100 final String filterString, 101 @QueryParam(QUERY_PARAMETER_BASE_ID) 102 final String baseID, 103 @QueryParam(QUERY_PARAMETER_SCOPE) 104 final String searchScope, 105 @QueryParam(QUERY_PARAMETER_SORT_BY) 106 final String sortBy, 107 @QueryParam(QUERY_PARAMETER_SORT_ORDER) 108 final String sortOrder, 109 @QueryParam(QUERY_PARAMETER_PAGE_START_INDEX) 110 final String pageStartIndex, 111 @QueryParam(QUERY_PARAMETER_PAGE_SIZE) 112 final String pageSize) 113 { 114 final RequestContext requestContext = 115 new RequestContext(request, securityContext, headers, uriInfo, 116 MediaType.APPLICATION_JSON_TYPE, 117 MediaType.APPLICATION_JSON_TYPE); 118 119 return getUsers(requestContext, endpoint, filterString, baseID, searchScope, 120 sortBy, sortOrder, pageStartIndex, pageSize); 121 } 122 123 124 125 /** 126 * Implement the GET query operation producing XML format. 127 * 128 * @param endpoint The resource endpoint. 129 * @param request The current HTTP servlet request. 130 * @param securityContext The security context of the current request. 131 * @param headers The request headers. 132 * @param uriInfo The URI info for the request. 133 * @param filterString The filter query parameter, or {@code null}. 134 * @param baseID The SCIM resource ID of the search base entry, 135 * or {@code null}. 136 * @param searchScope The LDAP search scope to use, or {@code null}. 137 * @param sortBy The sortBy query parameter, or {@code null}. 138 * @param sortOrder The sortOrder query parameter, or {@code null}. 139 * @param pageStartIndex The startIndex query parameter, or {@code null}. 140 * @param pageSize The count query parameter, or {@code null}. 141 * 142 * @return The response to the request. 143 */ 144 @GET 145 @Produces(MediaType.APPLICATION_XML) 146 public Response doXmlGet(@PathParam("endpoint") final String endpoint, 147 @Context final HttpServletRequest request, 148 @Context final SecurityContext securityContext, 149 @Context final HttpHeaders headers, 150 @Context final UriInfo uriInfo, 151 @QueryParam(QUERY_PARAMETER_FILTER) 152 final String filterString, 153 @QueryParam(QUERY_PARAMETER_BASE_ID) 154 final String baseID, 155 @QueryParam(QUERY_PARAMETER_SCOPE) 156 final String searchScope, 157 @QueryParam(QUERY_PARAMETER_SORT_BY) 158 final String sortBy, 159 @QueryParam(QUERY_PARAMETER_SORT_ORDER) 160 final String sortOrder, 161 @QueryParam(QUERY_PARAMETER_PAGE_START_INDEX) 162 final String pageStartIndex, 163 @QueryParam(QUERY_PARAMETER_PAGE_SIZE) 164 final String pageSize) 165 { 166 final RequestContext requestContext = 167 new RequestContext(request, securityContext, headers, uriInfo, 168 MediaType.APPLICATION_XML_TYPE, 169 MediaType.APPLICATION_XML_TYPE); 170 171 return getUsers(requestContext, endpoint, filterString, baseID, searchScope, 172 sortBy, sortOrder, pageStartIndex, pageSize); 173 } 174 175 176 177 /** 178 * Implement the GET operation on a specified user resource producing 179 * JSON format. 180 * 181 * @param endpoint The resource endpoint. 182 * @param userID The requested user ID. 183 * @param request The current HTTP servlet request. 184 * @param securityContext The security context for the request. 185 * @param headers The request headers. 186 * @param uriInfo The URI info for the request. 187 * 188 * @return The response to the request. 189 */ 190 @GET 191 @Path("{userID}") 192 @Produces(MediaType.APPLICATION_JSON) 193 public Response doJsonGet(@PathParam("endpoint") final String endpoint, 194 @PathParam("userID") final String userID, 195 @Context final HttpServletRequest request, 196 @Context final SecurityContext securityContext, 197 @Context final HttpHeaders headers, 198 @Context final UriInfo uriInfo) 199 { 200 final RequestContext requestContext = 201 new RequestContext(request, securityContext, headers, uriInfo, 202 MediaType.APPLICATION_JSON_TYPE, 203 MediaType.APPLICATION_JSON_TYPE); 204 return getUser(requestContext, endpoint, userID); 205 } 206 207 208 209 /** 210 * Implement the GET operation on a specified user resource producing 211 * XML format. 212 * 213 * @param endpoint The resource endpoint. 214 * @param userID The requested user ID. 215 * @param request The current HTTP servlet request. 216 * @param securityContext The security context for the request. 217 * @param headers The request headers. 218 * @param uriInfo The URI info for the request. 219 * 220 * @return The response to the request. 221 */ 222 @GET 223 @Path("{userID}") 224 @Produces(MediaType.APPLICATION_XML) 225 public Response doXmlGet(@PathParam("endpoint") final String endpoint, 226 @PathParam("userID") final String userID, 227 @Context final HttpServletRequest request, 228 @Context final SecurityContext securityContext, 229 @Context final HttpHeaders headers, 230 @Context final UriInfo uriInfo) 231 { 232 final RequestContext requestContext = 233 new RequestContext(request, securityContext, headers, uriInfo, 234 MediaType.APPLICATION_XML_TYPE, 235 MediaType.APPLICATION_XML_TYPE); 236 return getUser(requestContext, endpoint, userID); 237 } 238 239 240 241 /** 242 * Implement the GET operation on a specified user resource where the URL 243 * specifies JSON content type. 244 * 245 * @param endpoint The resource endpoint. 246 * @param userID The requested user ID. 247 * @param request The current HTTP servlet request. 248 * @param securityContext The security context for the request. 249 * @param headers The request headers. 250 * @param uriInfo The URI info for the request. 251 * 252 * @return The response to the request. 253 */ 254 @GET 255 @Path("{userID}.json") 256 @Produces(MediaType.APPLICATION_JSON) 257 public Response doDotJsonGet(@PathParam("endpoint") final String endpoint, 258 @PathParam("userID") final String userID, 259 @Context final HttpServletRequest request, 260 @Context final SecurityContext securityContext, 261 @Context final HttpHeaders headers, 262 @Context final UriInfo uriInfo) 263 { 264 final RequestContext requestContext = 265 new RequestContext(request, securityContext, headers, uriInfo, 266 MediaType.APPLICATION_JSON_TYPE, 267 MediaType.APPLICATION_JSON_TYPE); 268 return getUser(requestContext, endpoint, userID); 269 } 270 271 272 273 /** 274 * Implement the GET operation on a specified user resource where the URL 275 * specifies XML content type. 276 * 277 * @param endpoint The resource endpoint. 278 * @param userID The requested user ID. 279 * @param request The current HTTP servlet request. 280 * @param securityContext The security context for the request. 281 * @param headers The request headers. 282 * @param uriInfo The URI info for the request. 283 * 284 * @return The response to the request. 285 */ 286 @GET 287 @Path("{userID}.xml") 288 @Produces(MediaType.APPLICATION_XML) 289 public Response doDotXmlGet(@PathParam("endpoint") final String endpoint, 290 @PathParam("userID") final String userID, 291 @Context final HttpServletRequest request, 292 @Context final SecurityContext securityContext, 293 @Context final HttpHeaders headers, 294 @Context final UriInfo uriInfo) 295 { 296 final RequestContext requestContext = 297 new RequestContext(request, securityContext, headers, uriInfo, 298 MediaType.APPLICATION_XML_TYPE, 299 MediaType.APPLICATION_XML_TYPE); 300 return getUser(requestContext, endpoint, userID); 301 } 302 303 304 305 /** 306 * Implement the POST operation consuming and producing JSON format. 307 * 308 * @param inputStream The content to be consumed. 309 * @param endpoint The resource endpoint. 310 * @param request The current HTTP servlet request. 311 * @param securityContext The security context for the request. 312 * @param headers The request headers. 313 * @param uriInfo The URI info for the request. 314 * 315 * @return The response to the request. 316 */ 317 @POST 318 @Consumes(MediaType.APPLICATION_JSON) 319 @Produces(MediaType.APPLICATION_JSON) 320 public Response doJsonJsonPost(final InputStream inputStream, 321 @PathParam("endpoint") final String endpoint, 322 @Context final HttpServletRequest request, 323 @Context final SecurityContext securityContext, 324 @Context final HttpHeaders headers, 325 @Context final UriInfo uriInfo) 326 { 327 final RequestContext requestContext = 328 new RequestContext(request, securityContext, headers, uriInfo, 329 MediaType.APPLICATION_JSON_TYPE, 330 MediaType.APPLICATION_JSON_TYPE); 331 return postUser(requestContext, endpoint, inputStream); 332 } 333 334 335 336 /** 337 * Implement the POST operation consuming and producing XML format. 338 * 339 * @param inputStream The content to be consumed. 340 * @param endpoint The resource endpoint. 341 * @param request The current HTTP servlet request. 342 * @param securityContext The security context for the request. 343 * @param headers The request headers. 344 * @param uriInfo The URI info for the request. 345 * 346 * @return The response to the request. 347 */ 348 @POST 349 @Consumes(MediaType.APPLICATION_XML) 350 @Produces(MediaType.APPLICATION_XML) 351 public Response doXmlXmlPost(final InputStream inputStream, 352 @PathParam("endpoint") final String endpoint, 353 @Context final HttpServletRequest request, 354 @Context final SecurityContext securityContext, 355 @Context final HttpHeaders headers, 356 @Context final UriInfo uriInfo) 357 { 358 final RequestContext requestContext = 359 new RequestContext(request, securityContext, headers, uriInfo, 360 MediaType.APPLICATION_XML_TYPE, 361 MediaType.APPLICATION_XML_TYPE); 362 return postUser(requestContext, endpoint, inputStream); 363 } 364 365 366 367 /** 368 * Implement the POST operation consuming XML format and producing JSON 369 * format. 370 * 371 * @param inputStream The content to be consumed. 372 * @param endpoint The resource endpoint. 373 * @param request The current HTTP servlet request. 374 * @param securityContext The security context for the request. 375 * @param headers The request headers. 376 * @param uriInfo The URI info for the request. 377 * 378 * @return The response to the request. 379 */ 380 @POST 381 @Consumes(MediaType.APPLICATION_XML) 382 @Produces(MediaType.APPLICATION_JSON) 383 public Response doXmlJsonPost(final InputStream inputStream, 384 @PathParam("endpoint") final String endpoint, 385 @Context final HttpServletRequest request, 386 @Context final SecurityContext securityContext, 387 @Context final HttpHeaders headers, 388 @Context final UriInfo uriInfo) 389 { 390 final RequestContext requestContext = 391 new RequestContext(request, securityContext, headers, uriInfo, 392 MediaType.APPLICATION_XML_TYPE, 393 MediaType.APPLICATION_JSON_TYPE); 394 return postUser(requestContext, endpoint, inputStream); 395 } 396 397 398 399 /** 400 * Implement the POST operation consuming JSON format and producing XML 401 * format. 402 * 403 * @param inputStream The content to be consumed. 404 * @param endpoint The resource endpoint. 405 * @param request The current HTTP servlet request. 406 * @param securityContext The security context for the request. 407 * @param headers The request headers. 408 * @param uriInfo The URI info for the request. 409 * 410 * @return The response to the request. 411 */ 412 @POST 413 @Consumes(MediaType.APPLICATION_JSON) 414 @Produces(MediaType.APPLICATION_XML) 415 public Response doJsonXmlPost(final InputStream inputStream, 416 @PathParam("endpoint") final String endpoint, 417 @Context final HttpServletRequest request, 418 @Context final SecurityContext securityContext, 419 @Context final HttpHeaders headers, 420 @Context final UriInfo uriInfo) 421 { 422 final RequestContext requestContext = 423 new RequestContext(request, securityContext, headers, uriInfo, 424 MediaType.APPLICATION_JSON_TYPE, 425 MediaType.APPLICATION_XML_TYPE); 426 return postUser(requestContext, endpoint, inputStream); 427 } 428 429 430 431 /** 432 * Implement the PUT operation consuming and producing JSON format. 433 * 434 * @param inputStream The content to be consumed. 435 * @param endpoint The resource endpoint. 436 * @param userID The target user ID. 437 * @param request The current HTTP servlet request. 438 * @param securityContext The security context for the request. 439 * @param headers The request headers. 440 * @param uriInfo The URI info for the request. 441 * 442 * @return The response to the request. 443 */ 444 @PUT 445 @Path("{userID}") 446 @Consumes(MediaType.APPLICATION_JSON) 447 @Produces(MediaType.APPLICATION_JSON) 448 public Response doJsonJsonPut(final InputStream inputStream, 449 @PathParam("endpoint") final String endpoint, 450 @PathParam("userID") final String userID, 451 @Context final HttpServletRequest request, 452 @Context final SecurityContext securityContext, 453 @Context final HttpHeaders headers, 454 @Context final UriInfo uriInfo) 455 { 456 final RequestContext requestContext = 457 new RequestContext(request, securityContext, headers, uriInfo, 458 MediaType.APPLICATION_JSON_TYPE, 459 MediaType.APPLICATION_JSON_TYPE); 460 return putUser(requestContext, endpoint, userID, inputStream); 461 } 462 463 464 465 /** 466 * Implement the PUT operation where the URL specifies JSON format. 467 * 468 * @param inputStream The content to be consumed. 469 * @param endpoint The resource endpoint. 470 * @param userID The target user ID. 471 * @param request The current HTTP servlet request. 472 * @param securityContext The security context for the request. 473 * @param headers The request headers. 474 * @param uriInfo The URI info for the request. 475 * 476 * @return The response to the request. 477 */ 478 @PUT 479 @Path("{userID}.json") 480 @Consumes(MediaType.APPLICATION_JSON) 481 @Produces(MediaType.APPLICATION_JSON) 482 public Response doDotJsonPut(final InputStream inputStream, 483 @PathParam("endpoint") final String endpoint, 484 @PathParam("userID") final String userID, 485 @Context final HttpServletRequest request, 486 @Context final SecurityContext securityContext, 487 @Context final HttpHeaders headers, 488 @Context final UriInfo uriInfo) 489 { 490 final RequestContext requestContext = 491 new RequestContext(request, securityContext, headers, uriInfo, 492 MediaType.APPLICATION_JSON_TYPE, 493 MediaType.APPLICATION_JSON_TYPE); 494 return putUser(requestContext, 495 endpoint, 496 userID, 497 inputStream); 498 } 499 500 501 502 /** 503 * Implement the PUT operation where the URL specifies XML format. 504 * 505 * @param inputStream The content to be consumed. 506 * @param endpoint The resource endpoint. 507 * @param userID The target user ID. 508 * @param request The current HTTP servlet request. 509 * @param securityContext The security context for the request. 510 * @param headers The request headers. 511 * @param uriInfo The URI info for the request. 512 * 513 * @return The response to the request. 514 */ 515 @PUT 516 @Path("{userID}.xml") 517 @Consumes(MediaType.APPLICATION_XML) 518 @Produces(MediaType.APPLICATION_XML) 519 public Response doDotXmlPut(final InputStream inputStream, 520 @PathParam("endpoint") final String endpoint, 521 @PathParam("userID") final String userID, 522 @Context final HttpServletRequest request, 523 @Context final SecurityContext securityContext, 524 @Context final HttpHeaders headers, 525 @Context final UriInfo uriInfo) 526 { 527 final RequestContext requestContext = 528 new RequestContext(request, securityContext, headers, uriInfo, 529 MediaType.APPLICATION_XML_TYPE, 530 MediaType.APPLICATION_XML_TYPE); 531 return putUser(requestContext, 532 endpoint, 533 userID, 534 inputStream); 535 } 536 537 538 539 /** 540 * Implement the PUT operation consuming and producing XML format. 541 * 542 * @param inputStream The content to be consumed. 543 * @param endpoint The resource endpoint. 544 * @param userID The target user ID. 545 * @param request The current HTTP servlet request. 546 * @param securityContext The security context for the request. 547 * @param headers The request headers. 548 * @param uriInfo The URI info for the request. 549 * 550 * @return The response to the request. 551 */ 552 @PUT 553 @Path("{userID}") 554 @Consumes(MediaType.APPLICATION_XML) 555 @Produces(MediaType.APPLICATION_XML) 556 public Response doXmlXmlPut(final InputStream inputStream, 557 @PathParam("endpoint") final String endpoint, 558 @PathParam("userID") final String userID, 559 @Context final HttpServletRequest request, 560 @Context final SecurityContext securityContext, 561 @Context final HttpHeaders headers, 562 @Context final UriInfo uriInfo) 563 { 564 final RequestContext requestContext = 565 new RequestContext(request, securityContext, headers, uriInfo, 566 MediaType.APPLICATION_XML_TYPE, 567 MediaType.APPLICATION_XML_TYPE); 568 return putUser(requestContext, endpoint, userID, inputStream); 569 } 570 571 572 573 /** 574 * Implement the PUT operation consuming XML format and producing JSON 575 * format. 576 * 577 * @param inputStream The content to be consumed. 578 * @param endpoint The resource endpoint. 579 * @param userID The target user ID. 580 * @param request The current HTTP servlet request. 581 * @param securityContext The security context for the request. 582 * @param headers The request headers. 583 * @param uriInfo The URI info for the request. 584 * 585 * @return The response to the request. 586 */ 587 @PUT 588 @Path("{userID}") 589 @Consumes(MediaType.APPLICATION_XML) 590 @Produces(MediaType.APPLICATION_JSON) 591 public Response doXmlJsonPut(final InputStream inputStream, 592 @PathParam("endpoint") final String endpoint, 593 @PathParam("userID") final String userID, 594 @Context final HttpServletRequest request, 595 @Context final SecurityContext securityContext, 596 @Context final HttpHeaders headers, 597 @Context final UriInfo uriInfo) 598 { 599 final RequestContext requestContext = 600 new RequestContext(request, securityContext, headers, uriInfo, 601 MediaType.APPLICATION_XML_TYPE, 602 MediaType.APPLICATION_JSON_TYPE); 603 return putUser(requestContext, endpoint, userID, inputStream); 604 } 605 606 607 608 /** 609 * Implement the PUT operation consuming JSON format and producing XML 610 * format. 611 * 612 * @param inputStream The content to be consumed. 613 * @param endpoint The resource endpoint. 614 * @param userID The target user ID. 615 * @param request The current HTTP servlet request. 616 * @param securityContext The security context for the request. 617 * @param headers The request headers. 618 * @param uriInfo The URI info for the request. 619 * 620 * @return The response to the request. 621 */ 622 @PUT 623 @Path("{userID}") 624 @Consumes(MediaType.APPLICATION_JSON) 625 @Produces(MediaType.APPLICATION_XML) 626 public Response doJsonXmlPut(final InputStream inputStream, 627 @PathParam("endpoint") final String endpoint, 628 @PathParam("userID") final String userID, 629 @Context final HttpServletRequest request, 630 @Context final SecurityContext securityContext, 631 @Context final HttpHeaders headers, 632 @Context final UriInfo uriInfo) 633 { 634 final RequestContext requestContext = 635 new RequestContext(request, securityContext, headers, uriInfo, 636 MediaType.APPLICATION_JSON_TYPE, 637 MediaType.APPLICATION_XML_TYPE); 638 return putUser(requestContext, endpoint, userID, inputStream); 639 } 640 641 642 643 /** 644 * Implement the PATCH operation consuming and producing JSON format. 645 * 646 * @param inputStream The content to be consumed. 647 * @param endpoint The resource endpoint. 648 * @param userID The target user ID. 649 * @param request The current HTTP servlet request. 650 * @param securityContext The security context for the request. 651 * @param headers The request headers. 652 * @param uriInfo The URI info for the request. 653 * 654 * @return The response to the request. 655 */ 656 @PATCH 657 @Path("{userID}") 658 @Consumes(MediaType.APPLICATION_JSON) 659 @Produces(MediaType.APPLICATION_JSON) 660 public Response doJsonJsonPatch(final InputStream inputStream, 661 @PathParam("endpoint") final String endpoint, 662 @PathParam("userID") final String userID, 663 @Context final HttpServletRequest request, 664 @Context final SecurityContext securityContext, 665 @Context final HttpHeaders headers, 666 @Context final UriInfo uriInfo) 667 { 668 final RequestContext requestContext = 669 new RequestContext(request, securityContext, headers, uriInfo, 670 MediaType.APPLICATION_JSON_TYPE, 671 MediaType.APPLICATION_JSON_TYPE); 672 return patchUser(requestContext, endpoint, userID, inputStream); 673 } 674 675 676 677 /** 678 * Implement the PATCH operation consuming and producing XML format. 679 * 680 * @param inputStream The content to be consumed. 681 * @param endpoint The resource endpoint. 682 * @param userID The target user ID. 683 * @param request The current HTTP servlet request. 684 * @param securityContext The security context for the request. 685 * @param headers The request headers. 686 * @param uriInfo The URI info for the request. 687 * 688 * @return The response to the request. 689 */ 690 @PATCH 691 @Path("{userID}") 692 @Consumes(MediaType.APPLICATION_XML) 693 @Produces(MediaType.APPLICATION_XML) 694 public Response doXmlXmlPatch(final InputStream inputStream, 695 @PathParam("endpoint") final String endpoint, 696 @PathParam("userID") final String userID, 697 @Context final HttpServletRequest request, 698 @Context final SecurityContext securityContext, 699 @Context final HttpHeaders headers, 700 @Context final UriInfo uriInfo) 701 { 702 final RequestContext requestContext = 703 new RequestContext(request, securityContext, headers, uriInfo, 704 MediaType.APPLICATION_XML_TYPE, 705 MediaType.APPLICATION_XML_TYPE); 706 return patchUser(requestContext, endpoint, userID, inputStream); 707 } 708 709 710 711 /** 712 * Implement the PATCH operation consuming XML format and producing JSON 713 * format. 714 * 715 * @param inputStream The content to be consumed. 716 * @param endpoint The resource endpoint. 717 * @param userID The target user ID. 718 * @param request The current HTTP servlet request. 719 * @param securityContext The security context for the request. 720 * @param headers The request headers. 721 * @param uriInfo The URI info for the request. 722 * 723 * @return The response to the request. 724 */ 725 @PATCH 726 @Path("{userID}") 727 @Consumes(MediaType.APPLICATION_XML) 728 @Produces(MediaType.APPLICATION_JSON) 729 public Response doXmlJsonPatch(final InputStream inputStream, 730 @PathParam("endpoint") final String endpoint, 731 @PathParam("userID") final String userID, 732 @Context final HttpServletRequest request, 733 @Context final SecurityContext securityContext, 734 @Context final HttpHeaders headers, 735 @Context final UriInfo uriInfo) 736 { 737 final RequestContext requestContext = 738 new RequestContext(request, securityContext, headers, uriInfo, 739 MediaType.APPLICATION_XML_TYPE, 740 MediaType.APPLICATION_JSON_TYPE); 741 return patchUser(requestContext, endpoint, userID, inputStream); 742 } 743 744 745 746 /** 747 * Implement the PATCH operation consuming JSON format and producing XML 748 * format. 749 * 750 * @param inputStream The content to be consumed. 751 * @param endpoint The resource endpoint. 752 * @param userID The target user ID. 753 * @param request The current HTTP servlet request. 754 * @param securityContext The security context for the request. 755 * @param headers The request headers. 756 * @param uriInfo The URI info for the request. 757 * 758 * @return The response to the request. 759 */ 760 @PATCH 761 @Path("{userID}") 762 @Consumes(MediaType.APPLICATION_JSON) 763 @Produces(MediaType.APPLICATION_XML) 764 public Response doJsonXmlPatch(final InputStream inputStream, 765 @PathParam("endpoint") final String endpoint, 766 @PathParam("userID") final String userID, 767 @Context final HttpServletRequest request, 768 @Context final SecurityContext securityContext, 769 @Context final HttpHeaders headers, 770 @Context final UriInfo uriInfo) 771 { 772 final RequestContext requestContext = 773 new RequestContext(request, securityContext, headers, uriInfo, 774 MediaType.APPLICATION_JSON_TYPE, 775 MediaType.APPLICATION_XML_TYPE); 776 return patchUser(requestContext, endpoint, userID, inputStream); 777 } 778 779 780 781 /** 782 * Implement the DELETE operation on a specified user resource producing 783 * JSON format. 784 * 785 * @param endpoint The resource endpoint. 786 * @param userID The target user ID. 787 * @param request The current HTTP servlet request. 788 * @param securityContext The security context for the request. 789 * @param headers The request headers. 790 * @param uriInfo The URI info for the request. 791 * 792 * @return The response to the request. 793 */ 794 @DELETE 795 @Path("{userID}") 796 @Produces(MediaType.APPLICATION_JSON) 797 public Response doJsonDelete( 798 @PathParam("endpoint") final String endpoint, 799 @PathParam("userID") final String userID, 800 @Context final HttpServletRequest request, 801 @Context final SecurityContext securityContext, 802 @Context final HttpHeaders headers, 803 @Context final UriInfo uriInfo) 804 { 805 final RequestContext requestContext = 806 new RequestContext(request, securityContext, headers, uriInfo, 807 MediaType.APPLICATION_JSON_TYPE, 808 MediaType.APPLICATION_JSON_TYPE); 809 return deleteUser(requestContext,endpoint, userID); 810 } 811 812 813 814 /** 815 * Implement the DELETE operation on a specified user resource producing 816 * XML format. 817 * 818 * @param endpoint The resource endpoint. 819 * @param userID The target user ID. 820 * @param request The current HTTP servlet request. 821 * @param securityContext The security context for the request. 822 * @param headers The request headers. 823 * @param uriInfo The URI info for the request. 824 * 825 * @return The response to the request. 826 */ 827 @DELETE 828 @Path("{userID}") 829 @Produces(MediaType.APPLICATION_XML) 830 public Response doXmlDelete( 831 @PathParam("endpoint") final String endpoint, 832 @PathParam("userID") final String userID, 833 @Context final HttpServletRequest request, 834 @Context final SecurityContext securityContext, 835 @Context final HttpHeaders headers, 836 @Context final UriInfo uriInfo) 837 { 838 final RequestContext requestContext = 839 new RequestContext(request, securityContext, headers, uriInfo, 840 MediaType.APPLICATION_XML_TYPE, 841 MediaType.APPLICATION_XML_TYPE); 842 return deleteUser(requestContext, endpoint, userID); 843 } 844 845 846 847 /** 848 * Implement the DELETE operation on a specified user resource where the URL 849 * specifies JSON content type. 850 * 851 * @param endpoint The resource endpoint. 852 * @param userID The target user ID. 853 * @param request The current HTTP servlet request. 854 * @param securityContext The security context for the request. 855 * @param headers The request headers. 856 * @param uriInfo The URI info for the request. 857 * 858 * @return The response to the request. 859 */ 860 @DELETE 861 @Path("{userID}.json") 862 @Produces(MediaType.APPLICATION_JSON) 863 public Response doDotJsonDelete(@PathParam("endpoint") final String endpoint, 864 @PathParam("userID") final String userID, 865 @Context final HttpServletRequest request, 866 @Context 867 final SecurityContext securityContext, 868 @Context final HttpHeaders headers, 869 @Context final UriInfo uriInfo) 870 { 871 final RequestContext requestContext = 872 new RequestContext(request, securityContext, headers, uriInfo, 873 MediaType.APPLICATION_JSON_TYPE, 874 MediaType.APPLICATION_JSON_TYPE); 875 return deleteUser(requestContext, endpoint, userID); 876 } 877 878 879 880 /** 881 * Implement the DELETE operation on a specified user resource where the URL 882 * specifies XML content type. 883 * 884 * @param endpoint The resource endpoint. 885 * @param userID The target user ID. 886 * @param request The current HTTP servlet request. 887 * @param securityContext The security context for the request. 888 * @param headers The request headers. 889 * @param uriInfo The URI info for the request. 890 * 891 * @return The response to the request. 892 */ 893 @DELETE 894 @Path("{userID}.xml") 895 @Produces(MediaType.APPLICATION_XML) 896 public Response doDotXmlDelete(@PathParam("endpoint") final String endpoint, 897 @PathParam("userID") final String userID, 898 @Context final HttpServletRequest request, 899 @Context final SecurityContext securityContext, 900 @Context final HttpHeaders headers, 901 @Context final UriInfo uriInfo) 902 { 903 final RequestContext requestContext = 904 new RequestContext(request, securityContext, headers, uriInfo, 905 MediaType.APPLICATION_XML_TYPE, 906 MediaType.APPLICATION_XML_TYPE); 907 return deleteUser(requestContext, endpoint, userID); 908 } 909}