package org.jboss.seam.mail.ui;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import javax.mail.internet.MimeUtility;
public class Header
{
private final String name;
private final String value;
private String sanitizedName;
private String sanitizedValue;
public Header(String name, String value)
{
this.name = name;
this.value = value;
}
public Header(String value)
{
this.value = value;
this.name = null;
}
public String getSanitizedName()
{
if (sanitizedName == null && name != null)
{
try
{
sanitizedName = sanitize(name);
}
catch (IOException e)
{
throw new IllegalStateException("Error santizing Header name " + name, e);
}
}
return sanitizedName;
}
public String getSanitizedValue()
{
if (sanitizedValue == null && value != null)
{
try
{
sanitizedValue = sanitizeValue(value);
}
catch (IOException e)
{
throw new IllegalStateException("Error santizing Header " + name + " value " + value, e);
}
}
return sanitizedValue;
}
/**
* Remove any line feed/new line characters
* @throws IOException
*/
public static String sanitize(String value) throws IOException
{
BufferedReader reader = new BufferedReader(new StringReader(value));
return reader.readLine();
}
/**
* Remove any line feed/new line characters from a (possibly) folded header
* @throws IOException
*/
public static String sanitizeValue(String value) throws IOException
{
// The user might have folded the header (stupid SMTP idiocy)
return sanitize(MimeUtility.unfold(value));
}
}