You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ps...@apache.org on 2007/08/21 14:21:13 UTC

svn commit: r568094 - in /labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet: ./ BacklogGraphReslet.java GraphRestletUtils.java PinpointGraphRestlet.java PinpointRestletApplication.java RootRestlet.java

Author: psmith
Date: Tue Aug 21 05:21:12 2007
New Revision: 568094

URL: http://svn.apache.org/viewvc?rev=568094&view=rev
Log:
And now for the all important Restlet's themselves... oops.


Added:
    labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/
    labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/BacklogGraphReslet.java
    labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/GraphRestletUtils.java
    labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointGraphRestlet.java
    labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointRestletApplication.java
    labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/RootRestlet.java

Added: labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/BacklogGraphReslet.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/BacklogGraphReslet.java?rev=568094&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/BacklogGraphReslet.java (added)
+++ labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/BacklogGraphReslet.java Tue Aug 21 05:21:12 2007
@@ -0,0 +1,27 @@
+package org.apache.logging.pinpoint.restlet;
+
+import org.apache.logging.pinpoint.metric.Counter;
+import org.apache.logging.pinpoint.metric.MetricChartUtils;
+import org.jfree.chart.JFreeChart;
+import org.restlet.Restlet;
+import org.restlet.data.Request;
+import org.restlet.data.Response;
+
+public class BacklogGraphReslet extends Restlet {
+
+    private final Counter receivedCounter;
+    private final Counter indexedCounter;
+
+    public BacklogGraphReslet(Counter receivedCounter, Counter indexedCounter) {
+        this.receivedCounter = receivedCounter;
+        this.indexedCounter = indexedCounter;
+    }
+
+    @Override
+    public void handle(Request request, Response response) {
+        JFreeChart backlogChart = MetricChartUtils.createBacklogChart(receivedCounter,
+                indexedCounter);
+        GraphRestletUtils.writeChart(backlogChart, response);
+    }
+
+}

Added: labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/GraphRestletUtils.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/GraphRestletUtils.java?rev=568094&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/GraphRestletUtils.java (added)
+++ labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/GraphRestletUtils.java Tue Aug 21 05:21:12 2007
@@ -0,0 +1,25 @@
+package org.apache.logging.pinpoint.restlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.restlet.data.MediaType;
+import org.restlet.data.Response;
+import org.restlet.resource.InputRepresentation;
+
+public class GraphRestletUtils {
+
+    public static void writeChart(JFreeChart chart, Response response) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try {
+            ChartUtilities.writeChartAsJPEG(baos, chart, 450, 300);
+            response.setEntity(new InputRepresentation(
+                    new ByteArrayInputStream(baos.toByteArray()), MediaType.IMAGE_JPEG));
+        } catch (IOException e) {
+            throw new RuntimeException("failed to write graph to Restlet response", e);
+        }
+    }
+}

Added: labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointGraphRestlet.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointGraphRestlet.java?rev=568094&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointGraphRestlet.java (added)
+++ labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointGraphRestlet.java Tue Aug 21 05:21:12 2007
@@ -0,0 +1,38 @@
+package org.apache.logging.pinpoint.restlet;
+
+import org.apache.log4j.Logger;
+import org.apache.logging.pinpoint.metric.Counter;
+import org.apache.logging.pinpoint.metric.MetricChartUtils;
+import org.apache.logging.pinpoint.utils.PinpointUtils;
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.JFreeChart;
+import org.restlet.Restlet;
+import org.restlet.data.Request;
+import org.restlet.data.Response;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
+
+public class PinpointGraphRestlet extends Restlet implements BeanFactoryAware {
+
+    private static final Logger LOG = PinpointUtils.getLogger(PinpointGraphRestlet.class);
+
+    private BeanFactory factory;
+
+    @Override
+    public void handle(Request request, Response response) {
+        String counterName = (String) request.getAttributes().get("counter");
+        Counter counter = (Counter) factory.getBean(counterName);
+
+        // TODO handle unknown
+        JFreeChart chart = ChartFactory.createTimeSeriesChart(counter.getMetricName(), "Time",
+                "Rate/second", MetricChartUtils.createRateTimeSeries(counter), false, false, false);
+        GraphRestletUtils.writeChart(chart, response);
+
+    }
+
+    public void setBeanFactory(BeanFactory factory) throws BeansException {
+        this.factory = factory;
+    }
+
+}

Added: labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointRestletApplication.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointRestletApplication.java?rev=568094&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointRestletApplication.java (added)
+++ labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/PinpointRestletApplication.java Tue Aug 21 05:21:12 2007
@@ -0,0 +1,47 @@
+package org.apache.logging.pinpoint.restlet;
+
+import org.restlet.Application;
+import org.restlet.Component;
+import org.restlet.Restlet;
+import org.restlet.Router;
+import org.restlet.data.Protocol;
+
+public class PinpointRestletApplication extends Application {
+
+    private final Restlet pinpointGraphRestlet;
+    private final Component component;
+    private final Restlet backlogGraphRestlet;
+    private final Restlet rootRestlet;
+
+    public PinpointRestletApplication(Component component, Restlet rootRestlet,
+            PinpointGraphRestlet pinpointGraphRestlet, BacklogGraphReslet backlogGraphRestlet) {
+        super(component.getContext());
+        this.pinpointGraphRestlet = pinpointGraphRestlet;
+        this.backlogGraphRestlet = backlogGraphRestlet;
+        this.rootRestlet = rootRestlet;
+        this.component = component;
+    }
+
+    @Override
+    public Restlet createRoot() {
+        Router router = new Router(getContext());
+
+        router.attach(rootRestlet);
+        router.attach("/counters/{counter}/", pinpointGraphRestlet);
+        router.attach("/backlog/", backlogGraphRestlet);
+        // Return the root router
+        return router;
+    }
+
+    public void go() {
+        component.getServers().add(Protocol.HTTP, 8182);
+        component.getDefaultHost().attach("", this);
+        component.getClients().add(Protocol.FILE);
+        try {
+            component.start();
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to start Restlet Component", e);
+        }
+    }
+
+}

Added: labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/RootRestlet.java
URL: http://svn.apache.org/viewvc/labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/RootRestlet.java?rev=568094&view=auto
==============================================================================
--- labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/RootRestlet.java (added)
+++ labs/pinpoint/trunk/pinpoint-service/src/main/java/org/apache/logging/pinpoint/restlet/RootRestlet.java Tue Aug 21 05:21:12 2007
@@ -0,0 +1,47 @@
+package org.apache.logging.pinpoint.restlet;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.logging.pinpoint.metric.Counter;
+import org.restlet.Restlet;
+import org.restlet.data.MediaType;
+import org.restlet.data.Request;
+import org.restlet.data.Response;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
+import org.springframework.beans.factory.ListableBeanFactory;
+
+public class RootRestlet extends Restlet implements BeanFactoryAware {
+
+    private ListableBeanFactory ctx;
+
+    @Override
+    public void handle(Request request, Response response) {
+        StringBuilder sb = new StringBuilder(4096);
+
+        sb
+                .append("<html><head><title>Pinpoint-Service - Performance Graphs</title><meta http-equiv=\"refresh\" content=\"5\"></head><body>");
+
+        sb.append("<h1>Pinpoint-Service - Performance Graphs</h1>");
+        sb.append("<img src=\"/backlog/\" <BR>");
+
+        Map counters = ctx.getBeansOfType(Counter.class);
+
+        for (Iterator iterator = counters.entrySet().iterator(); iterator.hasNext();) {
+            Map.Entry entry = (Entry) iterator.next();
+            sb.append("<img src=\"/counters/" + entry.getKey() + "/\"><BR>");
+
+        }
+        sb.append("</body></html>");
+        response.setEntity(sb.toString(), MediaType.TEXT_HTML);
+    }
+
+    public void setBeanFactory(BeanFactory factory) throws BeansException {
+        this.ctx = (ListableBeanFactory) factory;
+
+    }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org