You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2009/10/29 14:24:17 UTC

svn commit: r830933 [3/4] - in /james/hupa/trunk: ./ client/src/main/java/org/apache/hupa/client/mvp/ client/src/main/java/org/apache/hupa/client/widgets/ server/src/main/java/org/apache/hupa/server/ server/src/main/java/org/apache/hupa/server/guice/ s...

Added: james/hupa/trunk/server/src/main/resources/mime/2.msg
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/resources/mime/2.msg?rev=830933&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/resources/mime/2.msg (added)
+++ james/hupa/trunk/server/src/main/resources/mime/2.msg Thu Oct 29 13:24:15 2009
@@ -0,0 +1,51 @@
+                                                                                                                                                                                                                                                               
+Delivered-To: nobody@foo.com
+Return-Path: <no...@foo.com>
+MIME-Version: 1.0
+In-Reply-To: <no...@foo.com>
+References: <no...@foo.com>
+Date: Thu, 15 Oct 2009 11:40:48 +0200
+Subject: Re: multipart-alternative message
+To: Test <no...@foo.com>
+From: =?ISO-8859-1?Q?Pe=F1a?= <no...@foo.com>
+Content-Type: multipart/alternative; boundary=000e0cd1fd7203f7ae0475f6134e
+
+--000e0cd1fd7203f7ae0475f6134e
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+Thanks a lot! I will give it a shot tonight.
+
+Cheers,
+Donald
+
+
+
+
+On Thu, Oct 15, 2009 at 11:35 AM, Manolo Pe=F1a <
+nobody@foo.com> wrote:
+
+> This is the project I told you.
+>
+> Regards
+> Manolo
+>
+
+--000e0cd1fd7203f7ae0475f6134e
+Content-Type: text/html; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+Thanks a lot! I will give it a shot tonight.<br><br><br><br>=
+Cheers,<br>Donald<br><br><br><br><br><div class=3D"gmail_quote">On Thu, Oc=
+t 15, 2009 at 11:35 AM, Pe=F1a <span dir=3D"ltr">&lt;<a h=
+nobody@foo.com</a>&=
+gt;</span> wrote:<br>
+<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
+204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This is the proje=
+ct =A0I told you in the wiki<br>
+<br>
+Regards<br>
+Manolo<br>
+</blockquote></div><br>
+
+--000e0cd1fd7203f7ae0475f6134e--

Added: james/hupa/trunk/server/src/main/resources/mime/3.msg
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/resources/mime/3.msg?rev=830933&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/resources/mime/3.msg (added)
+++ james/hupa/trunk/server/src/main/resources/mime/3.msg Thu Oct 29 13:24:15 2009
@@ -0,0 +1,51 @@
+Date: Wed, 28 Oct 2009 05:55:26 -0700 (PDT)
+From: ® VIAGRA ® Official <no...@foo.org>
+To: tuna@alcala.org
+Subject: iso-8859-1 content and headers 
+MIME-Version: 1.0
+Content-Type: text/html; charset="ISO-8859-1"
+Content-Transfer-Encoding: 7bit
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+   <head>
+      <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+      <title>
+		News
+      </title>
+   </head>
+   <body>
+
+      <table border="0" cellpadding="0" cellspacing="0" style="width: 896px">
+
+
+<tr><td align="center" style="font: normal 11px Verdana, sans-serif; color: #333;"><a href="http://mdftfxek.cn" style="text-decoration: none; color: #0099ff;">Click here</a> to view as a web page. </td></tr>
+
+         <tr><td align="center">
+        	 <br />
+			 <a href="http://mdftfxek.cn">
+			 <img alt="View image in browser now" width="618" height="326" src="http://mediapix.ru/pics/4154ded47deaf59b8dad0cc69294fc5b.gif" style="border-width: 0px" /></a></td></tr>
+
+
+<tr><td valign="top" style="border-right: 1px solid #e5e4e4; padding-right: 10px">
+        <table border="0" cellpadding="0" cellspacing="0" style="width: 884px">
+
+<tr><td align="center" style="font: normal 9px Verdana, sans-serif; color: #999; padding-top: 20px">
+
+<a href="http://mdftfxek.cn" style="font: 9px Verdana, sans-serif; text-decoration: none; color: #0099ff">Unsubscribe</a> | 
+<a href="http://mdftfxek.cn" style="font: 9px Verdana, sans-serif; text-decoration: none; color: #0099ff">Change e-mail address</a> | 
+<a href="http://mdftfxek.cn" style="font: 9px Verdana, sans-serif; text-decoration: none; color: #0099ff">Privacy Policy</a> | 
+<a href="http://mdftfxek.cn" style="font: 9px Verdana, sans-serif; text-decoration: none; color: #0099ff">About Us</a><br /><br />
+Copyright ® 2009 umew Inc. All rights reserved.<br />
+					  </td></tr>
+
+        </table>
+
+</td>
+</tr>
+      </table>
+</body>
+</html>
+
+

