|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.atlassian.jira.plugins.mail.handlers.AbstractMessageHandler
MailUtils
and MessageUserProcessor
.
@PublicSpi @Deprecated public abstract class AbstractMessageHandler
An AbstractMessageHandler that stores the parameter map.
TODO Insert summary about other responsibilities/ features of this class.saveAttachmentIfNecessary(javax.mail.Part, javax.mail.Message, com.atlassian.crowd.embedded.api.User, Issue, com.atlassian.jira.service.util.handler.MessageHandlerContext)
)} method.
This method eventually calls others which attempt to locate all parts that are possible candidates and should be kept
after it is categorised a part as a particular type. These types are attachAttachmentsParts(javax.mail.Part)
attachHtmlParts(javax.mail.Part)
attachInlineParts(javax.mail.Part)
is abstractattachMessagePart(javax.mail.Part, javax.mail.Message)
attachPlainTextParts(javax.mail.Part)
is
abstractMailUtils
class to assist with
simple tests.
Field Summary | |
---|---|
protected ApplicationProperties |
applicationProperties
Deprecated. |
String |
bulk
Deprecated. How to handle emails with header: "Precedence: bulk" |
String |
catchEmail
Deprecated. New issues without this recipient are ignored. |
protected static String |
CONTENT_TYPE_TEXT
Deprecated. |
boolean |
createUsers
Deprecated. Whether to create users if they do not exist |
protected boolean |
deleteEmail
Deprecated. This is a silly protected field that indicates whether the email should be deleted BUT only after the canHandleMessage() method is called. |
protected static String |
HEADER_IN_REPLY_TO
Deprecated. |
protected static String |
HEADER_MESSAGE_ID
Deprecated. |
static String |
KEY_BULK
Deprecated. |
static String |
KEY_CATCHEMAIL
Deprecated. |
static String |
KEY_CREATEUSERS
Deprecated. |
static String |
KEY_FINGER_PRINT
Deprecated. |
static String |
KEY_NOTIFYUSERS
Deprecated. |
static String |
KEY_REPORTER
Deprecated. |
protected org.apache.log4j.Logger |
log
Deprecated. |
protected MessageUserProcessor |
messageUserProcessor
Deprecated. |
boolean |
notifyUsers
Deprecated. |
protected Map<String,String> |
params
Deprecated. |
String |
reporteruserName
Deprecated. Username of default reporter, if sender not recognized. |
protected UserManager |
userManager
Deprecated. |
static String |
VALUE_BULK_DELETE
Deprecated. |
static String |
VALUE_BULK_FORWARD
Deprecated. |
static String |
VALUE_BULK_IGNORE
Deprecated. |
static String |
VALUE_FINGER_PRINT_ACCEPT
Deprecated. Value for parameter KEY_FINGER_PRINT which matches legacy behaviour, accepting emails even if this JIRA
sent them. |
static String |
VALUE_FINGER_PRINT_FORWARD
Deprecated. Default value for parameter KEY_FINGER_PRINT which matches forwards emails if this JIRA sent them,
falling back to VALUE_FINGER_PRINT_IGNORE if the forward email address is missing. |
static String |
VALUE_FINGER_PRINT_IGNORE
Deprecated. Value for parameter KEY_FINGER_PRINT which makes this handler ignore emails detected to have been sent
by this instance of JIRA. |
Constructor Summary | |
---|---|
protected |
AbstractMessageHandler()
Deprecated. use instead AbstractMessageHandler(com.atlassian.jira.user.util.UserManager,
com.atlassian.jira.config.properties.ApplicationProperties, com.atlassian.jira.JiraApplicationContext,
com.atlassian.jira.mail.MailLoggingManager, MessageUserProcessor) . We should promote dependency injection everywhere we
can. |
protected |
AbstractMessageHandler(ApplicationProperties applicationProperties,
JiraApplicationContext jiraApplicationContext)
Deprecated. Use AbstractMessageHandler(UserManager, ApplicationProperties,
JiraApplicationContext, MailLoggingManager, MessageUserProcessor) instead. Since v5.0. |
protected |
AbstractMessageHandler(UserManager userManager,
ApplicationProperties applicationProperties,
JiraApplicationContext jiraApplicationContext,
MailLoggingManager mailLoggingManager,
MessageUserProcessor messageUserProcessor)
Deprecated. |
Method Summary | |
---|---|
protected boolean |
attachAttachmentsParts(javax.mail.Part part)
Deprecated. Only attach an attachment part if it's content is not empty and if it is not a signature part. |
protected abstract boolean |
attachHtmlParts(javax.mail.Part part)
Deprecated. This method determines whether or not HTML parts should be attached. |
protected boolean |
attachInlineParts(javax.mail.Part part)
Deprecated. Only attach an inline part if it's content is not empty and if it is not a signature part. |
protected boolean |
attachMessagePart(javax.mail.Part messagePart,
javax.mail.Message containingMessage)
Deprecated. JRA-15133: if this part is an attached message, skip it if: the option to ignore attached messages is set to true, OR this message is in reply to the attached one (redundant info), OR if the message is not in reply to the attached one, skip if the content is empty This is required to handle the behaviour of some mail clients (e.g. |
protected abstract boolean |
attachPlainTextParts(javax.mail.Part part)
Deprecated. This method determines whether or not plain text parts should be attached. |
protected boolean |
attachRelatedPart(javax.mail.Part part)
Deprecated. JRA-15670: if this part is contained within a multipart/related message, keep it, as it may be a legitimate attachment, but without the content disposition set to a sensible value (e.g. |
protected boolean |
canHandleMessage(javax.mail.Message message,
MessageHandlerExecutionMonitor monitor)
Deprecated. Validation call to be made at the start of handleMessage(). It sets a global boolean deleteEmail, whether the email should be deleted if it cannot be handled. |
protected Collection<ChangeItemBean> |
createAttachmentsForMessage(javax.mail.Message message,
Issue issue,
MessageHandlerContext context)
Deprecated. Loops through all the Part s, and for each one of type Part.ATTACHMENT , call createAttachmentWithPart(javax.mail.Part, com.atlassian.crowd.embedded.api.User, Issue, MessageHandlerContext) . |
protected ChangeItemBean |
createAttachmentWithPart(javax.mail.Part part,
com.atlassian.crowd.embedded.api.User reporter,
Issue issue,
MessageHandlerContext context)
Deprecated. Create an attachment for a particular mime-part. |
protected com.atlassian.crowd.embedded.api.User |
createUserForReporter(javax.mail.Message message,
MessageHandlerContext context)
Deprecated. Tries to create a user using the details provided by the reporter. |
protected Issue |
getAssociatedIssue(javax.mail.Message message)
Deprecated. |
protected File |
getFileFromPart(javax.mail.Part part,
String issueKey)
Deprecated. |
protected String |
getFilenameForAttachment(javax.mail.Part part)
Deprecated. Handy method which takes a number of strategies when attempting to give a filename for a particular part. |
protected I18nHelper |
getI18nBean()
Deprecated. |
protected MessageUserProcessor |
getMessageUserProcessor()
Deprecated. |
protected String |
getPrecedenceHeader(javax.mail.Message message)
Deprecated. Extract the 'Precedence' header value from the message |
protected com.atlassian.crowd.embedded.api.User |
getReporter(javax.mail.Message message,
MessageHandlerContext context)
Deprecated. Get the reporter from the email address who sent the message, or else create a new user if creating users is set to true, or use the default reporter if one is specified. |
abstract boolean |
handleMessage(javax.mail.Message message,
MessageHandlerContext context)
Deprecated. Perform the specific work of this handler for the given message. |
void |
init(Map<String,String> params,
MessageHandlerErrorCollector errorCollector)
Deprecated. Will be called before any messages are to be handled. |
protected boolean |
isAutoSubmitted(javax.mail.Message message)
Deprecated. |
protected boolean |
isDeliveryStatus(javax.mail.Message message)
Deprecated. |
protected void |
recordMessageId(String type,
javax.mail.Message message,
Long issueId,
MessageHandlerContext context)
Deprecated. |
protected String |
renameFileIfInvalid(String filename,
Issue issue,
com.atlassian.crowd.embedded.api.User reporter,
MessageHandlerContext context)
Deprecated. Replaces all invalid characters in the filename using FileNameCharacterCheckerUtil.replaceInvalidChars(String,
char) with INVALID_CHAR_REPLACEMENT as the replacement character. |
protected boolean |
shouldAttach(javax.mail.Part part,
javax.mail.Message containingMessage)
Deprecated. This method determines if a particular part should be included added as an attachment to an issue. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final org.apache.log4j.Logger log
public static final String KEY_REPORTER
public static final String KEY_CATCHEMAIL
public static final String KEY_CREATEUSERS
public static final String KEY_NOTIFYUSERS
public static final String KEY_FINGER_PRINT
public static final String VALUE_FINGER_PRINT_ACCEPT
KEY_FINGER_PRINT
which matches legacy behaviour, accepting emails even if this JIRA
sent them.
public static final String VALUE_FINGER_PRINT_FORWARD
KEY_FINGER_PRINT
which matches forwards emails if this JIRA sent them,
falling back to VALUE_FINGER_PRINT_IGNORE
if the forward email address is missing.
public static final String VALUE_FINGER_PRINT_IGNORE
KEY_FINGER_PRINT
which makes this handler ignore emails detected to have been sent
by this instance of JIRA.
public static final String KEY_BULK
public static final String VALUE_BULK_IGNORE
public static final String VALUE_BULK_FORWARD
public static final String VALUE_BULK_DELETE
protected static final String CONTENT_TYPE_TEXT
protected static final String HEADER_MESSAGE_ID
protected static final String HEADER_IN_REPLY_TO
protected boolean deleteEmail
protected Map<String,String> params
public String reporteruserName
public String catchEmail
public String bulk
public boolean createUsers
public boolean notifyUsers
protected final UserManager userManager
protected final MessageUserProcessor messageUserProcessor
protected final ApplicationProperties applicationProperties
Constructor Detail |
---|
@Deprecated protected AbstractMessageHandler()
AbstractMessageHandler(com.atlassian.jira.user.util.UserManager,
com.atlassian.jira.config.properties.ApplicationProperties, com.atlassian.jira.JiraApplicationContext,
com.atlassian.jira.mail.MailLoggingManager, MessageUserProcessor)
. We should promote dependency injection everywhere we
can.
protected AbstractMessageHandler(ApplicationProperties applicationProperties, JiraApplicationContext jiraApplicationContext)
AbstractMessageHandler(UserManager, ApplicationProperties,
JiraApplicationContext, MailLoggingManager, MessageUserProcessor)
instead. Since v5.0.
protected AbstractMessageHandler(UserManager userManager, ApplicationProperties applicationProperties, JiraApplicationContext jiraApplicationContext, MailLoggingManager mailLoggingManager, MessageUserProcessor messageUserProcessor)
Method Detail |
---|
public void init(Map<String,String> params, MessageHandlerErrorCollector errorCollector)
MessageHandler
init
in interface MessageHandler
params
- configuration.errorCollector
- potential problems encountered during initialization of the handler
should be reported here. Depending on the run mode it may be e.g. displayed back to the user (when handler
is tested from UI) or logged to the file .public abstract boolean handleMessage(javax.mail.Message message, MessageHandlerContext context) throws javax.mail.MessagingException
handleMessage
in interface MessageHandler
message
- the message to check for handling.context
- user-friendly message handler should utilize this interface
to create issue, comments, users and provide feedback information about messages being
processed and problems being encountered. While MessageHandler-s are run
from UI (in TEST / dry-run mode) such invocations are not mutative (they do not create any
JIRA entities) and information provided by the handler is displayed back to the user
as a summary of the dry-run.
javax.mail.MessagingException
- if anything went wrong.protected boolean canHandleMessage(javax.mail.Message message, MessageHandlerExecutionMonitor monitor)
message
- message to check if it can be handled
protected Collection<ChangeItemBean> createAttachmentsForMessage(javax.mail.Message message, Issue issue, MessageHandlerContext context) throws IOException, javax.mail.MessagingException
Part
s, and for each one of type Part.ATTACHMENT
, call createAttachmentWithPart(javax.mail.Part, com.atlassian.crowd.embedded.api.User, Issue, MessageHandlerContext)
.
message
- The multipart message to search for attachments inissue
- The issue to create attachments in
IOException
- If there is a problem creating the attachment
javax.mail.MessagingException
- If there is a problem reading the messageprotected final boolean shouldAttach(javax.mail.Part part, javax.mail.Message containingMessage) throws javax.mail.MessagingException, IOException
part
- the part to potentially attachcontainingMessage
- the message which contained the part - may be null
IOException
- if javamail complains
javax.mail.MessagingException
- if javamail complainsprotected abstract boolean attachPlainTextParts(javax.mail.Part part) throws javax.mail.MessagingException, IOException
part
- the part to be attached - already determined to be type text/plain.
IOException
- if javamail complains
javax.mail.MessagingException
- if javamail complainsprotected abstract boolean attachHtmlParts(javax.mail.Part part) throws javax.mail.MessagingException, IOException
part
- the part to be attached - already determined to be type text/html.
IOException
- if javamail complains
javax.mail.MessagingException
- if javamail complainsprotected boolean attachInlineParts(javax.mail.Part part) throws javax.mail.MessagingException, IOException
part
- a mail part - assumed to have inline disposition
javax.mail.MessagingException
- if Content-Type checks fail
IOException
- if content checks failprotected boolean attachAttachmentsParts(javax.mail.Part part) throws javax.mail.MessagingException, IOException
part
- a mail part - assumed to have attachment disposition
javax.mail.MessagingException
- if Content-Type checks fail
IOException
- if content checks failprotected boolean attachMessagePart(javax.mail.Part messagePart, javax.mail.Message containingMessage) throws IOException, javax.mail.MessagingException
messagePart
- the Message part (already known to be of message content type)containingMessage
- the original message which contains messagePart
IOException
- if javamail complains
javax.mail.MessagingException
- if javamail complainsprotected boolean attachRelatedPart(javax.mail.Part part) throws IOException, javax.mail.MessagingException
part
- the part contained within the related message
IOException
- if javamail complains
javax.mail.MessagingException
- if javamail complainsprotected ChangeItemBean createAttachmentWithPart(javax.mail.Part part, com.atlassian.crowd.embedded.api.User reporter, Issue issue, MessageHandlerContext context) throws IOException
Part.ATTACHMENT
.
part
- part of disposition Part.ATTACHMENT
to create the attachment fromreporter
- issue reporterissue
- issue to create attachments in
ChangeItemBean
representing the added attachment, or null if no attachment was created
IOException
- If there is a problem creating the attachment in the filesystemprotected String getFilenameForAttachment(javax.mail.Part part) throws javax.mail.MessagingException, IOException
part
- The part being tested.
javax.mail.MessagingException
- relays any MessagingException thrown by a lower layer such as java mail
IOException
- relays any IOExceptionsprotected String renameFileIfInvalid(String filename, Issue issue, com.atlassian.crowd.embedded.api.User reporter, MessageHandlerContext context)
FileNameCharacterCheckerUtil.replaceInvalidChars(String,
char)
with INVALID_CHAR_REPLACEMENT
as the replacement character.
filename
- filename to check if its validissue
- issue the file is to be attachedreporter
- the author of the comment to add to the issue if the filename is invalid
INVALID_CHAR_REPLACEMENT
protected File getFileFromPart(javax.mail.Part part, String issueKey) throws IOException, javax.mail.MessagingException, org.ofbiz.core.entity.GenericEntityException
IOException
javax.mail.MessagingException
org.ofbiz.core.entity.GenericEntityException
protected com.atlassian.crowd.embedded.api.User getReporter(javax.mail.Message message, MessageHandlerContext context) throws javax.mail.MessagingException
message
- The email message to search through.
javax.mail.MessagingException
- If there is a problem getting the user who created the message.protected MessageUserProcessor getMessageUserProcessor()
@Nullable protected com.atlassian.crowd.embedded.api.User createUserForReporter(javax.mail.Message message, MessageHandlerContext context)
message
- The original e-mail message.context
- execution context
protected String getPrecedenceHeader(javax.mail.Message message) throws javax.mail.MessagingException
message
- message
javax.mail.MessagingException
- in case of extraction of the header failsprotected boolean isDeliveryStatus(javax.mail.Message message) throws javax.mail.MessagingException
javax.mail.MessagingException
protected boolean isAutoSubmitted(javax.mail.Message message) throws javax.mail.MessagingException
javax.mail.MessagingException
protected void recordMessageId(String type, javax.mail.Message message, Long issueId, MessageHandlerContext context) throws javax.mail.MessagingException
javax.mail.MessagingException
protected Issue getAssociatedIssue(javax.mail.Message message)
protected I18nHelper getI18nBean()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |