private static <T> int countOutgoingEdges(final DomainLookupContext context, final Node<? extends Definition<T>, ? extends Edge> sourceNode, final String edgeId) { final List<? extends Edge> edges = sourceNode.getOutEdges(); return GraphUtils.countEdges(context.getDefinitionManager(), edgeId, edges); }
@Before @SuppressWarnings("unchecked") public void setup() throws Exception { when(context.getRuleManager()).thenReturn(ruleManager); when(context.getCache()).thenReturn(cache); when(cache.getRuleSet()).thenReturn(RULE_SET); when(cache.getConnectionRules()).thenReturn(Collections.singletonList(permittedConnections)); when(context.getDefinitionsRegistry()).thenReturn(definitionsCache); TestingGraphMockHandler graphTestHandler = new TestingGraphMockHandler(); when(context.getDefinitionManager()).thenReturn(graphTestHandler.definitionManager); graph1Instance = TestingGraphInstanceBuilder.newGraph1(graphTestHandler); when(definitionsCache.getLabels(eq(DEF_ID1))).thenReturn(Collections.singleton(ROLE1)); when(definitionsCache.getLabels(eq(DEF_ID2))).thenReturn(Collections.singleton(ROLE2)); when(definitionsCache.getLabels(eq(DEF_ID3))).thenReturn(Collections.singleton(ROLE3)); }
@Override public Set<String> execute(final DomainLookupContext context) { final DomainLookupsCache cache = context.getCache(); final int outEdgeCount = countOutgoingEdges(context, sourceNode, edgeId); final RuleViolations outEdgeCardinalityResult = context.getRuleManager() .evaluate(cache.getRuleSet(), edgeCardinality(sourceNode.getLabels(), edgeId, outEdgeCount, EdgeCardinalityContext.Direction.OUTGOING, Optional.of(CardinalityContext.Operation.ADD))); if (isValid(outEdgeCardinalityResult)) { final String defId = context.getDefinitionManager() .adapters() .forDefinition() .getId(sourceNode.getContent().getDefinition()) .value(); return new LookupConnectionTargetRoles(edgeId, defId) .execute(context); } return Collections.emptySet(); } }