001/* 002 * Copyright 2011-2016 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 * Implement the PUT operation consuming and producing JSON format. 432 * 433 * @param inputStream The content to be consumed. 434 * @param endpoint The resource endpoint. 435 * @param userID The target user ID. 436 * @param request The current HTTP servlet 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}") 445 @Consumes(MediaType.APPLICATION_JSON) 446 @Produces(MediaType.APPLICATION_JSON) 447 public Response doJsonJsonPut(final InputStream inputStream, 448 @PathParam("endpoint") final String endpoint, 449 @PathParam("userID") final String userID, 450 @Context final HttpServletRequest request, 451 @Context final SecurityContext securityContext, 452 @Context final HttpHeaders headers, 453 @Context final UriInfo uriInfo) 454 { 455 final RequestContext requestContext = 456 new RequestContext(request, securityContext, headers, uriInfo, 457 MediaType.APPLICATION_JSON_TYPE, 458 MediaType.APPLICATION_JSON_TYPE); 459 return putUser(requestContext, endpoint, userID, inputStream); 460 } 461 462 463 464 /** 465 * Implement the PUT operation where the URL specifies JSON format. 466 * 467 * @param inputStream The content to be consumed. 468 * @param endpoint The resource endpoint. 469 * @param userID The target user ID. 470 * @param request The current HTTP servlet 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}.json") 479 @Consumes(MediaType.APPLICATION_JSON) 480 @Produces(MediaType.APPLICATION_JSON) 481 public Response doJsonDotJsonPut(final InputStream inputStream, 482 @PathParam("endpoint") final String endpoint, 483 @PathParam("userID") final String userID, 484 @Context final HttpServletRequest request, 485 @Context final SecurityContext 486 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 consuming XML and where the URL specifies 504 * producing JSON format. 505 * 506 * @param inputStream The content to be consumed. 507 * @param endpoint The resource endpoint. 508 * @param userID The target user ID. 509 * @param request The current HTTP servlet request. 510 * @param securityContext The security context for the request. 511 * @param headers The request headers. 512 * @param uriInfo The URI info for the request. 513 * 514 * @return The response to the request. 515 */ 516 @PUT 517 @Path("{userID}.json") 518 @Consumes(MediaType.APPLICATION_XML) 519 @Produces(MediaType.APPLICATION_JSON) 520 public Response doXmlDotJsonPut(final InputStream inputStream, 521 @PathParam("endpoint") final String endpoint, 522 @PathParam("userID") final String userID, 523 @Context final HttpServletRequest request, 524 @Context final SecurityContext 525 securityContext, 526 @Context final HttpHeaders headers, 527 @Context final UriInfo uriInfo) 528 { 529 final RequestContext requestContext = 530 new RequestContext(request, securityContext, headers, uriInfo, 531 MediaType.APPLICATION_XML_TYPE, 532 MediaType.APPLICATION_JSON_TYPE); 533 return putUser(requestContext, 534 endpoint, 535 userID, 536 inputStream); 537 } 538 539 540 541 /** 542 * Implement the PUT operation where the URL specifies XML format. 543 * 544 * @param inputStream The content to be consumed. 545 * @param endpoint The resource endpoint. 546 * @param userID The target user ID. 547 * @param request The current HTTP servlet request. 548 * @param securityContext The security context for the request. 549 * @param headers The request headers. 550 * @param uriInfo The URI info for the request. 551 * 552 * @return The response to the request. 553 */ 554 @PUT 555 @Path("{userID}.xml") 556 @Consumes(MediaType.APPLICATION_XML) 557 @Produces(MediaType.APPLICATION_XML) 558 public Response doXmlDotXmlPut(final InputStream inputStream, 559 @PathParam("endpoint") final String endpoint, 560 @PathParam("userID") final String userID, 561 @Context final HttpServletRequest request, 562 @Context final SecurityContext securityContext, 563 @Context final HttpHeaders headers, 564 @Context final UriInfo uriInfo) 565 { 566 final RequestContext requestContext = 567 new RequestContext(request, securityContext, headers, uriInfo, 568 MediaType.APPLICATION_XML_TYPE, 569 MediaType.APPLICATION_XML_TYPE); 570 return putUser(requestContext, 571 endpoint, 572 userID, 573 inputStream); 574 } 575 576 577 578 /** 579 * Implement the PUT operation where the URL specifies XML format. 580 * 581 * @param inputStream The content to be consumed. 582 * @param endpoint The resource endpoint. 583 * @param userID The target user ID. 584 * @param request The current HTTP servlet request. 585 * @param securityContext The security context for the request. 586 * @param headers The request headers. 587 * @param uriInfo The URI info for the request. 588 * 589 * @return The response to the request. 590 */ 591 @PUT 592 @Path("{userID}.xml") 593 @Consumes(MediaType.APPLICATION_JSON) 594 @Produces(MediaType.APPLICATION_XML) 595 public Response doJsonDotXmlPut(final InputStream inputStream, 596 @PathParam("endpoint") final String endpoint, 597 @PathParam("userID") final String userID, 598 @Context final HttpServletRequest request, 599 @Context final SecurityContext 600 securityContext, 601 @Context final HttpHeaders headers, 602 @Context final UriInfo uriInfo) 603 { 604 final RequestContext requestContext = 605 new RequestContext(request, securityContext, headers, uriInfo, 606 MediaType.APPLICATION_JSON_TYPE, 607 MediaType.APPLICATION_XML_TYPE); 608 return putUser(requestContext, 609 endpoint, 610 userID, 611 inputStream); 612 } 613 614 615 616 /** 617 * Implement the PUT operation consuming and producing XML format. 618 * 619 * @param inputStream The content to be consumed. 620 * @param endpoint The resource endpoint. 621 * @param userID The target user ID. 622 * @param request The current HTTP servlet request. 623 * @param securityContext The security context for the request. 624 * @param headers The request headers. 625 * @param uriInfo The URI info for the request. 626 * 627 * @return The response to the request. 628 */ 629 @PUT 630 @Path("{userID}") 631 @Consumes(MediaType.APPLICATION_XML) 632 @Produces(MediaType.APPLICATION_XML) 633 public Response doXmlXmlPut(final InputStream inputStream, 634 @PathParam("endpoint") final String endpoint, 635 @PathParam("userID") final String userID, 636 @Context final HttpServletRequest request, 637 @Context final SecurityContext securityContext, 638 @Context final HttpHeaders headers, 639 @Context final UriInfo uriInfo) 640 { 641 final RequestContext requestContext = 642 new RequestContext(request, securityContext, headers, uriInfo, 643 MediaType.APPLICATION_XML_TYPE, 644 MediaType.APPLICATION_XML_TYPE); 645 return putUser(requestContext, endpoint, userID, inputStream); 646 } 647 648 649 650 /** 651 * Implement the PUT operation consuming XML format and producing JSON 652 * format. 653 * 654 * @param inputStream The content to be consumed. 655 * @param endpoint The resource endpoint. 656 * @param userID The target user ID. 657 * @param request The current HTTP servlet request. 658 * @param securityContext The security context for the request. 659 * @param headers The request headers. 660 * @param uriInfo The URI info for the request. 661 * 662 * @return The response to the request. 663 */ 664 @PUT 665 @Path("{userID}") 666 @Consumes(MediaType.APPLICATION_XML) 667 @Produces(MediaType.APPLICATION_JSON) 668 public Response doXmlJsonPut(final InputStream inputStream, 669 @PathParam("endpoint") final String endpoint, 670 @PathParam("userID") final String userID, 671 @Context final HttpServletRequest request, 672 @Context final SecurityContext securityContext, 673 @Context final HttpHeaders headers, 674 @Context final UriInfo uriInfo) 675 { 676 final RequestContext requestContext = 677 new RequestContext(request, securityContext, headers, uriInfo, 678 MediaType.APPLICATION_XML_TYPE, 679 MediaType.APPLICATION_JSON_TYPE); 680 return putUser(requestContext, endpoint, userID, inputStream); 681 } 682 683 684 685 /** 686 * Implement the PUT operation consuming JSON format and producing XML 687 * format. 688 * 689 * @param inputStream The content to be consumed. 690 * @param endpoint The resource endpoint. 691 * @param userID The target user ID. 692 * @param request The current HTTP servlet request. 693 * @param securityContext The security context for the request. 694 * @param headers The request headers. 695 * @param uriInfo The URI info for the request. 696 * 697 * @return The response to the request. 698 */ 699 @PUT 700 @Path("{userID}") 701 @Consumes(MediaType.APPLICATION_JSON) 702 @Produces(MediaType.APPLICATION_XML) 703 public Response doJsonXmlPut(final InputStream inputStream, 704 @PathParam("endpoint") final String endpoint, 705 @PathParam("userID") final String userID, 706 @Context final HttpServletRequest request, 707 @Context final SecurityContext securityContext, 708 @Context final HttpHeaders headers, 709 @Context final UriInfo uriInfo) 710 { 711 final RequestContext requestContext = 712 new RequestContext(request, securityContext, headers, uriInfo, 713 MediaType.APPLICATION_JSON_TYPE, 714 MediaType.APPLICATION_XML_TYPE); 715 return putUser(requestContext, endpoint, userID, inputStream); 716 } 717 718 719 720 /** 721 * Implement the PATCH operation consuming and producing JSON format. 722 * 723 * @param inputStream The content to be consumed. 724 * @param endpoint The resource endpoint. 725 * @param userID The target user ID. 726 * @param request The current HTTP servlet request. 727 * @param securityContext The security context for the request. 728 * @param headers The request headers. 729 * @param uriInfo The URI info for the request. 730 * 731 * @return The response to the request. 732 */ 733 @PATCH 734 @Path("{userID}") 735 @Consumes(MediaType.APPLICATION_JSON) 736 @Produces(MediaType.APPLICATION_JSON) 737 public Response doJsonJsonPatch(final InputStream inputStream, 738 @PathParam("endpoint") final String endpoint, 739 @PathParam("userID") final String userID, 740 @Context final HttpServletRequest request, 741 @Context final SecurityContext securityContext, 742 @Context final HttpHeaders headers, 743 @Context final UriInfo uriInfo) 744 { 745 final RequestContext requestContext = 746 new RequestContext(request, securityContext, headers, uriInfo, 747 MediaType.APPLICATION_JSON_TYPE, 748 MediaType.APPLICATION_JSON_TYPE); 749 return patchUser(requestContext, endpoint, userID, inputStream); 750 } 751 752 753 754 /** 755 * Implement the PATCH operation consuming and producing XML format. 756 * 757 * @param inputStream The content to be consumed. 758 * @param endpoint The resource endpoint. 759 * @param userID The target user ID. 760 * @param request The current HTTP servlet request. 761 * @param securityContext The security context for the request. 762 * @param headers The request headers. 763 * @param uriInfo The URI info for the request. 764 * 765 * @return The response to the request. 766 */ 767 @PATCH 768 @Path("{userID}") 769 @Consumes(MediaType.APPLICATION_XML) 770 @Produces(MediaType.APPLICATION_XML) 771 public Response doXmlXmlPatch(final InputStream inputStream, 772 @PathParam("endpoint") final String endpoint, 773 @PathParam("userID") final String userID, 774 @Context final HttpServletRequest request, 775 @Context final SecurityContext securityContext, 776 @Context final HttpHeaders headers, 777 @Context final UriInfo uriInfo) 778 { 779 final RequestContext requestContext = 780 new RequestContext(request, securityContext, headers, uriInfo, 781 MediaType.APPLICATION_XML_TYPE, 782 MediaType.APPLICATION_XML_TYPE); 783 return patchUser(requestContext, endpoint, userID, inputStream); 784 } 785 786 787 788 /** 789 * Implement the PATCH operation consuming XML format and producing JSON 790 * format. 791 * 792 * @param inputStream The content to be consumed. 793 * @param endpoint The resource endpoint. 794 * @param userID The target user ID. 795 * @param request The current HTTP servlet request. 796 * @param securityContext The security context for the request. 797 * @param headers The request headers. 798 * @param uriInfo The URI info for the request. 799 * 800 * @return The response to the request. 801 */ 802 @PATCH 803 @Path("{userID}") 804 @Consumes(MediaType.APPLICATION_XML) 805 @Produces(MediaType.APPLICATION_JSON) 806 public Response doXmlJsonPatch(final InputStream inputStream, 807 @PathParam("endpoint") final String endpoint, 808 @PathParam("userID") final String userID, 809 @Context final HttpServletRequest request, 810 @Context final SecurityContext securityContext, 811 @Context final HttpHeaders headers, 812 @Context final UriInfo uriInfo) 813 { 814 final RequestContext requestContext = 815 new RequestContext(request, securityContext, headers, uriInfo, 816 MediaType.APPLICATION_XML_TYPE, 817 MediaType.APPLICATION_JSON_TYPE); 818 return patchUser(requestContext, endpoint, userID, inputStream); 819 } 820 821 822 823 /** 824 * Implement the PATCH operation consuming JSON format and producing XML 825 * format. 826 * 827 * @param inputStream The content to be consumed. 828 * @param endpoint The resource endpoint. 829 * @param userID The target user ID. 830 * @param request The current HTTP servlet request. 831 * @param securityContext The security context for the request. 832 * @param headers The request headers. 833 * @param uriInfo The URI info for the request. 834 * 835 * @return The response to the request. 836 */ 837 @PATCH 838 @Path("{userID}") 839 @Consumes(MediaType.APPLICATION_JSON) 840 @Produces(MediaType.APPLICATION_XML) 841 public Response doJsonXmlPatch(final InputStream inputStream, 842 @PathParam("endpoint") final String endpoint, 843 @PathParam("userID") final String userID, 844 @Context final HttpServletRequest request, 845 @Context final SecurityContext securityContext, 846 @Context final HttpHeaders headers, 847 @Context final UriInfo uriInfo) 848 { 849 final RequestContext requestContext = 850 new RequestContext(request, securityContext, headers, uriInfo, 851 MediaType.APPLICATION_JSON_TYPE, 852 MediaType.APPLICATION_XML_TYPE); 853 return patchUser(requestContext, endpoint, userID, inputStream); 854 } 855 856 857 858 /** 859 * Implement the PATCH operation consuming and producing JSON format. 860 * 861 * @param inputStream The content to be consumed. 862 * @param endpoint The resource endpoint. 863 * @param userID The target user ID. 864 * @param request The current HTTP servlet request. 865 * @param securityContext The security context for the request. 866 * @param headers The request headers. 867 * @param uriInfo The URI info for the request. 868 * 869 * @return The response to the request. 870 */ 871 @PATCH 872 @Path("{userID}.json") 873 @Consumes(MediaType.APPLICATION_JSON) 874 @Produces(MediaType.APPLICATION_JSON) 875 public Response doJsonDotJsonPatch(final InputStream inputStream, 876 @PathParam("endpoint") final String 877 endpoint, 878 @PathParam("userID") final String userID, 879 @Context final HttpServletRequest request, 880 @Context final SecurityContext 881 securityContext, 882 @Context final HttpHeaders headers, 883 @Context final UriInfo uriInfo) 884 { 885 final RequestContext requestContext = 886 new RequestContext(request, securityContext, headers, uriInfo, 887 MediaType.APPLICATION_JSON_TYPE, 888 MediaType.APPLICATION_JSON_TYPE); 889 return patchUser(requestContext, endpoint, userID, inputStream); 890 } 891 892 893 894 /** 895 * Implement the PATCH operation consuming and producing XML format. 896 * 897 * @param inputStream The content to be consumed. 898 * @param endpoint The resource endpoint. 899 * @param userID The target user ID. 900 * @param request The current HTTP servlet request. 901 * @param securityContext The security context for the request. 902 * @param headers The request headers. 903 * @param uriInfo The URI info for the request. 904 * 905 * @return The response to the request. 906 */ 907 @PATCH 908 @Path("{userID}.xml") 909 @Consumes(MediaType.APPLICATION_XML) 910 @Produces(MediaType.APPLICATION_XML) 911 public Response doXmlDotXmlPatch(final InputStream inputStream, 912 @PathParam("endpoint") final String endpoint, 913 @PathParam("userID") final String userID, 914 @Context final HttpServletRequest request, 915 @Context final SecurityContext 916 securityContext, 917 @Context final HttpHeaders headers, 918 @Context final UriInfo uriInfo) 919 { 920 final RequestContext requestContext = 921 new RequestContext(request, securityContext, headers, uriInfo, 922 MediaType.APPLICATION_XML_TYPE, 923 MediaType.APPLICATION_XML_TYPE); 924 return patchUser(requestContext, endpoint, userID, inputStream); 925 } 926 927 928 929 /** 930 * Implement the PATCH operation consuming XML format and producing JSON 931 * format. 932 * 933 * @param inputStream The content to be consumed. 934 * @param endpoint The resource endpoint. 935 * @param userID The target user ID. 936 * @param request The current HTTP servlet request. 937 * @param securityContext The security context for the request. 938 * @param headers The request headers. 939 * @param uriInfo The URI info for the request. 940 * 941 * @return The response to the request. 942 */ 943 @PATCH 944 @Path("{userID}.json") 945 @Consumes(MediaType.APPLICATION_XML) 946 @Produces(MediaType.APPLICATION_JSON) 947 public Response doXmlDotJsonPatch(final InputStream inputStream, 948 @PathParam("endpoint") final String endpoint, 949 @PathParam("userID") final String userID, 950 @Context final HttpServletRequest request, 951 @Context final SecurityContext 952 securityContext, 953 @Context final HttpHeaders headers, 954 @Context final UriInfo uriInfo) 955 { 956 final RequestContext requestContext = 957 new RequestContext(request, securityContext, headers, uriInfo, 958 MediaType.APPLICATION_XML_TYPE, 959 MediaType.APPLICATION_JSON_TYPE); 960 return patchUser(requestContext, endpoint, userID, inputStream); 961 } 962 963 964 965 /** 966 * Implement the PATCH operation consuming JSON format and producing XML 967 * format. 968 * 969 * @param inputStream The content to be consumed. 970 * @param endpoint The resource endpoint. 971 * @param userID The target user ID. 972 * @param request The current HTTP servlet request. 973 * @param securityContext The security context for the request. 974 * @param headers The request headers. 975 * @param uriInfo The URI info for the request. 976 * 977 * @return The response to the request. 978 */ 979 @PATCH 980 @Path("{userID}.xml") 981 @Consumes(MediaType.APPLICATION_JSON) 982 @Produces(MediaType.APPLICATION_XML) 983 public Response doJsonDotXmlPatch(final InputStream inputStream, 984 @PathParam("endpoint") final String endpoint, 985 @PathParam("userID") final String userID, 986 @Context final HttpServletRequest request, 987 @Context final SecurityContext 988 securityContext, 989 @Context final HttpHeaders headers, 990 @Context final UriInfo uriInfo) 991 { 992 final RequestContext requestContext = 993 new RequestContext(request, securityContext, headers, uriInfo, 994 MediaType.APPLICATION_JSON_TYPE, 995 MediaType.APPLICATION_XML_TYPE); 996 return patchUser(requestContext, endpoint, userID, inputStream); 997 } 998 999 1000 1001 /** 1002 * Implement the DELETE operation on a specified user resource producing 1003 * JSON format. 1004 * 1005 * @param endpoint The resource endpoint. 1006 * @param userID The target user ID. 1007 * @param request The current HTTP servlet request. 1008 * @param securityContext The security context for the request. 1009 * @param headers The request headers. 1010 * @param uriInfo The URI info for the request. 1011 * 1012 * @return The response to the request. 1013 */ 1014 @DELETE 1015 @Path("{userID}") 1016 @Produces(MediaType.APPLICATION_JSON) 1017 public Response doJsonDelete( 1018 @PathParam("endpoint") final String endpoint, 1019 @PathParam("userID") final String userID, 1020 @Context final HttpServletRequest request, 1021 @Context final SecurityContext securityContext, 1022 @Context final HttpHeaders headers, 1023 @Context final UriInfo uriInfo) 1024 { 1025 final RequestContext requestContext = 1026 new RequestContext(request, securityContext, headers, uriInfo, 1027 MediaType.APPLICATION_JSON_TYPE, 1028 MediaType.APPLICATION_JSON_TYPE); 1029 return deleteUser(requestContext,endpoint, userID); 1030 } 1031 1032 1033 1034 /** 1035 * Implement the DELETE operation on a specified user resource producing 1036 * XML format. 1037 * 1038 * @param endpoint The resource endpoint. 1039 * @param userID The target user ID. 1040 * @param request The current HTTP servlet request. 1041 * @param securityContext The security context for the request. 1042 * @param headers The request headers. 1043 * @param uriInfo The URI info for the request. 1044 * 1045 * @return The response to the request. 1046 */ 1047 @DELETE 1048 @Path("{userID}") 1049 @Produces(MediaType.APPLICATION_XML) 1050 public Response doXmlDelete( 1051 @PathParam("endpoint") final String endpoint, 1052 @PathParam("userID") final String userID, 1053 @Context final HttpServletRequest request, 1054 @Context final SecurityContext securityContext, 1055 @Context final HttpHeaders headers, 1056 @Context final UriInfo uriInfo) 1057 { 1058 final RequestContext requestContext = 1059 new RequestContext(request, securityContext, headers, uriInfo, 1060 MediaType.APPLICATION_XML_TYPE, 1061 MediaType.APPLICATION_XML_TYPE); 1062 return deleteUser(requestContext, endpoint, userID); 1063 } 1064 1065 1066 1067 /** 1068 * Implement the DELETE operation on a specified user resource where the URL 1069 * specifies JSON content type. 1070 * 1071 * @param endpoint The resource endpoint. 1072 * @param userID The target user ID. 1073 * @param request The current HTTP servlet request. 1074 * @param securityContext The security context for the request. 1075 * @param headers The request headers. 1076 * @param uriInfo The URI info for the request. 1077 * 1078 * @return The response to the request. 1079 */ 1080 @DELETE 1081 @Path("{userID}.json") 1082 @Produces(MediaType.APPLICATION_JSON) 1083 public Response doDotJsonDelete(@PathParam("endpoint") final String endpoint, 1084 @PathParam("userID") final String userID, 1085 @Context final HttpServletRequest request, 1086 @Context 1087 final SecurityContext securityContext, 1088 @Context final HttpHeaders headers, 1089 @Context final UriInfo uriInfo) 1090 { 1091 final RequestContext requestContext = 1092 new RequestContext(request, securityContext, headers, uriInfo, 1093 MediaType.APPLICATION_JSON_TYPE, 1094 MediaType.APPLICATION_JSON_TYPE); 1095 return deleteUser(requestContext, endpoint, userID); 1096 } 1097 1098 1099 1100 /** 1101 * Implement the DELETE operation on a specified user resource where the URL 1102 * specifies XML content type. 1103 * 1104 * @param endpoint The resource endpoint. 1105 * @param userID The target user ID. 1106 * @param request The current HTTP servlet request. 1107 * @param securityContext The security context for the request. 1108 * @param headers The request headers. 1109 * @param uriInfo The URI info for the request. 1110 * 1111 * @return The response to the request. 1112 */ 1113 @DELETE 1114 @Path("{userID}.xml") 1115 @Produces(MediaType.APPLICATION_XML) 1116 public Response doDotXmlDelete(@PathParam("endpoint") final String endpoint, 1117 @PathParam("userID") final String userID, 1118 @Context final HttpServletRequest request, 1119 @Context final SecurityContext securityContext, 1120 @Context final HttpHeaders headers, 1121 @Context final UriInfo uriInfo) 1122 { 1123 final RequestContext requestContext = 1124 new RequestContext(request, securityContext, headers, uriInfo, 1125 MediaType.APPLICATION_XML_TYPE, 1126 MediaType.APPLICATION_XML_TYPE); 1127 return deleteUser(requestContext, endpoint, userID); 1128 } 1129}