From 38c3a952c88336333c2232cc8f3bca56915ede70 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 3 Dec 2010 17:30:13 +0100 Subject: [PATCH] added sonia-graph-plugin --- plugins/pom.xml | 1 + plugins/scm-graph-plugin/pom.xml | 41 ++++ .../java/sonia/scm/graph/GraphServlet.java | 183 ++++++++++++++++++ .../sonia/scm/graph/GraphServletModule.java | 64 ++++++ .../main/resources/META-INF/scm/plugin.xml | 56 ++++++ .../resources/sonia/scm/graph/sonia.graph.js | 43 ++++ scm-webapp/pom.xml | 19 ++ third-party/shared-libs/pom.xml | 14 ++ .../src/main/lib/guice-grapher-2.0.jar | Bin 0 -> 52313 bytes 9 files changed, 421 insertions(+) create mode 100644 plugins/scm-graph-plugin/pom.xml create mode 100644 plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServlet.java create mode 100644 plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServletModule.java create mode 100644 plugins/scm-graph-plugin/src/main/resources/META-INF/scm/plugin.xml create mode 100644 plugins/scm-graph-plugin/src/main/resources/sonia/scm/graph/sonia.graph.js create mode 100644 third-party/shared-libs/src/main/lib/guice-grapher-2.0.jar diff --git a/plugins/pom.xml b/plugins/pom.xml index 75dca2a86b..203030f550 100644 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -19,6 +19,7 @@ scm-hg-plugin scm-svn-plugin scm-git-plugin + scm-graph-plugin diff --git a/plugins/scm-graph-plugin/pom.xml b/plugins/scm-graph-plugin/pom.xml new file mode 100644 index 0000000000..28b1779241 --- /dev/null +++ b/plugins/scm-graph-plugin/pom.xml @@ -0,0 +1,41 @@ + + + + 4.0.0 + + + scm-plugins + sonia.scm.plugins + 1.0-M3-SNAPSHOT + + + sonia.scm.plugins + scm-graph-plugin + 1.0-M3-SNAPSHOT + scm-graph-plugin + + + + + javax.servlet + servlet-api + ${servlet.version} + provided + + + + sonia.scm + scm-web-api + 1.0-M3-SNAPSHOT + + + + com.google.inject.extensions + guice-grapher + 2.0 + + + + + diff --git a/plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServlet.java b/plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServlet.java new file mode 100644 index 0000000000..5477df8b88 --- /dev/null +++ b/plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServlet.java @@ -0,0 +1,183 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.graph; + +//~--- non-JDK imports -------------------------------------------------------- + +import com.google.inject.Guice; +import com.google.inject.Inject; +import com.google.inject.Injector; +import com.google.inject.Provider; +import com.google.inject.Singleton; +import com.google.inject.grapher.GrapherModule; +import com.google.inject.grapher.InjectorGrapher; +import com.google.inject.grapher.graphviz.GraphvizModule; +import com.google.inject.grapher.graphviz.GraphvizRenderer; + +import sonia.scm.util.IOUtil; +import sonia.scm.util.SecurityUtil; +import sonia.scm.web.security.WebSecurityContext; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author Sebastian Sdorra + */ +@Singleton +public class GraphServlet extends HttpServlet +{ + + /** Field description */ + public static final String CONTENT_TYPE = "application/octet-stream"; + + /** Field description */ + private static final long serialVersionUID = 2733077353390468391L; + + //~--- constructors --------------------------------------------------------- + + /** + * Constructs ... + * + * + * + * @param securityContextProvider + * @param injector + */ + @Inject + public GraphServlet(Provider securityContextProvider, + Injector injector) + { + this.securityContextProvider = securityContextProvider; + this.injector = injector; + } + + //~--- methods -------------------------------------------------------------- + + /** + * Method description + * + * + * @param request + * @param response + * + * @throws IOException + * @throws ServletException + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + processRequest(response); + } + + /** + * Method description + * + * + * @param request + * @param response + * + * @throws IOException + * @throws ServletException + */ + @Override + protected void doPost(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + processRequest(response); + } + + /** + * Method description + * + * + * @param response + * + * @throws IOException + * @throws ServletException + */ + private void processRequest(HttpServletResponse response) + throws ServletException, IOException + { + SecurityUtil.assertIsAdmin(securityContextProvider); + + PrintWriter writer = null; + PrintWriter bufferWriter = null; + + try + { + response.setContentType(CONTENT_TYPE); + + Injector grapherInjector = Guice.createInjector(new GrapherModule(), + new GraphvizModule()); + GraphvizRenderer renderer = + grapherInjector.getInstance(GraphvizRenderer.class); + StringWriter buffer = new StringWriter(); + + bufferWriter = new PrintWriter(buffer); + renderer.setOut(bufferWriter).setRankdir("TB"); + grapherInjector.getInstance(InjectorGrapher.class).of(injector).graph(); + bufferWriter.flush(); + writer = response.getWriter(); + + String graphString = buffer.toString(); + + writer.print(graphString.replaceAll("invis", "solid")); + } + finally + { + IOUtil.close(writer); + IOUtil.close(bufferWriter); + } + } + + //~--- fields --------------------------------------------------------------- + + /** Field description */ + private Injector injector; + + /** Field description */ + private Provider securityContextProvider; +} diff --git a/plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServletModule.java b/plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServletModule.java new file mode 100644 index 0000000000..55ac58a9e5 --- /dev/null +++ b/plugins/scm-graph-plugin/src/main/java/sonia/scm/graph/GraphServletModule.java @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.graph; + +//~--- non-JDK imports -------------------------------------------------------- + +import com.google.inject.servlet.ServletModule; + +import sonia.scm.plugin.ext.Extension; + +/** + * + * @author Sebastian Sdorra + */ +@Extension +public class GraphServletModule extends ServletModule +{ + + /** Field description */ + public static final String GRAPHSERVLET_PATTERN = "/graph.dot"; + + //~--- methods -------------------------------------------------------------- + + /** + * Method description + * + */ + @Override + protected void configureServlets() + { + serve(GRAPHSERVLET_PATTERN).with(GraphServlet.class); + } +} diff --git a/plugins/scm-graph-plugin/src/main/resources/META-INF/scm/plugin.xml b/plugins/scm-graph-plugin/src/main/resources/META-INF/scm/plugin.xml new file mode 100644 index 0000000000..0fec159379 --- /dev/null +++ b/plugins/scm-graph-plugin/src/main/resources/META-INF/scm/plugin.xml @@ -0,0 +1,56 @@ + + + + + + + + + ${project.name} + Sebastian Sdorra + ${project.version} + ${project.url} + + + + + + + diff --git a/plugins/scm-graph-plugin/src/main/resources/sonia/scm/graph/sonia.graph.js b/plugins/scm-graph-plugin/src/main/resources/sonia/scm/graph/sonia.graph.js new file mode 100644 index 0000000000..657dc33ea2 --- /dev/null +++ b/plugins/scm-graph-plugin/src/main/resources/sonia/scm/graph/sonia.graph.js @@ -0,0 +1,43 @@ +/* * + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ +loginCallbacks.push(function(){ + if (admin){ + Ext.getCmp('navigationPanel').addSection({ + title: 'Development', + items: [{ + label: 'Injection Graph', + fn: function(){ + window.open('graph.dot'); + } + }] + }); + } +}); \ No newline at end of file diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index cb0ab4af6e..79d0662b8d 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -139,6 +139,25 @@ scm-webapp + + + + + development + + + + + sonia.scm.plugins + scm-graph-plugin + 1.0-M3-SNAPSHOT + + + + + + + diff --git a/third-party/shared-libs/pom.xml b/third-party/shared-libs/pom.xml index 0e62e7f17e..b096d8a352 100644 --- a/third-party/shared-libs/pom.xml +++ b/third-party/shared-libs/pom.xml @@ -37,6 +37,20 @@ jar + + google-guice-grapher + + install-file + + install + + ${project.basedir}/src/main/lib/guice-grapher-2.0.jar + com.google.inject.extensions + guice-grapher + 2.0 + jar + + diff --git a/third-party/shared-libs/src/main/lib/guice-grapher-2.0.jar b/third-party/shared-libs/src/main/lib/guice-grapher-2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..d4cb840be0d98fb01e481c8c1e815429ccf27ee1 GIT binary patch literal 52313 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�C0=1X^wn3MxA%Fr<4!de zvC(<1_8Lv`vwuD{GXowXks=0`e(|UMxm2|W1u$oQ7?JcVji30KR$@X|Itvx$#s%h$ z-#KuoYKb!(UNe}5mk8upqy!js$(fdSy-BzAf|7BcZ)8}^RjzJ#bQHL@^}9b=ndy*y zG?u}&mu`2t$dfyI;>TPo^Zzrc0|K68`_t+9=DSmuc=xb4Y=Xn{y0s)u{yfR0a8OUo}6|7ci z({lT)h9XkoZ)6Vz1JXJ%rvwYp%oxjAHFTx1*l}`SvIhoNE{p^`6d|&W$KWVsI>^n< z&`+%{y%$3Npk2jl^aJduuROPFGx}LMdVSW>LVmyhvc6F2&GSav)yZajnxGX*__MF# zCC}bUP3NOH+o8JUEX7ow^96M7jJj}-?m(3%VLS?%v{Z>JYJI)KP;Mz7Fu231!nhND ziL_;xLujkM_~F_||MCgbILT(b@6#xF8R4bwP<7RlTKlOtB-#nBQ{9}!c{Gy*kh6J& zpoXs4IB7Jne}MWFlyk--{w`aJ1osH*i4ES9I^}uqz9tMMwpbk^%w@3C{;>pK+Y3Nn z;U+;pJiqr-G5M*Pxc=oNvPRJ@Ljb)DMqsdLthaTO zzQu|-=~>?F%dI@W{oEUu+Z*IgOnVM{S%&-OrK?gf9D-N?1oII;qe3L1^!zYhh3wiF z-IT>ArlVtYkk z*AsyeIZZtv10UT0o)^z5VGf%VNjj2Rw9WJ$YLoN)8|A0!@Wp`u+#948FPG8Q7FFod z3uC<9CkOG4<%b3imC>~DhKfrnJqCn$n+6=1egQ*7Rto{s?*Q)sF`WboT!g2EqzzJX zyef6#PLSl3Ir^eqd+)A~1*D(LVZ23m9OKNj-o<)u8mQYQyO%tYSM+%wW_ouO;vEm1 z?oFhiJHdypC(E&oq5PT+yOVKyzW0%U;#Yd+11J0=a&`0{@#E;9@>3S z%D?3pl(By`-qq5|-qPa7q=VN1_Xh|ua0vHremPc7u0Ov0;2=alfOz~ph%IRN{$-1P zOzCrQBoBAnzsBE#_*RoP7$ZM>R0s$oCJ2bTcL?N_9I_0GSCW^MR?(2Y>%9L8x+-xh z)CX1D67&O_ME|>#ggAr74;58SP}pB%z6}xea0X<1puZdh4K&{zvA&m*kbO|h-wUz- zMSq>@hXo*T0vBg3HCs^Edkw1hH=EJ#1vHA`{4T+r_XIe4`s^|HItVf!RQ+$G;`dS# zvWoYc=>PiY1qa5TK{en8fkuL={%s=jy_AHYf`+HR&&!W`iN8)w`e0JSD-bX>h==7n z0qA#0NCx5WbNsyi{``_jX&~HhH}6<~z%B;8*?(Vu*>6)6OV=L-GQg8VdfupC2?DPL zb?+a+BS?N9{7;DnaPSjy0jgjS_`rYE+>h+{!T(eX00&=V5PHi50u}`=t9s8+GOObBG7;)3K|rD zOwtQbFZ%`lAF~E0*FRs+pM%Sd(hGeARkjP%fNz?{-%CkI5lA8OSK#iJu2yCimfzMB zew`n1&-y!x52C+K@$=e)d%E926N>)|`ag`B!QUNltMfZxBZ*%EgR=3T#^>PZ;5OoS z=q8f?4IS)jA2>9)3HKeeztpdwf4rpwjtcI3eTQly{VUX;yI_N(gF8&#p=+r868-P| zCcz27eF5(XZqO#EjiT;|v~_+(^zWH8m~9j|KDg=29saJtZ{h!C3i9U+ zdV(vU0xs!(M`Q$=5&r$~_wNTL z`5yxB;B5gHkiMgMVEbDXKTeOnKepe_CAjGC9Y2ZvKj;5>I>7}(@3@See~SxDE)+bM z-~x(w_<3%>h5y&A{k#d_3Tbx~WZwT1#jmG>;A&lWG*>?VgywH1hTsxXcQhk@|Agjm zrikETMRzoV0sn;NPw67?#}6)wb4N1}^iOF1l*j?60heF7qv;L#Cp3SGv4GQni+tSC z^o9KcnxDVU;7SO0B=AxH6Un!E-p?t(?*`vd=*Is~6u+K>fS<6wqw&f9Et>zF*MpCx z-`e!kL;gQhAHQJ$ literal 0 HcmV?d00001