@Override @Path("{pathSegment}") public Object consumePathSegment(@PathParam("pathSegment") String pathSegment) { if(parameters.size() < minParameters) { consumeParameter(pathSegment); return this; } try { Object element = super.consumePathSegment(pathSegment); parametersAcquired(); return element; } catch (WebApplicationException e) { logger.debug("Invalid subresource: " + pathSegment, e); if(parameters.size() < maxParameters) { consumeParameter(pathSegment); if(parameters.size() == maxParameters) { parametersAcquired(); } return this; } else { throw new WebApplicationException("Too many path parameters", 404); } } }