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/17 03:22:58 UTC
svn commit: r910801 - in /jakarta/jmeter/trunk: src/protocol/mail/META-INF/
src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/ xdocs/
Author: sebb
Date: Wed Feb 17 02:22:57 2010
New Revision: 910801
URL: http://svn.apache.org/viewvc?rev=910801&view=rev
Log:
Basic read-only JavaMail provider implementation for reading raw mail files
Added:
jakarta/jmeter/trunk/src/protocol/mail/META-INF/
jakarta/jmeter/trunk/src/protocol/mail/META-INF/javamail.providers
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java (with props)
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java (with props)
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java (with props)
Modified:
jakarta/jmeter/trunk/xdocs/changes.xml
Added: jakarta/jmeter/trunk/src/protocol/mail/META-INF/javamail.providers
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/META-INF/javamail.providers?rev=910801&view=auto
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/mail/META-INF/javamail.providers (added)
+++ jakarta/jmeter/trunk/src/protocol/mail/META-INF/javamail.providers Wed Feb 17 02:22:57 2010
@@ -0,0 +1 @@
+protocol=file; type=store; class=org.apache.jmeter.protocol.mail.sampler.MailFileStore; vendor=ASF
\ No newline at end of file
Added: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java?rev=910801&view=auto
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java (added)
+++ jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java Wed Feb 17 02:22:57 2010
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.jmeter.protocol.mail.sampler;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FilenameFilter;
+
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Store;
+import javax.mail.URLName;
+
+import org.apache.commons.io.IOUtils;
+
+public class MailFileFolder extends Folder {
+
+ private static final String FILENAME_FORMAT = "%d.msg";
+ private static final String FILENAME_REGEX = "\\d+\\.msg";
+ private boolean isOpen;
+ private final File folderPath;
+ private static final FilenameFilter FILENAME_FILTER = new FilenameFilter(){
+ public boolean accept(File dir, String name) {
+ return name.matches(FILENAME_REGEX);
+ }
+
+ };
+
+ public MailFileFolder(Store store, String path) {
+ super(store);
+ String base = store.getURLName().getHost(); // == ServerName from mail sampler
+ folderPath = new File(base,path);
+ }
+
+ public MailFileFolder(Store store, URLName path) {
+ this(store, path.getFile());
+ }
+
+ @Override
+ public void appendMessages(Message[] messages) throws MessagingException {
+ throw new MessagingException("Not supported");
+ }
+
+ @Override
+ public void close(boolean expunge) throws MessagingException {
+ this.store.close();
+ isOpen = false;
+ }
+
+ @Override
+ public boolean create(int type) throws MessagingException {
+ return false;
+ }
+
+ @Override
+ public boolean delete(boolean recurse) throws MessagingException {
+ return false;
+ }
+
+ @Override
+ public boolean exists() throws MessagingException {
+ return true;
+ }
+
+ @Override
+ public Message[] expunge() throws MessagingException {
+ return null;
+ }
+
+ @Override
+ public Folder getFolder(String name) throws MessagingException {
+ return this;
+ }
+
+ @Override
+ public String getFullName() {
+ return this.toString();
+ }
+
+ @Override
+ public Message getMessage(int index) throws MessagingException {
+ File f = new File(folderPath,String.format(FILENAME_FORMAT, Integer.valueOf(index)));
+ try {
+ FileInputStream fis = new FileInputStream(f);
+ try {
+ Message m = new MailFileMessage(this, fis, index);
+ return m;
+ } finally {
+ IOUtils.closeQuietly(fis);
+ }
+ } catch (FileNotFoundException e) {
+ throw new MessagingException("Cannot open folder: "+e.getMessage());
+ }
+ }
+
+ @Override
+ public int getMessageCount() throws MessagingException {
+ if (!isOpen) return -1;
+ File[] listFiles = folderPath.listFiles(FILENAME_FILTER);
+ return listFiles != null ? listFiles.length : 0;
+ }
+
+ @Override
+ public String getName() {
+ return this.toString();
+ }
+
+ @Override
+ public Folder getParent() throws MessagingException {
+ return null;
+ }
+
+ @Override
+ public Flags getPermanentFlags() {
+ return null;
+ }
+
+ @Override
+ public char getSeparator() throws MessagingException {
+ return '/';
+ }
+
+ @Override
+ public int getType() throws MessagingException {
+ return HOLDS_MESSAGES;
+ }
+
+ @Override
+ public boolean hasNewMessages() throws MessagingException {
+ return false;
+ }
+
+ @Override
+ public boolean isOpen() {
+ return isOpen;
+ }
+
+ @Override
+ public Folder[] list(String pattern) throws MessagingException {
+ return new Folder[]{this};
+ }
+
+ @Override
+ public void open(int mode) throws MessagingException {
+ if (mode != READ_ONLY) {
+ throw new MessagingException("Implementation only supports read-only access");
+ }
+ this.mode = mode;
+ isOpen = true;
+ }
+
+ @Override
+ public boolean renameTo(Folder newName) throws MessagingException {
+ return false;
+ }
+
+}
Propchange: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java?rev=910801&view=auto
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java (added)
+++ jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java Wed Feb 17 02:22:57 2010
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.jmeter.protocol.mail.sampler;
+
+import java.io.InputStream;
+
+import javax.mail.Folder;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+public class MailFileMessage extends MimeMessage {
+
+ protected MailFileMessage(Folder folder, InputStream in, int number)
+ throws MessagingException {
+ super(folder, in, number);
+ }
+
+}
Propchange: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java?rev=910801&view=auto
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java (added)
+++ jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java Wed Feb 17 02:22:57 2010
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.jmeter.protocol.mail.sampler;
+
+import javax.mail.Folder;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Store;
+import javax.mail.URLName;
+
+public class MailFileStore extends Store {
+
+ public MailFileStore(Session s, URLName u){
+ super(s,u);
+ }
+
+ @Override
+ protected boolean protocolConnect(String host, int port, String user, String password){
+ return true;
+ }
+
+ @Override
+ public Folder getDefaultFolder() throws MessagingException {
+ return new MailFileFolder(this,"");
+ }
+
+ @Override
+ public Folder getFolder(String path) throws MessagingException {
+ return new MailFileFolder(this, path);
+ }
+
+ @Override
+ public Folder getFolder(URLName path) throws MessagingException {
+ return new MailFileFolder(this, path);
+ }
+}
Propchange: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=910801&r1=910800&r2=910801&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Feb 17 02:22:57 2010
@@ -211,6 +211,7 @@
<li>Bug 47980 - hostname resolves to 127.0.0.1 - specifiying IP not possible</li>
<li>Bug 47943 - DisabledComponentRemover is not used in Start class</li>
<li>HeapDumper class for runtime generation of dumps</li>
+<li>Basic read-only JavaMail provider implementation for reading raw mail files</li>
</ul>
<h2>Non-functional changes</h2>
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org