You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mime4j-dev@james.apache.org by mw...@apache.org on 2009/01/29 22:07:05 UTC
svn commit: r739014 - in /james/mime4j/trunk/src:
main/java/org/apache/james/mime4j/field/Fields.java
test/java/org/apache/james/mime4j/field/FieldsTest.java
Author: mwiederkehr
Date: Thu Jan 29 21:07:05 2009
New Revision: 739014
URL: http://svn.apache.org/viewvc?rev=739014&view=rev
Log:
MIME4J-100, MIME4J-108: methods for creating Content-Disposition fields
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Fields.java
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
Modified: james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Fields.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Fields.java?rev=739014&r1=739013&r2=739014&view=diff
==============================================================================
--- james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Fields.java (original)
+++ james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Fields.java Thu Jan 29 21:07:05 2009
@@ -62,6 +62,29 @@
Field.CONTENT_TRANSFER_ENCODING, contentTransferEncoding);
}
+ public static ContentDispositionField contentDisposition(
+ String contentDisposition) {
+ return parse(ContentDispositionField.class, Field.CONTENT_DISPOSITION,
+ contentDisposition);
+ }
+
+ public static ContentDispositionField contentDisposition(
+ String dispositionType, Map<String, String> parameters) {
+ if (parameters == null || parameters.isEmpty()) {
+ return parse(ContentDispositionField.class,
+ Field.CONTENT_DISPOSITION, dispositionType);
+ } else {
+ StringBuilder sb = new StringBuilder(dispositionType);
+ for (Map.Entry<String, String> entry : parameters.entrySet()) {
+ sb.append("; ");
+ sb.append(EncoderUtil.encodeHeaderParameter(entry.getKey(),
+ entry.getValue()));
+ }
+ String contentDisposition = sb.toString();
+ return contentDisposition(contentDisposition);
+ }
+ }
+
public static DateTimeField date(Date date) {
return date(Field.DATE, date, null);
}
Modified: james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldsTest.java?rev=739014&r1=739013&r2=739014&view=diff
==============================================================================
--- james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldsTest.java (original)
+++ james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldsTest.java Thu Jan 29 21:07:05 2009
@@ -29,6 +29,7 @@
import org.apache.james.mime4j.field.address.Group;
import org.apache.james.mime4j.field.address.Mailbox;
+import org.apache.james.mime4j.util.MimeUtil;
public class FieldsTest extends TestCase {
@@ -95,6 +96,50 @@
assertEquals("Content-Transfer-Encoding: base64", field.getRaw());
}
+ public void testContentDispositionString() throws Exception {
+ ContentDispositionField field = Fields.contentDisposition("inline; "
+ + "filename=\"testing 1 2.dat\"; size=12345; "
+ + "creation-date=\"Thu, 1 Jan 1970 00:00:00 +0000\"");
+ assertTrue(field.isValidField());
+
+ String expectedRaw = "Content-Disposition: inline; filename="
+ + "\"testing 1 2.dat\"; size=12345;\r\n creation-date="
+ + "\"Thu, 1 Jan 1970 00:00:00 +0000\"";
+ assertEquals(expectedRaw, field.getRaw());
+ }
+
+ public void testContentDispositionStringParameters() throws Exception {
+ Map<String, String> parameters = new HashMap<String, String>();
+ parameters.put("creation-date", MimeUtil.formatDate(new Date(0),
+ TimeZone.getTimeZone("GMT")));
+ ContentDispositionField field = Fields.contentDisposition("attachment",
+ parameters);
+ assertTrue(field.isValidField());
+
+ String expectedRaw = "Content-Disposition: attachment; "
+ + "creation-date=\"Thu, 1 Jan 1970 00:00:00\r\n +0000\"";
+ assertEquals(expectedRaw, field.getRaw());
+
+ assertEquals(new Date(0), field.getCreationDate());
+ }
+
+ public void testContentDispositionStringNullParameters() throws Exception {
+ ContentDispositionField field = Fields.contentDisposition("inline",
+ null);
+ assertTrue(field.isValidField());
+
+ String expectedRaw = "Content-Disposition: inline";
+ assertEquals(expectedRaw, field.getRaw());
+ }
+
+ public void testInvalidContentDisposition() throws Exception {
+ ContentDispositionField field = Fields.contentDisposition("inline; "
+ + "filename=some file.dat");
+ assertFalse(field.isValidField());
+
+ assertEquals("inline", field.getDispositionType());
+ }
+
public void testDateString() throws Exception {
DateTimeField field = Fields.date("Thu, 1 Jan 1970 00:00:00 +0000");
assertTrue(field.isValidField());
@@ -160,8 +205,8 @@
"Sm\370rebr\370d").getRaw());
String seventyEight = "12345678901234567890123456789012345678901234567890123456789012345678";
- assertEquals("Subject:\r\n " + seventyEight, Fields.subject(seventyEight)
- .getRaw());
+ assertEquals("Subject:\r\n " + seventyEight, Fields.subject(
+ seventyEight).getRaw());
String seventyNine = seventyEight + "9";
String expected = "Subject: =?US-ASCII?Q?1234567890123456789012345678901234?="