View Javadoc

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  }