/** * Validates thats the request has an some form of assertion (directly, reference, or artifact) or query, but not * both. * * @param request the request to validate * * @throws ValidationException thrown if the request has more than one assertion or both an assertion and a query */ protected void validateAssertion(Request request) throws ValidationException { if (request.getQuery() != null) { if (request.getAssertionArtifacts().size() != 0) { throw new ValidationException("Both Query and one or more AssertionAtrifacts present"); } if (request.getAssertionIDReferences().size() != 0) { throw new ValidationException("Both Query and one ore more AsertionIDReferences present"); } } else if (request.getAssertionArtifacts().size() != 0) { if (request.getAssertionIDReferences().size() != 0) { throw new ValidationException( "Both one or more AssertionAtrifacts and one ore more AsertionIDReferences present"); } } else if (request.getAssertionIDReferences().size() == 0) { throw new ValidationException("No AssertionAtrifacts, No Query, and No AsertionIDReferences present"); } } }
/** {@inheritDoc} */ protected void processChildElement(XMLObject parentElement, XMLObject childElement) throws UnmarshallingException { Request request = (Request) parentElement; try { if (childElement instanceof Query) { request.setQuery((Query) childElement); } else if (childElement instanceof AssertionIDReference) { request.getAssertionIDReferences().add((AssertionIDReference) childElement); } else if (childElement instanceof AssertionArtifact) { request.getAssertionArtifacts().add((AssertionArtifact) childElement); } else { super.processChildElement(parentElement, childElement); } } catch (IllegalArgumentException e) { throw new UnmarshallingException(e); } }