@Override public String toString() { StringBuffer buff = new StringBuffer(); buff.append("[CompositeRequest (" + size() + ")"); for (Request r : this.getRequests()) { buff.append("\n\t").append(r); } buff.append("]"); return buff.toString(); }
/** * Return a request that either wraps multiple requests, or the single request if only one is supplied. * * @param requests the requests to wrap * @return the requests wrapped in a CompositeRequest, or if only one request is supplied that single request * @throws IllegalArgumentException if there requests are null, empty, or contains only nulls */ public static Request with( Iterator<? extends Request> requests ) { CheckArg.isNotNull(requests, "requests"); boolean readOnly = true; List<Request> list = new LinkedList<Request>(); while (requests.hasNext()) { Request request = requests.next(); if (request == null) continue; if (RequestType.COMPOSITE == request.getType()) { CompositeRequest composite = (CompositeRequest)request; list.addAll(composite.getRequests()); if (!composite.isReadOnly()) readOnly = false; } else { list.add(request); if (!request.isReadOnly()) readOnly = false; } } if (list.size() == 1) { return list.get(0); } CheckArg.isNotEmpty(list, "requests"); return new CompositeRequest(list, readOnly); }
/** * Add requests to the supplied composite request. * * @param composite the composite request to which the requests are to be added * @param requests the requests to wrap * @return the requests wrapped in a CompositeRequest, or if only one request is supplied that single request, or null if * there are no request * @throws IllegalArgumentException if the composite request is null */ public static CompositeRequest add( CompositeRequest composite, Iterator<? extends Request> requests ) { CheckArg.isNotNull(composite, "composite"); List<Request> list = new LinkedList<Request>(); boolean readOnly = composite.isReadOnly(); if (composite.size() != 0) list.addAll(composite.getRequests()); while (requests.hasNext()) { Request request = requests.next(); if (request == null) continue; if (RequestType.COMPOSITE == request.getType()) { CompositeRequest compositeRequest = (CompositeRequest)request; list.addAll(compositeRequest.getRequests()); if (!compositeRequest.isReadOnly()) readOnly = false; } else { list.add(request); if (!request.isReadOnly()) readOnly = false; } } return new CompositeRequest(list, readOnly); }
/** * Add requests to the supplied composite request. * * @param composite the composite request to which the requests are to be added * @param requests the requests to wrap * @return the requests wrapped in a CompositeRequest, or if only one request is supplied that single request, or null if * there are no request * @throws IllegalArgumentException if the composite request is null */ public static CompositeRequest add( CompositeRequest composite, Request... requests ) { CheckArg.isNotNull(composite, "composite"); if (requests == null || requests.length == 0) return composite; List<Request> list = new ArrayList<Request>(requests.length + composite.size()); boolean readOnly = composite.isReadOnly(); if (composite.size() != 0) list.addAll(composite.getRequests()); for (Request request : requests) { if (request == null) continue; if (RequestType.COMPOSITE == request.getType()) { CompositeRequest compositeRequest = (CompositeRequest)request; list.addAll(compositeRequest.getRequests()); if (!compositeRequest.isReadOnly()) readOnly = false; } else { list.add(request); if (!request.isReadOnly()) readOnly = false; } } return new CompositeRequest(list, readOnly); }
protected void extractRequestsFromComposite() { Request request = executedRequests.poll(); assertThat(request, is(instanceOf(CompositeRequest.class))); executedRequests.addAll(0, ((CompositeRequest)request).getRequests()); }
/** * Return a request that either wraps multiple requests, or the single request if only one is supplied. * * @param requests the requests to wrap * @return the requests wrapped in a CompositeRequest, or if only one request is supplied that single request * @throws IllegalArgumentException if there requests are null, empty, or contains only nulls */ public static Request with( Request... requests ) { CheckArg.isNotEmpty(requests, "requests"); if (requests.length == 1) { CheckArg.isNotNull(requests[0], "requests[0]"); return requests[0]; } boolean readOnly = true; List<Request> list = new ArrayList<Request>(requests.length); for (Request request : requests) { if (request == null) continue; if (RequestType.COMPOSITE == request.getType()) { CompositeRequest composite = (CompositeRequest)request; list.addAll(composite.getRequests()); if (!composite.isReadOnly()) readOnly = false; } else { list.add(request); if (!request.isReadOnly()) readOnly = false; } } CheckArg.isNotEmpty(list, "requests"); return new CompositeRequest(list, readOnly); }
private void cancelAllRequestsDueToError( Throwable t ) { LOGGER.error(t, GraphI18n.executingRequest, sourceName); try { for (Request request : this.composite.getRequests()) { try { request.cancel(); } finally { request.freeze(); } } cancel(true); } finally { this.composite.freeze(); } }
/** * {@inheritDoc} * * @see org.modeshape.graph.Graph.Executable#execute() */ public Results execute() { executed = true; Request request = requestQueue.pop(); if (request == null) { return new BatchResults(); } Graph.this.execute(request); if (RequestType.COMPOSITE == request.getType()) { CompositeRequest composite = (CompositeRequest)request; return new BatchResults(composite.getRequests()); } return new BatchResults(request); }
@Test public void shouldCreateCompositeFromIteratorOverRequests() { request = CompositeRequest.with(requestList.iterator()); assertThat(request, is(instanceOf(CompositeRequest.class))); CompositeRequest composite = (CompositeRequest)request; assertThat(composite.size(), is(3)); assertThat(composite.size(), is(requestList.size())); assertThat(composite.getRequests(), hasItems(requests)); Iterator<Request> actual = composite.iterator(); Iterator<Request> expected = requestList.iterator(); while (actual.hasNext() && expected.hasNext()) { assertThat(actual.next(), is(sameInstance(expected.next()))); } assertThat(actual.hasNext(), is(expected.hasNext())); assertThat(composite.hasError(), is(false)); }
@Test public void shouldCreateCompositeFromMultipleRequests() { request = CompositeRequest.with(requests); assertThat(request, is(instanceOf(CompositeRequest.class))); CompositeRequest composite = (CompositeRequest)request; assertThat(composite.size(), is(3)); assertThat(composite.size(), is(requests.length)); assertThat(composite.getRequests(), hasItems(requests)); Iterator<Request> actual = composite.iterator(); Iterator<Request> expected = requestList.iterator(); while (actual.hasNext() && expected.hasNext()) { assertThat(actual.next(), is(sameInstance(expected.next()))); } assertThat(actual.hasNext(), is(expected.hasNext())); assertThat(composite.hasError(), is(false)); }