huber 2003/01/07 15:17:35
Modified: src/scratchpad/src/org/apache/cocoon/mail MailAction.java
MailCommandBuilder.java MailCommandManager.java
MailCommandSelector.java
MailContentHandlerDelegate.java MailContext.java
Removed: src/scratchpad/src/org/apache/cocoon/mail MailGenerator.java
Log:
removed MailGenerator.java
fixed to make this package java 1.3 compileable
Revision Changes Path
1.4 +66 -18
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailAction.java
Index: MailAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailAction.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MailAction.java 7 Jan 2003 16:48:54 -0000 1.3
+++ MailAction.java 7 Jan 2003 23:17:34 -0000 1.4
@@ -53,6 +53,7 @@
* <http://www.apache.org/>.
*/
package org.apache.cocoon.mail;
+
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Iterator;
@@ -80,7 +81,14 @@
import org.apache.cocoon.mail.command.AbstractMailCommand;
/**
- * This action ...
+ * This action creates javamail objects, and puts XMLizable object wrappers
+ * of these objects into the request attribute map.
+ * <p>
+ * This action enables javamail access as action. It creates an http sesion,
+ * and puts the MailContext object into the session attributes.
+ * </p>
+ *
+ *@see MailContext
*
*@author Bernhard Huber
*@created 16. Dezember 2002
@@ -127,7 +135,7 @@
String folderName = request.getParameter("folder");
String userid = request.getParameter("mail-userid");
String password = request.getParameter("mail-password");
-
+
// assert mailContext is available
Session session = request.getSession(true);
MailContext mailContext = (MailContext)
session.getAttribute(MailContext.SESSION_MAIL_CONTEXT);
@@ -235,23 +243,62 @@
*@return The uRLNameExpanded value
*/
protected String getURLNameExpanded(String storeURLNameTemplate, String userid,
String password) {
- StringBuffer sb = new StringBuffer(storeURLNameTemplate);
+ String tokenStart = "''";
+ String tokenEnd = "''";
+ Properties filters = new Properties();
+ filters.put("mail-userid", userid);
+ filters.put("mail-passwd", password);
+
+ String filteredURLName = filter(tokenStart, tokenEnd, storeURLNameTemplate,
filters);
+ return filteredURLName;
+ }
+
+
+ /**
+ * replace occurences of <code>TOKEN_STARTxxxTOKEN_END</code> by value of entry
xxx in tokens table.
+ *
+ *@param tokenStart token start marker
+ *@param tokenEnd token end marker
+ *@param s the string examined
+ *@param tokens Description of the Parameter
+ *@return String replaced all tokenized entries of original String
s.
+ */
+ protected String filter(final String tokenStart, final String tokenEnd, String
s, Properties tokens) {
+ int index = s.indexOf(tokenStart);
+
+ if (index > -1) {
+ try {
+ StringBuffer b = new StringBuffer();
+ int i = 0;
+ String token = null;
+ String value = null;
+
+ do {
+ int endIndex = s.indexOf(tokenEnd, index + tokenStart.length()
+ 1);
+ if (endIndex == -1) {
+ break;
+ }
+ token = s.substring(index + tokenStart.length(), endIndex);
+ b.append(s.substring(i, index));
+ if (tokens.containsKey(token)) {
+ value = (String) tokens.get(token);
+ b.append(value);
+ i = index + tokenStart.length() + token.length() +
tokenEnd.length();
+ } else {
+ // just append TOKEN_START and search further
+ b.append(tokenStart);
+ i = index + tokenStart.length();
+ }
+ } while ((index = s.indexOf(tokenStart, i)) > -1);
- // perhaps find some better way than ''xxx'' placeholder encoding
- int indexOf;
- String template;
- template = "''mail-userid''";
- indexOf = sb.indexOf(template);
- if (indexOf != -1) {
- sb.replace(indexOf, indexOf + template.length(), userid);
- }
- template = "''mail-passwd''";
- indexOf = sb.indexOf(template);
- if (indexOf != -1) {
- sb.replace(indexOf, indexOf + template.length(), password);
+ b.append(s.substring(i));
+ return b.toString();
+ } catch (StringIndexOutOfBoundsException e) {
+ return s;
+ }
+ } else {
+ return s;
}
- String storeURLNameExpanded = sb.toString();
- return storeURLNameExpanded;
}
@@ -308,6 +355,7 @@
// marshal java mail objects
Logger logger = getLogger();
+ // make it an optional parameter?
String datePattern = "dd.MM.yyyy HH:mm";
SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
1.2 +1 -3
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailCommandBuilder.java
Index: MailCommandBuilder.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailCommandBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MailCommandBuilder.java 6 Jan 2003 21:51:20 -0000 1.1
+++ MailCommandBuilder.java 7 Jan 2003 23:17:34 -0000 1.2
@@ -52,8 +52,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.LogEnabled;
1.2 +21 -23
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailCommandManager.java
Index: MailCommandManager.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailCommandManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MailCommandManager.java 6 Jan 2003 21:51:20 -0000 1.1
+++ MailCommandManager.java 7 Jan 2003 23:17:34 -0000 1.2
@@ -50,8 +50,8 @@
*/
package org.apache.cocoon.mail;
-import java.util.List;
import java.io.IOException;
+import java.util.List;
import javax.mail.FetchProfile;
import javax.mail.Folder;
import javax.mail.Message;
@@ -397,7 +397,7 @@
this.aFolder = mctx.getTheFolder(CONTEXT_FOLDER_ENTRY);
try {
- String fp = (String) ctx.get("param:" + CONTEXT_FOLDER_PATTERN_ENTRY);
+ this.folderPattern = (String) ctx.get("param:" +
CONTEXT_FOLDER_PATTERN_ENTRY);
} catch (ContextException ce) {
// use default folder pattern
this.folderPattern = MailCommandManager.DEFAULT_FOLDER_PATTERN;
@@ -470,10 +470,10 @@
public void execute() throws MessagingException {
UIDFolder uidFolder = (UIDFolder) aFolder;
MailCommandManager.openFolder(aFolder, Folder.READ_ONLY);
-
+
// add folder, too
addResult(aFolder);
-
+
Message msg = uidFolder.getMessageByUID(msgUID);
addResult(msg);
}
@@ -511,8 +511,8 @@
this.aFolder = mctx.getTheFolder(CONTEXT_FOLDER_ENTRY);
try {
- Integer i = (Integer) ctx.get("param-integer:" + CONTEXT_ID_ENTRY);
- this.msgId = i.intValue();
+ Integer i = (Integer) ctx.get("param-integer:" + CONTEXT_ID_ENTRY);
+ this.msgId = i.intValue();
} catch (ContextException ce) {
String message = "Missing mandatory context entry " +
String.valueOf(CONTEXT_ID_ENTRY);
throw new ContextException(message);
@@ -578,6 +578,7 @@
i = (Integer) ctx.get("param-integer:" + CONTEXT_PARTID_ENTRY);
if (i == null) {
String message = "Missing mandatory context entry " +
String.valueOf(CONTEXT_PARTID_ENTRY);
+ throw new ContextException(message);
}
this.partId = i.intValue();
}
@@ -590,13 +591,13 @@
*/
public void execute() throws MessagingException {
MailCommandManager.openFolder(aFolder, Folder.READ_ONLY);
-
+
// add folder, too
addResult(aFolder);
-
- // get the message
+
+ // get the message
Message msg = aFolder.getMessage(msgId);
-
+
if (msg == null) {
String message = "Cannot get message for id " +
String.valueOf(msgId);
getLogger().warn(message);
@@ -663,9 +664,7 @@
/* proposed searchTermString syntax
{header}:comp-op:{value} & {header}:comp-op:{value} | .....
-
eg. subject:eq:cocoon & date::MM/DD/2002
-
header:com-op:
subject:[cont|ncont]:
sender:[cont|ncont]:
@@ -676,7 +675,6 @@
cc:
age-in-days:[is|nis|gt|lt]:
reply-to:[cont|ncont]:
-
*/
}
@@ -691,7 +689,7 @@
// add folder, too
addResult(aFolder);
-
+
Message[] msgs = aFolder.search(searchTerm);
addResult(msgs);
}
1.2 +3 -0
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailCommandSelector.java
Index: MailCommandSelector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailCommandSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MailCommandSelector.java 6 Jan 2003 21:51:20 -0000 1.1
+++ MailCommandSelector.java 7 Jan 2003 23:17:34 -0000 1.2
@@ -79,6 +79,9 @@
<map:when test="
*/
+/**
+ * @deprecated use RequestAttributeSelector, RequestParameterSelector, or
ParameterSelector instead.
+ */
public class MailCommandSelector extends AbstractSwitchSelector {
public Object getSelectorContext(Map objectModel, Parameters parameters) {
1.2 +6 -58
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailContentHandlerDelegate.java
Index: MailContentHandlerDelegate.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailContentHandlerDelegate.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MailContentHandlerDelegate.java 6 Jan 2003 21:51:20 -0000 1.1
+++ MailContentHandlerDelegate.java 7 Jan 2003 23:17:34 -0000 1.2
@@ -55,7 +55,6 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
-import java.util.Locale;
import javax.mail.Address;
import javax.mail.Flags;
import javax.mail.Folder;
@@ -72,7 +71,6 @@
import javax.mail.internet.ParseException;
import org.apache.avalon.excalibur.xml.XMLizable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
@@ -379,7 +377,7 @@
addAttribute("is-directory", (folder.getType() & Folder.HOLDS_FOLDERS) != 0
? "yes" : "no");
if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) {
- addAttribute("holds-messages", "yes" );
+ addAttribute("holds-messages", "yes");
addAttribute("has-new-messages", folder.hasNewMessages() ? "yes" :
"no");
addAttribute("total-messages",
String.valueOf(folder.getMessageCount()));
addAttribute("new-messages",
String.valueOf(folder.getNewMessageCount()));
@@ -546,7 +544,7 @@
if (s != null) {
addAttribute("primary-type", s.toLowerCase());
}
-
+
// secondary part only
s = ct.getSubType();
if (s != null) {
@@ -928,31 +926,6 @@
/**
- * Sets the simpleDateFormat attribute of the MessageEnvelopeXMLizer object
- *
- *@param pattern The new simpleDateFormat value
- *@param country The new simpleDateFormat value
- */
- public void setSimpleDateFormat(String pattern, String country) {
- try {
- if (pattern != null && country != null) {
- Locale locale = new Locale(country);
- sdf = new SimpleDateFormat(pattern, locale);
- } else if (pattern != null) {
- sdf = new SimpleDateFormat(pattern);
- } else {
- sdf = null;
- }
- } catch (Exception e) {
- String message = "Cannot create SimpleDateFormatter for " +
- "pattern " + String.valueOf(pattern) + ", and " +
- "country " + String.valueOf(country);
- getLogger().warn(message, e);
- }
- }
-
-
- /**
* Gets the simpleDateFormat attribute of the MessageEnvelopeXMLizer object
*
*@param sdf Description of the Parameter
@@ -1014,31 +987,6 @@
*/
public void setSimpleDateFormat(SimpleDateFormat sdf) {
this.sdf = sdf;
- }
-
-
- /**
- * Sets the simpleDateFormat attribute of the MessageXMLizer object
- *
- *@param pattern The new simpleDateFormat value
- *@param country The new simpleDateFormat value
- */
- public void setSimpleDateFormat(String pattern, String country) {
- try {
- if (pattern != null && country != null) {
- Locale locale = new Locale(country);
- sdf = new SimpleDateFormat(pattern, locale);
- } else if (pattern != null) {
- sdf = new SimpleDateFormat(pattern);
- } else {
- sdf = null;
- }
- } catch (Exception e) {
- String message = "Cannot create SimpleDateFormatter for " +
- "pattern " + String.valueOf(pattern) + ", and " +
- "country " + String.valueOf(country);
- getLogger().warn(message, e);
- }
}
1.2 +5 -24
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailContext.java
Index: MailContext.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/mail/MailContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MailContext.java 6 Jan 2003 21:51:20 -0000 1.1
+++ MailContext.java 7 Jan 2003 23:17:34 -0000 1.2
@@ -50,38 +50,19 @@
*/
package org.apache.cocoon.mail;
-import java.io.IOException;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.Set;
import javax.mail.Folder;
-import javax.mail.Message;
import javax.mail.MessagingException;
-import javax.mail.Provider;
import javax.mail.Store;
-import javax.mail.URLName;
//import javax.mail.Session;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.context.DefaultContext;
-import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.generation.ComposerGenerator;
-import org.apache.cocoon.mail.command.AbstractMailCommand;
-import org.xml.sax.SAXException;
/**
* Encapsulation of context info of this webmail application
@@ -213,12 +194,12 @@
store.connect();
}
final String DEFAULT_FOLDER_NAME = "~";
-
+
// empty folder name is specified by empty string, or "~"
- if (folderName.equals( DEFAULT_FOLDER_NAME) ||
folderName.length() == 0) {
+ if (folderName.equals(DEFAULT_FOLDER_NAME) ||
folderName.length() == 0) {
folder = store.getDefaultFolder();
} else {
- folder = store.getFolder(folderName);
+ folder = store.getFolder(folderName);
}
// save the Folder, for later access
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]