[ 
https://jira.codehaus.org/browse/JBEHAVE-653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=286114#comment-286114
 ] 

Olmo Rigolo commented on JBEHAVE-653:
-------------------------------------

Thanks Cristiano. 
Your ideas helped me to implement a basic LoadFromJIRA. 
I use the atlassian.jira.rest.client. 

import java.net.URI;
import java.net.URISyntaxException;

import org.jbehave.core.io.ResourceLoader;
import org.jbehave.core.io.StoryLoader;

import com.atlassian.jira.rest.client.JiraRestClient;
import com.atlassian.jira.rest.client.NullProgressMonitor;
import com.atlassian.jira.rest.client.domain.Issue;
import 
com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory;

/**
 * Loads data from JIRA fields "Narrative" and "Acceptance Criteria"
 * 
 * @author olmo.rigolo
 * 
 */
public class LoadFromJIRA implements ResourceLoader, StoryLoader {

    private final String      narrativeFieldName = "Narrative";

    private final String      scenariosFieldName = "Acceptance Criteria";

    private String            storyId;

    private String            location;

    private String            username;

    private String            password;

    private JiraRestClient    restClient         = null;

    final NullProgressMonitor pm                 = new NullProgressMonitor();

    /**
     * 
     * Configures the JIRA loader.
     * 
     * @param location The jira url
     * @param username The jira account username
     * @param password The jira account password
     * @param storyId The jira story id
     */
    public LoadFromJIRA(String location, String username, String password, 
String storyId) {
        this.location = location;
        this.password = password;
        this.username = username;
        this.storyId = storyId;
    }

    @Override
    public String loadStoryAsText(String storyPath) {
        return loadFromJira(this.storyId);
    }

    @Override
    public String loadResourceAsText(String resourcePath) {
        return loadFromJira(this.storyId);
    }

    private JiraRestClient connect(String location, String username, String 
password) {
        JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory();
        restClient = null;
        try {
            restClient = factory.createWithBasicHttpAuthentication(new 
URI(location), username,
                password);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        return restClient;
    }

    private String loadFromJira(String storyId) {
        if(this.restClient == null){
            this.restClient = connect(location, username, password);
        }
        final Issue issue = restClient.getIssueClient().getIssue(storyId, pm);
        final String narrative = 
issue.getFieldByName(narrativeFieldName).getValue().toString();
        final String scenarios = 
issue.getFieldByName(scenariosFieldName).getValue().toString();

        StringBuilder sb = new StringBuilder();
        sb.append("Narrative:");
        sb.append(narrative);
        sb.append(scenarios);

        return sb.toString();
    }
}


----------------- 
Usage: 
Configuration configuration = new MostUsefulConfiguration() 
.useStoryLoader(new LoadFromJIRA("http://localhost/jira";, 
"yourJiraUserName","yourJiraPassword", "JIRA-STORYID-112")) 
.useStoryReporterBuilder(new StoryReporterBuilder().withFormats(HTML));

----------------- 
Ressources: 
jira rest client library
http://confluence.atlassian.com/display/DOCSPRINT/The+Simplest+Possible+JIRA+REST+Examples
https://studio.atlassian.com/wiki/display/JRJC/Tutorial  
                
> Integrate JIRA
> --------------
>
>                 Key: JBEHAVE-653
>                 URL: https://jira.codehaus.org/browse/JBEHAVE-653
>             Project: JBehave
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 3.5.4
>         Environment: JIRA v4.2
>            Reporter: Olmo Rigolo
>            Priority: Minor
>              Labels: configuration, jira, reports, wish
>   Original Estimate: 3 minutes
>  Remaining Estimate: 3 minutes
>
> We are using JIRA to organise our stories. It would be nice to integrate the 
> story files directly from JIRA, so you don't have to write them twice. At 
> this moment we write the acceptance criteria for a story in JIRA and we copy 
> them into our projects. 
> My idea is to 
> -extend the LoadFromUrl class to add the functionality to log into a page 
> (like for google docs). Something like LoadFromSecuredUrl, LoadFromJira
> -then write a parser that extracts the fields from a story in JIRA as plain 
> text like you propose it here 
> http://jbehave.org/reference/stable/locating-stories.html

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to