final Response response = view.dispatch(request, context); log.trace("Member {} response {}", member, response.getStatus());
/** * Returns the first OK response from member repositories or {@link HttpResponses#notFound()} if none of the members * responded with OK. */ protected Response getFirst(@Nonnull final Context context, @Nonnull final List<Repository> members, @Nonnull final DispatchedRepositories dispatched) throws Exception { final Request request = context.getRequest(); for (Repository member : members) { log.trace("Trying member: {}", member); // track repositories we have dispatched to, prevent circular dispatch for nested groups if (dispatched.contains(member)) { log.trace("Skipping already dispatched member: {}", member); continue; } dispatched.add(member); final ViewFacet view = member.facet(ViewFacet.class); final Response response = view.dispatch(request, context); log.trace("Member {} response {}", member, response.getStatus()); if (isValidResponse(response)) { return response; } } return notFoundResponse(context); }
private Content generatePackagesJson(final Context context) throws IOException { try { // TODO: Better logging and error checking on failure/non-200 scenarios Request request = new Request.Builder().action(GET).path("/" + LIST_JSON).build(); Response response = getRepository().facet(ViewFacet.class).dispatch(request, context); Payload payload = checkNotNull(response.getPayload()); return composerJsonProcessor.generatePackagesFromList(getRepository(), payload); } catch (IOException e) { throw new UncheckedIOException(e); } catch (Exception e) { Throwables.throwIfUnchecked(e); throw new RuntimeException(e); } }
private Response forward(final Context context, final String path) throws Exception { log.trace("Forwarding request to path: {}", path); Request request = new Request.Builder() .copy(context.getRequest()) .path(path) .build(); return context.getRepository() .facet(ViewFacet.class) .dispatch(request); } }
private String getZipballUrl(final Context context) { try { TokenMatcher.State state = context.getAttributes().require(TokenMatcher.State.class); Map<String, String> tokens = state.getTokens(); String vendor = tokens.get(VENDOR_TOKEN); String project = tokens.get(PROJECT_TOKEN); String version = tokens.get(VERSION_TOKEN); Request request = new Request.Builder().action(GET).path("/" + buildProviderPath(vendor, project)) .attribute(ComposerProviderHandler.DO_NOT_REWRITE, "true").build(); Response response = getRepository().facet(ViewFacet.class).dispatch(request, context); Payload payload = response.getPayload(); if (payload == null) { throw new NonResolvableProviderJsonException( String.format("No provider found for vendor %s, project %s, version %s", vendor, project, version)); } else { return composerJsonProcessor.getDistUrl(vendor, project, version, payload); } } catch (IOException e) { throw new UncheckedIOException(e); } catch (Exception e) { Throwables.throwIfUnchecked(e); throw new RuntimeException(e); } }
/** * This method MUST NOT be called from within a TX, as it dispatches a new request! It fails with * {@code java.lang.IllegalStateException}: "Transaction already in progress" otherwise! */ private NestedAttributesMap retrievePackageRoot(final NpmPackageId packageId, final Context context) throws IOException { try { Request getRequest = new Request.Builder().action(GET).path("/" + packageId.id()).build(); Response response = getRepository().facet(ViewFacet.class).dispatch(getRequest, context); if (response.getPayload() == null) { throw new IOException("Could not retrieve package " + packageId); } final InputStream packageRootIn = response.getPayload().openInputStream(); return NpmFacetUtils.parse(() -> packageRootIn); } catch (IOException e) { throw e; } catch (Exception e) { Throwables.throwIfUnchecked(e); throw new IOException(e); } }
case DELETE: { final Request getRequest = new Request.Builder().copy(context.getRequest()).action(GET).build(); final Response response = context.getRepository().facet(ViewFacet.class).dispatch(getRequest); if (response.getStatus().isSuccessful() && !requestPredicate.apply(response)) {