/** * Creates the parser group containing parsers used for parsing input into POJOs from HTTP requests. * <p> * Subclasses can override this method to provide their own set of parsers for this servlet. * They can do this by either creating a new {@link ParserGroup} from scratch, or appending to the * group returned by <code><jk>super</jk>.createParsers()</code>. * <p> * By default, returns the parsers defined through {@link RestResource#parsers() @RestResource.parsers()} on this class * and all parent classes. * * @param properties Servlet-level properties returned by {@link #createProperties()}. * @param beanFilters Servlet-level bean filters returned by {@link #createBeanFilters()}. * @param pojoSwaps Servlet-level POJO swaps returned by {@link #createPojoSwaps()}. * @return The group of parsers. * @throws Exception If parser group could not be constructed for any reason. */ protected ParserGroup createParsers(ObjectMap properties, Class<?>[] beanFilters, Class<?>[] pojoSwaps) throws Exception { ParserGroup g = new ParserGroup(); // Parsers are loaded in parent-to-child order to allow overrides. for (RestResource r : restResourceAnnotationsParentFirst.values()) for (Class<? extends Parser> p : reverse(r.parsers())) try { g.append(p); } catch (Exception e) { throw new RestServletException("Exception occurred while trying to instantiate Parser ''{0}''", p.getSimpleName()).initCause(e); } g.setProperties(properties); g.addBeanFilters(beanFilters).addPojoSwaps(pojoSwaps); return g; }
mParsers.addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()); if (pi.contains(PROPERTIES)) mParsers.setProperties(getProperties());