projects
/
org.ibex.mail.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3e8c49f
)
clean up Headers a bit
author
adam
<adam@megacz.com>
Sat, 17 Mar 2007 08:53:16 +0000
(08:53 +0000)
committer
adam
<adam@megacz.com>
Sat, 17 Mar 2007 08:53:16 +0000
(08:53 +0000)
darcs-hash:
20070317085316
-5007d-
f97ecf7a16e9f471563ad660a3e7c049d406f1f0
.gz
src/org/ibex/mail/Headers.java
patch
|
blob
|
history
diff --git
a/src/org/ibex/mail/Headers.java
b/src/org/ibex/mail/Headers.java
index
6094c79
..
2225919
100644
(file)
--- a/
src/org/ibex/mail/Headers.java
+++ b/
src/org/ibex/mail/Headers.java
@@
-44,10
+44,9
@@
public abstract class Headers extends JS.Immutable implements Fountain {
}
// FIXME
}
// FIXME
- public abstract String getString();
-
+ //public abstract String getString();
+ public abstract String[] getHeaderNames();
public abstract String get(String s);
public abstract String get(String s);
- public abstract java.util.Enumeration names();
public Headers set(String[] keyval) {
Headers ret = this;
public Headers set(String[] keyval) {
Headers ret = this;
@@
-56,29
+55,25
@@
public abstract class Headers extends JS.Immutable implements Fountain {
return ret;
}
public Headers remove(String key) { return set(key, null); /* FIXME */ }
return ret;
}
public Headers remove(String key) { return set(key, null); /* FIXME */ }
-
- public String getLowerCaseTrimmed(String s) {
- String ret = get(s);
- return ret==null ? null : ret.toLowerCase();
- }
-
+
public static class Original extends Headers {
private final Hash head = new Hash();
public static class Original extends Headers {
private final Hash head = new Hash();
- private final Hash headModified = new Hash();
public int lines;
public final boolean mime;
private String raw;
public int lines;
public final boolean mime;
private String raw;
- private StringFountain fountain;
+ private Fountain fountain;
+
+ //public String getString() { return raw; }
- public String getString() { return raw; }
public Stream getStream() { return fountain.getStream(); }
public Stream getStream() { return fountain.getStream(); }
- public int getLength() { return fountain.getLength(); }
+ public long getLength() { return fountain.getLength(); }
public int getNumLines() { return fountain.getNumLines(); }
public int getNumLines() { return fountain.getNumLines(); }
- public Stream getStreamWithCRLF() { return new Stream(raw+"\r\n"); }
+
public JS get(JS s) throws JSExn { return JSU.S(get(JSU.toString(s).toLowerCase())); }
public JS get(JS s) throws JSExn { return JSU.S(get(JSU.toString(s).toLowerCase())); }
- public java.util.Enumeration names() { return head.enumerateKeys(); }
-
+
+ public String[] getHeaderNames() { return (String[])head.dumpkeys(new String[head.size()]); }
public String get(String s) { return (String)head.get(s.toLowerCase()); }
public String get(String s) { return (String)head.get(s.toLowerCase()); }
+
public Original(Stream stream) throws Malformed { this(stream, false); }
public Original(Stream stream, boolean assumeMime) throws Malformed {
StringBuffer all = new StringBuffer();
public Original(Stream stream) throws Malformed { this(stream, false); }
public Original(Stream stream, boolean assumeMime) throws Malformed {
StringBuffer all = new StringBuffer();
@@
-96,13
+91,17
@@
public abstract class Headers extends JS.Immutable implements Fountain {
if (s.indexOf(':') == -1) throw new Malformed("Header line does not contain colon: " + s);
key = s.substring(0, s.indexOf(':')).toLowerCase();
for(int i=0; i<key.length(); i++)
if (s.indexOf(':') == -1) throw new Malformed("Header line does not contain colon: " + s);
key = s.substring(0, s.indexOf(':')).toLowerCase();
for(int i=0; i<key.length(); i++)
- if (key.charAt(i) < 33 || key.charAt(i) > 126)
- throw new Malformed("Header key \""+key+"\" contains invalid character \"" + key.charAt(i) + "\"");
+ if (key.charAt(i) < 33 || key.charAt(i) > 126) {
+ Log.error(null,all);
+ throw new Malformed("Header key \""+key+"\" contains invalid character \"" +
+ key.charAt(i) + "\" (0x"+Integer.toString(key.charAt(i), 16) +")");
+ }
String val = s.substring(s.indexOf(':') + 1).trim();
if (get(key) != null) val = get(key) + " " + val; // just append it to the previous one;
head.put(key, val);
}
this.raw = all.toString();
String val = s.substring(s.indexOf(':') + 1).trim();
if (get(key) != null) val = get(key) + " " + val; // just append it to the previous one;
head.put(key, val);
}
this.raw = all.toString();
+ // FIXME: be more efficient here?
this.fountain = new Fountain.StringFountain(this.raw);
this.lines = lines;
this.mime = assumeMime | (get("mime-version") != null && get("mime-version").trim().equals("1.0"));
this.fountain = new Fountain.StringFountain(this.raw);
this.lines = lines;
this.mime = assumeMime | (get("mime-version") != null && get("mime-version").trim().equals("1.0"));