final TermMatch matcher = unmatchedTermIterator.next(); for (final Details object : allTerms) { if (matcher.getName() != null && prohibitedTerms.get(matcher.getName()).contains(object)) { continue; while (unmatchedTermIterator.hasNext()) { final TermMatch matcher = unmatchedTermIterator.next(); if (matcher.getName() != null && prohibitedTerms.get(matcher.getName()).contains(linkerObject)) { continue; while (unmatchedRelationshipIterator.hasNext()) { final RelationshipMatch matcher = unmatchedRelationshipIterator.next(); final String leftTermName = matcher.leftTerm.getName(); if (leftTermName != null && prohibitedTerms.get(leftTermName).contains(linkerObject)) { continue; while (unmatchedTermIterator.hasNext()) { final TermMatch matcher = unmatchedTermIterator.next(); if (matcher.getName() != null && prohibitedTerms.get(matcher.getName()).contains(linkedObject)) { continue; while (unmatchedRelationshipIterator.hasNext()) { final RelationshipMatch matcher = unmatchedRelationshipIterator.next(); final String rightTermName = matcher.rightTerm.getName(); if (rightTermName != null && prohibitedTerms.get(rightTermName).contains(linkedObject)) { continue; if (matcher.propertyName != null || matcher.notNullable != null) continue; if (matcher.leftTerm instanceof NewTermMatch || matcher.rightTerm instanceof NewTermMatch) continue;
final TermMatch termMatch = parseTermMatch(graphPathBean, word); termMatches.add(termMatch); if (termMatch.getName() != null) { termsByName.put(termMatch.getName(), termMatch); final RelationshipMatch relationshipMatch = parseRelationshipMatch(graphPathBean, words[0], words[1], words[2]); relationshipMatches.add(relationshipMatch); final String leftTermName = relationshipMatch.leftTerm.getName(); if (leftTermName != null) { termsByName.put(leftTermName, relationshipMatch.leftTerm); final String rightTermName = relationshipMatch.rightTerm.getName(); if (rightTermName != null) { termsByName.put(rightTermName, relationshipMatch.rightTerm); for (final TermMatch term : termsByName.values()) { if (term instanceof NewTermMatch) { final String termName = term.getName(); if (termName != null && termMatchers.put(termName, (NewTermMatch) term) != null) { throw new GraphException("redefined term " + termName + " in rule " + policyRule); final NewTermMatch fullTerm = termMatchers.get(term.getName()); if (fullTerm == null) { throw new GraphException("undefined term " + term.getName() + " in rule " + policyRule);