Added: james/hupa/trunk/server/src/main/resources/mime/4.msg
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/resources/mime/4.msg?rev=830933&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/resources/mime/4.msg (added)
+++ james/hupa/trunk/server/src/main/resources/mime/4.msg Thu Oct 29 13:24:15 2009
@@ -0,0 +1,234 @@
+                                                                                                                                                                                                                                                               
+Return-Path: <no...@foo.com-ecm.com>
+From: "Novell" <no...@foo.com>
+X-EMSCustId: XTC-4Y2-FAEL-VJMLD-DD-MZW59
+X-Mailer: EMS
+Reply-To: nobody@foo.com
+To: "nobody@foo.com" <no...@foo.com>
+Date: Tue, 27 Oct 2009 11:47:11 +0100
+X-Priority: 3
+Subject: =?iso-8859-1?B?UmVn7XN0cmVzZSBhbCBldmVudG8gZGUgT3Blbk9mZmljZS5vcmcgMy4wIE5vdmVsbCA=?=
+    =?iso-8859-1?B?RWRpdGlvbiBwYXJhIFdpbmRvd3M=?=
+MIME-Version: 1.0
+Content-type: text/html; charset=iso-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+
+=A0
+<style><!--
+=2Etextbox {
+color: #7c7680;
+font-family: Arial, Helvetica, sans-serif;
+font-size: 12px;
+list-style-image: url(http://www=2Emarketing-directo=2Einfo/nortel/nort=
+elmu1/bullet=2Ejpg);
+line-height: 16px;
+}
+=2Estyle2 {
+font-family: Arial, Helvetica, sans-serif;
+font-size: 10px;
+color: #666666;
+}
+=2Econtenttxt {
+color: #666;
+font-family: Arial, Helvetica, sans-serif;
+font-size: 14px;
+line-height: 20px;
+}
+=2Etitleemail {font-size: 18px; color: #5b8c99; font-family: Arial, Hel=
+vetica, sans-serif;}
+=2Eboldish {
+color: #666666;
+font-weight: bold;
+}
+=2Eremarktxt1 {
+font-size: 14px;
+color: #79aeb4;
+font-family: Arial, Helvetica, sans-serif;
+font-weight: normal;
+}
+a:link {
+color: #48AFC6;
+}
+a:visited {
+color: #48ADC4;
+}
+=2Eremarktxt2 {
+font-size: 14px;
+color: #1a406d;
+font-family: Arial, Helvetica, sans-serif;
+font-weight: bold;
+}
+=2Efootertxt {
+font-size: 14px;
+color: #CF953B;
+font-family: Arial, Helvetica, sans-serif;
+font-weight: bold;
+}
+-->
+</style>
+<table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" width=3D"553" a=
+lign=3D"center">
+=09<tbody>
+=09=09<tr>
+=09=09=09<td width=3D"599">
+=09=09=09<table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" width=3D=
+"582">
+=09=09=09=09<tbody>
+=09=09=09=09=09<tr>
+=09=09=09=09=09=09<td width=3D"126"><img src=3D"http://www=2Emarketing-=
+directo=2Einfo/publi=2Egif" alt=3D"" width=3D"103" height=3D"22" /></td=
+>
+=09=09=09=09=09=09<td width=3D"474">
+=09=09=09=09=09=09<div align=3D"right">
+=09=09=09=09=09=09<a style=3D"font-family: Arial,Helvetica,sans-serif; =
+color: #001845; font-size: 11px; text-decoration: none" href=3D"http://=
+ems6=2Enet/r/?E=3DXTC-4Y2-VJMLD-DD-MZW59-DSCV" target=3D"_blank">Haga=20
+=09=09=09=09=09=09clic aqu=ED si no puede ver bien este email</a>
+=09=09=09=09=09=09</div>
+=09=09=09=09=09=09</td>
+=09=09=09=09=09</tr>
+=09=09=09=09</tbody>
+=09=09=09</table>
+=09=09=09</td>
+=09=09</tr>
+=09=09<tr>
+=09=09=09<td><img src=3D"http://www=2Emarketing-directo=2Einfo/novell/o=
+penoffice_1009/line_top=2Egif" alt=3D"" width=3D"582" height=3D"13" /><=
+/td>
+=09=09</tr>
+=09=09<tr>
+=09=09=09<td>
+=09=09=09<table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" width=3D=
+"582">
+=09=09=09=09<tbody>
+=09=09=09=09=09<tr>
+=09=09=09=09=09=09<td width=3D"134" align=3D"left"><a href=3D"http://em=
+s6=2Enet/r/?E=3DXTC-4Y2-VJMLD-DD-MZW59-DSSD"><img src=3D"http://www=2Em=
+arketing-directo=2Einfo/novell/openoffice_1009/a1=2Egif" border=3D"0" a=
+lt=3D"" width=3D"115" height=3D"66" /></a></td>
+=09=09=09=09=09=09<td width=3D"302">=A0</td>
+=09=09=09=09=09=09<td width=3D"302" align=3D"right"><img src=3D"http://=
+www=2Emarketing-directo=2Einfo/novell/openoffice_1009/a2=2Egif" alt=3D"=
+" width=3D"134" height=3D"66" /></td>
+=09=09=09=09=09</tr>
+=09=09=09=09</tbody>
+=09=09=09</table>
+=09=09=09</td>
+=09=09</tr>
+=09=09<tr>
+=09=09=09<td><a href=3D"http://ems6=2Enet/r/?E=3DXTC-4Y2-VJMLD-DD-MZW59=
+-DSQY"><img src=3D"http://www=2Emarketing-directo=2Einfo/novell/openoff=
+ice_1009/b1=2Ejpg" border=3D"0" alt=3D"" width=3D"582" height=3D"185" /=
+></a></td>
+=09=09</tr>
+=09=09<tr>
+=09=09=09<td>=A0</td>
+=09=09</tr>
+=09=09<tr>
+=09=09=09<td>
+=09=09=09<table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" width=3D=
+"580">
+=09=09=09=09<tbody>
+=09=09=09=09=09<tr>
+=09=09=09=09=09=09<td class=3D"contenttxt" width=3D"342" height=3D"389"=
+ valign=3D"top">=BFLe gustar=EDa liberar su empresa de la dependencia d=
+e un =FAnico proveedor sin renunciar a la interoperabilidad con las sui=
+tes ofim=E1ticas m=E1s extendidas? =BFLe gustar=EDa contar con el respa=
+ldo de un proveedor capaz de ofrecerle un servicio de asistencia t=E9cn=
+ica de prestigio mundial?          <br />
+=09=09=09=09=09=09<span class=3D"remarktxt1"><br />
+=09=09=09=09=09=09El 5 de Noviembre <strong>Novell y Santa Clara Techno=
+logies</strong> le invitan a conocer<strong> OpenOffice=2Eorg 3=2E0 </s=
+trong>Novell Edition para Windows </span><br />
+=09=09=09=09=09=09<br />
+=09=09=09=09=09=09<strong class=3D"boldish">OpenOffice=2Eorg 3=2E0 Nove=
+ll Edition para Windows</strong> es lo que est=E1 buscando, la alternat=
+iva m=E1s econ=F3mica y con la mejor asistencia t=E9cnica=2E</td>
+=09=09=09=09=09=09<td width=3D"238" valign=3D"top">
+=09=09=09=09=09=09<table border=3D"0" cellspacing=3D"0" cellpadding=3D"=
+0" width=3D"238" align=3D"right">
+=09=09=09=09=09=09=09<tbody>
+=09=09=09=09=09=09=09=09<tr>
+=09=09=09=09=09=09=09=09=09<td align=3D"right"><img src=3D"http://www=2E=
+marketing-directo=2Einfo/novell/openoffice_1009/c1=2Egif" alt=3D"" widt=
+h=3D"234" height=3D"300" /></td>
+=09=09=09=09=09=09=09=09</tr>
+=09=09=09=09=09=09=09=09<tr>
+=09=09=09=09=09=09=09=09=09<td align=3D"right" valign=3D"top"><a href=3D=
+"mailto:novell@pgrmt=2Einfo"><img src=3D"http://www=2Emarketing-directo=
+=2Einfo/novell/openoffice_1009/c2=2Egif" border=3D"0" alt=3D"" width=3D=
+"234" height=3D"77" /></a></td>
+=09=09=09=09=09=09=09=09</tr>
+=09=09=09=09=09=09=09</tbody>
+=09=09=09=09=09=09</table>
+=09=09=09=09=09=09</td>
+=09=09=09=09=09</tr>
+=09=09=09=09</tbody>
+=09=09=09</table>
+=09=09=09</td>
+=09=09</tr>
+=09=09<tr bgcolor=3D"#e1e8ed">
+=09=09=09<td class=3D"contenttxt" height=3D"48" align=3D"left" valign=3D=
+"top" bgcolor=3D"#ffffff">
+=09=09=09<table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" width=3D=
+"100">
+=09=09=09=09<tbody>
+=09=09=09=09=09<tr>
+=09=09=09=09=09=09<td valign=3D"top">
+=09=09=09=09=09=09<table border=3D"0" cellspacing=3D"0" cellpadding=3D"=
+0" width=3D"100">
+=09=09=09=09=09=09=09<tbody>
+=09=09=09=09=09=09=09=09<tr>
+=09=09=09=09=09=09=09=09=09<td><img src=3D"http://www=2Emarketing-direc=
+to=2Einfo/novell/openoffice_1009/x1=2Egif" alt=3D"" width=3D"115" heigh=
+t=3D"171" /></td>
+=09=09=09=09=09=09=09=09</tr>
+=09=09=09=09=09=09=09=09<tr>
+=09=09=09=09=09=09=09=09=09<td><a href=3D"http://ems6=2Enet/r/?E=3DXTC-=
+4Y2-VJMLD-DD-MZW59-DSQY"><img src=3D"http://www=2Emarketing-directo=2Ei=
+nfo/novell/openoffice_1009/x2=2Egif" border=3D"0" alt=3D"" width=3D"115=
+" height=3D"46" /></a></td>
+=09=09=09=09=09=09=09=09</tr>
+=09=09=09=09=09=09=09=09<tr>
+=09=09=09=09=09=09=09=09=09<td><img src=3D"http://www=2Emarketing-direc=
+to=2Einfo/novell/openoffice_1009/x3=2Egif" alt=3D"" width=3D"115" heigh=
+t=3D"126" /></td>
+=09=09=09=09=09=09=09=09</tr>
+=09=09=09=09=09=09=09</tbody>
+=09=09=09=09=09=09</table>
+=09=09=09=09=09=09</td>
+=09=09=09=09=09=09<td><img src=3D"http://www=2Emarketing-directo=2Einfo=
+/novell/openoffice_1009/agenda=2Egif" alt=3D"" width=3D"467" height=3D"=
+334" /></td>
+=09=09=09=09=09</tr>
+=09=09=09=09</tbody>
+=09=09=09</table>
+=09=09=09</td>
+=09=09</tr>
+=09=09<tr bgcolor=3D"#e1e8ed">
+=09=09=09<td class=3D"contenttxt" height=3D"48" align=3D"left" bgcolor=3D=
+"#ffffff"><img src=3D"http://www=2Emarketing-directo=2Einfo/novell/open=
+office_1009/plus=2Egif" alt=3D"" width=3D"27" height=3D"19" align=3D"ab=
+smiddle" />informaci=F3n en el tel=E9fono 902 734 853 o en <a href=3D"m=
+ailto:novell@pgrmt=2Einfo">novell@pgrmt=2Einfo</a></td>
+=09=09</tr>
+=09=09<tr>
+=09=09=09<td><img src=3D"http://www=2Emarketing-directo=2Einfo/novell/o=
+penoffice_1009/linefooter=2Egif" alt=3D"" width=3D"582" height=3D"35" /=
+></td>
+=09=09</tr>
+=09=09<tr bgcolor=3D"#e1e8ed">
+=09=09=09<td bgcolor=3D"#ffffff"><span class=3D"style2">Ley Org=E1nica =
+15/1999, de 13 de diciembre, de Protecci=F3n de Datos de Car=E1cter Per=
+sonal: Sus datos se encuentran en un fichero de PGR+ Marketing&Tecnolog=
+=EDa para fines comerciales orientados al sector de las TIC, usted pued=
+e ejercitar los derechos de acceso, rectificaci=F3n, cancelaci=F3n y op=
+osici=F3n enviando un correo electr=F3nico a marketing@pgrmt=2Ecom</spa=
+n></td>
+=09=09</tr>
+=09</tbody>
+</table>
+<IMG SRC=3D"http://ems6=2Enet/r/?E=3DXTC-4Y2-VJMLD-DD-MZW59-2" width=3D=
+"1" height=3D"1">
+

Added: james/hupa/trunk/server/src/main/resources/mime/5.msg
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/resources/mime/5.msg?rev=830933&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/resources/mime/5.msg (added)
+++ james/hupa/trunk/server/src/main/resources/mime/5.msg Thu Oct 29 13:24:15 2009
@@ -0,0 +1,48 @@
+Delivered-To: nobody@foo.com
+MIME-Version: 1.0
+Date: Thu, 15 Oct 2009 00:47:18 +0200
+Subject: FileUpload
+From: <no...@foo.com>
+To: nobody@foo.com
+Content-Type: multipart/alternative; boundary=000e0ce0eea8eb6b3b0475ecf175
+
+--000e0ce0eea8eb6b3b0475ecf175
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+Hola se=F1or
+
+Tengo dos preguntas. La primera es que haciendo exactamente lo que me ha
+dicho, consigu=E9 a arrancar el proyecto pero he tenido un error 500, no se
+donde viene porque las clases estan correctas (0 error en los "*.java"). Es=
+o
+no es el gran problema para mi, llegar=E9 a quitar el error 500 (http) ojal=
+a.
+Mi segunda pregunta (la mas importante) es donde se ponen los ficheros
+cargados en el servidor. Busco a partir del browser windows pero no hay
+huella del fichero, solo encuentro el fichero original pero su doble que
+deberia estar en alguna parte del lado del servidor, ni puta huella, lo
+siento  !!  He buscado en el codigo de la servlet responsable del
+cargamiento y no encontr=E9 ningun variable PATH que indicaria donde se pon=
+en
+los ficheros en el servidor.
+Gracias de contestar !
+
+--000e0ce0eea8eb6b3b0475ecf175
+Content-Type: text/html; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+Hola se=F1or <br><br>Tengo dos preguntas. La primera es que haciendo exacta=
+mente lo que me ha dicho, consigu=E9 a arrancar el proyecto pero he tenido =
+un error 500, no se donde viene porque las clases estan correctas (0 error =
+en los &quot;*.java&quot;). Eso no es el gran problema para mi, llegar=E9 a=
+ quitar el error 500 (http) ojala.=A0 Mi segunda pregunta (la mas important=
+e) es donde se ponen los ficheros cargados en el servidor. Busco a partir d=
+el browser windows pero no hay huella del fichero, solo encuentro el ficher=
+o original pero su doble que deberia estar en alguna parte del lado del ser=
+vidor, ni puta huella, lo siento=A0 !!=A0 He buscado en el codigo de la ser=
+vlet responsable del cargamiento y no encontr=E9 ningun variable PATH que i=
+ndicaria donde se ponen los ficheros en el servidor.<br>
+Gracias de contestar !<br>
+
+--000e0ce0eea8eb6b3b0475ecf175--
\ No newline at end of file

Added: james/hupa/trunk/server/src/main/resources/mime/6.msg
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/resources/mime/6.msg?rev=830933&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/resources/mime/6.msg (added)
+++ james/hupa/trunk/server/src/main/resources/mime/6.msg Thu Oct 29 13:24:15 2009
@@ -0,0 +1,116 @@
+Delivered-To: nobody@foo.com
+X-Sender: nobody@foo.com
+X-Apparently-To: nobody@foo.com
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="001517402a4207c4230473156a2a"
+From: Nobody <no...@foo.com>
+Date: Tue, 8 Sep 2009 15:48:17 -0300
+Subject: [gwt-contrib] Looking for Incubator sponsor for ProgressBar
+To: google-web-toolkit-contributors <gw...@foo.com>
+Reply-To: gwt@foo.com
+Sender: nobody@foo.com
+Precedence: bulk
+X-Google-Loop: groups
+Mailing-List: list nobody@foo.com;
+    contact nobody@foo.com
+List-Id: <google-web-toolkit-contributors.googlegroups.com>
+
+
+--001517402a4207c4230473156a2a
+Content-Type: multipart/alternative;
+    boundary="001517402a4207c41d0473156a28"
+
+--001517402a4207c41d0473156a28
+Content-Type: text/plain; charset=ISO-8859-1
+
+Hi,
+
+I'm looking for incubator sponsor for ProgressBar in order to evaluate a new
+method that simplifies the way used to change to progress bar style class.
+
+Sometimes it's necessary to change the progress bar style attributes
+(example: color) according the progress value.
+
+if (progressBar.getProgress() > 7) {
+//change the progress bar color to red
+} else if (progressBar.getProgress() > 4){
+//change the progress bar color to yellow
+} else {
+//change the progress bar color to green
+}
+
+The problem is that the ProgressBar has an element (barElement) that does
+not expose this option.
+In the current version it's necessary to access the child element in order
+to change its attribute.
+Example: progressBar.getElement().getFirstChildElement().setClassName("gwt-ProgressBar-red");
+
+I created a simple method that allows the user to set the bar style class in
+a easier way.
+Example: progressBar.setBarClassName("gwt-ProgressBar-red");
+
+Please see the file attached.
+I would appreciate any feedback.
+
+Thanks
+
+--~--~---------~--~----~------------~-------~--~----~
+http://groups.google.com/group/Google-Web-Toolkit-Contributors
+-~----------~----~----~----~------~----~------~--~---
+
+
+--001517402a4207c41d0473156a28
+Content-Type: text/html; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+Hi,<br><br>I&#39;m looking for incubator sponsor for ProgressBar in order
+to evaluate a new method that simplifies the way used to change to
+progress bar style class.<br><br>Sometimes it&#39;s necessary to change the=
+ progress bar style attributes (example: color) according the progress valu=
+e. <br>
+<br>if (progressBar.getProgress() &gt; 7) {<br>//change the progress bar co=
+lor to red<br> } else if (progressBar.getProgress() &gt; 4){<br>//change th=
+e progress bar color to yellow<br>} else {<br>//change the progress bar col=
+or to green<br>
+
+
+}<br><br>The problem is that the ProgressBar has an element (barElement) th=
+at does not expose this option. <br>In the current version it&#39;s necessa=
+ry to access the child element in order to change its attribute.<br>Example=
+: progressBar.getElement().<div id=3D":3cy" class=3D"ii gt">
+
+getFirstChildElement().setClassName(&quot;gwt-ProgressBar-red&quot;);<br>
+<br>I created a simple method that allows the user to set the bar style cla=
+ss in a easier way.<br>Example: progressBar.setBarClassName(&quot;gwt-Progr=
+essBar-red&quot;);<br><br>Please see the file attached.<br>I would apprecia=
+te any feedback.<br>
+
+
+<br>Thanks</div><br>
+--~--~---------~--~----~------------~-------~--~----~<br>
+http://groups.google.com/group/Google-Web-Toolkit-Contributors<br>
+-~----------~----~----~----~------~----~------~--~---<br>
+<br>
+
+--001517402a4207c41d0473156a28--
+
+--001517402a4207c4230473156a2a
+Content-Type: text/x-patch
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment;
+    filename="ProgressBar.java.diff"
+X-Attachment-Id: f_fzczv1ps0
+
+SW5kZXg6IHRydW5rLXJlYWQtb25seS9zcmMvY29tL2dvb2dsZS9nd3Qvd2lkZ2V0aWRlYXMvY2xp
+ZW50L1Byb2dyZXNzQmFyLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmstcmVhZC1vbmx5L3NyYy9j
+b20vZ29vZ2xlL2d3dC93aWRnZXRpZGVhcy9jbGllbnQvUHJvZ3Jlc3NCYXIuamF2YQkocmV2aXNp
+b24gMTcwOSkKKysrIHRydW5rLXJlYWQtb25seS9zcmMvY29tL2dvb2dsZS9nd3Qvd2lkZ2V0aWRl
+YXMvY2xpZW50L1Byb2dyZXNzQmFyLmphdmEJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw2ICszNTUs
+MTMgQEAKICAgfQogCiAgIC8qKgorICAgKiBDaGFuZ2UgdGhlIGNsYXNzIGF0dHJpYnV0ZSBvZiB0
+aGUgYmFyIGVsZW1lbnQuIAorICAgKi8KKyAgcHVibGljIHZvaWQgc2V0QmFyQ2xhc3NOYW1lKFN0
+cmluZyBjbGFzc05hbWUpIHsKKyAgICBiYXJFbGVtZW50LnNldENsYXNzTmFtZShjbGFzc05hbWUp
+OworICB9CisKKyAgLyoqCiAgICAqIEdldCB0aGUgdGV4dCBlbGVtZW50LgogICAgKiAKICAgICog
+QHJldHVybiB0aGUgdGV4dCBlbGVtZW50Cg==
+--001517402a4207c4230473156a2a--
+

