Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 86411 invoked from network); 6 Aug 2005 03:05:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 6 Aug 2005 03:05:49 -0000 Received: (qmail 90867 invoked by uid 500); 6 Aug 2005 03:05:48 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 90838 invoked by uid 500); 6 Aug 2005 03:05:47 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Reply-To: "Derby Development" Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 90825 invoked by uid 99); 6 Aug 2005 03:05:47 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Aug 2005 20:05:47 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [222.146.51.83] (HELO smtp.basil.ocn.ne.jp) (222.146.51.83) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Aug 2005 20:05:36 -0700 Received: from Arkat (p11125-adsan11honb5-acca.tokyo.ocn.ne.jp [61.199.23.125]) by smtp.basil.ocn.ne.jp (Postfix) with ESMTP id 91032402B for ; Sat, 6 Aug 2005 12:05:43 +0900 (JST) Received: from 127.0.0.1 (AVG SMTP 7.0.338 [267.10.1]); Sat, 06 Aug 2005 12:08:21 +0900 Message-ID: <001d01c59a34$1a255bc0$0800a8c0@Arkat> From: "TomohitoNakayama" To: "Derby Development" References: <42EFB882.6040800@sun.com> <000b01c59814$64c3d250$0800a8c0@Arkat> <42F0EC92.4030107@sun.com> <001e01c598e5$dacb3390$0800a8c0@Arkat> <001201c59a30$1ae23ff0$0800a8c0@Arkat> Subject: Commited (Re: Testing at my site passed.(Re: Failed to downloaded , JIRA problem ? (Re: DERBY-412 (Connection.toString() formatting) patch uploaded))) Date: Sat, 6 Aug 2005 12:08:07 +0900 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_001A_01C59A7F.81B7D600" X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N ------=_NextPart_000_001A_01C59A7F.81B7D600 Content-Type: text/plain; format=flowed; charset=ISO-8859-1; reply-type=response Content-Transfer-Encoding: 7bit Hello. I have commited the patch "DERBY-412.diff". Attached file is log of commiting. Best regards. /* Tomohito Nakayama tomonaka@basil.ocn.ne.jp tomohito@rose.zero.ad.jp tmnk@apache.org Naka http://www5.ocn.ne.jp/~tomohito/TopPage.html */ ----- Original Message ----- From: "TomohitoNakayama" To: "Derby Development" Sent: Saturday, August 06, 2005 11:39 AM Subject: Testing at my site passed.(Re: Failed to downloaded , JIRA problem ? (Re: DERBY-412 (Connection.toString() formatting) patch uploaded)) > Hello David . > > I have executed derbyall. > > I found a error in unit test (unit/unit.fail:unit/T_Diagnosticable.unit) > but this seems not caused by your patch , because same error was found without your patch applied. > > I will commit your patch. Wait for a moment. > > Best regards. > > /* > > Tomohito Nakayama > tomonaka@basil.ocn.ne.jp > tomohito@rose.zero.ad.jp > tmnk@apache.org > > Naka > http://www5.ocn.ne.jp/~tomohito/TopPage.html > > */ > ----- Original Message ----- > From: "TomohitoNakayama" > To: "Derby Development" > Sent: Thursday, August 04, 2005 8:15 PM > Subject: Re: Failed to downloaded , JIRA problem ? (Re: DERBY-412 (Connection.toString() formatting) patch uploaded) > > >> Hello. >> >> I recevied it. >> //Oh , you removed local variables .... :o >> >> Well, I will start to run test at my site. >> >> Please wait for a while. >> >> Best regards. >> >> /* >> >> Tomohito Nakayama >> tomonaka@basil.ocn.ne.jp >> tomohito@rose.zero.ad.jp >> tmnk@apache.org >> >> Naka >> http://www5.ocn.ne.jp/~tomohito/TopPage.html >> >> */ >> ----- Original Message ----- >> From: "David Van Couvering" >> To: "Derby Development" >> Sent: Thursday, August 04, 2005 1:10 AM >> Subject: Re: Failed to downloaded , JIRA problem ? (Re: DERBY-412 (Connection.toString() formatting) patch uploaded) >> >> >>> Hi, Tomohito, here is the patch, I'll also try to put it on JIRA again >>> >>> TomohitoNakayama wrote: >>> >>>> Hello. >>>> >>>> I try to get http://issues.apache.org/jira/secure/attachment/12311443/DERBY-412.diff and failed. >>>> Jira seems to have some problem.... >>>> >>>> Next is log of downloading .... >>>> >>>> Request: >>>> GET http://issues.apache.org/jira/secure/attachment/12311443/DERBY-412.diff HTTP/1.0 >>>> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, >>>> application/vnd.ms-excel, application/msword, */* >>>> Referer: http://issues.apache.org/jira/browse/DERBY-412 >>>> Accept-Language: ja >>>> Proxy-Connection: Keep-Alive >>>> User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 2.0.40607) >>>> Host: issues.apache.org >>>> Cookie: seraph.os.cookie=GlMlJlOlPmMiPiKiOiIiRiMi; JSESSIONID=2E4F5F17ADA0CB9EEF8783685971D156 >>>> >>>> >>>> Response: >>>> HTTP/1.1 404 Could not find specified attachment: null >>>> Date: Wed, 03 Aug 2005 10:08:34 GMT >>>> Server: Apache-Coyote/1.1 >>>> Content-Type: text/html;charset=utf-8 >>>> Content-Length: 1075 >>>> Proxy-Connection: close >>>> Connection: close >>>> >>>> Apache Tomcat/5.0.30 - Error report

HTTP Status 404 - Could not find specified attachment: null


>>> noshade="noshade">

type Status report

message Could not find specified attachment: >>>> null

description The requested resource (Could not find specified attachment: null) is not >>>> available.


Apache Tomcat/5.0.30

>>>> >>>> >>>> Can you redo uploading new patch? >>>> >>>> Best regards. >>>> >>>> /* >>>> >>>> Tomohito Nakayama >>>> tomonaka@basil.ocn.ne.jp >>>> tomohito@rose.zero.ad.jp >>>> tmnk@apache.org >>>> >>>> Naka >>>> http://www5.ocn.ne.jp/~tomohito/TopPage.html >>>> >>>> */ >>>> ----- Original Message ----- From: "David Van Couvering" >>>> To: "Derby Development" >>>> Sent: Wednesday, August 03, 2005 3:16 AM >>>> Subject: DERBY-412 (Connection.toString() formatting) patch uploaded >>>> >>>> >>>>> FYI, I attached another patch for DERBY-412, based on Tomohito's >>>>> comments. Tomohito, would you be willing to review the changes? >>>>> >>>>> I don't think I can commit yet (I'm a little unclear on my current >>>>> status), so perhaps you could also commit it if it looks good, Tomohito? >>>>> >>>>> Thanks, >>>>> >>>>> David >>>>> >>>> >>>> >>>> -------------------------------------------------------------------------------- >>>> >>>> >>>> >>>> No virus found in this incoming message. >>>> Checked by AVG Anti-Virus. >>>> Version: 7.0.338 / Virus Database: 267.9.7/60 - Release Date: 2005/07/28 >>>> >>>> >>>> >>> >> >> >> -------------------------------------------------------------------------------- >> >> >>> Index: java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java >>> =================================================================== >>> --- java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java (revision 226839) >>> +++ java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java (working copy) >>> @@ -145,7 +145,7 @@ >>> private int resultSetId; >>> /** Cached string representation of the connection id */ >>> - private String idString; >>> + private String connString; >>> >>> >>> ////////////////////////////////////////////////////////// >>> @@ -1919,7 +1919,8 @@ >>> >>> /** >>> * Get a String representation that uniquely identifies >>> - * this connection >>> + * this connection. Include the same information that is >>> + * printed in the log for various trace and error messages. >>> * >>> * In Derby the "physical" connection is a LanguageConnectionContext, * or LCC. >>> @@ -1928,18 +1929,27 @@ >>> * Note that this is a big aid in debugging, because much of the >>> * engine trace and log code prints the LCC id. * >>> - * @return a string representation of the unique id for the >>> - * underlying LanguageConnectionContext >>> + * @return a string representation for this connection >>> */ >>> public String toString() >>> { >>> - if ( idString == null ) >>> + if ( connString == null ) >>> { >>> - idString = - Integer.toString(getLanguageConnection().getInstanceNumber()); >>> - } >>> + + LanguageConnectionContext lcc = getLanguageConnection(); >>> + >>> + connString = + this.getClass().getName() + "@" + this.hashCode() + " " + >>> + lcc.xidStr + + lcc.getTransactionExecute().getTransactionIdString() + + >>> "), " + >>> + lcc.lccStr + + Integer.toString(lcc.getInstanceNumber()) + "), " + >>> + lcc.dbnameStr + lcc.getDbname() + "), " + >>> + lcc.drdaStr + lcc.getDrdaID() + ") "; >>> + } - return idString; >>> + return connString; >>> } >>> >>> >>> Index: java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java >>> =================================================================== >>> --- java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java (revision 226839) >>> +++ java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java (working copy) >>> @@ -51,6 +51,7 @@ >>> >>> protected final BrokeredConnectionControl control; >>> private boolean isClosed; >>> + private String connString; >>> >>> /** >>> Maintain state as seen by this Connection handle, not the state >>> @@ -486,33 +487,30 @@ >>> } >>> /** >>> - * Get the string representation for the underlying physical >>> - * connection. >>> - * >>> - * When a physical connection is created, it is assigned a unique id - * that is unchanged for the lifetime of the >>> connection. When an - * application calls Connection.toString(), it gets the string - * representation of the >>> underlying physical connection, regardless - * of whether the application has a reference to the physical connection - >>> * itself or a reference to a proxy connection (aka brokered connection) - * that wraps the physical connection. >>> - * >>> - * Since this BrokeredConnection is a proxy connection, we return the >>> - * string value of its underlying physical connection >>> + * Get the string representation for this connection. Return >>> + * the class name/hash code and various debug information. >>> * - * @return unique string representation of the underlying >>> - * physical connection >>> + * @return unique string representation for this connection >>> */ >>> public String toString() { >>> - try >>> + if ( connString == null ) >>> { >>> - return getRealConnection().toString(); >>> + String wrappedString; >>> + try >>> + { >>> + wrappedString = getRealConnection().toString(); >>> + } >>> + catch ( SQLException e ) >>> + { >>> + wrappedString = ""; >>> + } >>> + + connString = this.getClass().getName() + "@" + this.hashCode() + >>> + ", Wrapped Connection = " + wrappedString; >>> } >>> - catch ( SQLException e ) >>> - { >>> - return ""; >>> - } >>> + + return connString; >>> } >>> >>> protected int getJDBCLevel() { return 2;} >>> Index: java/engine/org/apache/derby/jdbc/EmbedPooledConnection.java >>> =================================================================== >>> --- java/engine/org/apache/derby/jdbc/EmbedPooledConnection.java (revision 226839) >>> +++ java/engine/org/apache/derby/jdbc/EmbedPooledConnection.java (working copy) >>> @@ -63,8 +63,8 @@ >>> /** The id for this connection. */ >>> private int connectionId; >>> - /** String representation of id */ >>> - private String idString; >>> + /** the connection string */ >>> + private String connString; >>> private Vector eventListener; // who wants to know I am closed or error >>> >>> @@ -459,12 +459,18 @@ >>> */ >>> public String toString() >>> { >>> - if ( idString == null ) >>> + if ( connString == null ) >>> { >>> - idString = Integer.toString(connectionId); >>> - } >>> + String physicalConnString = isActive ? >>> + realConnection.toString() : ""; >>> + + connString = + this.getClass().getName() + "@" + this.hashCode() + " " + >>> + "(ID = " + connectionId + "), " + >>> + "Physical Connection = " + physicalConnString; >>> + } - return idString; >>> + return connString; >>> } >>> >>> } >>> Index: java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml >>> =================================================================== >>> --- java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml (revision 226839) >>> +++ java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml (working copy) >>> @@ -119,8 +119,9 @@ >>> srcdir="${derby.testing.src.dir}" >>> destdir="${out.dir}"> >>> >>> + >>> + >>> >>> - >>> >>> >>> >>> Index: java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java >>> =================================================================== >>> --- java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java (revision 226839) >>> +++ java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDataSource.java (working copy) >>> @@ -24,6 +24,8 @@ >>> import org.apache.derby.jdbc.EmbeddedSimpleDataSource; >>> import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource; >>> import org.apache.derby.jdbc.EmbeddedXADataSource; >>> +import org.apache.derby.iapi.jdbc.BrokeredConnection; >>> +import org.apache.derby.impl.jdbc.EmbedConnection; >>> >>> import java.sql.Connection; >>> import java.sql.ResultSet; >>> @@ -49,13 +51,33 @@ >>> import java.io.*; >>> import java.util.Hashtable; >>> import java.util.Iterator; >>> - >>> +import org.apache.oro.text.perl.Perl5Util; >>> import javax.naming.*; >>> import javax.naming.directory.*; >>> >>> public class checkDataSource >>> { + /** >>> + * A hashtable of opened connections. This is used when checking to >>> + * make sure connection strings are unique; we need to make sure all >>> + * the connections are closed when we are done, so they are stored >>> + * in this hashtable >>> + */ >>> protected static Hashtable conns = new Hashtable(); >>> + + /** >>> + * This is a utility that knows how to do pattern matching. Used >>> + * in checking the format of a connection string >>> + */ >>> + protected static Perl5Util p5u = new Perl5Util(); >>> + + /** The expected format of a connection string. In English: >>> + * "@ (XID=), (SESSION = ), >>> + * (DATABASE=), (DRDAID = )" >>> + */ >>> + private static final String CONNSTRING_FORMAT = "\\S+@[0-9]+ " + >>> + "\\(XID = .*\\), \\(SESSIONID = [0-9]+\\), " + >>> + "\\(DATABASE = [A-Za-z]+\\), \\(DRDAID = .+\\)"; >>> >>> public static void main(String[] args) throws Exception { >>> >>> @@ -841,8 +863,9 @@ >>> /** >>> * Make sure this connection's string is unique (DERBY-243) >>> */ >>> - protected void checkToString(Connection conn) throws Exception >>> + protected static void checkToString(Connection conn) throws Exception >>> { >>> + checkStringFormat(conn); >>> String str = conn.toString(); >>> >>> if ( conns.containsKey(str)) >>> @@ -853,11 +876,89 @@ >>> conns.put(str, conn); >>> } >>> + /** + * Check the format of a pooled connection >>> + **/ >>> + protected static void checkStringFormat(PooledConnection pc) throws Exception >>> + { >>> + String prefix = checkStringPrefix(pc); >>> + String connstr = pc.toString(); >>> + String format = "/" + prefix + + " \\(ID = [0-9]+\\), Physical Connection = " + >>> + "|" + CONNSTRING_FORMAT + "/"; >>> + + if ( ! p5u.match(format, connstr) ) >>> + { >>> + throw new Exception( "Connection.toString() (" + connstr + ") " + >>> + "does not match expected format (" + format + ")"); >>> + } >>> + } >>> + /** >>> + * Check the format for the toString() of a Connection that is an >>> + * instance of BrokeredConnection. This is different, as the Brokered >>> + * Connection prints out its class name and then the toString() value >>> + * of the underlying, wrapped connection. >>> + */ >>> + protected static void checkStringFormat(BrokeredConnection conn) throws Exception >>> + { >>> + String connstr = conn.toString(); >>> + String prefix = checkStringPrefix(connstr); >>> + + String format = "/" + prefix + ", Wrapped Connection = " + + "|" + CONNSTRING_FORMAT + "/"; >>> + >>> + if ( ! p5u.match(format, connstr) ) >>> + { >>> + throw new Exception( "Connection.toString() (" + connstr + ") " + >>> + "does not match expected format (" + format + ")"); >>> + } >>> + } >>> + + /** >>> + * Check the format of the connection string. This is the default test >>> + * to run if this is not a BrokeredConnection class >>> + */ >>> + protected static void checkStringFormat(Connection conn) throws Exception >>> + { >>> + String prefix = checkStringPrefix(conn); >>> + + String str = conn.toString(); + + // See if the connection string matches the format >>> pattern + if ( ! p5u.match("/" + CONNSTRING_FORMAT + "/", str) ) >>> + { >>> + throw new Exception( "Connection.toString() (" + str + ") " + >>> + "does not match expected format (" + CONNSTRING_FORMAT + ")"); >>> + } >>> + } >>> + + /** >>> + * Make sure the connection string starts with the right prefix, which >>> + * is the classname@hashcode. >>> + * >>> + * @return the expected prefix string, this is used in further string >>> + * format checking >>> + */ >>> + protected static String checkStringPrefix(Object conn) throws Exception >>> + { >>> + String connstr = conn.toString(); >>> + String prefix = conn.getClass().getName() + "@" + conn.hashCode(); >>> + if ( ! connstr.startsWith(prefix) ) >>> + { >>> + throw new Exception("Connection class and hash code for " + >>> + "connection string (" + connstr + ") does not match expected " + >>> + "(" + prefix + ")"); >>> + } + + return prefix; >>> + } >>> + + /** >>> * Clear out and close connections in the connections >>> * hashtable. */ >>> - protected void clearConnections() throws SQLException >>> + protected static void clearConnections() throws SQLException >>> { >>> java.util.Iterator it = conns.values().iterator(); >>> while ( it.hasNext() ) >>> @@ -872,7 +973,7 @@ >>> * Get connections using ij.startJBMS() and make sure >>> * they're unique >>> */ >>> - protected void checkJBMSToString() throws Exception >>> + protected static void checkJBMSToString() throws Exception >>> { >>> clearConnections(); >>> // Open ten connections rather than just two to >>> @@ -893,7 +994,7 @@ >>> * Check uniqueness of connection strings coming from a >>> * DataSouce >>> */ >>> - protected void checkToString(DataSource ds) throws Exception >>> + protected static void checkToString(DataSource ds) throws Exception >>> { >>> clearConnections(); >>> @@ -912,7 +1013,7 @@ >>> * We want to check the PooledConnection as well as the >>> * underlying physical connection. */ >>> - protected void checkToString(ConnectionPoolDataSource pds) >>> + protected static void checkToString(ConnectionPoolDataSource pds) >>> throws Exception >>> { >>> int numConnections = 10; >>> @@ -923,6 +1024,7 @@ >>> for ( int i = 0 ; i < numConnections ; i++ ) >>> { >>> PooledConnection pc = pds.getPooledConnection(); >>> + checkStringFormat(pc); >>> String str = pc.toString(); >>> if ( pooledConns.get(str) != null ) >>> { >>> @@ -952,26 +1054,12 @@ >>> pc.close(); >>> } >>> pooledConns.clear(); >>> - - // Now check that two connections from the same - // PooledConnection have the same string value >>> - PooledConnection pc = pds.getPooledConnection(); >>> - Connection conn = pc.getConnection(); >>> - String str = conn.toString(); >>> - conn = pc.getConnection(); >>> - if ( ! conn.toString().equals(str) ) >>> - { >>> - throw new Exception("Two connections from the " + >>> - "same pooled connection have different string " + >>> - "values: " + str + ", " + conn.toString()); >>> - } >>> - pc.close(); >>> } >>> /** >>> * Check uniqueness of strings for an XA data source >>> */ >>> - protected void checkToString(XADataSource xds) throws Exception >>> + protected static void checkToString(XADataSource xds) throws Exception >>> { >>> int numConnections = 10; >>> @@ -981,6 +1069,7 @@ >>> for ( int i = 0 ; i < numConnections ; i++ ) >>> { >>> XAConnection xc = xds.getXAConnection(); >>> + checkStringFormat(xc); >>> String str = xc.toString(); >>> if ( xaConns.get(str) != null ) >>> { >>> @@ -1010,20 +1099,6 @@ >>> xc.close(); >>> } >>> xaConns.clear(); >>> - - // Now check that two connections from the same - // XAConnection have the same string value >>> - XAConnection xc = xds.getXAConnection(); >>> - Connection conn = xc.getConnection(); >>> - String str = conn.toString(); >>> - conn = xc.getConnection(); >>> - if ( ! conn.toString().equals(str) ) >>> - { >>> - throw new Exception("Two connections from the " + >>> - "same pooled connection have different string " + >>> - "values: " + str + ", " + conn.toString()); >>> - } >>> - xc.close(); >>> } >>> protected static void checkConnectionPreCloseS(String dsName, Connection conn) throws SQLException { >>> >> >> >> -------------------------------------------------------------------------------- >> >> >> No virus found in this incoming message. >> Checked by AVG Anti-Virus. >> Version: 7.0.338 / Virus Database: 267.9.9/62 - Release Date: 2005/08/02 >> >> >> >> -- >> No virus found in this outgoing message. >> Checked by AVG Anti-Virus. >> Version: 7.0.338 / Virus Database: 267.10.0/63 - Release Date: 2005/08/03 >> >> >> >> >> -- >> No virus found in this incoming message. >> Checked by AVG Anti-Virus. >> Version: 7.0.338 / Virus Database: 267.10.0/63 - Release Date: 2005/08/03 >> > > > -- > No virus found in this outgoing message. > Checked by AVG Anti-Virus. > Version: 7.0.338 / Virus Database: 267.10.1/64 - Release Date: 2005/08/04 > > > > > -- > No virus found in this incoming message. > Checked by AVG Anti-Virus. > Version: 7.0.338 / Virus Database: 267.10.1/64 - Release Date: 2005/08/04 > ------=_NextPart_000_001A_01C59A7F.81B7D600 Content-Type: text/plain; format=flowed; name=commit412.log; reply-type=response Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="commit412.log" Sending = java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java=0A= Sending = java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java=0A= Sending = java/engine/org/apache/derby/jdbc/EmbedPooledConnection.java=0A= Sending = java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xm= l=0A= Sending = java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDat= aSource.java=0A= Transmitting file data .....=0A= Committed revision 230523.=0A= ------=_NextPart_000_001A_01C59A7F.81B7D600 Content-Type: text/plain; x-avg=cert; charset=us-ascii Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Description: "AVG certification" No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.338 / Virus Database: 267.10.1/64 - Release Date: 2005/08/04 ------=_NextPart_000_001A_01C59A7F.81B7D600--