@Test public void shouldIterateOverNodesInBranchOfDepthOne() { request = new ReadBranchRequest(location("/a"), workspace1, 1); request.setActualLocationOfNode(request.at()); request.setChildren(location("/a"), location("/a/b"), location("/a/c")); Iterator<Location> actual = request.iterator(); assertThat(actual.hasNext(), is(true)); assertThat(actual.next(), is(location("/a"))); assertThat(actual.hasNext(), is(false)); }
/** * {@inheritDoc} * * @see org.modeshape.graph.request.processor.RequestProcessor#process(org.modeshape.graph.request.ReadBranchRequest) */ @Override public void process( ReadBranchRequest request ) { CacheableRequest source = (CacheableRequest)federatedRequest.getFirstProjectedRequest().getRequest(); if (checkErrorOrCancel(request, source)) return; if (RequestType.READ_BRANCH == source.getType()) { ReadBranchRequest readSource = (ReadBranchRequest)source; request.setActualLocationOfNode(readSource.getActualLocationOfNode()); for (Location node : readSource) { List<Location> children = readSource.getChildren(node); if (children != null) request.setChildren(node, children); Map<Name, Property> props = readSource.getPropertiesFor(node); if (props != null) request.setProperties(node, props.values()); } } else if (RequestType.READ_NODE == source.getType()) { ReadNodeRequest readSource = (ReadNodeRequest)source; request.setActualLocationOfNode(readSource.getActualLocationOfNode()); Location parent = readSource.getActualLocationOfNode(); request.setChildren(parent, readSource.getChildren()); request.setProperties(parent, readSource.getPropertiesByName().values()); } request.setCachePolicy(getDefaultCachePolicy()); setCacheableInfo(request, source.getCachePolicy()); }
if (first) { request.setActualLocationOfNode(actualLocation);
@Test public void shouldIterateOverNodesInBranchOfDepthTwo() { request = new ReadBranchRequest(location("/a"), workspace1, 2); request.setActualLocationOfNode(request.at()); request.setChildren(location("/a"), location("/a/b"), location("/a/c"), location("/a/d")); request.setChildren(location("/a/b"), location("/a/b/j"), location("/a/b/k")); request.setChildren(location("/a/c"), location("/a/c/j"), location("/a/c/k")); request.setChildren(location("/a/d")); Iterator<Location> actual = request.iterator(); assertThat(actual.hasNext(), is(true)); assertThat(actual.next(), is(location("/a"))); assertThat(actual.hasNext(), is(true)); assertThat(actual.next(), is(location("/a/b"))); assertThat(actual.hasNext(), is(true)); assertThat(actual.next(), is(location("/a/c"))); assertThat(actual.hasNext(), is(true)); assertThat(actual.next(), is(location("/a/d"))); assertThat(actual.hasNext(), is(false)); }
@Test public void shouldIterateOverNodesInBranchOfDepthThree() { request = new ReadBranchRequest(location("/a"), workspace1, 3); request.setActualLocationOfNode(request.at()); request.setChildren(location("/a"), location("/a/b"), location("/a/c"), location("/a/d")); request.setChildren(location("/a/b"), location("/a/b/j"), location("/a/b/k"));
request.setActualLocationOfNode(actualLocation);