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 2003/05/19 06:13:14 UTC
cvs commit: jakarta-james/src/java/org/apache/james/mailrepository/filepair File_Persistent_Stream_Repository.java
noel 2003/05/18 21:13:13
Modified: src/java/org/apache/james/mailrepository Tag: branch_2_1_fcs
MimeMessageAvalonSource.java
MimeMessageJDBCSource.java
src/java/org/apache/james/mailrepository/filepair Tag:
branch_2_1_fcs
File_Persistent_Stream_Repository.java
Log:
Improve performance getting message size. Two changes: (a) cache the size, (b) use File.length() for file-based message stores.
Revision Changes Path
No revision
No revision
1.5.4.3 +10 -0 jakarta-james/src/java/org/apache/james/mailrepository/MimeMessageAvalonSource.java
Index: MimeMessageAvalonSource.java
===================================================================
RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/mailrepository/MimeMessageAvalonSource.java,v
retrieving revision 1.5.4.2
retrieving revision 1.5.4.3
diff -u -r1.5.4.2 -r1.5.4.3
--- MimeMessageAvalonSource.java 8 Mar 2003 21:54:04 -0000 1.5.4.2
+++ MimeMessageAvalonSource.java 19 May 2003 04:13:13 -0000 1.5.4.3
@@ -84,6 +84,8 @@
*/
String key = null;
+ private long size = -1;
+
public MimeMessageAvalonSource(StreamRepository sr, String repositoryName, String key) {
this.sr = sr;
this.repositoryName = repositoryName;
@@ -110,4 +112,12 @@
return sr.get(key);
}
+ public long getMessageSize() throws IOException {
+ if (size == -1) {
+ if (sr instanceof org.apache.james.mailrepository.filepair.File_Persistent_Stream_Repository) {
+ size = ((org.apache.james.mailrepository.filepair.File_Persistent_Stream_Repository) sr).getSize(key);
+ } else size = super.getMessageSize();
+ }
+ return size;
+ }
}
1.10.4.3 +14 -7 jakarta-james/src/java/org/apache/james/mailrepository/MimeMessageJDBCSource.java
Index: MimeMessageJDBCSource.java
===================================================================
RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/mailrepository/MimeMessageJDBCSource.java,v
retrieving revision 1.10.4.2
retrieving revision 1.10.4.3
diff -u -r1.10.4.2 -r1.10.4.3
--- MimeMessageJDBCSource.java 8 Mar 2003 21:54:04 -0000 1.10.4.2
+++ MimeMessageJDBCSource.java 19 May 2003 04:13:13 -0000 1.10.4.3
@@ -88,6 +88,8 @@
String key = null;
StreamRepository sr = null;
+ private long size = -1;
+
/**
* SQL used to retrieve the message body
*/
@@ -205,10 +207,11 @@
* Runs a custom SQL statement to check the size of the message body
*/
public synchronized long getMessageSize() throws IOException {
+ if (size != -1) return size;
if (retrieveMessageBodySizeSQL == null) {
//There was no SQL statement for this repository... figure it out the hard way
System.err.println("no SQL statement to find size");
- return super.getMessageSize();
+ return size = super.getMessageSize();
}
Connection conn = null;
PreparedStatement retrieveMessageSize = null;
@@ -225,16 +228,20 @@
throw new IOException("Could not find message");
}
- long size = rsRetrieveMessageSize.getLong(1);
+ size = rsRetrieveMessageSize.getLong(1);
InputStream in = null;
try {
if (sr != null) {
- in = sr.get(key);
- int len = 0;
- byte[] block = new byte[1024];
- while ((len = in.read(block)) > -1) {
- size += len;
+ if (sr instanceof org.apache.james.mailrepository.filepair.File_Persistent_Stream_Repository) {
+ size += ((org.apache.james.mailrepository.filepair.File_Persistent_Stream_Repository) sr).getSize(key);
+ } else {
+ in = sr.get(key);
+ int len = 0;
+ byte[] block = new byte[1024];
+ while ((len = in.read(block)) > -1) {
+ size += len;
+ }
}
}
} catch (Exception e) {
No revision
No revision
1.2.2.4 +9 -2 jakarta-james/src/java/org/apache/james/mailrepository/filepair/File_Persistent_Stream_Repository.java
Index: File_Persistent_Stream_Repository.java
===================================================================
RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/mailrepository/filepair/File_Persistent_Stream_Repository.java,v
retrieving revision 1.2.2.3
retrieving revision 1.2.2.4
diff -u -r1.2.2.3 -r1.2.2.4
--- File_Persistent_Stream_Repository.java 8 Mar 2003 21:54:04 -0000 1.2.2.3
+++ File_Persistent_Stream_Repository.java 19 May 2003 04:13:13 -0000 1.2.2.4
@@ -209,6 +209,13 @@
super.remove( key );
}
-}
-
+ public long getSize(final String key) {
+ try {
+ return getFile(key).length();
+ }
+ catch(IOException e) {
+ return 0;
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: james-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: james-dev-help@jakarta.apache.org