Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- StringBuilder xml = new StringBuilder();
- xml.append("<role>");
- xml.append(" <name><values><value>Administrator</value><value l="en">Administrator</value></values></name>");
- xml.append(" <permissions>");
- xml.append(" <permission>READ_XX</permission>");
- xml.append(" <permission>WRITE_XX</permission>");
- xml.append(" </permissions>");
- xml.append("</role>");
- JAXBContext jaxbContext = JAXBContext.newInstance(DefaultRole.class);
- Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
- Object o = jaxbUnmarshaller.unmarshal(new StringReader(xml.toString()));
- @POST
- @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- public JSONObject processLogin(@InjectParam Role role) throws JSONException
- {
- System.out.println(role);
- return null;
- }
- @POST
- @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- public JSONObject processLogin(DefaultRole role) throws JSONException
- {
- System.out.println(role);
- return null;
- }
- @XmlRootElement(name = "role")
- @XmlAccessorType(XmlAccessType.FIELD)
- public class DefaultRole implements Role
- {
- private Id id = null;
- @XmlJavaTypeAdapter(ContextObjectAdapter.class)
- private ContextObject<String> name = null;
- @XmlElementWrapper(name = "permissions")
- @XmlElement(name = "permission")
- private List<String> permissions = Lists.newArrayList();
- @Inject
- private DefaultRole()
- {
- }
- [...]
- Injector injector = ModuleInjector.get().createChildInjector(new JerseyServletModule()
- {
- @Override
- protected void configureServlets()
- {
- bind(GuiceContainer.class);
- Set<Class<?>> foundClasses1 = Reflect.getReflections().getTypesAnnotatedWith(Path.class, false);
- Set<Class<?>> foundClasses2 = Reflect.getReflections().getTypesAnnotatedWith(Provider.class, false);
- Set<Class<?>> foundClasses = Sets.newHashSet();
- foundClasses.addAll(foundClasses1);
- foundClasses.addAll(foundClasses2);
- if (foundClasses != null && foundClasses.size() > 0)
- {
- for (Class<?> foundClass : foundClasses)
- {
- if (foundClass == null)
- continue;
- if (ResourceConfig.isProviderClass(foundClass)
- || ResourceConfig.isRootResourceClass(foundClass))
- {
- bind(foundClass);
- }
- }
- }
- serve("/restws/*").with(GuiceContainer.class, ImmutableMap.of(JSONConfiguration.FEATURE_POJO_MAPPING, "true"));
- }
- });
- <!-- WHERE THE JERSEY COMPONENTS ARE BEING REGISTERED -->
- <filter>
- <display-name>Bootstrap Filter</display-name>
- <filter-name>BootstrapFilter</filter-name>
- <filter-class>xxx.BootstrapFilter</filter-class>
- </filter>
- <filter>
- <filter-name>Guice Filter</filter-name>
- <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
- </filter>
- <!-- WHERE THE JERSEY COMPONENTS ARE BEING REGISTERED -->
- <filter-mapping>
- <filter-name>BootstrapFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- </filter-mapping>
- <filter-mapping>
- <filter-name>Guice Filter</filter-name>
- <url-pattern>/restws/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- </filter-mapping>
- model = request.getEntity(model.getClass());"
- @Target({ PARAMETER, METHOD, FIELD })
- @Retention(RUNTIME)
- @Documented
- public @interface ModelParam
- {
- }
- @POST
- @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- public Role createRole(@ModelParam Role role) throws JSONException
- {
- return userService.createRole(role);
- }
- @Provider
- @Singleton
- public class ModelInjectableProvider extends AbstractHttpContextInjectable<Model> implements InjectableProvider<ModelParam, Type>
- {
- private final Type type;
- public ModelInjectableProvider()
- {
- type = null;
- }
- public ModelInjectableProvider(Type type)
- {
- this.type = type;
- }
- @Override
- public ComponentScope getScope()
- {
- return ComponentScope.Undefined;
- }
- @Override
- public Injectable<Model> getInjectable(ComponentContext ic, ModelParam mp, Type type)
- {
- if (type instanceof Class && Model.class.isAssignableFrom((Class<?>) type))
- {
- return new ModelInjectableProvider(type);
- }
- return null;
- }
- @Override
- public Model getValue(HttpContext ctx)
- {
- if (type instanceof Class && Model.class.isAssignableFrom((Class<?>) type))
- {
- HttpRequestContext request = ctx.getRequest();
- Model model = null;
- if (HttpMethod.POST.equals(request.getMethod()) || HttpMethod.PUT.equals(request.getMethod()))
- {
- model = (Model) MyGuiceInjector.inject((Class<?>) type);
- if (model != null)
- model = request.getEntity(model.getClass());
- }
- return model;
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement