<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/rss.css"?>
<rss version="2.0">
  <channel>
    <title></title>
    <link></link>
    <language>en-us</language>
    <pubDate>Wed, 20 Aug 2008 10:39:40 -0500</pubDate>
    <generator>http://march.rubyhaus.org/</generator>
    <docs>This file is an RSS 2.0 file.</docs>
    <description>Feed of the latest messages for </description>
    <language>en-US</language>
    <item>
      <title>Re: [groovy-dev] Startup cost -- just checking, not a huge issue -- mainly for	interest</title>
      <creator>&lt;span class='name'&gt;Russel Winder&lt;/span&gt; &lt;span class='address'&gt;(russel.winder@concertant...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Russel Winder&lt;/span&gt; &lt;span class='address'&gt;(russel.winder@concertant...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:34:08 -0500</pubDate>
      <link>/lists/org.codehaus.groovy.dev/msg/1219246448.2967.174.camel@balin?group=haus.codehaus.groovy</link>
      <guid isPermaLink="true">/lists/org.codehaus.groovy.dev/msg/1219246448.2967.174.camel@balin?group=haus.codehaus.groovy</guid>
    </item>
    <item>
      <title>[groovy-user] implementing GroovyInterceptable behaves differently in closures and methods</title>
      <creator>&lt;span class='name'&gt;Erick Erickson&lt;/span&gt; &lt;span class='address'&gt;(erickerickson@gmail...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Erick Erickson&lt;/span&gt; &lt;span class='address'&gt;(erickerickson@gmail...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:33:31 -0500</pubDate>
      <link>/lists/org.codehaus.groovy.user/msg/359a92830808200833p1f787b3v14f8aa1c1f81e75b@mail.gmail.com?group=haus.codehaus.groovy</link>
      <guid isPermaLink="true">/lists/org.codehaus.groovy.user/msg/359a92830808200833p1f787b3v14f8aa1c1f81e75b@mail.gmail.com?group=haus.codehaus.groovy</guid>
    </item>
    <item>
      <title>Re: [xstream-user] Re: Re: Re: Tweaking the output - use attributes</title>
      <creator>&lt;span class='name'&gt;Mark Wyszomierski&lt;/span&gt; &lt;span class='address'&gt;(markww@gmail...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Mark Wyszomierski&lt;/span&gt; &lt;span class='address'&gt;(markww@gmail...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:32:50 -0500</pubDate>
      <link>/lists/org.codehaus.xstream.user/msg/dfdfe01e0808200832lcaeb999v453e16e96c6c695a@mail.gmail.com?group=haus.codehaus.xstream</link>
      <guid isPermaLink="true">/lists/org.codehaus.xstream.user/msg/dfdfe01e0808200832lcaeb999v453e16e96c6c695a@mail.gmail.com?group=haus.codehaus.xstream</guid>
    </item>
    <item>
      <title>Re: [grails-user] [ABBA] Timeline RichUI datasource parameter in production problem.</title>
      <creator>&lt;span class='name'&gt;Brent&lt;/span&gt; &lt;span class='address'&gt;(brentcfemail-grails@yahoo...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Brent&lt;/span&gt; &lt;span class='address'&gt;(brentcfemail-grails@yahoo...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:26:45 -0500</pubDate>
      <link>/lists/org.codehaus.grails.user/msg/514005.60251.qm@web50703.mail.re2.yahoo.com?group=haus.codehaus.grails</link>
      <guid isPermaLink="true">/lists/org.codehaus.grails.user/msg/514005.60251.qm@web50703.mail.re2.yahoo.com?group=haus.codehaus.grails</guid>
    </item>
    <item>
      <title>[grails-scm] [jira] Commented: (GRAILS-1771) Making changes in a service gives ClassCastException and requires restart</title>
      <creator>&lt;span class='name'&gt;Jonas Grote (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Jonas Grote (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:23:27 -0500</pubDate>
      <link>/lists/org.codehaus.grails.scm/msg/4151883.1219245807090.JavaMail.haus-jira@codehaus01.managed.contegix.com?group=haus.codehaus.grails</link>
      <guid isPermaLink="true">/lists/org.codehaus.grails.scm/msg/4151883.1219245807090.JavaMail.haus-jira@codehaus01.managed.contegix.com?group=haus.codehaus.grails</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>scm@grails.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='name'&gt;Jonas Grote (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 10:23:27 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <pre>
    [ http://jira.codehaus.org/browse/GRAILS-1771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=145575#action_145575 ] 

Jonas Grote commented on GRAILS-1771:
-------------------------------------

I still get this error in Version 1.0.3 using Ubuntu Hardy.

======
Message: Failed to convert property value of type [ParserService] to required type [ParserService] for property 'parserService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [ParserService] to required type [ParserService] for property 'parserService': no matching editors or conversion strategy found
Caused by: Error creating bean with name 'ParserController': Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [ParserService] to required type [ParserService] for property 'parserService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [ParserService] to required type [ParserService] for property 'parserService': no matching editors or conversion strategy found
Class: Unknown
At Line: [-1]
Code Snippet:
======

&gt; Making changes in a service gives ClassCastException and requires restart
&gt; -------------------------------------------------------------------------
&gt;
&gt;                 Key: GRAILS-1771
&gt;                 URL: http://jira.codehaus.org/browse/GRAILS-1771
&gt;             Project: Grails
&gt;          Issue Type: Bug
&gt;          Components: Services
&gt;    Affects Versions: 1.0-RC1
&gt;         Environment: Windows, OSX (Leopard)
&gt;            Reporter: Jeroen Gordijn
&gt;            Assignee: Graeme Rocher
&gt;            Priority: Blocker
&gt;             Fix For: 1.0-RC2
&gt;
&gt;         Attachments: testService-bug-report-01112007.zip
&gt;
&gt;
&gt; The problem is that making a change in the service (even adding a white space) gives a ClassCastException: 
&gt; ======
&gt; Message: NaamService cannot be cast to NaamService
&gt; Caused by: java.lang.ClassCastException: NaamService cannot be cast to NaamService
&gt; Class: PersonController
&gt; At Line: [12]
&gt; Code Snippet:
&gt; ======
&gt; Project attached.
&gt; This is an application with a simple service and a scaffolded controller which uses the service. 
&gt; 1) run-app
&gt; 2) make change in service (add a white space and save)
&gt; 3) refresh page. 
&gt; 4) See ClassCastException
&gt; restart app and all works fine.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

&lt;hr/&gt;
&lt;p&gt;
To unsubscribe from this list please visit:
&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://xircles.codehaus.org/manage_email"&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;


</pre>
      </description>
    </item>
    <item>
      <title>[xstream-user]  Re: Re: Re: Tweaking the output - use attributes</title>
      <creator>&lt;span class='name'&gt;J&amp;ouml;rg Schaible&lt;/span&gt; &lt;span class='address'&gt;(joerg.schaible@gmx...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;J&amp;ouml;rg Schaible&lt;/span&gt; &lt;span class='address'&gt;(joerg.schaible@gmx...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:18:04 -0500</pubDate>
      <link>/lists/org.codehaus.xstream.user/msg/g8hcjc$t3j$1@ger.gmane.org?group=haus.codehaus.xstream</link>
      <guid isPermaLink="true">/lists/org.codehaus.xstream.user/msg/g8hcjc$t3j$1@ger.gmane.org?group=haus.codehaus.xstream</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>user@xstream.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='name'&gt;J&amp;ouml;rg Schaible&lt;/span&gt; &lt;span class='address'&gt;(joerg.schaible@gmx...)&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 10:18:04 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <pre>Hi Mark,

Mark Wyszomierski wrote:

&gt; Hi Jorg,
&gt; 
&gt; That's exactly what I'm looking for. Seems to work when serializing, but
&gt; I'm getting an error while deserializing. I'm probably using XStream
&gt; incorrectly. Here it is:
&gt; 
&gt;     XStream xstream = new XStream(new DomDriver());
&gt;     xstream.useAttributeFor(String.class);
&gt;     xstream.useAttributeFor(int.class);
&gt; 
&gt;     Person person = new Person("John Doe", 21);
&gt;     String xml = xstream.toXML(person);
&gt;     System.out.println(xml);
&gt; 
&gt;     System.out.println("Deserialize:");
&gt;     Person person2 = (Person)xstream.fromXML(xml); // &lt;- error
&gt;     System.out.println(person2.toString());
&gt; 
&gt; Can you deserialize if you used attributes, or it's just a one way deal?

Should simply work. What's the error (with stack trace please)?

- J&#246;rg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



</pre>
      </description>
    </item>
    <item>
      <title>[jruby-dev] [jira] Created: (JRUBY-2937) -J-cp option mistakes classpath argument for Ruby script argument</title>
      <creator>&lt;span class='name'&gt;Chris Jeris (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Chris Jeris (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:17:27 -0500</pubDate>
      <link>/lists/org.codehaus.jruby.dev/msg/20666931.1219245447206.JavaMail.haus-jira@codehaus01.managed.contegix.com?group=haus.codehaus.jruby</link>
      <guid isPermaLink="true">/lists/org.codehaus.jruby.dev/msg/20666931.1219245447206.JavaMail.haus-jira@codehaus01.managed.contegix.com?group=haus.codehaus.jruby</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>dev@jruby.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='name'&gt;Chris Jeris (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 10:17:27 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <pre>-J-cp option mistakes classpath argument for Ruby script argument
-----------------------------------------------------------------

                 Key: JRUBY-2937
                 URL: http://jira.codehaus.org/browse/JRUBY-2937
             Project: JRuby
          Issue Type: Bug
          Components: Interpreter
    Affects Versions: JRuby 1.1.3
         Environment: Intel, RHEL 5, Java 1.6.0_07, jruby 1.1.3 -and- Intel, Windows 2008 Server, Java 1.6.0_06, jruby 1.1.3
            Reporter: Chris Jeris
            Priority: Minor


The JRuby option -J-cp should pass a -cp option to the underlying JVM, but instead the argument following -J-cp seems to be interpreted as the name of a Ruby script, even if the -J-cp option is suffixed by -- :

$ jruby -J-cp /usr/local/glassfish/lib/sqljdbc.jar script/server
:1: /usr/local/glassfish/lib/sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)
$ jruby -J-cp /usr/local/glassfish/lib/sqljdbc.jar -- script/server
:1: /usr/local/glassfish/lib/sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)

C:\testapp&gt; jruby -J-cp C:\Sun\SDK\lib\sqljdbc.jar script\server
:1: C:\Sun\SDK\lib\sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)
C:\testapp&gt; jruby -J-cp C:\Sun\SDK\lib\sqljdbc.jar -- script\server
:1: C:\Sun\SDK\lib\sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)

Workaround is to set CLASSPATH, which is not feasible in all cases for me, or to drop the jar in question into $JRUBY_HOME/lib, which works fine.

Bug posted as requested by headius in #jruby on 2008 Aug 19.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



</pre>
      </description>
    </item>
    <item>
      <title>[jruby-scm] [jira] Created: (JRUBY-2937) -J-cp option mistakes classpath argument for Ruby script argument</title>
      <creator>&lt;span class='name'&gt;Chris Jeris (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Chris Jeris (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:17:27 -0500</pubDate>
      <link>/lists/org.codehaus.jruby.scm/msg/14407654.1219245447180.JavaMail.haus-jira@codehaus01.managed.contegix.com?group=haus.codehaus.jruby</link>
      <guid isPermaLink="true">/lists/org.codehaus.jruby.scm/msg/14407654.1219245447180.JavaMail.haus-jira@codehaus01.managed.contegix.com?group=haus.codehaus.jruby</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>scm@jruby.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='name'&gt;Chris Jeris (JIRA)&lt;/span&gt; &lt;span class='address'&gt;(jira@codehaus...)&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 10:17:27 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <pre>-J-cp option mistakes classpath argument for Ruby script argument
-----------------------------------------------------------------

                 Key: JRUBY-2937
                 URL: http://jira.codehaus.org/browse/JRUBY-2937
             Project: JRuby
          Issue Type: Bug
          Components: Interpreter
    Affects Versions: JRuby 1.1.3
         Environment: Intel, RHEL 5, Java 1.6.0_07, jruby 1.1.3 -and- Intel, Windows 2008 Server, Java 1.6.0_06, jruby 1.1.3
            Reporter: Chris Jeris
            Priority: Minor


The JRuby option -J-cp should pass a -cp option to the underlying JVM, but instead the argument following -J-cp seems to be interpreted as the name of a Ruby script, even if the -J-cp option is suffixed by -- :

$ jruby -J-cp /usr/local/glassfish/lib/sqljdbc.jar script/server
:1: /usr/local/glassfish/lib/sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)
$ jruby -J-cp /usr/local/glassfish/lib/sqljdbc.jar -- script/server
:1: /usr/local/glassfish/lib/sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)

C:\testapp&gt; jruby -J-cp C:\Sun\SDK\lib\sqljdbc.jar script\server
:1: C:\Sun\SDK\lib\sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)
C:\testapp&gt; jruby -J-cp C:\Sun\SDK\lib\sqljdbc.jar -- script\server
:1: C:\Sun\SDK\lib\sqljdbc.jar:1: Invalid char `\3' ('') in expression (SyntaxError)

Workaround is to set CLASSPATH, which is not feasible in all cases for me, or to drop the jar in question into $JRUBY_HOME/lib, which works fine.

Bug posted as requested by headius in #jruby on 2008 Aug 19.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

&lt;hr/&gt;
&lt;p&gt;
To unsubscribe from this list please visit:
&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://xircles.codehaus.org/manage_email"&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;


</pre>
      </description>
    </item>
    <item>
      <title>Re: [groovy-user] GroovyRowResult Coercion</title>
      <creator>&lt;span class='name'&gt;Dave Klein&lt;/span&gt; &lt;span class='address'&gt;(daveklein@usa...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Dave Klein&lt;/span&gt; &lt;span class='address'&gt;(daveklein@usa...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 10:08:24 -0500</pubDate>
      <link>/lists/org.codehaus.groovy.user/msg/842mHTPHy7116S13.1219244904@cmsweb13.cms.usa.net?group=haus.codehaus.groovy</link>
      <guid isPermaLink="true">/lists/org.codehaus.groovy.user/msg/842mHTPHy7116S13.1219244904@cmsweb13.cms.usa.net?group=haus.codehaus.groovy</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>user@groovy.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='name'&gt;Dave Klein&lt;/span&gt; &lt;span class='address'&gt;(daveklein@usa...)&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 10:08:24 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <div>&lt;html&gt;
&lt;body&gt;
&lt;p&gt; &lt;font size="3" face="times new roman,times,serif"&gt; I did something similar but it took a bit more code than a cast.&amp;nbsp; However, it is wrapped up in a method that can be reused for any table/class combination.&amp;nbsp; You can see the code here:
  &lt;br /&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;&lt;font size="3" face="times new roman,times,serif"&gt;http://dave-klein.blogspot.com/2008/05/another-way-to-use-groovy-in-enterprise.html&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;&lt;font size="3" face="times new roman,times,serif"&gt;Dave&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;&lt;font size="3" face="times new roman,times,serif"&gt;
  &lt;br /&gt;&lt;/font&gt;------ Original Message ------
  &lt;br /&gt; &lt;b&gt;Received: &lt;/b&gt;Wed, 20 Aug 2008 06:11:06 AM CDT
  &lt;br /&gt; &lt;b&gt;From: &lt;/b&gt;"James Hughes" &amp;lt;J.Hughes@kainos.com&amp;gt;
  &lt;br /&gt; &lt;b&gt;To: &lt;/b&gt;&amp;lt;user@groovy.codehaus.org&amp;gt;
  &lt;br /&gt; &lt;b&gt;Subject: &lt;/b&gt;[groovy-user] GroovyRowResult Coercion
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;I was wondering is it possible given that the GroovyRowResult is essentailly a map if I could coerce it into an object eg
  &lt;br /&gt;
  &lt;br /&gt; say I have a table FAX_DETAILS(FAXCODEID, NSC, FAX_NUMBER, BRANCH_NAME, ADDRESS1)
  &lt;br /&gt;
  &lt;br /&gt; Could I potential have a FaxDetailEntry class and cast each row into it?
  &lt;br /&gt;
  &lt;br /&gt; I tried a few ways but no luck.
  &lt;br /&gt;
  &lt;br /&gt; Does anyone have any experince of doing something like this?
  &lt;br /&gt;
  &lt;br /&gt; James.
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt; --------------------------------------------------------------------
  &lt;br /&gt; This e-mail is intended solely for the addressee and is strictly confidential; if you are not the addressee please destroy the message and all copies. Any opinion or information contained in this email or its attachments that does not relate to the business of Kainos
  &lt;br /&gt; is personal to the sender and is not given by or endorsed by Kainos. Kainos is the trading name of Kainos Software Limited, registered in Northern Ireland under company number: NI19370, having its registered offices at: Kainos House, 4-6 Upper Crescent, Belfast, BT7 1NT,
  &lt;br /&gt; Northern Ireland. Registered in the UK for VAT under number: 454598802 and registered in Ireland for VAT under number: 9950340E. This email has been scanned for all known viruses by MessageLabs but is not guaranteed to be virus free; further terms and conditions may be
  &lt;br /&gt; found on our website - www.kainos.com
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt; ---------------------------------------------------------------------
  &lt;br /&gt; To unsubscribe from this list, please visit:
  &lt;br /&gt;
  &lt;br /&gt; http://xircles.codehaus.org/manage_email
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/body&gt;
&lt;/html&gt;


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



</div>
      </description>
    </item>
    <item>
      <title>[atomserver-scm] [AtomServer] [248] branches/user: Creating branch: bryon.stripingAutoTagger</title>
      <creator>&lt;span class='address address-only'&gt;bryon@codehaus...&lt;/span&gt;</creator>
      <author>&lt;span class='address address-only'&gt;bryon@codehaus...&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 09:57:55 -0500</pubDate>
      <link>/lists/org.codehaus.atomserver.scm/msg/20080820145755.C06C614A8045@codehaus01.managed.contegix.com?group=haus.codehaus.atomserver</link>
      <guid isPermaLink="true">/lists/org.codehaus.atomserver.scm/msg/20080820145755.C06C614A8045@codehaus01.managed.contegix.com?group=haus.codehaus.atomserver</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>scm@atomserver.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='address address-only'&gt;bryon@codehaus...&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 09:57:55 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <div>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;&lt;style type="text/css"&gt;&lt;!--
#msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; }
#msg DT { float : left; width : 6em; font-weight : bold; }
#msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt;  }
h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; }
#msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; }
#msg UL, PRE, .diff { overflow : auto; }
#patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; }
#patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; }
#patch .propset h4, #patch .binary h4 {margin: 0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {background:#eeeeee;padding: 0 0 10px 0;}
#patch .propset .diff, #patch .binary .diff  {padding: 10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch .add {background:#ddffdd;}
#patch .rem {background:#ffdddd;}
#patch .lines, .info {color:#888888;background:#ffffff;}
.diff { width : 100%; }
#msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; }
#msg DT { float : left; width : 6em; font-weight : bold; }
#msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt;  }
h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; }
#msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; }
#msg UL, PRE, .diff { overflow : auto; }
#patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; }
#patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; }
#patch .propset h4, #patch .binary h4 {margin: 0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {background:#eeeeee;padding: 0 0 10px 0;}
#patch .propset .diff, #patch .binary .diff  {padding: 10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch .add {background:#ddffdd;}
#patch .rem {background:#ffdddd;}
#patch .lines, .info {color:#888888;background:#ffffff;}
.diff { width : 100%; }
--&gt;&lt;/style&gt;
&lt;title&gt;[AtomServer] [248] branches/user: Creating branch: bryon.stripingAutoTagger&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id="msg"&gt;
&lt;dl&gt;
&lt;dt&gt;Revision&lt;/dt&gt; &lt;dd&gt;&lt;a href="http://fisheye.codehaus.org/changelog/atomserver/?cs=248"&gt;248&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Author&lt;/dt&gt; &lt;dd&gt;bryon&lt;/dd&gt;
&lt;dt&gt;Date&lt;/dt&gt; &lt;dd&gt;2008-08-20 09:57:55 -0500 (Wed, 20 Aug 2008)&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;Log Message&lt;/h3&gt;
&lt;pre&gt;Creating branch: bryon.stripingAutoTagger&lt;/pre&gt;

&lt;h3&gt;Added Paths&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;branches/user/bryon.stripingAutoTagger/&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Property Changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#branchesuserbryonstripingAutoTaggersavana"&gt;branches/user/bryon.stripingAutoTagger/.savana&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;div id="patch"&gt;
&lt;h3&gt;Diff&lt;/h3&gt;
&lt;a id="branchesuserbryonstripingAutoTaggerfromrev247trunk"&gt;&lt;/a&gt;
&lt;div class="copfile"&gt;&lt;h4&gt;Copied: branches/user/bryon.stripingAutoTagger (from rev 247, trunk) ( =&gt; )&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;
Property changes on: branches/user/bryon.stripingAutoTagger/.savana
&lt;/span&gt;&lt;span class="cx"&gt;___________________________________________________________________
Name: BRANCH_PATH
   - trunk
   + /branches/user/bryon.stripingAutoTagger
Name: BRANCH_TYPE
   - TRUNK
   + USER BRANCH
Name: LAST_MERGE_REVISION
   + 247
Name: BRANCH_POINT_REVISION
   + 247
Name: SOURCE_PATH
   + trunk
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;

&lt;hr/&gt;
&lt;p&gt;
To unsubscribe from this list please visit:
&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://xircles.codehaus.org/manage_email"&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;


</div>
      </description>
    </item>
    <item>
      <title>Re: [jmock-user] a question on jMock use</title>
      <creator>&lt;span class='name'&gt;Nat Pryce&lt;/span&gt; &lt;span class='address'&gt;(nat.pryce@gmail...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Nat Pryce&lt;/span&gt; &lt;span class='address'&gt;(nat.pryce@gmail...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 09:56:04 -0500</pubDate>
      <link>/lists/org.codehaus.jmock.user/msg/17fa53d0808200756m6697e648t6afa9bfd7725e790@mail.gmail.com?group=haus.codehaus.jmock</link>
      <guid isPermaLink="true">/lists/org.codehaus.jmock.user/msg/17fa53d0808200756m6697e648t6afa9bfd7725e790@mail.gmail.com?group=haus.codehaus.jmock</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>user@jmock.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='name'&gt;Nat Pryce&lt;/span&gt; &lt;span class='address'&gt;(nat.pryce@gmail...)&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 09:56:04 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <pre>One other thing I forgot to add...

Your Goo and Foo objects have nothing but getters and setters.  They
are not really objects. Just bags of stuff with no behaviour.

Why not just use the real implementation?  Your use of mock objects is
just getting in the way.

Mock objects are for faking out and testing interactions with objects
that have behaviour.  Not for faking out dumb records.

--Nat

2008/8/20 Nat Pryce &lt;nat.pryce@gmail.com&gt;:
&gt; 2008/8/20 &#26472;&#23041; &lt;poweryoung@live.cn&gt;:
&gt;&gt; Do you mean that I should add something like
&gt;&gt; "allowing(mockGoo).setFoo(aFoo)" into Expectations?
&gt;
&gt; You should not use allowing with setFoo unless you really understand
&gt; what the implication is.  The setFoo method changes the state of aFoo,
&gt; and is therefore what you are testing.  You don't want to ignore it.
&gt;
&gt; Read http://www.jmock.org/yoga.html for more info about the difference
&gt; between allowing(...) and oneOf(...).  That document is written for
&gt; jMock 1 but the principles apply to jMock 2.
&gt;
&gt;&gt; If so, I should make the
&gt;&gt; aFoo to final to use it in Expectations. It is not good.
&gt;
&gt; Local variables referred to by an expectation block must be final.
&gt; That should not cause a problem.  There should be no reason to assign
&gt; another value to them in a test.
&gt;
&gt; If you do need to, you can instead use instance variables of the test
&gt; class or local variables inside the expectations block.
&gt;
&gt; --Nat
&gt;
</pre>
      </description>
    </item>
    <item>
      <title>RE: [mule-user] Smooks throwing IllegalArgumentException</title>
      <creator>&lt;span class='name'&gt;Tom Soraoka&lt;/span&gt; &lt;span class='address'&gt;(tom.soraoka@issinc...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Tom Soraoka&lt;/span&gt; &lt;span class='address'&gt;(tom.soraoka@issinc...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 09:54:48 -0500</pubDate>
      <link>/lists/org.codehaus.mule.user/msg/005401c902d4$b19341f0$cb0314ac@issinc.com?group=haus.codehaus.mule</link>
      <guid isPermaLink="true">/lists/org.codehaus.mule.user/msg/005401c902d4$b19341f0$cb0314ac@issinc.com?group=haus.codehaus.mule</guid>
    </item>
    <item>
      <title>Re: [xstream-user] Re: Re: Tweaking the output - use attributes</title>
      <creator>&lt;span class='name'&gt;Mark Wyszomierski&lt;/span&gt; &lt;span class='address'&gt;(markww@gmail...)&lt;/span&gt;</creator>
      <author>&lt;span class='name'&gt;Mark Wyszomierski&lt;/span&gt; &lt;span class='address'&gt;(markww@gmail...)&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 09:53:25 -0500</pubDate>
      <link>/lists/org.codehaus.xstream.user/msg/dfdfe01e0808200753o65e6c820s22728c2c5d46727f@mail.gmail.com?group=haus.codehaus.xstream</link>
      <guid isPermaLink="true">/lists/org.codehaus.xstream.user/msg/dfdfe01e0808200753o65e6c820s22728c2c5d46727f@mail.gmail.com?group=haus.codehaus.xstream</guid>
    </item>
    <item>
      <title>[jruby-scm] [jruby] [7501] trunk/jruby/spec/ffi: Add some Buffer specs</title>
      <creator>&lt;span class='address address-only'&gt;wmeissner@codehaus...&lt;/span&gt;</creator>
      <author>&lt;span class='address address-only'&gt;wmeissner@codehaus...&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 09:50:15 -0500</pubDate>
      <link>/lists/org.codehaus.jruby.scm/msg/20080820145015.A6A6614A8045@codehaus01.managed.contegix.com?group=haus.codehaus.jruby</link>
      <guid isPermaLink="true">/lists/org.codehaus.jruby.scm/msg/20080820145015.A6A6614A8045@codehaus01.managed.contegix.com?group=haus.codehaus.jruby</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>scm@jruby.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='address address-only'&gt;wmeissner@codehaus...&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 09:50:15 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <div>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;&lt;style type="text/css"&gt;&lt;!--
#msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; }
#msg DT { float : left; width : 6em; font-weight : bold; }
#msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt;  }
h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; }
#msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; }
#msg UL, PRE, .diff { overflow : auto; }
#patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; }
#patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; }
#patch .propset h4, #patch .binary h4 {margin: 0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {background:#eeeeee;padding: 0 0 10px 0;}
#patch .propset .diff, #patch .binary .diff  {padding: 10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch .add {background:#ddffdd;}
#patch .rem {background:#ffdddd;}
#patch .lines, .info {color:#888888;background:#ffffff;}
.diff { width : 100%; }
#msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; }
#msg DT { float : left; width : 6em; font-weight : bold; }
#msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt;  }
h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; }
#msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; }
#msg UL, PRE, .diff { overflow : auto; }
#patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; }
#patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; }
#patch .propset h4, #patch .binary h4 {margin: 0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {background:#eeeeee;padding: 0 0 10px 0;}
#patch .propset .diff, #patch .binary .diff  {padding: 10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch .add {background:#ddffdd;}
#patch .rem {background:#ffdddd;}
#patch .lines, .info {color:#888888;background:#ffffff;}
.diff { width : 100%; }
--&gt;&lt;/style&gt;
&lt;title&gt;[jruby] [7501] trunk/jruby/spec/ffi: Add some Buffer specs&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id="msg"&gt;
&lt;dl&gt;
&lt;dt&gt;Revision&lt;/dt&gt; &lt;dd&gt;&lt;a href="http://fisheye.codehaus.org/changelog/jruby/?cs=7501"&gt;7501&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Author&lt;/dt&gt; &lt;dd&gt;wmeissner&lt;/dd&gt;
&lt;dt&gt;Date&lt;/dt&gt; &lt;dd&gt;2008-08-20 09:50:15 -0500 (Wed, 20 Aug 2008)&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;Log Message&lt;/h3&gt;
&lt;pre&gt;Add some Buffer specs&lt;/pre&gt;

&lt;h3&gt;Modified Paths&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#trunkjrubysrcorgjrubyextffiAbstractMemoryjava"&gt;trunk/jruby/src/org/jruby/ext/ffi/AbstractMemory.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunkjrubysrcorgjrubyextffiPlatformjava"&gt;trunk/jruby/src/org/jruby/ext/ffi/Platform.java&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Added Paths&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#trunkjrubyspecffibuffer_specrb"&gt;trunk/jruby/spec/ffi/buffer_spec.rb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;div id="patch"&gt;
&lt;h3&gt;Diff&lt;/h3&gt;
&lt;a id="trunkjrubyspecffibuffer_specrb"&gt;&lt;/a&gt;
&lt;div class="addfile"&gt;&lt;h4&gt;Added: trunk/jruby/spec/ffi/buffer_spec.rb (0 =&gt; 7501)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/jruby/spec/ffi/buffer_spec.rb	                        (rev 0)
+++ trunk/jruby/spec/ffi/buffer_spec.rb	2008-08-20 14:50:15 UTC (rev 7501)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -0,0 +1,124 @@
&lt;/span&gt;&lt;span class="add"&gt;+require &amp;#39;ffi&amp;#39;
+Buffer = JRuby::FFI::Buffer
+Platform = JRuby::FFI::Platform
+LongSize = JRuby::FFI::Platform::LONG_SIZE / 8
+
+describe &amp;quot;Buffer#total&amp;quot; do
+  [1,2,3].each do |i|
+    { :char =&amp;gt; 1, :uchar =&amp;gt; 1, :short =&amp;gt; 2, :ushort =&amp;gt; 2, :int =&amp;gt; 4, :uint =&amp;gt; 4, \
+        :long =&amp;gt; LongSize, :ulong =&amp;gt; LongSize, :long_long =&amp;gt; 8, :ulong_long =&amp;gt; 8, \
+        :float =&amp;gt; 4, :double =&amp;gt; 8
+    }.each_pair do |t, s|
+      it &amp;quot;Buffer.alloc_in(#{t}, #{i}).total == #{i * s}&amp;quot; do
+        Buffer.alloc_in(t, i).total.should == i * s
+      end
+      it &amp;quot;Buffer.alloc_out(#{t}, #{i}).total == #{i * s}&amp;quot; do
+        Buffer.alloc_out(t, i).total.should == i * s
+      end
+      it &amp;quot;Buffer.alloc_inout(#{t}, #{i}).total == #{i * s}&amp;quot; do
+        Buffer.alloc_inout(t, i).total.should == i * s
+      end
+    end
+  end
+end
+
+describe &amp;quot;Buffer#put_char&amp;quot; do
+  bufsize = 4
+  (0..127).each do |i|
+    (0..bufsize-1).each do |offset|
+      it &amp;quot;put_char(#{offset}, #{i}).get_char(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_char(offset, i).get_char(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_uchar&amp;quot; do
+  bufsize = 4
+  (0..255).each do |i|
+    (0..bufsize-1).each do |offset|
+      it &amp;quot;Buffer.put_uchar(#{offset}, #{i}).get_uchar(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_uchar(offset, i).get_uchar(offset).should == i
+      end
+    end
+  end 
+end
+describe &amp;quot;Buffer#put_short&amp;quot; do
+  bufsize = 4
+  [0, 1, 128, 32767].each do |i|
+    (0..bufsize-2).each do |offset|
+      it &amp;quot;put_short(#{offset}, #{i}).get_short(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_short(offset, i).get_short(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_ushort&amp;quot; do
+  bufsize = 4
+  [ 0, 1, 128, 32767, 65535, 0xfee1, 0xdead, 0xbeef, 0xcafe ].each do |i|
+    (0..bufsize-2).each do |offset|
+      it &amp;quot;put_ushort(#{offset}, #{i}).get_ushort(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_ushort(offset, i).get_ushort(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_int&amp;quot; do
+  bufsize = 8
+  [0, 1, 128, 32767, 0x7ffffff ].each do |i|
+    (0..bufsize-4).each do |offset|
+      it &amp;quot;put_int(#{offset}, #{i}).get_int(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_int(offset, i).get_int(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_uint&amp;quot; do
+  bufsize = 8
+  [ 0, 1, 128, 32767, 65535, 0xfee1dead, 0xcafebabe, 0xffffffff ].each do |i|
+    (0..bufsize-4).each do |offset|
+      it &amp;quot;put_uint(#{offset}, #{i}).get_uint(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_uint(offset, i).get_uint(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_long&amp;quot; do
+  bufsize = 16
+  [0, 1, 128, 32767, 0x7ffffff ].each do |i|
+    (0..bufsize-LongSize).each do |offset|
+      it &amp;quot;put_long(#{offset}, #{i}).get_long(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_long(offset, i).get_long(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_ulong&amp;quot; do
+  bufsize = 16
+  [ 0, 1, 128, 32767, 65535, 0xfee1dead, 0xcafebabe, 0xffffffff ].each do |i|
+    (0..bufsize-LongSize).each do |offset|
+      it &amp;quot;put_ulong(#{offset}, #{i}).get_ulong(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_ulong(offset, i).get_ulong(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_long_long&amp;quot; do
+  bufsize = 16
+  [0, 1, 128, 32767, 0x7ffffffffffffff ].each do |i|
+    (0..bufsize-8).each do |offset|
+      it &amp;quot;put_long_long(#{offset}, #{i}).get_long_long(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_long_long(offset, i).get_long_long(offset).should == i
+      end
+    end
+  end
+end
+describe &amp;quot;Buffer#put_ulong_long&amp;quot; do
+  bufsize = 16
+  [ 0, 1, 128, 32767, 65535, 0xdeadcafebabe, 0x7fffffffffffffff ].each do |i|
+    (0..bufsize-8).each do |offset|
+      it &amp;quot;put_ulong_long(#{offset}, #{i}).get_ulong_long(#{offset}) == #{i}&amp;quot; do
+        Buffer.alloc_in(bufsize).put_ulong_long(offset, i).get_ulong_long(offset).should == i
+      end
+    end
+  end
+end
&lt;/span&gt;&lt;span class="cx"&gt;\ No newline at end of file
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkjrubysrcorgjrubyextffiAbstractMemoryjava"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/jruby/src/org/jruby/ext/ffi/AbstractMemory.java (7500 =&gt; 7501)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/jruby/src/org/jruby/ext/ffi/AbstractMemory.java	2008-08-20 09:59:58 UTC (rev 7500)
+++ trunk/jruby/src/org/jruby/ext/ffi/AbstractMemory.java	2008-08-20 14:50:15 UTC (rev 7501)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -315,7 +315,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;      * @param value The value to write.
      * @return The value written.
      */
&lt;/span&gt;&lt;span class="rem"&gt;-    @JRubyMethod(name = { &amp;quot;put_uint32&amp;quot;, &amp;quot;get_uint&amp;quot; }, required = 2)
&lt;/span&gt;&lt;span class="add"&gt;+    @JRubyMethod(name = { &amp;quot;put_uint32&amp;quot;, &amp;quot;put_uint&amp;quot; }, required = 2)
&lt;/span&gt;&lt;span class="cx"&gt;     public IRubyObject put_uint32(ThreadContext context, IRubyObject offset, IRubyObject value) {
         checkBounds(context, offset, 4);
         getMemoryIO().putInt(getOffset(offset), (int) Util.uint32Value(value));
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkjrubysrcorgjrubyextffiPlatformjava"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/jruby/src/org/jruby/ext/ffi/Platform.java (7500 =&gt; 7501)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/jruby/src/org/jruby/ext/ffi/Platform.java	2008-08-20 09:59:58 UTC (rev 7500)
+++ trunk/jruby/src/org/jruby/ext/ffi/Platform.java	2008-08-20 14:50:15 UTC (rev 7501)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -27,6 +27,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;  ***** END LICENSE BLOCK *****/
 package org.jruby.ext.ffi;
 
&lt;/span&gt;&lt;span class="add"&gt;+import java.nio.ByteOrder;
&lt;/span&gt;&lt;span class="cx"&gt; import java.util.HashMap;
 import java.util.Map;
 import org.jruby.Ruby;
&lt;/span&gt;&lt;span class="lines"&gt;@@ -88,6 +89,9 @@
&lt;/span&gt;&lt;span class="cx"&gt;     public static final boolean IS_BSD = IS_MAC || IS_FREEBSD || IS_OPENBSD;
     public static final String LIBC = IS_WINDOWS ? &amp;quot;msvcrt&amp;quot; : &amp;quot;c&amp;quot;;
     public static final String NAME = String.format(&amp;quot;%s-%s&amp;quot;, ARCH, OS);
&lt;/span&gt;&lt;span class="add"&gt;+    public static final int BIG_ENDIAN = 4321;
+    public static final int LITTLE_ENDIAN = 1234;
+    public static final int BYTE_ORDER = ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN) ? BIG_ENDIAN : LITTLE_ENDIAN;
&lt;/span&gt;&lt;span class="cx"&gt;     protected Platform() {
     }
 
&lt;/span&gt;&lt;span class="lines"&gt;@@ -106,6 +110,9 @@
&lt;/span&gt;&lt;span class="cx"&gt;         platform.defineConstant(&amp;quot;IS_LINUX&amp;quot;, runtime.newBoolean(IS_LINUX));
         platform.defineConstant(&amp;quot;IS_MAC&amp;quot;, runtime.newBoolean(IS_MAC));
         platform.defineConstant(&amp;quot;LIBC&amp;quot;, runtime.newString(LIBC));
&lt;/span&gt;&lt;span class="add"&gt;+        platform.defineConstant(&amp;quot;BYTE_ORDER&amp;quot;, runtime.newFixnum(BYTE_ORDER));
+        platform.defineConstant(&amp;quot;BIG_ENDIAN&amp;quot;, runtime.newFixnum(BIG_ENDIAN));
+        platform.defineConstant(&amp;quot;LITTLE_ENDIAN&amp;quot;, runtime.newFixnum(LITTLE_ENDIAN));
&lt;/span&gt;&lt;span class="cx"&gt;     }
     
     /**
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;

&lt;hr/&gt;
&lt;p&gt;
To unsubscribe from this list please visit:
&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://xircles.codehaus.org/manage_email"&gt;http://xircles.codehaus.org/manage_email&lt;/a&gt;


</div>
      </description>
    </item>
    <item>
      <title>[sonar-scm]  [1342] trunk/sonar-plugin-api: new GWT sonar library to help developing web extensions</title>
      <creator>&lt;span class='address address-only'&gt;simon.brandhof@codehaus...&lt;/span&gt;</creator>
      <author>&lt;span class='address address-only'&gt;simon.brandhof@codehaus...&lt;/span&gt;</author>
      <pubDate>Wed, 20 Aug 2008 09:49:11 -0500</pubDate>
      <link>/lists/org.codehaus.sonar.scm/msg/20080820144911.A51FE14A8045@codehaus01.managed.contegix.com?group=haus.codehaus.sonar</link>
      <guid isPermaLink="true">/lists/org.codehaus.sonar.scm/msg/20080820144911.A51FE14A8045@codehaus01.managed.contegix.com?group=haus.codehaus.sonar</guid>
      <description>
        <table style="border: 1px solid #aaa">
          <tr>
            <td style="border-right: 1px solid #ccc">List</td>
            <td>scm@sonar.codehaus.org</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Author</td>
            <td>&lt;span class='address address-only'&gt;simon.brandhof@codehaus...&lt;/span&gt;</td>
          </tr>
          <tr>
            <td style="border-right: 1px solid #ccc">Sent</td>
            <td>Wed Aug 20 09:49:11 -0500 2008</td>
          </tr>
        </table>
        <hr/>
        <div>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;&lt;style type="text/css"&gt;&lt;!--
#msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; }
#msg DT { float : left; width : 6em; font-weight : bold; }
#msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt;  }
h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; }
#msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; }
#msg UL, PRE, .diff { overflow : auto; }
#patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; }
#patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; }
#patch .propset h4, #patch .binary h4 {margin: 0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {background:#eeeeee;padding: 0 0 10px 0;}
#patch .propset .diff, #patch .binary .diff  {padding: 10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch .add {background:#ddffdd;}
#patch .rem {background:#ffdddd;}
#patch .lines, .info {color:#888888;background:#ffffff;}
.diff { width : 100%; }
#msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; }
#msg DT { float : left; width : 6em; font-weight : bold; }
#msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt;  }
h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; }
#msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; }
#msg UL, PRE, .diff { overflow : auto; }
#patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; }
#patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; }
#patch .propset h4, #patch .binary h4 {margin: 0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {background:#eeeeee;padding: 0 0 10px 0;}
#patch .propset .diff, #patch .binary .diff  {padding: 10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch .add {background:#ddffdd;}
#patch .rem {background:#ffdddd;}
#patch .lines, .info {color:#888888;background:#ffffff;}
.diff { width : 100%; }
--&gt;&lt;/style&gt;
&lt;title&gt; [1342] trunk/sonar-plugin-api: new GWT sonar library to help developing web extensions&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id="msg"&gt;
&lt;dl&gt;
&lt;dt&gt;Revision&lt;/dt&gt; &lt;dd&gt;&lt;a href="http://fisheye.codehaus.org/changelog/sonar/?cs=1342"&gt;1342&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Author&lt;/dt&gt; &lt;dd&gt;simon.brandhof&lt;/dd&gt;
&lt;dt&gt;Date&lt;/dt&gt; &lt;dd&gt;2008-08-20 09:49:10 -0500 (Wed, 20 Aug 2008)&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;Log Message&lt;/h3&gt;
&lt;pre&gt;new GWT sonar library to help developing web extensions&lt;/pre&gt;

&lt;h3&gt;Modified Paths&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarplugincodecoveragesrcmainjavaorgsonarpluginscodecoverageGwtTestsPageViewjava"&gt;trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/GwtTestsPageView.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarplugincodecoveragesrcmainjavaorgsonarpluginscodecoveragetestsviewclientTestsViewjava"&gt;trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/testsview/client/TestsView.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarplugincodecoveragesrcmainresourcesorgsonarpluginscodecoveragetestsviewTestsViewgwtxml"&gt;trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/TestsView.gwt.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarplugincodecoveragesrcmainresourcesorgsonarpluginscodecoveragetestsviewpublicTestsViewhtml"&gt;trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/public/TestsView.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarpluginsourcessrcmainjavaorgsonarpluginssourcesgwtclientSourceHighlighterjava"&gt;trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/SourceHighlighter.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarpluginsourcessrcmainresourcesorgsonarpluginssourcesgwtSourceHighlightergwtxml"&gt;trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/SourceHighlighter.gwt.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarpluginsourcessrcmainresourcesorgsonarpluginssourcesgwtpublicSourceHighlighterhtml"&gt;trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/public/SourceHighlighter.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarcoresrcmainjavaorgsonarcoreJRubyFacadejava"&gt;trunk/sonar-core/src/main/java/org/sonar/core/JRubyFacade.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarpluginapipomxml"&gt;trunk/sonar-plugin-api/pom.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebSectionjava"&gt;trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/Section.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersapplicationrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/application.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersbreakdown_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/breakdown_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollerscolumns_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/columns_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersmetrics_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/metrics_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersmonitor_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/monitor_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollerspreferences_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/preferences_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersproject_compare_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/project_compare_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersproject_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/project_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersprojects_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/projects_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersrules_configuration_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/rules_configuration_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersrules_profile_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/rules_profile_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollerssessions_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/sessions_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollerssources_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/sources_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersstyles_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/styles_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollerstime_machine_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/time_machine_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappapphelpersapplication_helperrb"&gt;trunk/sonar-web/src/main/webapp/app/helpers/application_helper.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappmodelsbreadcrumbrb"&gt;trunk/sonar-web/src/main/webapp/app/models/breadcrumb.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewslayoutsapplicationrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/layouts/application.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsproject_snapshot_titlerhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/project/_snapshot_title.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojectindexrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/project/index.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappconfigroutesrb"&gt;trunk/sonar-web/src/main/webapp/config/routes.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebapppublicstylesheetsstylecss"&gt;trunk/sonar-web/src/main/webapp/public/stylesheets/style.css&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Added Paths&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/&lt;/li&gt;
&lt;li&gt;trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientAbstractSourceTabjava"&gt;trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractSourceTab.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientAbstractViewjava"&gt;trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractView.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientJsonUtilsjava"&gt;trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/JsonUtils.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientUtilsjava"&gt;trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/Utils.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/&lt;/li&gt;
&lt;li&gt;trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/web/&lt;/li&gt;
&lt;li&gt;trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/web/gwt/&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarpluginapisrcmainresourcesorgsonarpluginsapiwebgwtUtilsgwtxml"&gt;trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/web/gwt/Utils.gwt.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/web/gwt/public/&lt;/li&gt;
&lt;li&gt;trunk/sonar-web/src/main/webapp/app/controllers/views/&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersviewsproject_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/views/project_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersviewsprojects_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/views/projects_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappapphelpersprojects_helperrb"&gt;trunk/sonar-web/src/main/webapp/app/helpers/projects_helper.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojects_list_edit_mode_controlsrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/projects/_list_edit_mode_controls.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojects_list_table_headerrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/projects/_list_table_header.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojects_list_table_header_edit_moderhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/projects/_list_table_header_edit_mode.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojects_processing_snapshotsrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/projects/_processing_snapshots.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojects_treemaprhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/projects/_treemap.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojectsindexrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/projects/index.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;trunk/sonar-web/src/main/webapp/app/views/views/&lt;/li&gt;
&lt;li&gt;trunk/sonar-web/src/main/webapp/app/views/views/project/&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsviewsprojectindexrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/views/project/index.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;trunk/sonar-web/src/main/webapp/app/views/views/projects/&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsviewsprojectsindexrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/views/projects/index.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Removed Paths&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#trunkpluginssonarpluginsourcessrcmainjavaorgsonarpluginssourcesgwtclientLineDecoratorjava"&gt;trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/LineDecorator.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersconfiguration_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/configuration_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappcontrollersreports_controllerrb"&gt;trunk/sonar-web/src/main/webapp/app/controllers/reports_controller.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappapphelpersreports_helperrb"&gt;trunk/sonar-web/src/main/webapp/app/helpers/reports_helper.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojectdashboardrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/project/dashboard.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsprojectsdashboardrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/projects/dashboard.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsreports_list_edit_mode_controlsrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/reports/_list_edit_mode_controls.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsreports_list_table_headerrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/reports/_list_table_header.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsreports_list_table_header_edit_moderhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/reports/_list_table_header_edit_mode.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsreports_processing_snapshotsrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/reports/_processing_snapshots.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsreports_treemaprhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/reports/_treemap.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#trunksonarwebsrcmainwebappappviewsreportsindexrhtml"&gt;trunk/sonar-web/src/main/webapp/app/views/reports/index.rhtml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;div id="patch"&gt;
&lt;h3&gt;Diff&lt;/h3&gt;
&lt;a id="trunkpluginssonarplugincodecoveragesrcmainjavaorgsonarpluginscodecoverageGwtTestsPageViewjava"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/GwtTestsPageView.java (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/GwtTestsPageView.java	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/GwtTestsPageView.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -30,7 +30,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;   }
 
   public Section getSection() {
&lt;/span&gt;&lt;span class="rem"&gt;-    return Section.PROJECTS;
&lt;/span&gt;&lt;span class="add"&gt;+    return Section.PROJECT;
&lt;/span&gt;&lt;span class="cx"&gt;   }
 
   public String getTitle() {
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkpluginssonarplugincodecoveragesrcmainjavaorgsonarpluginscodecoveragetestsviewclientTestsViewjava"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/testsview/client/TestsView.java (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/testsview/client/TestsView.java	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-codecoverage/src/main/java/org/sonar/plugins/codecoverage/testsview/client/TestsView.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -19,12 +19,11 @@
&lt;/span&gt;&lt;span class="cx"&gt;  */
 package org.sonar.plugins.codecoverage.testsview.client;
 
&lt;/span&gt;&lt;span class="rem"&gt;-import com.google.gwt.core.client.EntryPoint;
&lt;/span&gt;&lt;span class="cx"&gt; import com.google.gwt.user.client.ui.Label;
&lt;/span&gt;&lt;span class="rem"&gt;-import com.google.gwt.user.client.ui.RootPanel;
&lt;/span&gt;&lt;span class="add"&gt;+import org.sonar.plugins.api.web.gwt.client.AbstractView;
&lt;/span&gt;&lt;span class="cx"&gt; 
&lt;/span&gt;&lt;span class="rem"&gt;-public class TestsView implements EntryPoint {
&lt;/span&gt;&lt;span class="add"&gt;+public class TestsView extends AbstractView {
&lt;/span&gt;&lt;span class="cx"&gt;   public void onModuleLoad() {
&lt;/span&gt;&lt;span class="rem"&gt;-    RootPanel.get(&amp;quot;main&amp;quot;).add(new Label(&amp;quot;Tests&amp;quot;));
&lt;/span&gt;&lt;span class="add"&gt;+    displayView(new Label(&amp;quot;Tests&amp;quot;));
&lt;/span&gt;&lt;span class="cx"&gt;   }
 }
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkpluginssonarplugincodecoveragesrcmainresourcesorgsonarpluginscodecoveragetestsviewTestsViewgwtxml"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/TestsView.gwt.xml (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/TestsView.gwt.xml	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/TestsView.gwt.xml	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -3,6 +3,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;   &amp;lt;inherits name=&amp;#39;com.google.gwt.user.User&amp;#39;/&amp;gt;
   &amp;lt;inherits name=&amp;quot;com.google.gwt.json.JSON&amp;quot;/&amp;gt;
   &amp;lt;inherits name=&amp;quot;com.google.gwt.http.HTTP&amp;quot;/&amp;gt;
&lt;/span&gt;&lt;span class="add"&gt;+  &amp;lt;inherits name=&amp;quot;org.sonar.plugins.api.web.gwt.Utils&amp;quot;/&amp;gt;
&lt;/span&gt;&lt;span class="cx"&gt; 
   &amp;lt;entry-point class=&amp;#39;org.sonar.plugins.codecoverage.testsview.client.TestsView&amp;#39;/&amp;gt;
 
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkpluginssonarplugincodecoveragesrcmainresourcesorgsonarpluginscodecoveragetestsviewpublicTestsViewhtml"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/public/TestsView.html (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/public/TestsView.html	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-codecoverage/src/main/resources/org/sonar/plugins/codecoverage/testsview/public/TestsView.html	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -0,0 +1,53 @@
&lt;/span&gt;&lt;span class="add"&gt;+&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;
+    &amp;quot;http://www.w3.org/TR/html4/loose.dtd&amp;quot;&amp;gt;
+
+&amp;lt;html&amp;gt;
+&amp;lt;head&amp;gt;
+  &amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;
+  &amp;lt;title&amp;gt;Tests&amp;lt;/title&amp;gt;
+  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;
+    body {
+      color: black;
+      font-family: Helvetica, Arial, sans-serif;
+      font-size: 10pt;
+    }
+
+    h2 {
+      font-size: 116%;
+    }
+    .error, #error {
+      padding: 4px;
+      border: 1px solid #FF0000;
+      background-color: #FF5252;
+      color: #eee;
+    }
+    .hidden {
+      display:none;
+      visibility: hidden;
+    }
+    
+  &amp;lt;/style&amp;gt;
+
+&amp;lt;/head&amp;gt;
+
+&amp;lt;body&amp;gt;
+&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;
+  &amp;lt;tr&amp;gt;
+    &amp;lt;td width=&amp;quot;200px&amp;quot;&amp;gt;
+      &amp;lt;div id=&amp;quot;context&amp;quot;/&amp;gt;
+    &amp;lt;/td&amp;gt;
+    &amp;lt;td&amp;gt;
+      &amp;lt;div id=&amp;quot;sonarUrl&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;http://localhost:9000/dev&amp;lt;/div&amp;gt;
+      &amp;lt;div id=&amp;quot;view&amp;quot;&amp;gt;
+        &amp;lt;div id=&amp;quot;error&amp;quot; class=&amp;quot;hidden&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
+        &amp;lt;div id=&amp;#39;loading&amp;#39;&amp;gt;loading&amp;lt;/div&amp;gt;
+      &amp;lt;/div&amp;gt;
+      &amp;lt;iframe id=&amp;quot;__gwt_historyFrame&amp;quot; style=&amp;quot;width:0;height:0;border:0&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;
+
+      &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot; src=&amp;quot;org.sonar.plugins.codecoverage.testsview.TestsView.nocache.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
+    &amp;lt;/td&amp;gt;
+  &amp;lt;/tr&amp;gt;
+&amp;lt;/table&amp;gt;
+
+&amp;lt;/body&amp;gt;
+&amp;lt;/html&amp;gt;
&lt;/span&gt;&lt;span class="cx"&gt;\ No newline at end of file
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkpluginssonarpluginsourcessrcmainjavaorgsonarpluginssourcesgwtclientLineDecoratorjava"&gt;&lt;/a&gt;
&lt;div class="delfile"&gt;&lt;h4&gt;Deleted: trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/LineDecorator.java (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/LineDecorator.java	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/LineDecorator.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -1,71 +0,0 @@
&lt;/span&gt;&lt;span class="rem"&gt;-/*
- * Sonar, entreprise quality control tool.
- * Copyright (C) 2007-2008 Hortis-GRC SA
- * mailto:be_agile HAT hortis DOT ch
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.sources.gwt.client;
-
-import com.google.gwt.user.client.ui.Widget;
-
-public class LineDecorator {
-  private String sourceStyle = null;
-  private String value = null;
-  private String valueStyle = null;
-  private Widget details = null;
-
-  public LineDecorator() {
-  }
-
-  public LineDecorator(String sourceStyle, String value, String valueStyle, Widget details) {
-    this.sourceStyle = sourceStyle;
-    this.value = value;
-    this.details = details;
-    this.valueStyle = valueStyle;
-  }
-
-  public String getValueStyle() {
-    return valueStyle;
-  }
-
-  public void setValueStyle(String valueStyle) {
-    this.valueStyle = valueStyle;
-  }
-
-  public String getSourceStyle() {
-    return sourceStyle;
-  }
-
-  public void setSourceStyle(String sourceStyle) {
-    this.sourceStyle = sourceStyle;
-  }
-
-  public String getValue() {
-    return value;
-  }
-
-  public void setValue(String value) {
-    this.value = value;
-  }
-
-  public Widget getDetails() {
-    return details;
-  }
-
-  public void setDetails(Widget details) {
-    this.details = details;
-  }
-}
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkpluginssonarpluginsourcessrcmainjavaorgsonarpluginssourcesgwtclientSourceHighlighterjava"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/SourceHighlighter.java (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/SourceHighlighter.java	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-sources/src/main/java/org/sonar/plugins/sources/gwt/client/SourceHighlighter.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -19,86 +19,16 @@
&lt;/span&gt;&lt;span class="cx"&gt;  */
 package org.sonar.plugins.sources.gwt.client;
 
&lt;/span&gt;&lt;span class="rem"&gt;-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.Hyperlink;
&lt;/span&gt;&lt;span class="cx"&gt; import com.google.gwt.user.client.ui.Label;
&lt;/span&gt;&lt;span class="rem"&gt;-import com.google.gwt.user.client.ui.RootPanel;
-import com.google.gwt.user.client.ui.Widget;
&lt;/span&gt;&lt;span class="add"&gt;+import org.sonar.plugins.api.web.gwt.client.AbstractSourceTab;
&lt;/span&gt;&lt;span class="cx"&gt; 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
&lt;/span&gt;&lt;span class="rem"&gt;-public class SourceHighlighter implements EntryPoint {
-  private List&amp;lt;String&amp;gt; lines = null;
-  private Grid grid = null;
-
-  public void onModuleLoad() {
-
-    lines = getLines();
-    final Map&amp;lt;Integer, LineDecorator&amp;gt; decorators = getLineDecorators();
-    grid = new Grid(lines.size() + decorators.size(), 3);
-    int row=0;
-    int lineId=0;
-    for (String line : lines) {
-      grid.getCellFormatter().setStyleName(row, 0, &amp;quot;ln&amp;quot;);
-      grid.getCellFormatter().setStyleName(row, 1, &amp;quot;val&amp;quot;);
-      grid.getCellFormatter().setStyleName(row, 2, &amp;quot;src&amp;quot;);
-
-      final LineDecorator decorator = decorators.get(lineId);
-      grid.setText(row, 0, String.valueOf(lineId));
-      grid.setText(row, 2, line);
-      if (decorator==null) {
-        grid.setText(row, 1, &amp;quot;&amp;quot;);
-
-      } else {
-        grid.setText(row, 1, decorator.getValue());
-        if (decorator.getValueStyle()!=null) {
-          grid.getCellFormatter().addStyleName(row, 1, decorator.getValueStyle());
-        }
-        if (decorator.getSourceStyle()!=null) {
-          grid.getCellFormatter().addStyleName(row, 2, decorator.getSourceStyle());
-        }
-
-        Widget details = decorator.getDetails();
-        if (details !=null) {
-          row++;
-          grid.setText(row, 0,&amp;quot;&amp;quot;);
-          grid.setText(row, 1, &amp;quot;&amp;quot;);
-          details.addStyleName(&amp;quot;det&amp;quot;);
-          grid.setWidget(row, 2, details);
-          grid.getRowFormatter().setStyleName(row, &amp;quot;hidden&amp;quot;);
-        }
-      }
-
-      row++;
-      lineId++;
-    }
-    grid.setStyleName(&amp;quot;sources&amp;quot;);
-
-    Hyperlink toggleLink = new Hyperlink(&amp;quot;expande/collapse&amp;quot;, &amp;quot;toggle&amp;quot;);
-    toggleLink.addClickListener(new ClickListener() {
-      public void onClick(Widget widget) {
-        if (grid!=null) {
-          for (int i=0 ; i&amp;lt;grid.getRowCount() ; i++) {
-            grid.getRowFormatter().removeStyleName(i, &amp;quot;hidden&amp;quot;);
-          }
-        }
-      }
-    });
-
-
-    RootPanel.get(&amp;quot;main&amp;quot;).add(toggleLink);
-    RootPanel.get(&amp;quot;main&amp;quot;).add(grid);
-
-  }
-
-
-
-  private List&amp;lt;String&amp;gt; getLines() {
&lt;/span&gt;&lt;span class="add"&gt;+public class SourceHighlighter extends AbstractSourceTab {
+  protected List&amp;lt;String&amp;gt; getLines() {
&lt;/span&gt;&lt;span class="cx"&gt;     ArrayList&amp;lt;String&amp;gt; lines = new ArrayList&amp;lt;String&amp;gt;();
     lines.add(&amp;quot;public class Helloworld {&amp;quot;);
     lines.add(&amp;quot;  int i=0;&amp;quot;);
&lt;/span&gt;&lt;span class="lines"&gt;@@ -110,13 +40,13 @@
&lt;/span&gt;&lt;span class="cx"&gt;     return lines;
   }
 
&lt;/span&gt;&lt;span class="rem"&gt;-  private Map&amp;lt;Integer, LineDecorator&amp;gt; getLineDecorators() {
-    Map&amp;lt;Integer, LineDecorator&amp;gt; result = new HashMap&amp;lt;Integer, LineDecorator&amp;gt;();
-    result.put(1, new LineDecorator(null, &amp;quot;12&amp;quot;, &amp;quot;good&amp;quot;, null));
-    result.put(2, new LineDecorator(&amp;quot;good&amp;quot;, &amp;quot;24&amp;quot;, &amp;quot;good&amp;quot;, new Label(&amp;quot;this is the message this is the message this is the message this is the message&amp;quot;)));
-    result.put(3, new LineDecorator(&amp;quot;bad&amp;quot;, &amp;quot;35&amp;quot;, null, null));
&lt;/span&gt;&lt;span class="add"&gt;+  protected Map&amp;lt;Integer, AbstractSourceTab.LineDecorator&amp;gt; getLineDecorators() {
+    Map&amp;lt;Integer, AbstractSourceTab.LineDecorator&amp;gt; result = new HashMap&amp;lt;Integer, AbstractSourceTab.LineDecorator&amp;gt;();
+    result.put(1, new AbstractSourceTab.LineDecorator(null, &amp;quot;12&amp;quot;, &amp;quot;good&amp;quot;, null));
+    result.put(2, new AbstractSourceTab.LineDecorator(&amp;quot;good&amp;quot;, &amp;quot;24&amp;quot;, &amp;quot;good&amp;quot;, new Label(&amp;quot;this is the message this is the message this is the message this is the message&amp;quot;)));
+    result.put(3, new AbstractSourceTab.LineDecorator(&amp;quot;bad&amp;quot;, &amp;quot;35&amp;quot;, null, null));
&lt;/span&gt;&lt;span class="cx"&gt;     for (int i=4 ; i&amp;lt;150 ; i++) {
&lt;/span&gt;&lt;span class="rem"&gt;-      result.put(i, new LineDecorator(null, &amp;quot;12&amp;quot;, &amp;quot;good&amp;quot;, null));
&lt;/span&gt;&lt;span class="add"&gt;+      result.put(i, new AbstractSourceTab.LineDecorator(null, &amp;quot;12&amp;quot;, &amp;quot;good&amp;quot;, null));
&lt;/span&gt;&lt;span class="cx"&gt;     }
     return result;
   }
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkpluginssonarpluginsourcessrcmainresourcesorgsonarpluginssourcesgwtSourceHighlightergwtxml"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/SourceHighlighter.gwt.xml (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/SourceHighlighter.gwt.xml	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/SourceHighlighter.gwt.xml	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -3,6 +3,8 @@
&lt;/span&gt;&lt;span class="cx"&gt;   &amp;lt;inherits name=&amp;#39;com.google.gwt.user.User&amp;#39;/&amp;gt;
   &amp;lt;inherits name=&amp;quot;com.google.gwt.json.JSON&amp;quot;/&amp;gt;
   &amp;lt;inherits name=&amp;quot;com.google.gwt.http.HTTP&amp;quot;/&amp;gt;
&lt;/span&gt;&lt;span class="add"&gt;+  &amp;lt;inherits name=&amp;quot;com.google.gwt.i18n.I18N&amp;quot;/&amp;gt;
+  &amp;lt;inherits name=&amp;quot;org.sonar.plugins.api.web.gwt.Utils&amp;quot;/&amp;gt;
&lt;/span&gt;&lt;span class="cx"&gt; 
   &amp;lt;entry-point class=&amp;#39;org.sonar.plugins.sources.gwt.client.SourceHighlighter&amp;#39;/&amp;gt;
 
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunkpluginssonarpluginsourcessrcmainresourcesorgsonarpluginssourcesgwtpublicSourceHighlighterhtml"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/public/SourceHighlighter.html (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/public/SourceHighlighter.html	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/plugins/sonar-plugin-sources/src/main/resources/org/sonar/plugins/sources/gwt/public/SourceHighlighter.html	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -62,22 +62,20 @@
&lt;/span&gt;&lt;span class="cx"&gt; &amp;lt;/head&amp;gt;
 
 &amp;lt;body&amp;gt;
&lt;/span&gt;&lt;span class="rem"&gt;-&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;
-  &amp;lt;tr&amp;gt;
-    &amp;lt;td width=&amp;quot;200px&amp;quot;&amp;gt;
-      &amp;lt;div id=&amp;quot;context&amp;quot;/&amp;gt;
-    &amp;lt;/td&amp;gt;
-    &amp;lt;td&amp;gt;
-      &amp;lt;div id=&amp;#39;error&amp;#39;&amp;gt;&amp;lt;/div&amp;gt;
-      &amp;lt;div id=&amp;#39;loading&amp;#39;&amp;gt;loading&amp;lt;/div&amp;gt;
-      &amp;lt;div id=&amp;quot;sonarUrl&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;http://localhost:9000/dev&amp;lt;/div&amp;gt;
-      &amp;lt;div id=&amp;quot;main&amp;quot;/&amp;gt;
-      &amp;lt;iframe id=&amp;quot;__gwt_historyFrame&amp;quot; style=&amp;quot;width:0;height:0;border:0&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;
-
-      &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot; src=&amp;quot;org.sonar.plugins.sources.gwt.SourceHighlighter.nocache.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
-    &amp;lt;/td&amp;gt;
-  &amp;lt;/tr&amp;gt;
-&amp;lt;/table&amp;gt;
-
&lt;/span&gt;&lt;span class="add"&gt;+&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
+var config = {
+sonar_url: &amp;quot;http://localhost:9000/dev&amp;quot;
+};
+var source_tabs = {
+&amp;quot;Code coverage&amp;quot;: &amp;quot;org.sonar.toto&amp;quot;,
+&amp;quot;Source&amp;quot;: &amp;quot;org.sonar.source&amp;quot;,
+&amp;quot;Unit tests&amp;quot;: &amp;quot;org.sonar.tests&amp;quot;
+};
+&amp;lt;/script&amp;gt;
+&amp;lt;div id=&amp;quot;viewbottom&amp;quot;&amp;gt;
+   &amp;lt;div id=&amp;#39;error&amp;#39;&amp;gt;&amp;lt;/div&amp;gt;
+   &amp;lt;div id=&amp;#39;loading&amp;#39;&amp;gt;loading&amp;lt;/div&amp;gt;
+&amp;lt;/div&amp;gt;
+&amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot; src=&amp;quot;org.sonar.plugins.sources.gwt.SourceHighlighter.nocache.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;span class="cx"&gt; &amp;lt;/body&amp;gt;
 &amp;lt;/html&amp;gt;
\ No newline at end of file
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarcoresrcmainjavaorgsonarcoreJRubyFacadejava"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-core/src/main/java/org/sonar/core/JRubyFacade.java (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-core/src/main/java/org/sonar/core/JRubyFacade.java	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-core/src/main/java/org/sonar/core/JRubyFacade.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -19,6 +19,8 @@
&lt;/span&gt;&lt;span class="cx"&gt;  */
 package org.sonar.core;
 
&lt;/span&gt;&lt;span class="add"&gt;+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
&lt;/span&gt;&lt;span class="cx"&gt; import org.sonar.commons.DaoFacade;
 import org.sonar.commons.database.DatabaseConnector;
 import org.sonar.core.properties.PropertiesSynchronizer;
&lt;/span&gt;&lt;span class="lines"&gt;@@ -28,6 +30,10 @@
&lt;/span&gt;&lt;span class="cx"&gt; import org.sonar.plugins.api.Plugins;
 import org.sonar.plugins.api.rules.RulesManager;
 import org.sonar.plugins.api.rules.RulesManagerImpl;
&lt;/span&gt;&lt;span class="add"&gt;+import org.sonar.plugins.api.web.GwtPageView;
+import org.sonar.plugins.api.web.GwtSourceTab;
+import org.sonar.plugins.api.web.PageView;
+import org.sonar.plugins.api.web.Section;
&lt;/span&gt;&lt;span class="cx"&gt; import org.sonar.plugins.api.web.WebFooter;
 
 import java.util.Collection;
&lt;/span&gt;&lt;span class="lines"&gt;@@ -124,6 +130,20 @@
&lt;/span&gt;&lt;span class="cx"&gt;     return getPluginsComponent().getExtensions(WebFooter.class);
   }
 
&lt;/span&gt;&lt;span class="add"&gt;+  public Collection&amp;lt;GwtPageView&amp;gt; getPageViewsBySection(String section) {
+    final Section sec = Section.valueOf(section.toUpperCase());
+    List&amp;lt;GwtPageView&amp;gt; views = getPluginsComponent().getExtensions(GwtPageView.class);
+    return CollectionUtils.select(views, new Predicate(){
+      public boolean evaluate(Object object) {
+        return ((PageView)object).getSection().equals(sec);
+      }
+    });
+  }
+
+  public Collection&amp;lt;GwtSourceTab&amp;gt; getSourceTabs() {
+    return getPluginsComponent().getExtensions(GwtSourceTab.class);
+  }
+
&lt;/span&gt;&lt;span class="cx"&gt;   public void reloadProperties() {
     getPropertiesSynchronizer().reload();
   }
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarpluginapipomxml"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-plugin-api/pom.xml (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-plugin-api/pom.xml	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-plugin-api/pom.xml	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -10,6 +10,19 @@
&lt;/span&gt;&lt;span class="cx"&gt;   &amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;
   &amp;lt;name&amp;gt;Sonar plugin API&amp;lt;/name&amp;gt;
   &amp;lt;build&amp;gt;
&lt;/span&gt;&lt;span class="add"&gt;+    &amp;lt;resources&amp;gt;
+      &amp;lt;!-- sources of Sonar GWT library --&amp;gt;
+      &amp;lt;resource&amp;gt;
+        &amp;lt;directory&amp;gt;src/main/java&amp;lt;/directory&amp;gt;
+		&amp;lt;includes&amp;gt;
+            &amp;lt;include&amp;gt;**/org/sonar/plugins/api/web/gwt/**/*&amp;lt;/include&amp;gt;
+        &amp;lt;/includes&amp;gt;
+      &amp;lt;/resource&amp;gt;
+      &amp;lt;resource&amp;gt;
+        &amp;lt;directory&amp;gt;src/main/resources&amp;lt;/directory&amp;gt;
+      &amp;lt;/resource&amp;gt;
+    &amp;lt;/resources&amp;gt;
+
&lt;/span&gt;&lt;span class="cx"&gt;     &amp;lt;plugins&amp;gt;
       &amp;lt;plugin&amp;gt;
         &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
&lt;/span&gt;&lt;span class="lines"&gt;@@ -22,6 +35,33 @@
&lt;/span&gt;&lt;span class="cx"&gt;           &amp;lt;/execution&amp;gt;
         &amp;lt;/executions&amp;gt;
       &amp;lt;/plugin&amp;gt;
&lt;/span&gt;&lt;span class="add"&gt;+      &amp;lt;plugin&amp;gt;
+        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
+        &amp;lt;artifactId&amp;gt;maven-dependency-plugin&amp;lt;/artifactId&amp;gt;
+        &amp;lt;executions&amp;gt;
+          &amp;lt;execution&amp;gt;
+            &amp;lt;id&amp;gt;unpack-gwt-dev&amp;lt;/id&amp;gt;
+            &amp;lt;phase&amp;gt;package&amp;lt;/phase&amp;gt;
+            &amp;lt;goals&amp;gt;
+              &amp;lt;goal&amp;gt;unpack&amp;lt;/goal&amp;gt;
+            &amp;lt;/goals&amp;gt;
+            &amp;lt;configuration&amp;gt;
+              &amp;lt;artifactItems&amp;gt;
+                &amp;lt;artifactItem&amp;gt;
+                  &amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;
+                  &amp;lt;artifactId&amp;gt;gwt-dev&amp;lt;/artifactId&amp;gt;
+                  &amp;lt;version&amp;gt;${gwt.version}&amp;lt;/version&amp;gt;
+                  &amp;lt;classifier&amp;gt;${platform}-libs&amp;lt;/classifier&amp;gt;
+                  &amp;lt;type&amp;gt;zip&amp;lt;/type&amp;gt;
+                  &amp;lt;overWrite&amp;gt;false&amp;lt;/overWrite&amp;gt;
+                  &amp;lt;outputDirectory&amp;gt;${settings.localRepository}/com/google/gwt/gwt-dev/${gwt.version}&amp;lt;/outputDirectory&amp;gt;
+                &amp;lt;/artifactItem&amp;gt;
+              &amp;lt;/artifactItems&amp;gt;
+            &amp;lt;/configuration&amp;gt;
+          &amp;lt;/execution&amp;gt;
+        &amp;lt;/executions&amp;gt;
+      &amp;lt;/plugin&amp;gt;
+
&lt;/span&gt;&lt;span class="cx"&gt;     &amp;lt;/plugins&amp;gt;
   &amp;lt;/build&amp;gt;
   &amp;lt;dependencies&amp;gt;
&lt;/span&gt;&lt;span class="lines"&gt;@@ -96,5 +136,93 @@
&lt;/span&gt;&lt;span class="cx"&gt;       &amp;lt;artifactId&amp;gt;xpp3&amp;lt;/artifactId&amp;gt;
       &amp;lt;version&amp;gt;1.1.3.3&amp;lt;/version&amp;gt;
     &amp;lt;/dependency&amp;gt;
&lt;/span&gt;&lt;span class="add"&gt;+    &amp;lt;dependency&amp;gt;
+      &amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;
+      &amp;lt;artifactId&amp;gt;gwt-user&amp;lt;/artifactId&amp;gt;
+      &amp;lt;version&amp;gt;${gwt.version}&amp;lt;/version&amp;gt;
+      &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
+    &amp;lt;/dependency&amp;gt;
+    &amp;lt;dependency&amp;gt;
+      &amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;
+      &amp;lt;artifactId&amp;gt;gwt-servlet&amp;lt;/artifactId&amp;gt;
+      &amp;lt;version&amp;gt;${gwt.version}&amp;lt;/version&amp;gt;
+      &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
+    &amp;lt;/dependency&amp;gt;
+    &amp;lt;dependency&amp;gt;
+      &amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;
+      &amp;lt;artifactId&amp;gt;gwt-dev&amp;lt;/artifactId&amp;gt;
+      &amp;lt;version&amp;gt;${gwt.version}&amp;lt;/version&amp;gt;
+      &amp;lt;classifier&amp;gt;${platform}-libs&amp;lt;/classifier&amp;gt;
+      &amp;lt;type&amp;gt;zip&amp;lt;/type&amp;gt;
+      &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
+    &amp;lt;/dependency&amp;gt;
+    &amp;lt;!--  make sure gwt-dev-platform is last, not gwt-dev-platform-libs  --&amp;gt;
+    &amp;lt;!--  maven bug overwrites deps that only diff by classifier in artifact map --&amp;gt;
+    &amp;lt;dependency&amp;gt;
+      &amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;
+      &amp;lt;artifactId&amp;gt;gwt-dev&amp;lt;/artifactId&amp;gt;
+      &amp;lt;version&amp;gt;${gwt.version}&amp;lt;/version&amp;gt;
+      &amp;lt;classifier&amp;gt;${platform}&amp;lt;/classifier&amp;gt;
+      &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
+    &amp;lt;/dependency&amp;gt;
&lt;/span&gt;&lt;span class="cx"&gt;   &amp;lt;/dependencies&amp;gt;
&lt;/span&gt;&lt;span class="add"&gt;+
+  &amp;lt;repositories&amp;gt;
+    &amp;lt;repository&amp;gt;
+      &amp;lt;id&amp;gt;gwt-maven&amp;lt;/id&amp;gt;
+      &amp;lt;url&amp;gt;http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/&amp;lt;/url&amp;gt;
+    &amp;lt;/repository&amp;gt;
+  &amp;lt;/repositories&amp;gt;
+  &amp;lt;pluginRepositories&amp;gt;
+    &amp;lt;pluginRepository&amp;gt;
+      &amp;lt;id&amp;gt;gwt-maven&amp;lt;/id&amp;gt;
+      &amp;lt;url&amp;gt;http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/&amp;lt;/url&amp;gt;
+    &amp;lt;/pluginRepository&amp;gt;
+  &amp;lt;/pluginRepositories&amp;gt;
+
+  &amp;lt;properties&amp;gt;
+    &amp;lt;gwt.version&amp;gt;1.5.1&amp;lt;/gwt.version&amp;gt;
+    &amp;lt;google.webtoolkit.home&amp;gt;${gwt.home}&amp;lt;/google.webtoolkit.home&amp;gt;
+    &amp;lt;google.webtoolkit.dist&amp;gt;${basedir}/target/gwt&amp;lt;/google.webtoolkit.dist&amp;gt;
+  &amp;lt;/properties&amp;gt;
+
+  &amp;lt;profiles&amp;gt;
+    &amp;lt;profile&amp;gt;
+      &amp;lt;id&amp;gt;windows&amp;lt;/id&amp;gt;
+      &amp;lt;activation&amp;gt;
+        &amp;lt;os&amp;gt;
+          &amp;lt;family&amp;gt;windows&amp;lt;/family&amp;gt;
+        &amp;lt;/os&amp;gt;
+      &amp;lt;/activation&amp;gt;
+      &amp;lt;properties&amp;gt;
+        &amp;lt;platform&amp;gt;windows&amp;lt;/platform&amp;gt;
+        &amp;lt;google.webtoolkit.home&amp;gt;${google.webtoolkit.dist}/gwt-windows-${gwt.version}&amp;lt;/google.webtoolkit.home&amp;gt;
+      &amp;lt;/properties&amp;gt;
+    &amp;lt;/profile&amp;gt;
+    &amp;lt;profile&amp;gt;
+      &amp;lt;id&amp;gt;unix&amp;lt;/id&amp;gt;
+      &amp;lt;activation&amp;gt;
+        &amp;lt;os&amp;gt;
+          &amp;lt;family&amp;gt;unix&amp;lt;/family&amp;gt;
+        &amp;lt;/os&amp;gt;
+      &amp;lt;/activation&amp;gt;
+      &amp;lt;properties&amp;gt;
+        &amp;lt;platform&amp;gt;linux&amp;lt;/platform&amp;gt;
+        &amp;lt;google.webtoolkit.home&amp;gt;${google.webtoolkit.dist}/gwt-linux-${gwt.version}&amp;lt;/google.webtoolkit.home&amp;gt;
+      &amp;lt;/properties&amp;gt;
+    &amp;lt;/profile&amp;gt;
+    &amp;lt;profile&amp;gt;
+      &amp;lt;id&amp;gt;mac&amp;lt;/id&amp;gt;
+      &amp;lt;activation&amp;gt;
+        &amp;lt;os&amp;gt;
+          &amp;lt;family&amp;gt;mac&amp;lt;/family&amp;gt;
+        &amp;lt;/os&amp;gt;
+      &amp;lt;/activation&amp;gt;
+      &amp;lt;properties&amp;gt;
+        &amp;lt;platform&amp;gt;mac&amp;lt;/platform&amp;gt;
+        &amp;lt;google.webtoolkit.home&amp;gt;${google.webtoolkit.dist}/gwt-mac-${gwt.version}&amp;lt;/google.webtoolkit.home&amp;gt;
+        &amp;lt;google.webtoolkit.extrajvmargs&amp;gt;-XstartOnFirstThread&amp;lt;/google.webtoolkit.extrajvmargs&amp;gt;
+      &amp;lt;/properties&amp;gt;
+    &amp;lt;/profile&amp;gt;
+  &amp;lt;/profiles&amp;gt;
&lt;/span&gt;&lt;span class="cx"&gt; &amp;lt;/project&amp;gt;
\ No newline at end of file
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebSectionjava"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/Section.java (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/Section.java	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/Section.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -20,5 +20,5 @@
&lt;/span&gt;&lt;span class="cx"&gt; package org.sonar.plugins.api.web;
 
 public enum Section {
&lt;/span&gt;&lt;span class="rem"&gt;-  REPORTS, PROJECTS, CONFIGURATION, SESSION
&lt;/span&gt;&lt;span class="add"&gt;+  PROJECTS, PROJECT
&lt;/span&gt;&lt;span class="cx"&gt; }
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientAbstractSourceTabjava"&gt;&lt;/a&gt;
&lt;div class="addfile"&gt;&lt;h4&gt;Added: trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractSourceTab.java (0 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractSourceTab.java	                        (rev 0)
+++ trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractSourceTab.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -0,0 +1,173 @@
&lt;/span&gt;&lt;span class="add"&gt;+/*
+ * Sonar, entreprise quality control tool.
+ * Copyright (C) 2007-2008 Hortis-GRC SA
+ * mailto:be_agile HAT hortis DOT ch
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.plugins.api.web.gwt.client;
+
+import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.i18n.client.Dictionary;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Hyperlink;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.SourcesTabEvents;
+import com.google.gwt.user.client.ui.TabBar;
+import com.google.gwt.user.client.ui.TabListener;
+import com.google.gwt.user.client.ui.Widget;
+
+import java.util.List;
+import java.util.Map;
+
+public abstract class AbstractSourceTab implements EntryPoint {
+  private List&amp;lt;String&amp;gt; lines = null;
+  private Grid grid = null;
+
+  public void onModuleLoad() {
+    final TabBar tabs = new TabBar();
+    tabs.setWidth(&amp;quot;100%&amp;quot;);
+
+    final Dictionary tabsDictionnary = Dictionary.getDictionary(&amp;quot;source_tabs&amp;quot;);
+    for (String tabTitle : tabsDictionnary.keySet()) {
+      tabs.addTab(tabTitle);
+    }
+    tabs.addTabListener(new TabListener() {
+      public boolean onBeforeTabSelected(SourcesTabEvents sourcesTabEvents, int i) {
+        return tabs.getSelectedTab() != i;
+      }
+
+      public void onTabSelected(SourcesTabEvents sourcesTabEvents, int i) {
+        String gwtId = (String) tabsDictionnary.values().toArray()[i];
+        Window.alert(&amp;quot;load &amp;quot; + gwtId);
+      }
+    });
+
+    lines = getLines();
+    final Map&amp;lt;Integer, LineDecorator&amp;gt; decorators = getLineDecorators();
+    grid = new Grid(lines.size() + decorators.size(), 3);
+    int row = 0;
+    int lineId = 0;
+    for (String line : lines) {
+      grid.getCellFormatter().setStyleName(row, 0, &amp;quot;ln&amp;quot;);
+      grid.getCellFormatter().setStyleName(row, 1, &amp;quot;val&amp;quot;);
+      grid.getCellFormatter().setStyleName(row, 2, &amp;quot;src&amp;quot;);
+
+      final LineDecorator decorator = decorators.get(lineId);
+      grid.setText(row, 0, String.valueOf(lineId));
+      grid.setText(row, 2, line);
+      if (decorator == null) {
+        grid.setText(row, 1, &amp;quot;&amp;quot;);
+
+      } else {
+        grid.setText(row, 1, decorator.getValue());
+        if (decorator.getValueStyle() != null) {
+          grid.getCellFormatter().addStyleName(row, 1, decorator.getValueStyle());
+        }
+        if (decorator.getSourceStyle() != null) {
+          grid.getCellFormatter().addStyleName(row, 2, decorator.getSourceStyle());
+        }
+
+        Widget details = decorator.getDetails();
+        if (details != null) {
+          row++;
+          grid.setText(row, 0, &amp;quot;&amp;quot;);
+          grid.setText(row, 1, &amp;quot;&amp;quot;);
+          details.addStyleName(&amp;quot;det&amp;quot;);
+          grid.setWidget(row, 2, details);
+          grid.getRowFormatter().setStyleName(row, &amp;quot;hidden&amp;quot;);
+        }
+      }
+
+      row++;
+      lineId++;
+    }
+    grid.setStyleName(&amp;quot;sources&amp;quot;);
+
+    Hyperlink toggleLink = new Hyperlink(&amp;quot;expande/collapse&amp;quot;, &amp;quot;toggle&amp;quot;);
+    toggleLink.addClickListener(new ClickListener() {
+      public void onClick(Widget widget) {
+        if (grid != null) {
+          for (int i = 0; i &amp;lt; grid.getRowCount(); i++) {
+            grid.getRowFormatter().removeStyleName(i, &amp;quot;hidden&amp;quot;);
+          }
+        }
+      }
+    });
+
+
+    RootPanel rootPanel = RootPanel.get(&amp;quot;viewbottom&amp;quot;);
+    rootPanel.add(tabs);
+    rootPanel.add(toggleLink);
+    rootPanel.add(grid);
+
+  }
+
+
+  protected abstract List&amp;lt;String&amp;gt; getLines();
+
+  protected abstract Map&amp;lt;Integer, LineDecorator&amp;gt; getLineDecorators();
+
+  public static class LineDecorator {
+    private String sourceStyle = null;
+    private String value = null;
+    private String valueStyle = null;
+    private Widget details = null;
+
+    public LineDecorator() {
+    }
+
+    public LineDecorator(String sourceStyle, String value, String valueStyle, Widget details) {
+      this.sourceStyle = sourceStyle;
+      this.value = value;
+      this.details = details;
+      this.valueStyle = valueStyle;
+    }
+
+    public String getValueStyle() {
+      return valueStyle;
+    }
+
+    public void setValueStyle(String valueStyle) {
+      this.valueStyle = valueStyle;
+    }
+
+    public String getSourceStyle() {
+      return sourceStyle;
+    }
+
+    public void setSourceStyle(String sourceStyle) {
+      this.sourceStyle = sourceStyle;
+    }
+
+    public String getValue() {
+      return value;
+    }
+
+    public void setValue(String value) {
+      this.value = value;
+    }
+
+    public Widget getDetails() {
+      return details;
+    }
+
+    public void setDetails(Widget details) {
+      this.details = details;
+    }
+  }
+}
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientAbstractViewjava"&gt;&lt;/a&gt;
&lt;div class="addfile"&gt;&lt;h4&gt;Added: trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractView.java (0 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractView.java	                        (rev 0)
+++ trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/AbstractView.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -0,0 +1,56 @@
&lt;/span&gt;&lt;span class="add"&gt;+/*
+ * Sonar, entreprise quality control tool.
+ * Copyright (C) 2007-2008 Hortis-GRC SA
+ * mailto:be_agile HAT hortis DOT ch
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.plugins.api.web.gwt.client;
+
+import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+
+public abstract class AbstractView implements EntryPoint {
+  private RootPanel rootPanel = null;
+
+  protected void displayView(Widget widget) {
+    Element loading = DOM.getElementById(&amp;quot;loading&amp;quot;);
+    if (loading!=null) {
+      DOM.removeChild(getRootPanel().getElement(), loading);
+    }
+    getRootPanel().add(widget);
+  }
+
+  protected void error(String message) {
+    RootPanel errorPanel = RootPanel.get(&amp;quot;error&amp;quot;);
+    errorPanel.add(new Label(message));
+    errorPanel.removeStyleName(&amp;quot;hidden&amp;quot;);
+  }
+
+  protected void clearMessages() {
+    RootPanel.get(&amp;quot;error&amp;quot;).addStyleName(&amp;quot;hidden&amp;quot;);
+  }
+
+  protected RootPanel getRootPanel() {
+    if (rootPanel==null) {
+      rootPanel = RootPanel.get(&amp;quot;view&amp;quot;);
+    }
+    return rootPanel;
+  }
+}
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientJsonUtilsjava"&gt;&lt;/a&gt;
&lt;div class="addfile"&gt;&lt;h4&gt;Added: trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/JsonUtils.java (0 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/JsonUtils.java	                        (rev 0)
+++ trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/JsonUtils.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -0,0 +1,68 @@
&lt;/span&gt;&lt;span class="add"&gt;+/*
+ * Sonar, entreprise quality control tool.
+ * Copyright (C) 2007-2008 Hortis-GRC SA
+ * mailto:be_agile HAT hortis DOT ch
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.plugins.api.web.gwt.client;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+public class JsonUtils {
+    private static int requestId = 0;
+
+    interface JSONHandler {
+      public void handleJSON(JavaScriptObject obj);
+    }
+
+    /**
+     * IMPORTANT : the url should ended with ?callback= or &amp;amp;callback=
+     */
+    public static void requestJson(String url, JSONHandler handler) {
+      makeJSONRequest(requestId++, url, handler);
+    }
+
+    public static native void makeJSONRequest(int requestId, String url, JSONHandler handler) /*-{
+          var callback = &amp;quot;callback&amp;quot; + requestId;
+         window[callback] = function(jsonObj) {
+           @org.sonar.plugins.api.web.gwt.client.JsonUtils::dispatchJSON(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/sonar/plugins/api/web/gwt/client/JsonUtils$JSONHandler;)(jsonObj, handler);
+           window[callback + &amp;quot;done&amp;quot;] = true;
+         }
+
+         // create SCRIPT tag, and set SRC attribute equal to JSON feed URL + callback function name
+         var script = $wnd.document.createElement(&amp;quot;script&amp;quot;);
+         script.setAttribute(&amp;quot;src&amp;quot;, url+callback);
+         script.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;text/javascript&amp;quot;);
+
+         setTimeout(function() {
+        if (!window[callback + &amp;quot;done&amp;quot;]) {
+          handler.@org.sonar.plugins.api.web.gwt.client.JsonUtils.JSONHandler::handleJSON(Lcom/google/gwt/core/client/JavaScriptObject;)(null);
+        }
+
+        // cleanup
+        document.body.removeChild(script);
+        delete window[callback];
+        delete window[callback + &amp;quot;done&amp;quot;];
+      }, 1000);
+
+      document.body.appendChild(script);
+     }-*/;
+
+    public static void dispatchJSON(JavaScriptObject jsonObj, JSONHandler handler) {
+      handler.handleJSON(jsonObj);
+    }
+
+}
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarpluginapisrcmainjavaorgsonarpluginsapiwebgwtclientUtilsjava"&gt;&lt;/a&gt;
&lt;div class="addfile"&gt;&lt;h4&gt;Added: trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/Utils.java (0 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/Utils.java	                        (rev 0)
+++ trunk/sonar-plugin-api/src/main/java/org/sonar/plugins/api/web/gwt/client/Utils.java	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -0,0 +1,34 @@
&lt;/span&gt;&lt;span class="add"&gt;+/*
+ * Sonar, entreprise quality control tool.
+ * Copyright (C) 2007-2008 Hortis-GRC SA
+ * mailto:be_agile HAT hortis DOT ch
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.plugins.api.web.gwt.client;
+
+import com.google.gwt.i18n.client.Dictionary;
+
+public class Utils {
+  public static String getConfigParameter(String key) {
+    Dictionary config = Dictionary.getDictionary(&amp;quot;config&amp;quot;);
+    if (config!=null) {
+      return config.get(key);
+    }
+    return null;
+  }
+}
+
+
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarpluginapisrcmainresourcesorgsonarpluginsapiwebgwtUtilsgwtxml"&gt;&lt;/a&gt;
&lt;div class="addfile"&gt;&lt;h4&gt;Added: trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/web/gwt/Utils.gwt.xml (0 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/web/gwt/Utils.gwt.xml	                        (rev 0)
+++ trunk/sonar-plugin-api/src/main/resources/org/sonar/plugins/api/web/gwt/Utils.gwt.xml	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -0,0 +1,8 @@
&lt;/span&gt;&lt;span class="add"&gt;+&amp;lt;module&amp;gt;
+
+  &amp;lt;inherits name=&amp;#39;com.google.gwt.user.User&amp;#39;/&amp;gt;
+  &amp;lt;inherits name=&amp;quot;com.google.gwt.json.JSON&amp;quot;/&amp;gt;
+  &amp;lt;inherits name=&amp;quot;com.google.gwt.http.HTTP&amp;quot;/&amp;gt;
+  &amp;lt;inherits name=&amp;quot;com.google.gwt.i18n.I18N&amp;quot;/&amp;gt;
+
+&amp;lt;/module&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersapplicationrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/application.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/application.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/application.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -27,19 +27,9 @@
&lt;/span&gt;&lt;span class="cx"&gt;   before_filter :check_database
   after_filter :stop_java_facade
 
&lt;/span&gt;&lt;span class="rem"&gt;-  # this method must be overloaded by the controller in order to display a breadcrumb.
-  # Returns a Breadcrumb class.
-  def breadcrumb
-    nil
-  end
-
&lt;/span&gt;&lt;span class="cx"&gt;   def java_facade
     @java_facade ||= Java::OrgSonarCore::JRubyFacade.new
   end
&lt;/span&gt;&lt;span class="rem"&gt;-
-  def section
-    nil
-  end
&lt;/span&gt;&lt;span class="cx"&gt;   
   protected
 
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersbreakdown_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/breakdown_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/breakdown_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/breakdown_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -21,18 +21,9 @@
&lt;/span&gt;&lt;span class="cx"&gt; 
   helper ProjectHelper
 
&lt;/span&gt;&lt;span class="rem"&gt;-  def section
-    Navigation::SECTION_PROJECT
-  end
&lt;/span&gt;&lt;span class="add"&gt;+  SECTION=Navigation::SECTION_PROJECT
&lt;/span&gt;&lt;span class="cx"&gt;   
&lt;/span&gt;&lt;span class="rem"&gt;-  def breadcrumb
-    result=Breadcrumb.new
-    if defined?(@snapshot) and @snapshot
-      result.add_project_hierarchy(@snapshot, self)
-    end
-    result
-  end
-  
&lt;/span&gt;&lt;span class="add"&gt;+
&lt;/span&gt;&lt;span class="cx"&gt;   def measures
     @metric = select_metric(params[:metric_id], Metric::NCSS_NCSS)
     @project=Project.find(params[:id].to_i)
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollerscolumns_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/columns_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/columns_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/columns_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -40,7 +40,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;         end
       end
     end
&lt;/span&gt;&lt;span class="rem"&gt;-    redirect_to :controller =&amp;gt; &amp;#39;reports&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="add"&gt;+    redirect_to :controller =&amp;gt; &amp;#39;projects&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   end
   
   def delete
&lt;/span&gt;&lt;span class="lines"&gt;@@ -61,13 +61,13 @@
&lt;/span&gt;&lt;span class="cx"&gt;         end
       end      
     end
&lt;/span&gt;&lt;span class="rem"&gt;-    redirect_to :controller =&amp;gt; &amp;#39;reports&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="add"&gt;+    redirect_to :controller =&amp;gt; &amp;#39;projects&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   end
   
   def left
     column = get_column_by_id
     swap_position(column.position - 1, column) if column
&lt;/span&gt;&lt;span class="rem"&gt;-    redirect_to :controller =&amp;gt; &amp;#39;reports&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="add"&gt;+    redirect_to :controller =&amp;gt; &amp;#39;projects&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   end
   
   def toggle_treemap
&lt;/span&gt;&lt;span class="lines"&gt;@@ -77,13 +77,13 @@
&lt;/span&gt;&lt;span class="cx"&gt;       ColumnsView.create(:name =&amp;gt; &amp;quot;Treemap&amp;quot;, :col_type =&amp;gt; ColumnsView::TYPE_TREE_MAP, 
         :col_key =&amp;gt; nil, :position =&amp;gt; -1, :sortable =&amp;gt; false, :sort_default =&amp;gt; false)
     end
&lt;/span&gt;&lt;span class="rem"&gt;-    redirect_to :controller =&amp;gt; &amp;#39;reports&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="add"&gt;+    redirect_to :controller =&amp;gt; &amp;#39;projects&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   end  
   
   def right
     column = get_column_by_id
     swap_position(column.position + 1, column) if column
&lt;/span&gt;&lt;span class="rem"&gt;-    redirect_to :controller =&amp;gt; &amp;#39;reports&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="add"&gt;+    redirect_to :controller =&amp;gt; &amp;#39;projects&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   end  
   
   def default_sorting
&lt;/span&gt;&lt;span class="lines"&gt;@@ -97,7 +97,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;       column.sort_default = true
       column.save!
     end
&lt;/span&gt;&lt;span class="rem"&gt;-    redirect_to :controller =&amp;gt; &amp;#39;reports&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="add"&gt;+    redirect_to :controller =&amp;gt; &amp;#39;projects&amp;#39;, :action =&amp;gt; &amp;#39;index&amp;#39;, :configuring =&amp;gt; &amp;#39;true&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   end  
   
   private
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersconfiguration_controllerrb"&gt;&lt;/a&gt;
&lt;div class="delfile"&gt;&lt;h4&gt;Deleted: trunk/sonar-web/src/main/webapp/app/controllers/configuration_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/configuration_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/configuration_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -1,29 +0,0 @@
&lt;/span&gt;&lt;span class="rem"&gt;-#
-# Sonar, entreprise quality control tool.
-# Copyright (C) 2007-2008 Hortis-GRC SA
-# mailto:be_agile HAT hortis DOT ch
-#
-# Sonar is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 3 of the License, or (at your option) any later version.
-#
-# Sonar is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with Sonar; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
-#
-class ConfigurationController &amp;lt; ApplicationController
-  def section
-    Navigation::SECTION_CONFIGURATION
-  end
-
-  def index
-    @views
-    @view=params[:view] || &amp;#39;org.sonar.core.metrics.gwt.Metrics&amp;#39;
-  end
-end
&lt;/span&gt;&lt;span class="cx"&gt;\ No newline at end of file
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersmetrics_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/metrics_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/metrics_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/metrics_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -22,9 +22,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;   # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
   require_role Role::ADMIN, :only =&amp;gt; [ :save_from_web, :delete_from_web ]
 
&lt;/span&gt;&lt;span class="rem"&gt;-  def section
-    Navigation::SECTION_CONFIGURATION
-  end
&lt;/span&gt;&lt;span class="add"&gt;+  SECTION=Navigation::SECTION_CONFIGURATION
&lt;/span&gt;&lt;span class="cx"&gt;   
   def index
     @metrics = Metric.all
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersmonitor_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/monitor_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/monitor_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/monitor_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -21,6 +21,7 @@
&lt;/span&gt;&lt;span class="cx"&gt; include_class &amp;quot;org.sonar.core.batch.monitoring.MonitorImpl&amp;quot;
 
 class MonitorController &amp;lt; ApplicationController
&lt;/span&gt;&lt;span class="add"&gt;+  SECTION=&amp;#39;&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   
   def index
     monitor = get_monitor
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollerspreferences_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/preferences_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/preferences_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/preferences_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -19,9 +19,7 @@
&lt;/span&gt;&lt;span class="cx"&gt; #
 class PreferencesController &amp;lt; ApplicationController
 
&lt;/span&gt;&lt;span class="rem"&gt;-  def section
-    Navigation::SECTION_CONFIGURATION
-  end
&lt;/span&gt;&lt;span class="add"&gt;+  SECTION=Navigation::SECTION_CONFIGURATION
&lt;/span&gt;&lt;span class="cx"&gt;   
   # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
   verify :method =&amp;gt; :post, :only =&amp;gt; [&amp;#39;update&amp;#39;], :redirect_to =&amp;gt; { :action =&amp;gt; :index }
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersproject_compare_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/project_compare_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/project_compare_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/project_compare_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -18,18 +18,8 @@
&lt;/span&gt;&lt;span class="cx"&gt; # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
 #
 class ProjectCompareController &amp;lt; ApplicationController
&lt;/span&gt;&lt;span class="rem"&gt;-  def section
-    Navigation::SECTION_PROJECT
-  end
&lt;/span&gt;&lt;span class="add"&gt;+  SECTION=Navigation::SECTION_PROJECT
&lt;/span&gt;&lt;span class="cx"&gt; 
&lt;/span&gt;&lt;span class="rem"&gt;-  def breadcrumb
-    result=Breadcrumb.new
-#    snapshot = @project.last_snapshot
-#    if defined?(snapshot) and snapshot
-#      result.add_project_hierarchy(snapshot, self)
-#    end
-    result
-  end
&lt;/span&gt;&lt;span class="cx"&gt;   
   def index
     @project = Project.find(params[:id])
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersproject_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/project_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/project_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/project_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -27,22 +27,10 @@
&lt;/span&gt;&lt;span class="cx"&gt;   
   require_role Role::ADMIN, :for =&amp;gt; [ :administration, :delete, :set_links, :delete_review, :add_review, :edit_review]
          
&lt;/span&gt;&lt;span class="rem"&gt;-  def section
-    Navigation::SECTION_PROJECT
-  end
-
-
&lt;/span&gt;&lt;span class="add"&gt;+  SECTION=Navigation::SECTION_PROJECT
&lt;/span&gt;&lt;span class="cx"&gt;   TREEMAP_SIZE_ON_LIST_PAGE = 280
   TREEMAP_SIZE_ON_DASHBOARD_PAGE = 200
 
&lt;/span&gt;&lt;span class="rem"&gt;-  def projects_treemap
-    treemap = load_treemap(Snapshot.last_enabled_projects, params, TREEMAP_SIZE_ON_LIST_PAGE, TREEMAP_SIZE_ON_LIST_PAGE)
-    if(treemap)
-      render :text =&amp;gt; treemap.generate_html
-    end
-    &amp;#39;&amp;#39;
-  end
-  
&lt;/span&gt;&lt;span class="cx"&gt;   def modules_treemap
     #params[:id] is the snapshot id, not the project id
     snapshots=Snapshot.find(:all, :conditions =&amp;gt; [&amp;#39;projects.enabled=1 and parent_snapshot_id=%s&amp;#39;, params[:id].to_i], :include =&amp;gt; &amp;#39;project&amp;#39;)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -53,7 +41,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;     &amp;#39;&amp;#39;
   end
   
&lt;/span&gt;&lt;span class="rem"&gt;-  def dashboard
&lt;/span&gt;&lt;span class="add"&gt;+  def index
&lt;/span&gt;&lt;span class="cx"&gt;     if params[:sid]
       @snapshot = Snapshot.find(:first, :conditions =&amp;gt; {:id =&amp;gt; params[:sid].to_i, :status =&amp;gt; Snapshot::STATUS_PROCESSED })
       @project = @snapshot.project
&lt;/span&gt;&lt;span class="lines"&gt;@@ -204,7 +192,7 @@
&lt;/span&gt;&lt;span class="cx"&gt;   def get_treemap(measures_by_snapshot, params, width, height, display_branch_name)
     treemap = Sonar::Treemap.new(measures_by_snapshot, display_branch_name, params[:treemap])
     # the parameter _id_  will be replaced by Sonar::HtmlOutput
&lt;/span&gt;&lt;span class="rem"&gt;-    treemap.link_url = url_for :controller =&amp;gt; &amp;#39;project&amp;#39;, :action =&amp;gt; &amp;#39;dashboard&amp;#39;, :id =&amp;gt; &amp;#39;_id_&amp;#39;, :sid =&amp;gt; &amp;#39;_sid_&amp;#39;, :only_path =&amp;gt; true
&lt;/span&gt;&lt;span class="add"&gt;+    treemap.link_url = &amp;quot;#{request.relative_url_root}/project/index/_id_?sid=_sid_&amp;quot;
&lt;/span&gt;&lt;span class="cx"&gt;     treemap.width = width
     treemap.height = height
     treemap
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;a id="trunksonarwebsrcmainwebappappcontrollersprojects_controllerrb"&gt;&lt;/a&gt;
&lt;div class="modfile"&gt;&lt;h4&gt;Modified: trunk/sonar-web/src/main/webapp/app/controllers/projects_controller.rb (1341 =&gt; 1342)&lt;/h4&gt;
&lt;pre class="diff"&gt;
&lt;span class="info"&gt;--- trunk/sonar-web/src/main/webapp/app/controllers/projects_controller.rb	2008-08-19 15:57:54 UTC (rev 1341)
+++ trunk/sonar-web/src/main/webapp/app/controllers/projects_controller.rb	2008-08-20 14:49:10 UTC (rev 1342)
&lt;/span&gt;&lt;span class="lines"&gt;@@ -17,29 +17,93 @@
&lt;/span&gt;&lt;span class="cx"&gt; # License along with Sonar; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
 #
&lt;/span&gt;&lt;span class="add"&gt;+require &amp;#39;java&amp;#39;
+include_class &amp;quot;org.sonar.core.batch.monitoring.MonitorImpl&amp;quot;
+
&lt;/span&gt;&lt;span class="cx"&gt; class ProjectsController &amp;lt; ApplicationController
 
&lt;/span&gt;&lt;span class="rem"&gt;-  def section
-    Navigation::SECTION_PROJECT
&lt;/span&gt;&lt;span class="add"&gt;+  TREEMAP_SIZE_ON_LIST_PAGE = 280
+  SECTION=Navigation::SECTION_PROJECTS
+
+
+  def projects_treemap
+    treemap = load_treemap(Snapshot.last_enabled_projects, params, TREEMAP_SIZE_ON_LIST_PAGE, TREEMAP_SIZE_ON_LIST_PAGE)
+    if(treemap)
+      render :text =&amp;gt; treemap.generate_html
+    end
+    &amp;#39;&amp;#39;
&lt;/span&gt;&lt;span class="cx"&gt;   end
 
&lt;/span&gt;&lt;span class="rem"&gt;-  def view
-    @project = Project.find_by_kee(params[:key])
-    @snapshot = @project.last_snapshot
-    @view = params[:view] || &amp;#39;dashboard&amp;#39;
&lt;/span&gt;&lt;span class="add"&gt;+  def index
+    @snapshots = Snapshot.last_enabled_projects
+    @columns = ColumnsView.displayed_columns
+    metrics = ColumnsView.homepage_metrics
&lt;/span&gt;&lt;span class="cx"&gt; 
&lt;/span&gt;&lt;span class="rem"&gt;-    if [&amp;#39;dashboard&amp;#39;, &amp;#39;timemachine&amp;#39;].include?(@view)
-      self.send @view
-      render :action =&amp;gt; @view
-      return
&lt;/span&gt;&lt;span class="add"&gt;+    measures = project_measures(@snapshots, metrics)
+    @measures_by_snapshot = measures_by_snapshot(@snapshots,