in ws-security-policy-stax/src/main/java/org/apache/wss4j/policy/stax/enforcer/PolicyEnforcer.java [633:691]
private void verifyPolicyAfterOperationSecurityEvent() throws WSSPolicyException {
String assertionMessage = null;
Iterator<Map<SecurityEventConstants.Event, Map<Assertion, List<Assertable>>>> assertionStateMapIterator =
this.assertionStateMap.iterator();
alternative:
while (assertionStateMapIterator.hasNext()) {
Map<SecurityEventConstants.Event, Map<Assertion, List<Assertable>>> map =
assertionStateMapIterator.next();
Iterator<Map.Entry<SecurityEventConstants.Event, Map<Assertion, List<Assertable>>>> iterator =
map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<SecurityEventConstants.Event, Map<Assertion, List<Assertable>>> mapEntry =
iterator.next();
Iterator<Map.Entry<Assertion, List<Assertable>>> assertionStateIterator =
mapEntry.getValue().entrySet().iterator();
while (assertionStateIterator.hasNext()) {
Map.Entry<Assertion, List<Assertable>> assertionListEntry = assertionStateIterator.next();
List<Assertable> assertableList = assertionListEntry.getValue();
Iterator<Assertable> assertableIterator = assertableList.iterator();
while (assertableIterator.hasNext()) {
Assertable assertable = assertableIterator.next();
boolean doAssert = false;
if (assertable instanceof TokenAssertionState) {
TokenAssertionState tokenAssertionState = (TokenAssertionState) assertable;
AbstractToken abstractToken = (AbstractToken) tokenAssertionState.getAssertion();
AbstractSecurityAssertion assertion = abstractToken.getParentAssertion();
//Other tokens may not be resolved yet fully therefore we skip it here
if (assertion instanceof SupportingTokens
|| assertable instanceof HttpsTokenAssertionState
|| assertable instanceof RelTokenAssertionState
|| assertable instanceof SecurityContextTokenAssertionState
|| assertable instanceof SpnegoContextTokenAssertionState
|| assertable instanceof UsernameTokenAssertionState) {
doAssert = true;
}
} else if (assertable instanceof TokenProtectionAssertionState
|| assertable instanceof SignatureConfirmationAssertionState
|| assertable instanceof IncludeTimeStampAssertionState
|| assertable instanceof RequiredPartsAssertionState
|| assertable instanceof SignatureProtectionAssertionState) {
doAssert = true;
}
if ((doAssert || assertable.isHardFailure()) && !assertable.isAsserted()) {
assertionMessage = assertable.getErrorMessage();
failedAssertionStateMap.add(map);
assertionStateMapIterator.remove();
continue alternative;
}
}
}
}
}
if (assertionStateMap.isEmpty() && !(faultOccurred && noSecurityHeader && initiator)) {
logFailedAssertions();
throw new WSSPolicyException(assertionMessage);
}
}