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