All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.ehcache.management.resource.services.CachesResourceServiceImpl Maven / Gradle / Ivy

Go to download

Ehcache is an open source, standards-based cache used to boost performance, offload the database and simplify scalability. Ehcache is robust, proven and full-featured and this has made it the most widely-used Java-based cache.

There is a newer version: 2.10.9.2
Show newest version
package net.sf.ehcache.management.resource.services;

import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import net.sf.ehcache.management.resource.CacheEntity;
import net.sf.ehcache.management.service.CacheService;
import net.sf.ehcache.management.service.EntityResourceFactory;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.terracotta.management.ServiceExecutionException;
import org.terracotta.management.ServiceLocator;
import org.terracotta.management.resource.exceptions.ResourceRuntimeException;
import org.terracotta.management.resource.services.validator.RequestValidator;

/**
 * 
 * 

* A resource service for interacting with ehcache caches via the {@link CacheEntity}. *

* * @author brandony */ @Path("/agents/cacheManagers/caches") public final class CachesResourceServiceImpl { public static final String ATTR_QUERY_KEY = "show"; private final static Logger LOG = LoggerFactory.getLogger(CachesResourceServiceImpl.class); private final EntityResourceFactory entityResourceFactory; private final CacheService cacheSvc; private final RequestValidator validator; public CachesResourceServiceImpl() { this.entityResourceFactory = ServiceLocator.locate(EntityResourceFactory.class); this.validator = ServiceLocator.locate(RequestValidator.class); this.cacheSvc = ServiceLocator.locate(CacheService.class); } /** *

* Get a {@code Collection} of {@link CacheEntity} objects representing the cache information provided by the * associated monitorable entity's agent given the request path. *

* * @param info * {@link UriInfo} for this resource request * @return a collection of {@link CacheEntity} objects when successful. */ @GET @Produces(MediaType.APPLICATION_JSON) public Collection getCaches(@Context UriInfo info) { LOG.debug(String.format("Invoking CachesResourceServiceImpl.getCaches: %s", info.getRequestUri())); validator.validateSafe(info); String cacheManagerNames = info.getPathSegments().get(1).getMatrixParameters().getFirst("names"); Set cmNames = cacheManagerNames == null ? null : new HashSet( Arrays.asList(cacheManagerNames.split(","))); String cacheNames = info.getPathSegments().get(2).getMatrixParameters().getFirst("names"); Set cNames = cacheNames == null ? null : new HashSet(Arrays.asList(cacheNames.split(","))); MultivaluedMap qParams = info.getQueryParameters(); List attrs = qParams.get(ATTR_QUERY_KEY); Set cAttrs = attrs == null || attrs.isEmpty() ? null : new HashSet(attrs); try { return entityResourceFactory.createCacheEntities(cmNames, cNames, cAttrs); } catch (ServiceExecutionException e) { throw new ResourceRuntimeException("Failed to get caches", e, Response.Status.BAD_REQUEST.getStatusCode()); } } /** *

* Create or update a cache with the name specified in the request path, for a specific agent and cache manager. The * request path that does not identify a unique cache resource for creation or identifies a cache that already exists * will constitute a bad request and will be denied, resulting in a response with a 400 and 409 respectively. *

* * @param info * {@link UriInfo} for this resource request * @param resource * {@code CacheEntity} resource for update or creation */ @PUT @Consumes(MediaType.APPLICATION_JSON) public void createOrUpdateCache(@Context UriInfo info, CacheEntity resource) { LOG.debug(String.format("Invoking CachesResourceServiceImpl.createOrUpdateCache: %s", info.getRequestUri())); validator.validate(info); String cacheManagerName = info.getPathSegments().get(1).getMatrixParameters().getFirst("names"); String cacheName = info.getPathSegments().get(2).getMatrixParameters().getFirst("names"); try { cacheSvc.createOrUpdateCache(cacheManagerName, cacheName, resource); } catch (ServiceExecutionException e) { throw new ResourceRuntimeException("Failed to create or update cache", e, Response.Status.BAD_REQUEST.getStatusCode()); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy