Methods called when executing a Jelly Tag.
{@link com.atlassian.jira.jelly.ActionTagSupport#preContextValidation} Allows you to setup expected context variables, e.g. for an issue a project key is required this can come from the tag or a parent tag but it should always be in the context when running context validation
{@link com.atlassian.jira.jelly.ActionTagSupport#contextValidation(XMLOutput)} Calls the {@link com.atlassian.jira.jelly.ActionTagSupport#getRequiredContextVariables()} function and checks all keys in the list are in the context
{@link com.atlassian.jira.jelly.ActionTagSupport#prePropertyValidation(XMLOutput)} Similar to preContextValidation, allows you to set properties from the tag (if they have different keys)
{@link com.atlassian.jira.jelly.ActionTagSupport#propertyValidation(XMLOutput)} Calls the {@link com.atlassian.jira.jelly.ActionTagSupport#getRequiredProperties()} function and checks all keys in the list are in the properties
run the action Actually runs the action
{@link com.atlassian.jira.jelly.ActionTagSupport#postTagExecution(XMLOutput)} Copies variables from the response url to the context or properties
{@link com.atlassian.jira.jelly.ActionTagSupport#postTagValidation(XMLOutput)} Checks that keys in {@link com.atlassian.jira.jelly.ActionTagSupport#getRequiredContextVariablesAfter()} function are in the context. e.g. after Issue Create you want the the Issue Key/Id to be in the context so it can be used by other tags.
invoke nested tag Runs any nested jelly.
{@link com.atlassian.jira.jelly.ActionTagSupport#endTagExecution(XMLOutput)} Removes variables from the context that are no longer required. e.g. at the end of createproject tag the project key/id that was created is removed and replaced by the previous value.


Keeping track of which variables where in the context before tag execution is handled by ContextAccessors.
e.g. ProjectContextAccessor interface allows you to set a project and load a previous one.
I have implemented simple Impls of these to be used from classes that require this functionality e.g. CreateProject
All they do is call through to an instance of this object as we want the same code for all ProjectContextAccessors.
(N.B. I would have multi inherited really but, of course, i'm not allowed in Java. )

Not all tag do this yet but you can see the patern of ProjectAware, ProjectContextAccessor and there implementation of the validation functions.


If this doesn't make sense or you have anymore question please raise a support request at http://support.atlassian.com or ask on the forums at http://forums.atlassian.com