Added: james/hupa/trunk/server/src/main/resources/mime/7.msg
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/resources/mime/7.msg?rev=830933&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/resources/mime/7.msg (added)
+++ james/hupa/trunk/server/src/main/resources/mime/7.msg Thu Oct 29 13:24:15 2009
@@ -0,0 +1,667 @@
+                                                                                                                                                                                                                                                            
+Return-Path: <no...@foo.com>
+MIME-Version: 1.0
+From: Mickey <no...@foo.com>
+Date: Thu, 29 Oct 2009 08:05:36 +0100
+Message-ID: <50...@mail.gmail.com>
+Subject: html with inline images
+Content-Type: multipart/related; boundary=001636d34797f0139c04770d8a75
+
+--001636d34797f0139c04770d8a75
+Content-Type: multipart/alternative; boundary=001636d34797f0139804770d8a74
+
+--001636d34797f0139804770d8a74
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+--=20
+
+
+
+
+
+
+
+
+
+
+
+--=20
+The last in Halloween customs
+
+--001636d34797f0139804770d8a74
+Content-Type: text/html; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+<div class=3D"gmail_quote"><br><div class=3D"gmail_quote">
+<div class=3D"gmail_quote">
+<div>
+<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0">
+<tbody>
+<tr>
+<td valign=3D"top">
+<blockquote style=3D"border-left: 2px solid rgb(16, 16, 255); padding-left:=
+ 5px; margin-left: 5px;"><br>
+<blockquote>
+<div>
+<div>
+<div>
+<p><span style=3D"font-size: 10pt;">=A0=A0</span></p></div>
+<div>
+<div>
+<div style=3D"border-style: solid none none; border-color: rgb(181, 196, 22=
+3) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium=
+; padding: 3pt 0cm 0cm;">
+<p><span style=3D"font-size: 10pt;">=A0</span></p></div></div></div>
+<div>
+<p><span style=3D"font-size: 10pt;"><br></span><span style=3D"font-size: 10=
+pt;">=A0</span><span style=3D"font-size: 10pt;"> </span></p></div></div>
+<div>
+<p>The last in Halloween customs<br>Zapatero
+<span style=3D"font-size: 10pt;"><br><span style=3D"color: black;"><img =
+src=3D"cid:1.1934304663@web28309.mail.ukl.yahoo.com" width=3D"200">
+</span></span></p></div></div>
+<div></div>
+<p><span style=3D"font-size: 10pt;">=A0</span> </p>
+<div></div>
+<div></div>
+<div></div>
+<p style=3D"margin-bottom: 12pt;"><span style=3D"font-size: 10pt;"><br><br =
+clear=3D"all"><br>-- </span></p>
+<div></div>
+<div></div>
+<p style=3D"margin-bottom: 12pt;"><span style=3D"font-size: 10pt;">=A0</spa=
+n> </p>
+<div></div></blockquote>
+<p><span style=3D"font-size: 10pt;">=A0</span> </p>
+<div></div>
+<div></div>
+<div></div></blockquote></td></tr></tbody></table><br></div></div><br></div=
+><br>
+</div><br><br clear=3D"all"><br>-- <br>--------------------------------<br>=
+<br>
+
+--001636d34797f0139804770d8a74--
+--001636d34797f0139c04770d8a75
+Content-Type: image/jpeg; name="Image.4FB480B138F7456382ABBD1EE7B0748A"
+Content-Transfer-Encoding: base64
+Content-ID: <1....@web28309.mail.ukl.yahoo.com>
+X-Attachment-Id: 0.1
+
+/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU
+FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo
+KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAM9AkwDASIA
+AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
+AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
+ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
+p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
+AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
+BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
+U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
+uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6PFOF
+NApwFADhThTQKcKAAU4U2nCgB6nFL1pFpwoAB1p9NHWnCgBKUUdOtLQA5RTxTV6U4UALR3oooAXt
+SrSUooAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
+AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
+iiigDHFKKaKcKAHDilpop1AC0opO1KKAHrTu9NUU6gBaWkWloAXrTwvem05elACinUlLQAooopaA
+DFOFIOaWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
+ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
+gAooooAxxTh1pppaAHUtJS0AL2pwpBS0APXpS0DpRmgBVpaQUtADqcvSm08UALS0CigBcUtJilFA
+C96WkFLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFIf1o6d6AFopuaUdaAFoo6jmigAoo
+ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
+gAooooAKKKKACiiigDHp1NFOFAC0tIKUUAOFLSCnDrQA4dKWj0ooAUU6gUUALThSKKdQA4UtIKUU
+AFLmiloABS0gpaACiiigAooooAKKKKACiikIz9aAFzRWPrviTSNCgaXVtQt7VFBJ8x8V5lqP7QPh
+OOf7Pp32i8fON8QRk/8AQxQB7LmkzXzr4k/aKSGArpenHzv706cdPZ64XXvjxr2owP8AZZVsW243
+LkflyaAPry5v7W1QvcXEUajrlqw7vx14asyVuNViUgZ+6x/kK+Adc13VtdkkfUtUurpn5+cgjr9K
+xpYI/IVfLIcdWpD0PuvXPjX4RslYW+pLM44JEUgx/wCO1yt7+0d4fgjVLSNryfHOAyf+hLXxukMa
+NmTd7YpzPGx+cFh2xRZjbXRH1NL+05B5m1NNZBnnLZ/pXZ+G/jvoWqJD9pP2V26lgzdvZa+JV8lW
+3YJ9AatNsfYWCDHQ0WFddj9J9I1ix1a1S4sLlJo2HBGR+hrRBFfnVofijWtHZf7K1KW1CdoT1/Ov
+XvAf7QmtafOsXiW3F5aZAMkSlpBz7sBTFp0PreiuT8F+PdD8XwqdKuQZSoZoXI3rkZwQCff8q6wY
+IGOlABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
+UUUAFFFFABRRRQAUUUUAZApwpgpwoAWlFJSigBwpRSDrTgKBjs0opAKcKBC9qUUnalFADxSimrTh
+QA4UuKQUtAC04U0U6gAooooAKKKKACiiigAoNFQX91HZWU91O22KFGkY+wGaAKWv69pugWTXWq3c
+NtEO8jhc/nXyt8Tf2iL3U45LHwrus4v4rkqrE8Hsy+/r2rjPj98TZ/GfiCWzs5WTTLd2RVDMA+Gb
+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
+--001636d34797f0139c04770d8a75--

Added: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java?rev=830933&view=auto
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java (added)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java Thu Oct 29 13:24:15 2009
@@ -0,0 +1,96 @@
+package org.apache.hupa.server;
+
+import java.net.URL;
+
+import javax.mail.Folder;
+import javax.mail.Message;
+
+import net.customware.gwt.dispatch.shared.ActionException;
+
+import org.apache.hupa.server.handler.AbstractHandlerTest;
+import org.apache.hupa.server.handler.FetchFoldersHandler;
+import org.apache.hupa.server.handler.FetchMessagesHandler;
+import org.apache.hupa.server.handler.LoginUserHandler;
+import org.apache.hupa.server.mock.MockIMAPFolder;
+import org.apache.hupa.server.mock.MockIMAPStore;
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.rpc.FetchFolders;
+import org.apache.hupa.shared.rpc.FetchFoldersResult;
+import org.apache.hupa.shared.rpc.FetchMessages;
+import org.apache.hupa.shared.rpc.FetchMessagesResult;
+import org.apache.hupa.shared.rpc.LoginUser;
+
+
+public class DemoModeTest extends AbstractHandlerTest {
+
+	private LoginUser demoUser = new LoginUser("demo", "demo");
+	
+	private InMemoryIMAPStoreCache memoryStore = new InMemoryIMAPStoreCache(logger, InMemoryIMAPStoreCache.DEMO_MODE, 143, false, provider);
+	
+    private LoginUserHandler loginUserHandler = new LoginUserHandler(memoryStore, logger, httpSessionProvider, settingsProvider);
+    
+    private FetchFoldersHandler fetchFoldersHandler = new FetchFoldersHandler(memoryStore, logger, httpSessionProvider);
+    
+    private FetchMessagesHandler fetchMessagesHandler = new FetchMessagesHandler(memoryStore, logger, httpSessionProvider);
+
+    public void testDemoLoginUser() {
+    	LoginUser badUser = new LoginUser("baduser", "whatever");
+        try {
+            loginUserHandler.execute(demoUser, null);
+        } catch (ActionException e) {
+            fail("Shouldn't throw an exception");
+            e.printStackTrace();
+        }
+        try {
+            loginUserHandler.execute(badUser, null);
+            fail("Should throw an exception");
+        } catch (ActionException e) {
+        }
+    }
+
+    public void testDemoFetchFolders() {
+        try {
+            loginUserHandler.execute(demoUser, null);
+            FetchFoldersResult result = fetchFoldersHandler.execute(new FetchFolders(), null);
+            assertEquals("In demo mode should be 3 folders predefined", 3, result.getFolders().size());
+        } catch (ActionException e) {
+            e.printStackTrace();
+            fail("Shouldn't throw an exception");
+        }
+    }
+
+    public void testReadMessageFile() throws Exception {
+    	URL url = Thread.currentThread().getContextClassLoader().getResource(MockIMAPFolder.DEMO_MODE_MESSAGES_LOCATION + "0.msg");
+    	assertNotNull("There aren't message files for demo mode, check that the files mime/\\d.msg are in your classpath", url);
+    }
+    
+    public void testLoadMessageFiles() throws Exception {
+    	MockIMAPStore store = new MockIMAPStore(session);
+    	MockIMAPFolder folder = new MockIMAPFolder("WHATEVER", store);
+    	folder.create(Folder.HOLDS_MESSAGES);
+    	folder.loadDemoMessages(session);
+    	assertTrue(folder.getMessages().length > 0);
+    	
+    	for (Message m: folder.getMessages()) {
+    		assertEquals(m, folder.getMessageByUID(folder.getUID(m)));
+    	}
+    	
+    }
+
+    public void testDemoFetchMessages() throws Exception {
+        try {
+            User user = loginUserHandler.execute(demoUser, null).getUser();
+            fetchFoldersHandler.execute(new FetchFolders(), null);
+            IMAPFolder folder = new IMAPFolder(user.getSettings().getInboxFolderName());
+        	FetchMessagesResult result = fetchMessagesHandler.execute(new FetchMessages(folder, 0, 10, null), null);
+        	assertEquals(8, result.getRealCount());
+        	assertEquals(8, result.getMessages().size());
+        	assertEquals(8, result.getRealUnreadCount());
+        } catch (ActionException e) {
+            e.printStackTrace();
+            fail("Shouldn't throw an exception");
+        }
+    }
+    
+}

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/ServerModulTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/ServerModulTest.java?rev=830933&r1=830932&r2=830933&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/ServerModulTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/ServerModulTest.java Thu Oct 29 13:24:15 2009
@@ -23,6 +23,9 @@
 
 import junit.framework.Assert;
 
+import org.apache.commons.io.FileUtils;
+import org.apache.hupa.server.InMemoryIMAPStoreCache;
+import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -77,4 +80,21 @@
 
     }
 
+    @Test
+    public void testLoadDemoProperties() throws Exception {
+        File tmp = File.createTempFile("foo", ".properties");
+        tmp.deleteOnExit();
+        FileUtils.writeStringToFile(tmp, "IMAPServerAddress=" + InMemoryIMAPStoreCache.DEMO_MODE);
+
+        System.setProperty(ServerModul.SYS_PROP_CONFIG_FILE, tmp.toString());
+        Properties p = module.loadProperties();
+        Assert.assertNotNull(p);
+        Assert.assertEquals(MockIMAPFolder.mockSettings.getInboxFolderName(), p.get("DefaultInboxFolder"));
+        Assert.assertEquals(MockIMAPFolder.mockSettings.getTrashFolderName(), p.get("DefaultTrashFolder"));
+        Assert.assertEquals(MockIMAPFolder.mockSettings.getSentFolderName(), p.get("DefaultSentFolder"));
+        
+        System.clearProperty(ServerModul.SYS_PROP_CONFIG_FILE);
+
+    }
+
 }

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java?rev=830933&r1=830932&r2=830933&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java Thu Oct 29 13:24:15 2009
@@ -20,42 +20,67 @@
 
 package org.apache.hupa.server.handler;
 
+import java.io.FileInputStream;
+import java.net.URL;
 import java.util.Properties;
 
 import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
 import javax.servlet.http.HttpSession;
 
+import junit.framework.TestCase;
+
+import org.apache.commons.logging.Log;
 import org.apache.hupa.server.mock.MockHttpSession;
+import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.apache.hupa.server.mock.MockIMAPStore;
 import org.apache.hupa.server.mock.MockIMAPStoreCache;
+import org.apache.hupa.server.mock.MockLog;
 import org.apache.hupa.shared.data.Settings;
 import org.apache.hupa.shared.data.User;
 
 import com.google.inject.Provider;
 
