Fixed FileCacheEntry factory
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@983804 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
143f3b0a0c
commit
1b58a2360d
|
@ -63,16 +63,20 @@ class BasicIdGenerator {
|
|||
this.rnd.setSeed(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
public synchronized String generate() {
|
||||
public synchronized void generate(final StringBuilder buffer) {
|
||||
this.count++;
|
||||
int rndnum = this.rnd.nextInt();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append(System.currentTimeMillis());
|
||||
buffer.append('.');
|
||||
Formatter formatter = new Formatter(buffer, Locale.US);
|
||||
formatter.format("%1$016x-%2$08x", this.count, rndnum);
|
||||
buffer.append('.');
|
||||
buffer.append(this.hostname);
|
||||
}
|
||||
|
||||
public String generate() {
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
generate(buffer);
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
|
|
|
@ -64,8 +64,25 @@ public class FileCacheEntryFactory implements HttpCacheEntryFactory {
|
|||
final Header[] headers,
|
||||
byte[] body) throws IOException {
|
||||
|
||||
String uid = this.idgen.generate();
|
||||
File file = new File(this.cacheDir, uid + "." + requestId);
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
this.idgen.generate(buffer);
|
||||
buffer.append('.');
|
||||
int len = Math.min(requestId.length(), 100);
|
||||
for (int i = 0; i < len; i++) {
|
||||
char ch = requestId.charAt(i);
|
||||
if (Character.isLetterOrDigit(ch) || ch == '.') {
|
||||
buffer.append(ch);
|
||||
} else {
|
||||
buffer.append('-');
|
||||
}
|
||||
}
|
||||
File file = new File(this.cacheDir, buffer.toString());
|
||||
FileOutputStream outstream = new FileOutputStream(file);
|
||||
try {
|
||||
outstream.write(body);
|
||||
} finally {
|
||||
outstream.close();
|
||||
}
|
||||
return new FileCacheEntry(
|
||||
requestDate,
|
||||
responseDate,
|
||||
|
|
Loading…
Reference in New Issue