Interface IJEMHVelocityContextUtils


  • public interface IJEMHVelocityContextUtils
    Velocity Context helper interface, accessed vie email templates, used to inhibit mail sending, for now.. published url: http://ppl-docs.s3-website-us-east-1.amazonaws.com/JEMH/3.0.0/com/javahollic/jira/emh/api/IJEMHVelocityContextUtils.html
    Author:
    andy
    • Method Detail

      • getCalData

        String getCalData()
        Get the content of the text/calendar message part
        Returns:
        the content as a String.
      • isAttachmentPresent

        boolean isAttachmentPresent​(javax.mail.Message message,
                                    String filename,
                                    boolean isRegex)
        Parameters:
        message - the email message to look for attachments in (typically the 'message' script context variable)
        filename - limits search to attachments with a matching filename, leave null to search for any attachment
        isRegex - whether the given filename String is to be considered a Regular Expression or not
        Returns:
        true if the message contains an attachment (matching given filename if provided), false otherwise
      • isAttachmentPresent

        @Deprecated
        boolean isAttachmentPresent​(javax.mail.Message message,
                                    String filename)
        Deprecated.
        since 3.3.14 and will be removed, use isAttachmentPresent(Message, String, boolean) instead
        Parameters:
        message - the email message to look for attachments in (typically the 'message' script context variable)
        filename - limits search to attachments with a matching filename, leave null to search for any attachment
        Returns:
        true if the message contains an attachment (matching given filename if provided), false otherwise
      • hasWorkflowPermission

        boolean hasWorkflowPermission​(String permission,
                                      com.atlassian.jira.issue.Issue issue,
                                      com.atlassian.jira.user.ApplicationUser user)
        Checks both the permission scheme and the issue's workflow properties to determine if the specified user has a particular project permission.
        Parameters:
        permission - the short name of a corresponding project permission
        issue - the target issue
        user - the user to check permissions for
        Returns:
        true if the given permission name is valid and the user has that permission, false otherwise
        See Also:
        Checking project permissions
      • hasPermission

        boolean hasPermission​(String permission,
                              com.atlassian.jira.issue.Issue issue,
                              com.atlassian.jira.user.ApplicationUser user)
        Checks the permission scheme only to determine if the specified user has a particular project permission.
        Parameters:
        permission - the short name of a corresponding project permission
        issue - the target issue
        user - the user to check permissions for
        Returns:
        true if the given permission name is valid and the user has that permission, false otherwise
        See Also:
        Checking project permissions
      • getTimeZone

        TimeZone getTimeZone​(String location)
        Parameters:
        location - for which the timeZone is needed
        Returns:
        TimeZone of the passed in location
      • getCatchEmailAddress

        javax.mail.internet.InternetAddress getCatchEmailAddress()
        Returns:
        catch email address that matched for profile
      • filterText

        String filterText​(String text)
        Parameters:
        text - to Filters the input text through some Mime decoding
        Returns:
        filtered input
      • setInhibitSending

        void setInhibitSending​(boolean val)
        Used during sending messages to inhibit sending, specifically needed due to split phase issue creation/update to enable ignoring ISSUE_CREATED events when JEMH has not yet added attachments to the issue, that are potentially required later.
        Parameters:
        val - , true to inhibit
      • isInhibitSending

        boolean isInhibitSending()
        determine if the outcome of the script is to inhibit sending of 'this' notification
        Returns:
        true if is to inhibit
      • setInhibitSendingReason

        void setInhibitSendingReason​(String reason)
        Sets a reason, retained in the audit entry to indicate why this message was inhibited for sending
        Parameters:
        reason - as text
      • getInhibitSendingReason

        String getInhibitSendingReason()
        Gets the reason that was possibly set by the processing script why this message was inhibited for sending
        Returns:
        reason
      • isPrivateJSDComment

        boolean isPrivateJSDComment​(com.atlassian.jira.user.ApplicationUser contextUser,
                                    com.atlassian.jira.issue.comments.Comment c)
        Helper method to determine if a comment is JSD private
        Parameters:
        contextUser - , the context for the question
        c - , related comment
        Returns:
        true if JSD is installed, and comment is private
      • isPrivateJSDComment

        boolean isPrivateJSDComment​(com.atlassian.jira.mail.TemplateUser contextTemplateUser,
                                    com.atlassian.jira.issue.comments.Comment c)
        Helper method to determine if a comment is JSD private, which is required during actual mail sending
        Parameters:
        contextTemplateUser - , the contextTemplateUser for the question
        c - , related comment
        Returns:
        true if JSD is installed, and comment is private
      • getCommentProperties

        Properties getCommentProperties​(com.atlassian.jira.issue.comments.Comment comment)
        Get comment properties
        Parameters:
        comment - to get properties of
        Returns:
        java.util.Properties object
      • addMailHeader

        void addMailHeader​(String key,
                           String value)
        Adds a mail header to the outgoing mail. Any additional processed to make the header valid is the responsibility of the caller.
        Parameters:
        key - text, all spaces in the value are removed, the result is prefixed by X-JEMH-ADHOC-
        value - text, should be relatively short. We don't wrap or encode the data supplied
      • addRawMailHeader

        void addRawMailHeader​(String key,
                              String value)
        Adds a mail header that is not prefixed. It is the callers responsilbity to ensure it is valid. Caller should NOT use recipient headers (to/cc/bcc)!
        Parameters:
        key - , usually of format X-something-else
        value - , text, should be relatively short. We don't wrap or encode the data supplied
      • addRecipientsFromRole

        void addRecipientsFromRole​(String recipientType,
                                   String issueKey,
                                   com.atlassian.jira.project.Project project,
                                   String roleName)
        Add recipients based on Role membership
        Parameters:
        issueKey - eg ABC-123
        project - from the issue
        roleName - eg "Customers"
        recipientType - eg "to" or "cc" (only)
      • addRecipientAddress

        void addRecipientAddress​(String recipientType,
                                 String addressCsv)
        Adds recipients through CSV SMTP address
        Parameters:
        recipientType - , valid values are to and cc
        addressCsv - , valid values are of format user@domain.com, NO Name parts are supported.
      • addRecipientGroup

        void addRecipientGroup​(String recipientType,
                               String groupName)
        Adds recipients from a given Jira group
        Parameters:
        recipientType - , valid values are to and cc
        groupName - of Jira group
      • getParams

        Map<String,​List<String>> getParams()
        Accessor for Map of value keys to list of values
        Returns:
        params, parms aggregate mail headers, but mail in future have other uses
      • getAdditionalAddressRecipients

        Set<javax.mail.internet.InternetAddress> getAdditionalAddressRecipients()
        Accessor for Set of additional Internet Addresses related to an email only user to be added to the recipient list
        Returns:
        set of email only user Addresses
      • getAdditionalUserRecipients

        Set<javax.mail.internet.InternetAddress> getAdditionalUserRecipients()
        Accessor for Set of additional Internet Addresses related to a Jira user entity to be added to the recipient list
        Returns:
        set of user Addresses
      • getAdditionalRecipientGroups

        Set<String> getAdditionalRecipientGroups()
        Accessor for Set of additional Internet Addresses related to a Jira user entity in a named Group to be added to the recipient list
        Returns:
        set of user Addresses
      • getUserByEmail

        com.atlassian.jira.user.ApplicationUser getUserByEmail​(javax.mail.internet.InternetAddress address)
        Helper method to get a User
        Parameters:
        address - of the user as an InternetAddress object
        Returns:
        the user or null
      • getUserByEmail

        com.atlassian.jira.user.ApplicationUser getUserByEmail​(String emailStr)
        Helper method to bet a User
        Parameters:
        emailStr - of the user as text in format user@domain.com, no Name part is supported.
        Returns:
        the user or null
      • dropMessage

        void dropMessage​(String reason)
        During Script Field Processor handling of a message, allows a given message to be dropped immediately with no further processing
        Parameters:
        reason - , a non empty value used in auditing
      • dropAndExitGroupMessage

        void dropAndExitGroupMessage​(String reason)
        During Script Field Processor handling of a message, allows a given message to be dropped immediately with no further processing and exits processing if within a profile group
        Parameters:
        reason - , a non empty value used in auditing
      • forwardMessage

        void forwardMessage​(String reason)
        During Script Field Processor handling of a message, allows a given message to not be processed but forwarded to the Profile defined 'Forward' user
        Parameters:
        reason - , a non empty value used in auditing
      • filterMessage

        void filterMessage​(String reason)
        During Script Field Processor handling of a message, allows a given message to not be processed but filtered (like drop), here for completeness and differentation to drop
        Parameters:
        reason - , a non empty value used in auditing
      • rejectMessage

        void rejectMessage​(String reason)
        During Script Field Processor handling of a message, allows a given message to be rejected to the initator, with the given reason
        Parameters:
        reason - , a non empty value used in auditing
      • getProcessOutcome

        com.javahollic.jira.emh.api.ao.IJEMHFPAuditEventEntiyDef.ProcessingOutcome getProcessOutcome()
        Accessor method to get script driven outcome of message processing that would override future processing/outcome.
        Returns:
        outcome object, .name() of which returns: canHandle, filtered, forward, reject, drop, delete, hold
      • getRejectReason

        String getRejectReason()
        Get the message that may be set to describe why a message was rejected, ends up in audit record.
        Returns:
        text
      • getLocaleI18nBean

        com.atlassian.jira.util.I18nHelper getLocaleI18nBean​(String localeIn)
        Get a specific locale i18n helper
        Parameters:
        localeIn - the locale
        Returns:
        instance of I18nHelper
      • addStaticResourceAttachment

        String addStaticResourceAttachment​(Integer id)
        Add a global (unscoped) static resource by its Id.
        Parameters:
        id - , numeric ID of the Static Resource
        Returns:
        html message (not i18n), a non empty value indicates a failure, eg, a resource was referred that is not scoped to the project the event is processing
      • addStaticResourceAttachment

        String addStaticResourceAttachment​(com.atlassian.jira.project.Project project,
                                           Integer id)
        Add a static resource (scoped to project) by its Id
        Parameters:
        project - , the project in which the Static Resource has been scoped
        id - , numeric ID of the Static Resource
        Returns:
        html message (not i18n), a non empty value indicates a failure, eg, a resource was referred that is not scoped to the project the event is processing
      • renderStaticResourceImage

        String renderStaticResourceImage​(Integer id)
        Render a given static resource image (unscoped) inline.
        Parameters:
        id - , numeric ID of the Static Resource
        Returns:
        html to inline the related image, can also contain (non i18n) error messages if the inline failed
      • renderStaticResourceImage

        String renderStaticResourceImage​(com.atlassian.jira.project.Project project,
                                         Integer id)
        Render a given static resource image (scoped to the given project) inline.
        Parameters:
        project - , the project in which the Static Resource image is scoped
        id - , numeric ID of the Static Resource
        Returns:
        html to inline the related image, can also contain (non i18n) error messages if the inline failed, eg if not in scope
      • renderStaticResourceImage

        String renderStaticResourceImage​(com.atlassian.jira.project.Project project,
                                         Integer id,
                                         String type)
        Render a given static resource image (scoped to the given project) inline.
        Parameters:
        project - , the project in which the Static Resource image is scoped
        id - , numeric ID of the Static Resource
        type - , "cid" is the new default, "base64" (inline encoded data) is also valid
        Returns:
        html to inline the related image, can also contain (non i18n) error messages if the inline failed, eg if not in scope
      • getImageCidMap

        Map<String,​Integer> getImageCidMap()
        Internal use
        Returns:
        map of a generated CID to a given Static Resource
      • isCustomFieldChanged

        boolean isCustomFieldChanged​(com.atlassian.jira.event.issue.IssueEvent issueEvent,
                                     String cfId)
        Used to determine during outbound processing, whether the given custom field id was in a ChildChangeItem of the event
        Parameters:
        issueEvent - involved
        cfId - , custom field id, of format, customfield_12345
        Returns:
        true if changed
      • urlencode

        String urlencode​(String incoming)
        Helper method to urlencode(UTF-8) a string in Java context:
        Parameters:
        incoming - value
        Returns:
        encoded value
      • request

        com.atlassian.jira.util.json.JSONObject request​(Map<String,​Object> options)
        Perform a custom HTTP request
        Parameters:
        options - a Map containing the configuration options for this HTTP request
        • url - String - the absolute (full) request URL
        • method - String - the request method to use. GET is default.
        • type - an alias for "method"
        • username - String - username of the user to perform the request as
        • timeout - String or Integer - connection timeout in milliseconds
        • data - String - JSON data for request body. Appended to URL for GET requests. In JavaScript
          JSON.stringify(data)
          can be used to convert JSON/Object to String
        Returns:
        JSONObject containing the response
      • invokeLocalRest

        com.atlassian.jira.util.json.JSONObject invokeLocalRest​(String path)
        Make a HTTP request relative to the local Jira path
        Parameters:
        path - of local rest call, relative to Jira's base URL
        Returns:
        JSONObject containing the response body (if present)
      • invokeLocalAnonRest

        com.atlassian.jira.util.json.JSONObject invokeLocalAnonRest​(String path)
                                                             throws com.atlassian.jira.util.json.JSONException
        Make an anonymous HTTP request relative to the local Jira path
        Parameters:
        path - of local rest call, relative to Jira's base URL
        Returns:
        JSONObject containing the response body (if present)
        Throws:
        com.atlassian.jira.util.json.JSONException - if it breaks
      • createResultSet

        Map<String,​Object> createResultSet()
        Enable scripts to create multiple issue,by creating an additional (possibly many) new result sets containing key/value paris as usual
        Returns:
        map of values to initialize an issue, e.g. project="ABC", issueType="bug" etc.
      • getResultSets

        Collection<Map<String,​Object>> getResultSets()
        Accessor method to expose any additional ResultSets created by the script
        Returns:
        collection of result sets
      • log

        void log​(String level,
                 String msg)
        Output a message to the JEMH log file
        Parameters:
        level - the log level for the output: DEBUG, INFO, WARN, ERROR
        msg - the message to log
      • log

        void log​(String msg)
        Log an INFO message to the JEMH log file
        Parameters:
        msg - the message to log
      • getMessage

        javax.mail.Message getMessage()
      • getMessageSubParts

        List<javax.mail.Message> getMessageSubParts​(javax.mail.internet.MimeMessage parentMessage)
        Get the child attachment Parts that are message/rfc822
        Parameters:
        parentMessage - the Mime message
        Returns:
        child parts loaded as Message objects to allow further processing
      • getMessagePartText

        String getMessagePartText​(String contentType)
      • getMessageBody

        String getMessageBody​(javax.mail.Message message)
        Get the body (according to htmL to wiki conversion configuration in the Profile)
        Parameters:
        message - source
        Returns:
        wiki markup extracted
      • getLdap

        IJEMHLdapVelocityContextUtil getLdap()
        Create an Ldap helper that enables querying through LDAP configurations selected in the Profile
        Returns:
        ldap util support class
      • getUserAvatarURL

        URI getUserAvatarURL​(com.atlassian.jira.user.ApplicationUser user,
                             int size)
        Enable the URI of a user avatar to be retrieved for inlining
        Parameters:
        user - user to get avatar for
        size - size of avatar to get
        Returns:
        URI object
      • getProjectContext

        com.atlassian.jira.issue.context.ProjectContext getProjectContext​(Long projectId)
      • getIssueContext

        com.atlassian.jira.issue.context.IssueContext getIssueContext​(Long projectId,
                                                                      String issueTypeId)
      • addIndividualRecipientAddress

        void addIndividualRecipientAddress​(String addressCsv)
        * Adds an individual address to recipients list to a Non Jira User Template set in Non Jira user notification Project Mapping found in Notifications
        Parameters:
        addressCsv - , valid values are of format user@domain.com, NO Name parts are supported.
      • addIndividualRecipientUser

        void addIndividualRecipientUser​(String username)
        Adds an individual user to recipients list to a Non Jira User Template found in the Non Jira user notification Project Mapping found in Notifications
        Parameters:
        username - , user to entity to be notified in a Jira User Issue Event Template Set.
      • addIndividualRecipientGroup

        void addIndividualRecipientGroup​(String groupName)
        Adds users in a Group to the recipients list to a Jira User Issue Event Template set in the Jira user notification Project Mapping found in Notifications 1
        Parameters:
        groupName - , user Group to entity to be notified in a Jira User Issue Event Template Set.
      • getOriginalAddressees

        List<javax.mail.internet.InternetAddress> getOriginalAddressees​(PreProcHeaderBean headerBean)
        Returns list of the Internet Addresses from specific header
        Parameters:
        headerBean - , the value of the desired header
        Returns:
        list of InternetAddress
      • createInternetAddress

        javax.mail.internet.InternetAddress createInternetAddress​(String personal,
                                                                  String address)
        Creates a new Internet address
        Parameters:
        personal - , personal name
        address - , email address
        Returns:
        InternetAddress
      • updatePreProcHeader

        PreProcHeaderBean updatePreProcHeader​(List<javax.mail.internet.InternetAddress> addresses,
                                              PreProcHeaderBean headerBean)
        Updates specific header with the list of Internet addresses
        Parameters:
        addresses - , list of the internet addresses
        headerBean - , specific header
        Returns:
        PreProcHeaderBean
      • updatePreProcHeader

        void updatePreProcHeader​(String newValue,
                                 PreProcHeaderBean headerBean)
        Updates specific header with the provided value
        Parameters:
        newValue - , value
        headerBean - , specific header
      • getRequestType

        RequestTypeBean getRequestType​(String requestTypeKey)
        Returns a RequestTypeBean which holds properties of the Customer request type such as Name and Description
        Parameters:
        requestTypeKey - , the value of the desired request type
        Returns:
        RequestTypeBean or null
      • loadComponent

        <T> T loadComponent​(String interfaceOrClassName)
        As the previous context $jirautils was removed for security reasons the loadComponent functionality may still be required. However this is with a restricted internally with a list of Allowed Classes If you find that loadComponent does not load the class or component you require then please raise a support ticket and mentioning internal ticket JEMH-7702
        Type Parameters:
        T - the type of the component
        Parameters:
        interfaceOrClassName - , the class name or interface name of the component desired for example class name = [com.atlassian.jira.mention.MentionFinderImpl] interface name = [MentionFinder]
        Returns:
        if valid the typed resulting object instance or null if the object does not exist or if class/interface is not present or forbidden.