-import junit.framework.TestCase;
-
 public abstract class AbstractHandlerTest extends TestCase{
+	
     public final static String VALID_ID ="VALID_ID";
     
-    protected HttpSession session = new MockHttpSession(VALID_ID);
+    protected Log logger = new MockLog();
     
-    protected MockIMAPStoreCache storeCache = new MockIMAPStoreCache( new Provider<Session>() {
+    User user = createUser();
+    
+	protected Session session = Session.getInstance(new Properties());
+	protected Provider<Session> provider = new Provider<Session> () {
+		public Session get() {
+			return session;
+        }
+	};
 
+    protected HttpSession httpSession = new MockHttpSession(VALID_ID);
+    protected Provider<HttpSession> httpSessionProvider = new Provider<HttpSession>() {
+        public HttpSession get() {
+            return httpSession;
+        }
+        
+    };
+    
+	protected Provider<Settings> settingsProvider = new Provider<Settings> () {
+		public Settings get() {
+			return MockIMAPFolder.mockSettings;
+        }
+	};
+    
+    protected MockIMAPStoreCache storeCache = new MockIMAPStoreCache( new Provider<Session>() {
         public Session get() {
             Session session = Session.getDefaultInstance(new Properties());
             session.addProvider(MockIMAPStore.getProvider());
             return session;
         }
-        
     });
     
-    protected Provider<HttpSession> sessionProvider = new Provider<HttpSession>() {
-        public HttpSession get() {
-            return session;
-        }
-        
-    };
+    public void setUp() {
+        storeCache.addValidUser(user.getName(), user.getPassword());
+    }
     
     public void tearDown() {
         storeCache.clear();
@@ -68,4 +93,15 @@
         user.setSettings(new Settings());
         return user;
     }
+    
+	protected MimeMessage loadMessage(String msgFile) throws Exception {
+		msgFile = MockIMAPFolder.DEMO_MODE_MESSAGES_LOCATION + msgFile;
+	    URL url = Thread.currentThread().getContextClassLoader().getResource(msgFile);
+    	assertNotNull("Check that the file " + msgFile + " is in the classpath", url);
+    
+    	FileInputStream is = new FileInputStream(url.getFile());
+        return new MimeMessage(session, is);
+    }
+
+
 }

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java?rev=830933&r1=830932&r2=830933&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java Thu Oct 29 13:24:15 2009
@@ -39,14 +39,14 @@
     public void testCreate() throws MessagingException {
         User user = createUser();
 
-        session.setAttribute("user", user);
+        httpSession.setAttribute("user", user);
         storeCache.addValidUser(user.getName(),user.getPassword());
         IMAPFolder folder = createFolder();
         MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
         Folder f1 = store.getFolder(folder.getFullName());
         assertFalse("not exists",f1.exists());
         
-        CreateFolderHandler handler = new CreateFolderHandler(storeCache,new MockLog(),sessionProvider);
+        CreateFolderHandler handler = new CreateFolderHandler(storeCache,new MockLog(),httpSessionProvider);
         try {
             handler.execute(new CreateFolder(folder), null);
             Folder f = store.getFolder(folder.getFullName());
@@ -63,7 +63,7 @@
     public void testDuplicateFolder() throws MessagingException {
         User user = createUser();
 
-        session.setAttribute("user", user);
+        httpSession.setAttribute("user", user);
         storeCache.addValidUser(user.getName(),user.getPassword());
         IMAPFolder folder = createFolder();
         MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
@@ -71,7 +71,7 @@
         
         f1.create(Folder.HOLDS_FOLDERS);
 
-        CreateFolderHandler handler = new CreateFolderHandler(storeCache,new MockLog(),sessionProvider);
+        CreateFolderHandler handler = new CreateFolderHandler(storeCache,new MockLog(),httpSessionProvider);
         try {
             handler.execute(new CreateFolder(folder), null);
             fail("Folder already exists");
@@ -84,7 +84,7 @@
     
     public void testInvalidSessionId() {
         IMAPFolder folder = createFolder();
-        CreateFolderHandler handler = new CreateFolderHandler(storeCache,new MockLog(),sessionProvider);
+        CreateFolderHandler handler = new CreateFolderHandler(storeCache,new MockLog(),httpSessionProvider);
         try {
             handler.execute(new CreateFolder(folder), null);
             fail("Invalid session");
@@ -100,7 +100,7 @@
     private IMAPFolder createFolder() {
         IMAPFolder folder = new IMAPFolder();
         folder.setFullName("NewFolder");
-        folder.setDelimiter(String.valueOf(MockIMAPFolder.SEPERATOR));
+        folder.setDelimiter(String.valueOf(MockIMAPFolder.SEPARATOR));
         return folder;
     }
 }

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java?rev=830933&r1=830932&r2=830933&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java Thu Oct 29 13:24:15 2009
@@ -37,14 +37,14 @@
     public void testDelete() throws MessagingException {
         User user = createUser();
 
-        session.setAttribute("user", user);
+        httpSession.setAttribute("user", user);
         storeCache.addValidUser(user.getName(),user.getPassword());
         IMAPFolder folder = createFolder();
         MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
         Folder f1 = store.getFolder(folder.getFullName());
         f1.create(Folder.HOLDS_FOLDERS);
         
-        DeleteFolderHandler handler = new DeleteFolderHandler(storeCache,new MockLog(),sessionProvider);
+        DeleteFolderHandler handler = new DeleteFolderHandler(storeCache,new MockLog(),httpSessionProvider);
 
         try {
             handler.execute(new DeleteFolder(folder), null);
@@ -61,10 +61,10 @@
     public void testDeleteNonExistFolder() throws MessagingException {
         User user = createUser();
 
-        session.setAttribute("user", user);
+        httpSession.setAttribute("user", user);
         storeCache.addValidUser(user.getName(),user.getPassword());
         IMAPFolder folder = createFolder();
-        DeleteFolderHandler handler = new DeleteFolderHandler(storeCache,new MockLog(),sessionProvider);
+        DeleteFolderHandler handler = new DeleteFolderHandler(storeCache,new MockLog(),httpSessionProvider);
 
         try {
             handler.execute(new DeleteFolder(folder), null);
@@ -76,7 +76,7 @@
     
     public void testInvalidSessionId() {
         IMAPFolder folder = createFolder();
-        DeleteFolderHandler handler = new DeleteFolderHandler(storeCache,new MockLog(),sessionProvider);
+        DeleteFolderHandler handler = new DeleteFolderHandler(storeCache,new MockLog(),httpSessionProvider);
         try {
             handler.execute(new DeleteFolder(folder), null);
             fail("Invalid session");
@@ -92,7 +92,7 @@
     private IMAPFolder createFolder() {
         IMAPFolder folder = new IMAPFolder();
         folder.setFullName("NewFolder");
-        folder.setDelimiter(String.valueOf(MockIMAPFolder.SEPERATOR));
+        folder.setDelimiter(String.valueOf(MockIMAPFolder.SEPARATOR));
         return folder;
     }
 }

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java?rev=830933&r1=830932&r2=830933&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java Thu Oct 29 13:24:15 2009
@@ -42,11 +42,11 @@
 
     
     public void testDeleteFolderNotExists() throws MessagingException {
-        DeleteMessageByUidHandler handler = new DeleteMessageByUidHandler(storeCache,new MockLog(),sessionProvider);
+        DeleteMessageByUidHandler handler = new DeleteMessageByUidHandler(storeCache,new MockLog(),httpSessionProvider);
     
         User user = createUser();
         storeCache.addValidUser(user.getName(), user.getPassword());
-        session.setAttribute("user", user);
+        httpSession.setAttribute("user", user);
         IMAPFolder folder = new IMAPFolder();
         folder.setFullName("NOT_EXISTS");
         DeleteMessageByUid action = new DeleteMessageByUid(folder,new ArrayList<Long>());
@@ -61,11 +61,11 @@
     
     public void testDeleteFolderExistsAndNotTrash() throws MessagingException {
         Session s = Session.getInstance(new Properties());
-        DeleteMessageByUidHandler handler = new DeleteMessageByUidHandler(storeCache,new MockLog(),sessionProvider);
+        DeleteMessageByUidHandler handler = new DeleteMessageByUidHandler(storeCache,new MockLog(),httpSessionProvider);
     
         User user = createUser();
         storeCache.addValidUser(user.getName(), user.getPassword());
-        session.setAttribute("user", user);
+        httpSession.setAttribute("user", user);
         IMAPFolder folder = new IMAPFolder();
         folder.setFullName("EXISTS");
         MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
@@ -75,8 +75,8 @@
         f.create(Folder.HOLDS_FOLDERS);
         f.addMessages(new Message[] { new MimeMessage(s), new MimeMessage(s), new MimeMessage(s)});
         ArrayList<Long> uids = new ArrayList<Long>();
-        uids.add(new Long(1));
-        uids.add(new Long(3));
+        uids.add(0l);
+        uids.add(2l);
         DeleteMessageByUid action = new DeleteMessageByUid(folder, uids);
 
         MockIMAPFolder f3 = (MockIMAPFolder) store.getFolder(user.getSettings().getTrashFolderName());
@@ -98,11 +98,11 @@
     
     public void testDeleteFolderExistsAndIsTrash() throws MessagingException {
         Session s = Session.getInstance(new Properties());
-        DeleteMessageByUidHandler handler = new DeleteMessageByUidHandler(storeCache,new MockLog(),sessionProvider);
+        DeleteMessageByUidHandler handler = new DeleteMessageByUidHandler(storeCache,new MockLog(),httpSessionProvider);
     
         User user = createUser();
         storeCache.addValidUser(user.getName(), user.getPassword());
-        session.setAttribute("user", user);
+        httpSession.setAttribute("user", user);
         IMAPFolder folder = new IMAPFolder();
         folder.setFullName(user.getSettings().getTrashFolderName());
         MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
@@ -112,8 +112,8 @@
         f.create(Folder.HOLDS_FOLDERS);
         f.addMessages(new Message[] { new MimeMessage(s), new MimeMessage(s), new MimeMessage(s)});
         ArrayList<Long> uids = new ArrayList<Long>();
-        uids.add(new Long(1));
-        uids.add(new Long(3));
+        uids.add(0l);
+        uids.add(2l);
         DeleteMessageByUid action = new DeleteMessageByUid(folder, uids);
 
         try {



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org