package com.bls.resource; import javax.inject.Inject; import javax.inject.Singleton; import javax.validation.Valid; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.NotFoundException; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.bls.core.event.Event; import com.bls.core.user.User; import com.bls.dao.EventDao; import com.codahale.metrics.annotation.ExceptionMetered; import com.codahale.metrics.annotation.Timed; import com.google.common.base.Optional; import io.dropwizard.auth.Auth; import io.dropwizard.hibernate.UnitOfWork; @Singleton @Path("/events/{id}") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class EventResource { private final EventDao<Event> eventDao; @Inject public EventResource(final EventDao eventDao) { this.eventDao = eventDao; } @GET @UnitOfWork @Timed @ExceptionMetered public Event get(@Auth User user, @PathParam("id") final String id) { return eventDao.findByIdSafe(user, id); } @PUT @UnitOfWork @Timed @ExceptionMetered public Event update(@Auth User user, @PathParam("id") final String id, @Valid final Event event) { return eventDao.updateSafe(user, id, event); } @DELETE @UnitOfWork @Timed @ExceptionMetered public void deleteById(@Auth User user, @PathParam("id") final String id) { eventDao.deleteById((String)eventDao.findByIdSafe(user, id).getId()); } }