Guest User

Untitled

a guest
Jul 21st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. @At("/:method/:id") @Service
  2. public final class SitebricksResource {
  3.  
  4. private FormPost formPost = new FormPost();
  5.  
  6. private Logger logger = LoggerFactory.getLogger(SitebricksResource.class);
  7.  
  8. @Inject
  9. ServiceEntity serviceEntity;
  10.  
  11. @Inject
  12. ServiceHandlerMapper mapper;
  13.  
  14. @Inject
  15. ServiceHandlerMediaType producer;
  16.  
  17. @Get
  18. public Reply<?> get(@Named("method") String service, @Named("id") String value) {
  19. logger.debug("HTTP GET: Generated Resource invocation for method {} with id {}", service, value);
  20. Object response = createResponse("get", service, value, null);
  21.  
  22. if (Reply.class.isAssignableFrom(response.getClass())) {
  23. return Reply.class.cast(response);
  24. }
  25.  
  26. return Reply.with(producer.visit(response).toString()).as(Json.class);
  27. }
  28.  
  29. @Put
  30. public Reply<?> put(@Named("method") String service, @Named("id") String value) {
  31. logger.debug("HTTP PUT: Generated Resource invocation for method {} with id {}", service, value);
  32. //URI location = UriBuilder.fromResource(getClass()).build(new String[]{"", ""});
  33. Object response = createResponse("put", service, value, null);
  34.  
  35. if (Reply.class.isAssignableFrom(response.getClass())) {
  36. return Reply.class.cast(response);
  37. }
  38.  
  39. return Reply.with(response.toString()).status(201);
  40. }
  41.  
  42. @Post
  43. public Reply<?> post(@Named("method") String service, @Named("id") String value) {
  44. logger.debug("HTTP POST: Generated Resource invocation for method {} with id {} and update {}", service, value);
  45. Object response = createResponse("post", service, value, formPost.getUpdate());
  46.  
  47. if (Reply.class.isAssignableFrom(response.getClass())) {
  48. return Reply.class.cast(response);
  49. }
  50.  
  51. if (response == null) {
  52. return Reply.with("").noContent();
  53. } else {
  54. return Reply.with(response.toString());
  55. }
  56. }
  57.  
  58. @Delete
  59. public Reply<?> delete(@Named("method") String service, @Named("id") String value) {
  60. logger.debug("HTTP DELETE: Generated Resource invocation for method {} with id {}", service, value);
  61. Object response = createResponse("delete", service, value, null);
  62. return Reply.with(response.toString());
  63. }
  64.  
  65. private Object createResponse(String methodName, String service, String value, String postUpdate) {
  66. ServiceHandler serviceHandler = mapper.map(service);
  67. if (serviceHandler == null) {
  68. return Reply.with("No ServiceHandler defined for service " + service).error();
  69. }
  70.  
  71. if (!serviceHandler.getHttpMethod().name().equalsIgnoreCase(methodName)) {
  72. return Reply.with("Method not allowed").status(405);
  73. }
  74.  
  75. String methodString = serviceHandler.getMethod();
  76. try {
  77. Method method = null;
  78. Object response;
  79. if (postUpdate != null) {
  80. method = serviceEntity.getClass().getMethod(methodString, new Class[]{String.class, String.class});
  81. response = (String) method.invoke(serviceEntity, new String[]{value, postUpdate});
  82. } else {
  83. method = serviceEntity.getClass().getMethod(methodString, new Class[]{String.class});
  84. response = method.invoke(serviceEntity, new String[]{value});
  85. }
  86. return response;
  87. } catch (Throwable e) {
  88. return Reply.with(e).error();
  89. }
  90. }
  91.  
  92. }
Add Comment
Please, Sign In to add comment