public void validate (Parameter parameter) throws IllegalVerbException, DuplicateDefinitionException { List<String> values = this.map.get(parameter); if (values != null && !values.isEmpty()) { if (parameter == Verb) { if (values.size() > 1) throw new IllegalVerbException("Illegal verb"); } else { if (values.size() > 1) throw new DuplicateDefinitionException("Duplicate definition of parameter '" + parameter + "'"); } } }
public Type getVerb () throws DuplicateDefinitionException, IllegalVerbException { validate(Verb); String verb = get(Verb); if (verb == null) throw new IllegalVerbException("The verb given by the request is null, assuming identify"); try { return fromValue(verb); } catch (IllegalArgumentException e) { throw new IllegalVerbException("The verb given by the request is unknown, assuming identify"); } }
private OAICompiledRequest(OAIRequest request, ResumptionTokenFormat resumptionTokenFormat) throws IllegalVerbException, BadArgumentException, UnknownParameterException, DuplicateDefinitionException, InvalidResumptionTokenException { Collection<String> parameterNames = request.getParameterNames(); if (isTrueThat(parameterNames, not(hasItem(equalTo("verb"))))) throw new IllegalVerbException("No verb provided"); for (String parameterName : parameterNames) if (isTrueThat(parameterName, not(in("verb", "from", "until", "metadataPrefix", "identifier", "set", "resumptionToken")))) throw new UnknownParameterException("Unknown parameter '" + parameterName + "'"); String until = request.getString(Until); String from = request.getString(From); if (isTrueThat(until, is(not(nullValue()))) && isTrueThat(from, is(not(nullValue()))) && from.length() != until.length()) throw new BadArgumentException("Distinct granularities provided for until and from parameters"); this.verbType = request.getVerb(); this.from = request.getDate(From); this.until = request.getDate(Until); this.metadataPrefix = request.getString(MetadataPrefix); this.set = request.getString(Set); this.identifier = request.getString(Identifier); if (request.has(ResumptionToken)) this.resumptionToken = resumptionTokenFormat.parse(request.getString(ResumptionToken)); else this.resumptionToken = new ResumptionToken.Value(); this.validate(); this.loadResumptionToken(this.resumptionToken); }