You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2010/02/22 20:31:30 UTC
svn commit: r915029 -
/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
Author: sebb
Date: Mon Feb 22 19:31:29 2010
New Revision: 915029
URL: http://svn.apache.org/viewvc?rev=915029&view=rev
Log:
Always default the encoding
Allow for nested MimeMultipart message parts
Don't include '@' in toString() if user name was not provided
Modified:
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
Modified: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java?rev=915029&r1=915028&r2=915029&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java (original)
+++ jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java Mon Feb 22 19:31:29 2010
@@ -68,6 +68,8 @@
private final static String STORE_MIME_MESSAGE = "storeMimeMessage";
//-
+ private static final String RFC_822_DEFAULT_ENCODING = "iso-8859-1"; // RFC 822 uses ascii per default
+
public static final String DEFAULT_PROTOCOL = "pop3"; // $NON-NLS-1$
public static final int ALL_MESSAGES = -1; // special value
@@ -148,6 +150,8 @@
final String contentType = message.getContentType();
child.setContentType(contentType);// Store the content-type
+ child.setDataEncoding(RFC_822_DEFAULT_ENCODING); // RFC 822 uses ascii per default
+ child.setEncodingAndType(contentType);// Parse the content-type
if (isStoreMimeMessage()) {
// Don't save headers - they are already in the raw message
@@ -155,10 +159,7 @@
message.writeTo(bout);
child.setResponseData(bout.toByteArray()); // Save raw message
child.setDataType(SampleResult.TEXT);
- child.setDataEncoding("iso-8859-1"); // RFC 822 uses ascii
- child.setEncodingAndType(contentType);// Parse the content-type
} else {
- child.setEncodingAndType(contentType);// Parse the content-type
@SuppressWarnings("unchecked") // Javadoc for the API says this is OK
Enumeration<Header> hdrs = message.getAllHeaders();
while(hdrs.hasMoreElements()){
@@ -250,38 +251,45 @@
cdata.append(NEW_LINE);
Object content = message.getContent();
if (content instanceof MimeMultipart) {
- MimeMultipart mmp = (MimeMultipart) content;
- String preamble = mmp.getPreamble();
- if (preamble != null ){
- cdata.append(preamble);
- }
- child.setResponseData(cdata.toString(),child.getDataEncodingNoDefault());
- int count = mmp.getCount();
- for (int j=0; j<count;j++){
- BodyPart bodyPart = mmp.getBodyPart(j);
- final Object bodyPartContent = bodyPart.getContent();
- final String contentType = bodyPart.getContentType();
- SampleResult sr = new SampleResult();
- sr.setSampleLabel("Part: "+j);
- sr.setContentType(contentType);
- sr.setEncodingAndType(contentType);
- sr.sampleStart();
- if (bodyPartContent instanceof InputStream){
- sr.setResponseData(IOUtils.toByteArray((InputStream) bodyPartContent));
- } else {
- sr.setResponseData(bodyPartContent.toString(),sr.getDataEncodingNoDefault());
- }
- sr.setResponseOK();
- sr.sampleEnd();
- child.addSubResult(sr);
- }
+ appendMultiPart(child, cdata, (MimeMultipart) content);
+ } else if (content instanceof InputStream){
+ child.setResponseData(IOUtils.toByteArray((InputStream) content));
} else {
- if (content instanceof InputStream){
- child.setResponseData(IOUtils.toByteArray((InputStream) content));
+ cdata.append(content);
+ child.setResponseData(cdata.toString(),child.getDataEncodingNoDefault());
+ }
+ }
+
+ private void appendMultiPart(SampleResult child, StringBuilder cdata,
+ MimeMultipart mmp) throws MessagingException, IOException {
+ String preamble = mmp.getPreamble();
+ if (preamble != null ){
+ cdata.append(preamble);
+ }
+ child.setResponseData(cdata.toString(),child.getDataEncodingNoDefault());
+ int count = mmp.getCount();
+ for (int j=0; j<count;j++){
+ BodyPart bodyPart = mmp.getBodyPart(j);
+ final Object bodyPartContent = bodyPart.getContent();
+ final String contentType = bodyPart.getContentType();
+ SampleResult sr = new SampleResult();
+ sr.setSampleLabel("Part: "+j);
+ sr.setContentType(contentType);
+ sr.setDataEncoding(RFC_822_DEFAULT_ENCODING);
+ sr.setEncodingAndType(contentType);
+ sr.sampleStart();
+ if (bodyPartContent instanceof InputStream){
+ sr.setResponseData(IOUtils.toByteArray((InputStream) bodyPartContent));
+ } else if (bodyPartContent instanceof MimeMultipart){
+ appendMultiPart(sr, cdata, (MimeMultipart) bodyPartContent);
} else {
- cdata.append(content);
- child.setResponseData(cdata.toString(),child.getDataEncodingNoDefault());
+ sr.setResponseData(bodyPartContent.toString(),sr.getDataEncodingNoDefault());
}
+ sr.setResponseOK();
+ if (sr.getEndTime()==0){// not been set by any child samples
+ sr.sampleEnd();
+ }
+ child.addSubResult(sr);
}
}
@@ -450,8 +458,11 @@
StringBuilder sb = new StringBuilder();
sb.append(getServerType());
sb.append("://");
- sb.append(getUserName());
- sb.append("@");
+ String name = getUserName();
+ if (name.length() > 0){
+ sb.append(name);
+ sb.append("@");
+ }
sb.append(getServer());
int port=getPortAsInt();
if (port != -1){
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org