1 package com.ning.metrics.goodwill.endpoint; 2 3 import com.google.inject.Inject; 4 import com.ning.metrics.goodwill.access.GoodwillSchema; 5 import com.ning.metrics.goodwill.sink.GoodwillSink; 6 import com.ning.metrics.goodwill.store.GoodwillStore; 7 import org.apache.log4j.Logger; 8 9 import javax.annotation.Nullable; 10 import javax.ws.rs.POST; 11 import javax.ws.rs.Path; 12 import javax.ws.rs.PathParam; 13 import javax.ws.rs.Produces; 14 import javax.ws.rs.core.MediaType; 15 import javax.ws.rs.core.Response; 16 17 @Path("sink") 18 public class Sink 19 { 20 private Logger log = Logger.getLogger(Sink.class); 21 22 private GoodwillStore store; 23 private final GoodwillSink sink; 24 25 @Inject 26 public Sink( 27 GoodwillStore store, 28 @Nullable GoodwillSink sink 29 ) 30 { 31 this.store = store; 32 this.sink = sink; 33 } 34 35 @POST 36 @Path("/{type}/") 37 @Produces(MediaType.TEXT_PLAIN) 38 public Response addTypeToSink(@PathParam("type") String typeName) throws Exception 39 { 40 GoodwillSchema typeFound = store.findByName(typeName); 41 42 log.debug(String.format("Found type: %s", typeFound)); 43 if (typeFound != null) { 44 if (sink.addType(typeFound)) { 45 return Response.status(Response.Status.CREATED).build(); 46 } 47 else { 48 return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); 49 } 50 } 51 52 return Response.status(javax.ws.rs.core.Response.Status.NOT_FOUND).build(); 53 } 54 }