Search in sources :

Example 6 with RuleDTO

use of org.commonjava.indy.autoprox.rest.dto.RuleDTO in project indy by Commonjava.

the class AbstractAutoproxCatalogTest method getRule.

protected RuleDTO getRule(final String named, final String ruleScriptResource) throws IOException {
    final URL resource = Thread.currentThread().getContextClassLoader().getResource(ruleScriptResource);
    if (resource == null) {
        Assert.fail("Cannot find classpath resource: " + ruleScriptResource);
    }
    final String spec = IOUtils.toString(resource);
    return new RuleDTO(named, spec);
}
Also used : RuleDTO(org.commonjava.indy.autoprox.rest.dto.RuleDTO) URL(java.net.URL)

Example 7 with RuleDTO

use of org.commonjava.indy.autoprox.rest.dto.RuleDTO in project indy by Commonjava.

the class AutoProxCatalogResource method deleteRule.

@ApiOperation(value = "Delete a single AutoProx rule")
@ApiResponses({ @ApiResponse(code = 404, message = "No rule by the specified name"), @ApiResponse(code = 204, message = "Rule spec deleted") })
@DELETE
@Path("{name}")
public Response deleteRule(@PathParam("name") final String name, @Context final HttpServletRequest request, @Context final SecurityContext securityContext) {
    Response response = checkEnabled();
    if (response != null) {
        return response;
    }
    try {
        String user = securityManager.getUser(securityContext, request);
        final RuleDTO dto = controller.deleteRule(name, user);
        if (dto == null) {
            response = status(NOT_FOUND).build();
        } else {
            response = noContent().build();
        }
    } catch (final AutoProxRuleException e) {
        logger.error(String.format("Failed to delete rule: %s. Reason: %s", name, e.getMessage()), e);
        response = formatResponse(e);
    }
    return response;
}
Also used : ResponseUtils.formatResponse(org.commonjava.indy.bind.jaxrs.util.ResponseUtils.formatResponse) Response(javax.ws.rs.core.Response) ApiResponse(io.swagger.annotations.ApiResponse) RuleDTO(org.commonjava.indy.autoprox.rest.dto.RuleDTO) AutoProxRuleException(org.commonjava.indy.autoprox.data.AutoProxRuleException) Path(javax.ws.rs.Path) DELETE(javax.ws.rs.DELETE) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 8 with RuleDTO

use of org.commonjava.indy.autoprox.rest.dto.RuleDTO in project indy by Commonjava.

the class AutoProxCatalogResource method createRule.

@ApiOperation(value = "Create an AutoProx rule", response = RuleDTO.class)
@ApiResponse(code = 201, message = "Rule created", responseHeaders = @ResponseHeader(name = "Location", description = "Resource location of the new rule"))
@ApiImplicitParams({ @ApiImplicitParam(allowMultiple = false, paramType = "body", name = "body", required = true, dataType = "org.commonjava.indy.autoprox.rest.dto.RuleDTO", value = "The rule definition JSON") })
@POST
@Consumes(ApplicationContent.application_json)
public Response createRule(@Context final HttpServletRequest request, @Context final UriInfo uriInfo, @Context SecurityContext securityContext) {
    Response response = checkEnabled();
    if (response != null) {
        return response;
    }
    RuleDTO dto = null;
    try {
        dto = serializer.readValue(request.getInputStream(), RuleDTO.class);
    } catch (final IOException e) {
        final String message = "Failed to read " + RuleDTO.class.getSimpleName() + " from request body.";
        logger.error(message, e);
        response = formatResponse(e, message);
    }
    if (response != null) {
        return response;
    }
    try {
        String user = securityManager.getUser(securityContext, request);
        dto = controller.storeRule(dto, user);
        final URI uri = uriInfo.getBaseUriBuilder().path(getClass()).path(dto.getName()).build();
        response = formatCreatedResponseWithJsonEntity(uri, dto, serializer);
    } catch (final AutoProxRuleException e) {
        final String message = "Failed to store rule: " + dto.getName() + ".";
        logger.error(message, e);
        response = formatResponse(e, message);
    }
    return response;
}
Also used : ResponseUtils.formatResponse(org.commonjava.indy.bind.jaxrs.util.ResponseUtils.formatResponse) Response(javax.ws.rs.core.Response) ApiResponse(io.swagger.annotations.ApiResponse) RuleDTO(org.commonjava.indy.autoprox.rest.dto.RuleDTO) IOException(java.io.IOException) URI(java.net.URI) AutoProxRuleException(org.commonjava.indy.autoprox.data.AutoProxRuleException) ApiImplicitParams(io.swagger.annotations.ApiImplicitParams) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponse(io.swagger.annotations.ApiResponse)

Example 9 with RuleDTO

use of org.commonjava.indy.autoprox.rest.dto.RuleDTO in project indy by Commonjava.

the class AutoProxCatalogResource method updateRule.

