Advertisement
Guest User

Untitled

a guest
Apr 16th, 2014
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  1. StringBuilder xml = new StringBuilder();
  2. xml.append("<role>");
  3. xml.append(" <name><values><value>Administrator</value><value l="en">Administrator</value></values></name>");
  4. xml.append(" <permissions>");
  5. xml.append(" <permission>READ_XX</permission>");
  6. xml.append(" <permission>WRITE_XX</permission>");
  7. xml.append(" </permissions>");
  8. xml.append("</role>");
  9.  
  10. JAXBContext jaxbContext = JAXBContext.newInstance(DefaultRole.class);
  11. Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
  12. Object o = jaxbUnmarshaller.unmarshal(new StringReader(xml.toString()));
  13.  
  14. @POST
  15. @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
  16. @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
  17. public JSONObject processLogin(@InjectParam Role role) throws JSONException
  18. {
  19. System.out.println(role);
  20.  
  21. return null;
  22. }
  23.  
  24. @POST
  25. @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
  26. @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
  27. public JSONObject processLogin(DefaultRole role) throws JSONException
  28. {
  29. System.out.println(role);
  30.  
  31. return null;
  32. }
  33.  
  34. @XmlRootElement(name = "role")
  35. @XmlAccessorType(XmlAccessType.FIELD)
  36. public class DefaultRole implements Role
  37. {
  38. private Id id = null;
  39.  
  40. @XmlJavaTypeAdapter(ContextObjectAdapter.class)
  41. private ContextObject<String> name = null;
  42.  
  43. @XmlElementWrapper(name = "permissions")
  44. @XmlElement(name = "permission")
  45. private List<String> permissions = Lists.newArrayList();
  46.  
  47. @Inject
  48. private DefaultRole()
  49. {
  50. }
  51. [...]
  52.  
  53. Injector injector = ModuleInjector.get().createChildInjector(new JerseyServletModule()
  54. {
  55. @Override
  56. protected void configureServlets()
  57. {
  58. bind(GuiceContainer.class);
  59.  
  60. Set<Class<?>> foundClasses1 = Reflect.getReflections().getTypesAnnotatedWith(Path.class, false);
  61. Set<Class<?>> foundClasses2 = Reflect.getReflections().getTypesAnnotatedWith(Provider.class, false);
  62.  
  63. Set<Class<?>> foundClasses = Sets.newHashSet();
  64. foundClasses.addAll(foundClasses1);
  65. foundClasses.addAll(foundClasses2);
  66.  
  67. if (foundClasses != null && foundClasses.size() > 0)
  68. {
  69. for (Class<?> foundClass : foundClasses)
  70. {
  71. if (foundClass == null)
  72. continue;
  73.  
  74. if (ResourceConfig.isProviderClass(foundClass)
  75. || ResourceConfig.isRootResourceClass(foundClass))
  76. {
  77. bind(foundClass);
  78. }
  79. }
  80. }
  81.  
  82. serve("/restws/*").with(GuiceContainer.class, ImmutableMap.of(JSONConfiguration.FEATURE_POJO_MAPPING, "true"));
  83. }
  84. });
  85.  
  86. <!-- WHERE THE JERSEY COMPONENTS ARE BEING REGISTERED -->
  87. <filter>
  88. <display-name>Bootstrap Filter</display-name>
  89. <filter-name>BootstrapFilter</filter-name>
  90. <filter-class>xxx.BootstrapFilter</filter-class>
  91. </filter>
  92.  
  93. <filter>
  94. <filter-name>Guice Filter</filter-name>
  95. <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
  96. </filter>
  97.  
  98.  
  99. <!-- WHERE THE JERSEY COMPONENTS ARE BEING REGISTERED -->
  100. <filter-mapping>
  101. <filter-name>BootstrapFilter</filter-name>
  102. <url-pattern>/*</url-pattern>
  103. <dispatcher>REQUEST</dispatcher>
  104. </filter-mapping>
  105.  
  106. <filter-mapping>
  107. <filter-name>Guice Filter</filter-name>
  108. <url-pattern>/restws/*</url-pattern>
  109. <dispatcher>REQUEST</dispatcher>
  110. </filter-mapping>
  111.  
  112. model = request.getEntity(model.getClass());"
  113.  
  114. @Target({ PARAMETER, METHOD, FIELD })
  115. @Retention(RUNTIME)
  116. @Documented
  117. public @interface ModelParam
  118. {
  119. }
  120.  
  121. @POST
  122. @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
  123. @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
  124. public Role createRole(@ModelParam Role role) throws JSONException
  125. {
  126. return userService.createRole(role);
  127. }
  128.  
  129. @Provider
  130. @Singleton
  131. public class ModelInjectableProvider extends AbstractHttpContextInjectable<Model> implements InjectableProvider<ModelParam, Type>
  132. {
  133. private final Type type;
  134.  
  135. public ModelInjectableProvider()
  136. {
  137. type = null;
  138. }
  139.  
  140. public ModelInjectableProvider(Type type)
  141. {
  142. this.type = type;
  143. }
  144.  
  145. @Override
  146. public ComponentScope getScope()
  147. {
  148. return ComponentScope.Undefined;
  149. }
  150.  
  151. @Override
  152. public Injectable<Model> getInjectable(ComponentContext ic, ModelParam mp, Type type)
  153. {
  154. if (type instanceof Class && Model.class.isAssignableFrom((Class<?>) type))
  155. {
  156. return new ModelInjectableProvider(type);
  157. }
  158.  
  159. return null;
  160. }
  161.  
  162. @Override
  163. public Model getValue(HttpContext ctx)
  164. {
  165. if (type instanceof Class && Model.class.isAssignableFrom((Class<?>) type))
  166. {
  167. HttpRequestContext request = ctx.getRequest();
  168.  
  169. Model model = null;
  170.  
  171. if (HttpMethod.POST.equals(request.getMethod()) || HttpMethod.PUT.equals(request.getMethod()))
  172. {
  173. model = (Model) MyGuiceInjector.inject((Class<?>) type);
  174.  
  175. if (model != null)
  176. model = request.getEntity(model.getClass());
  177. }
  178.  
  179. return model;
  180. }
  181.  
  182. return null;
  183. }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement