Re: Help with dashboard widget

Tennis Smith <[email protected]>
Newsgroups gmane.comp.java.cruise-control.user
Message-ID <[email protected]>
Thanks Nathan!

Thats really helpful. :)

-T
On Tue, Dec 1, 2009 at 1:14 AM, Nathan Russell
<[email protected]>wrote:

>
> At last I have found the answer to my question - for anyone wanting to
> write
> a widget, you need to deploy it below the dashboard web apps WEB-INF folder
> structure. I was thinking I could simply put it within CC's main lib
> folder,
> but no such luck!
>
> /usr
>    /share
>        /cruisecontrol
>            /lib        <- dont put the jar here, dashboard wont find it :(
>            /webapps
>                /dashboard
>                    /WEB-INF
>                       /lib    <- put the jar here, or in the correct folder
> structure under classes
>
> Doh! :)
> Never mind, hopefully this will help someone else someday
>
>
> Nathan Russell wrote:
> >
> > Hi,
> >
> > Wonder if anyone can help with something. I am trying to write a new
> > dashboard widget. I've found a couple of pages on the web
> > (http://cruisecontrol.sourceforge.net/widgets.html and
> > http://www.nabble.com/Dashboard-PMD-widget...-td11127239.html), and
> > looked up the source of the dashboard widgets as shipped with CC. Using
> > these resources, I've written the following:
> >
> >
> >
> > import
> > net.sourceforge.cruisecontrol.dashboard.widgets.AbstractXslOutputWidget;
> >
> > import net.sourceforge.cruisecontrol.dashboard.widgets.Widget;
> >
> >
> >
> > public class VerifyIFPDashboardWidget extends AbstractXslOutputWidget
> > implements Widget {
> >
> >
> >
> >       public String getDisplayName() {
> >
> >             return "Verify IFP Results";
> >
> >       }
> >
> >
> >
> >       public String getXslPath() {
> >
> >             return "/webapps/cruisecontrol/xsl/verifyIFP.xsl";
> >
> >       }
> >
> >
> >
> > }
> >
> >
> >
> > (instead of extending AbstractXslOutputWidget I have also tried writing
> > my own 'public Object getOutput(Map parameters)' method. Both give the
> > same result)
> >
> >
> >
> > I've told CC about my new widget by adding it in dashboard-config.xml:
> >
> >         <subtabs>
> >
> >             <subtab
> > class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarnings
> > MessagesWidget" />
> >
> >             <subtab class="VerifyIFPDashboardWidget" />
> >
> >         </subtabs>
> >
> >
> >
> > I then restart CC. If I try to use dashboard with a browser, I see my
> > list of projects; but then when I try to click on one (to see the screen
> > with the tabs, and hopefully my new one), I get the following stack
> > trace:
> >
> >
> > HTTP ERROR: 500
> >
> > argument type mismatch
> >
> > RequestURI=/dashboard/tab/build/detail/projectA
> >
> >
> > Caused by:
> >
> > java.lang.IllegalArgumentException: argument type mismatch
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> > a:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> > Impl.java:25)
> >         at java.lang.reflect.Method.invoke(Method.java:585)
> >         at
> > org.springframework.web.servlet.mvc.multiaction.MultiActionController.in
> > vokeExceptionHandler(MultiActionController.java:646)
> >         at
> > org.springframework.web.servlet.mvc.multiaction.MultiActionController.ha
> > ndleException(MultiActionController.java:616)
> >         at
> > org.springframework.web.servlet.mvc.multiaction.MultiActionController.in
> > vokeNamedMethod(MultiActionController.java:451)
> >         at
> > org.springframework.web.servlet.mvc.multiaction.MultiActionController.ha
> > ndleRequestInternal(MultiActionController.java:384)
> >         at
> > org.springframework.web.servlet.mvc.AbstractController.handleRequest(Abs
> > tractController.java:153)
> >         at
> > org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handl
> > e(SimpleControllerHandlerAdapter.java:48)
> >         at
> > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherS
> > ervlet.java:858)
> >         at
> > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherSe
> > rvlet.java:792)
> >         at
> > org.springframework.web.servlet.FrameworkServlet.processRequest(Framewor
> > kServlet.java:476)
> >         at
> > org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.
> > java:431)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> >         at
> > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
> >         at
> > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
> >         at
> > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:2
> > 16)
> >         at
> > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> >         at
> > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
> >         at
> > org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> >         at
> > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandler
> > Collection.java:206)
> >         at
> > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.jav
> > a:114)
> >         at
> > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> >         at org.mortbay.jetty.Server.handle(Server.java:324)
> >         at
> > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
> >         at
> > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConne
> > ction.java:829)
> >         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> >         at
> > org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
> >         at
> > org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
> >         at
> > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
> > 395)
> >         at
> > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java
> > :488)
> >
> > Powered by Jetty:// <http://jetty.mortbay.org/>
> >
> > (The same stack trace is in the CC log file)
> >
> >
> >
> >
> >
> > What have I done wrong? Any ideas?
> >
> > Cheers
> >
> >
> >
> > Nathan
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> > is the only developer event you need to attend this year. Jumpstart your
> > developing skills, take BlackBerry mobile applications to market and stay
> > ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> > http://p.sf.net/sfu/devconference
> > _______________________________________________
> > Cruisecontrol-user mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user
> >
> >
>
> --
> View this message in context:
> http://old.nabble.com/Help-with-dashboard-widget-tp26091812p26588096.html
> Sent from the CruiseControl - User mailing list archive at Nabble.com.
>
>
>
> ------------------------------------------------------------------------------
> Join us December 9, 2009 for the Red Hat Virtual Experience,
> a free event focused on virtualization and cloud computing.
> Attend in-depth sessions from your desk. Your couch. Anywhere.
> http://p.sf.net/sfu/redhat-sfdev2dev
> _______________________________________________
> Cruisecontrol-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user
>



-- 

Tks,
-T

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev

_______________________________________________
Cruisecontrol-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.