@ApiOperation(value = "Update an AutoProx rule", response = RuleDTO.class)
@ApiResponses({ @ApiResponse(code = 201, message = "Rule created", responseHeaders = @ResponseHeader(name = "Location", description = "Resource location of the new rule")), @ApiResponse(code = 200, message = "Existing rule updated") })
@ApiImplicitParams({ @ApiImplicitParam(allowMultiple = false, paramType = "body", name = "body", required = true, dataType = "org.commonjava.indy.autoprox.rest.dto.RuleDTO", value = "The rule definition JSON (NOTE: Name will over OVERRIDDEN with value from storage path.)") })
@PUT
@Path("{name}")
@Consumes(ApplicationContent.application_json)
public Response updateRule(@PathParam("name") final String name, @Context final HttpServletRequest request, @Context final UriInfo uriInfo, @Context final SecurityContext securityContext) {
    Response response = checkEnabled();
    if (response != null) {
        return response;
    }
    RuleDTO dto = controller.getRule(name);
    boolean updating = true;
    if (dto == null) {
        updating = false;
    }
    try {
        dto = serializer.readValue(request.getInputStream(), RuleDTO.class);
        dto.setName(name);
    } catch (final IOException e) {
        final String message = "Failed to read " + RuleDTO.class.getSimpleName() + " from request body.";
        logger.error(message, e);
        response = formatResponse(e, message);
    }
    if (response != null) {
        return response;
    }
    try {
        String user = securityManager.getUser(securityContext, request);
        dto = controller.storeRule(dto, user);
        if (updating) {
            response = ok().build();
        } else {
            final URI uri = uriInfo.getBaseUriBuilder().path(getClass()).path(dto.getName()).build();
            response = created(uri).build();
        }
    } catch (final AutoProxRuleException e) {
        final String message = "Failed to store rule: " + dto.getName() + ".";
        logger.error(message, e);
        response = formatResponse(e, message);
    }
    return response;
}
Also used : ResponseUtils.formatResponse(org.commonjava.indy.bind.jaxrs.util.ResponseUtils.formatResponse) Response(javax.ws.rs.core.Response) ApiResponse(io.swagger.annotations.ApiResponse) RuleDTO(org.commonjava.indy.autoprox.rest.dto.RuleDTO) IOException(java.io.IOException) URI(java.net.URI) AutoProxRuleException(org.commonjava.indy.autoprox.data.AutoProxRuleException) Path(javax.ws.rs.Path) ApiImplicitParams(io.swagger.annotations.ApiImplicitParams) Consumes(javax.ws.rs.Consumes) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses) PUT(javax.ws.rs.PUT)

Example 10 with RuleDTO

use of org.commonjava.indy.autoprox.rest.dto.RuleDTO in project indy by Commonjava.

the class CreateAndDeleteRuleTest method createRuleDeleteAndVerifyMissing.

@Test
public void createRuleDeleteAndVerifyMissing() throws Exception {
    final CatalogDTO catalog = module.getCatalog();
    assertThat(catalog.isEnabled(), equalTo(true));
    assertThat(catalog.getRules().isEmpty(), equalTo(true));
    final RuleDTO rule = getRule("0001-simple-rule", "rules/simple-rule.groovy");
    RuleDTO dto = module.storeRule(rule);
    assertThat(dto, notNullValue());
    assertThat(dto, equalTo(rule));
    module.deleteRuleNamed(dto.getName());
    dto = module.getRuleNamed(dto.getName());
    assertThat(dto, nullValue());
}
Also used : CatalogDTO(org.commonjava.indy.autoprox.rest.dto.CatalogDTO) RuleDTO(org.commonjava.indy.autoprox.rest.dto.RuleDTO) Test(org.junit.Test)

Aggregations

RuleDTO (org.commonjava.indy.autoprox.rest.dto.RuleDTO)12 Test (org.junit.Test)5 ApiOperation (io.swagger.annotations.ApiOperation)4 ApiResponse (io.swagger.annotations.ApiResponse)4 Response (javax.ws.rs.core.Response)4 CatalogDTO (org.commonjava.indy.autoprox.rest.dto.CatalogDTO)4 ResponseUtils.formatResponse (org.commonjava.indy.bind.jaxrs.util.ResponseUtils.formatResponse)4 ApiResponses (io.swagger.annotations.ApiResponses)3 URL (java.net.URL)3 Path (javax.ws.rs.Path)3 AutoProxRuleException (org.commonjava.indy.autoprox.data.AutoProxRuleException)3 ApiImplicitParams (io.swagger.annotations.ApiImplicitParams)2 IOException (java.io.IOException)2 URI (java.net.URI)2 Consumes (javax.ws.rs.Consumes)2 AutoProxCatalogModule (org.commonjava.indy.autoprox.client.AutoProxCatalogModule)2 File (java.io.File)1 DELETE (javax.ws.rs.DELETE)1 GET (javax.ws.rs.GET)1 POST (javax.ws.rs.POST)1