com.atlassian.jira.plugins.mail.handlers
Class CreateIssueHandler

java.lang.Object
  extended by com.atlassian.jira.plugins.mail.handlers.AbstractMessageHandler
      extended by com.atlassian.jira.plugins.mail.handlers.CreateIssueHandler
All Implemented Interfaces:
MessageHandler

public class CreateIssueHandler
extends AbstractMessageHandler

A message handler to create a new issue from an incoming message. Note: requires public noarg constructor as this class is instantiated by reflection


Field Summary
static String CC_ASSIGNEE
           
static String CC_WATCHER
           
 boolean ccAssignee
           
 boolean ccWatcher
           
static boolean DEFAULT_CC_ASSIGNEE
           
 String issueType
           
static String KEY_ISSUETYPE
           
static String KEY_PROJECT
           
 String projectKey
           
 
Fields inherited from class com.atlassian.jira.plugins.mail.handlers.AbstractMessageHandler
applicationProperties, bulk, catchEmail, CONTENT_TYPE_TEXT, createUsers, deleteEmail, HEADER_IN_REPLY_TO, HEADER_MESSAGE_ID, KEY_BULK, KEY_CATCHEMAIL, KEY_CREATEUSERS, KEY_FINGER_PRINT, KEY_NOTIFYUSERS, KEY_REPORTER, log, messageUserProcessor, notifyUsers, params, reporteruserName, userManager, VALUE_BULK_DELETE, VALUE_BULK_FORWARD, VALUE_BULK_IGNORE, VALUE_FINGER_PRINT_ACCEPT, VALUE_FINGER_PRINT_FORWARD, VALUE_FINGER_PRINT_IGNORE
 
Constructor Summary
CreateIssueHandler()
           
 
Method Summary
 void addCcWatchersToIssue(javax.mail.Message message, Issue issue, com.atlassian.crowd.embedded.api.User reporter, MessageHandlerContext context, MessageHandlerExecutionMonitor messageHandlerExecutionMonitor)
          Adds all valid users that are in the email to and cc fields as watchers of the issue.
protected  boolean attachHtmlParts(javax.mail.Part part)
          Html parts are not attached but rather potentially form the source of issue text.
protected  boolean attachPlainTextParts(javax.mail.Part part)
          Text parts are not attached but rather potentially form the source of issue text.
 Collection<com.atlassian.crowd.embedded.api.User> getAllUsersFromEmails(javax.mail.Address[] addresses)
           
static com.atlassian.crowd.embedded.api.User getFirstValidAssignee(javax.mail.Address[] addresses, Project project)
          Given an array of addresses, this method returns the first valid assignee for the appropriate project.
protected  Project getProject(javax.mail.Message message)
           
protected  ProjectManager getProjectManager()
           
 boolean handleMessage(javax.mail.Message message, MessageHandlerContext context)
          Perform the specific work of this handler for the given message.
protected  boolean hasValidIssueType()
           
 void init(Map<String,String> params, MessageHandlerErrorCollector errorCollector)
          Will be called before any messages are to be handled.
 
Methods inherited from class com.atlassian.jira.plugins.mail.handlers.AbstractMessageHandler
attachAttachmentsParts, attachInlineParts, attachMessagePart, attachRelatedPart, canHandleMessage, createAttachmentsForMessage, createAttachmentWithPart, createUserForReporter, getAssociatedIssue, getFileFromPart, getFilenameForAttachment, getI18nBean, getMessageUserProcessor, getPrecedenceHeader, getReporter, isAutoSubmitted, isDeliveryStatus, recordMessageId, renameFileIfInvalid, shouldAttach
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

KEY_PROJECT

public static final String KEY_PROJECT
See Also:
Constant Field Values

KEY_ISSUETYPE

public static final String KEY_ISSUETYPE
See Also:
Constant Field Values

CC_ASSIGNEE

public static final String CC_ASSIGNEE
See Also:
Constant Field Values

CC_WATCHER

public static final String CC_WATCHER
See Also:
Constant Field Values

projectKey

public String projectKey

issueType

public String issueType

DEFAULT_CC_ASSIGNEE

public static final boolean DEFAULT_CC_ASSIGNEE
See Also:
Constant Field Values

ccAssignee

public boolean ccAssignee

ccWatcher

public boolean ccWatcher
Constructor Detail

CreateIssueHandler

public CreateIssueHandler()
Method Detail

init

public void init(Map<String,String> params,
                 MessageHandlerErrorCollector errorCollector)
Description copied from interface: MessageHandler
Will be called before any messages are to be handled.

Specified by:
init in interface MessageHandler
Overrides:
init in class AbstractMessageHandler
Parameters:
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 .

handleMessage

public boolean handleMessage(javax.mail.Message message,
                             MessageHandlerContext context)
                      throws javax.mail.MessagingException
Description copied from class: AbstractMessageHandler
Perform the specific work of this handler for the given message.

Specified by:
handleMessage in interface MessageHandler
Specified by:
handleMessage in class AbstractMessageHandler
Parameters:
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.
Returns:
true if the message is to be deleted from the source.
Throws:
javax.mail.MessagingException - if anything went wrong.

addCcWatchersToIssue

public void addCcWatchersToIssue(javax.mail.Message message,
                                 Issue issue,
                                 com.atlassian.crowd.embedded.api.User reporter,
                                 MessageHandlerContext context,
                                 MessageHandlerExecutionMonitor messageHandlerExecutionMonitor)
                          throws javax.mail.MessagingException
Adds all valid users that are in the email to and cc fields as watchers of the issue.

Parameters:
message - message to extract the email addresses from
issue - issue to add the watchers to
reporter -
context -
messageHandlerExecutionMonitor - @throws MessagingException message errors
Throws:
javax.mail.MessagingException

getAllUsersFromEmails

public Collection<com.atlassian.crowd.embedded.api.User> getAllUsersFromEmails(javax.mail.Address[] addresses)

getProject

protected Project getProject(javax.mail.Message message)

hasValidIssueType

protected boolean hasValidIssueType()

getProjectManager

protected ProjectManager getProjectManager()

getFirstValidAssignee

public static com.atlassian.crowd.embedded.api.User getFirstValidAssignee(javax.mail.Address[] addresses,
                                                                          Project project)
Given an array of addresses, this method returns the first valid assignee for the appropriate project. It returns null if addresses is null or empty array, or none of the users found by addresses is assignable.

Parameters:
addresses - array of addresses
project - project generic value
Returns:
first assignable user based on the array of addresses

attachPlainTextParts

protected boolean attachPlainTextParts(javax.mail.Part part)
                                throws javax.mail.MessagingException,
                                       IOException
Text parts are not attached but rather potentially form the source of issue text. However text part attachments are kept providing they aint empty.

Specified by:
attachPlainTextParts in class AbstractMessageHandler
Parameters:
part - The part which will have a content type of text/plain to be tested.
Returns:
Only returns true if the part is an attachment and not empty
Throws:
javax.mail.MessagingException
IOException

attachHtmlParts

protected boolean attachHtmlParts(javax.mail.Part part)
                           throws javax.mail.MessagingException,
                                  IOException
Html parts are not attached but rather potentially form the source of issue text. However html part attachments are kept providing they aint empty.

Specified by:
attachHtmlParts in class AbstractMessageHandler
Parameters:
part - The part which will have a content type of text/html to be tested.
Returns:
Only returns true if the part is an attachment and not empty
Throws:
javax.mail.MessagingException
IOException


Copyright © 2002-2012 Atlassian. All Rights Reserved.