@Override public Object provide() { ContainerRequest request = getContainerRequest(); Form form = getCachedForm(request, decode); if (form == null) { Form otherForm = getCachedForm(request, !decode); if (otherForm != null) { form = switchUrlEncoding(request, otherForm); cacheForm(request, form); } else { form = getForm(request); cacheForm(request, form); } } try { return extractor.extract(form.asMap()); } catch (ExtractorException e) { throw new ParamException.FormParamException( e.getCause(), extractor.getName(), extractor.getDefaultValueString()); } }