Skip to end of metadata
Go to start of metadata
Icon

JIRA's SOAP and XML-RPC remote APIs were deprecated in JIRA 6.0.

Read the announcement for more information.

Applicable:

This tutorial applies to JIRA 4.3 and higher.

Level of experience:

This is an intermediate tutorial. You should have completed at least one beginner tutorial before working through this tutorial. See the list of tutorials in DAC.

Time estimate:

It should take you approximately 1 hour to complete this tutorial.

 

On this page:

Overview of the tutorial

JIRA presents a SOAP interface that client applications can use to invoke JIRA operations remotely. A client application can use the SOAP interface to perform operations such as creating, modifying, and reading JIRA issues.

 

Icon

This document illustrates the use of the JIRA SOAP API to create a remote JIRA client application. However, if developing for JIRA 5.0 or later, we recommend that you use the REST API instead. See JIRA RPC Services (deprecated) for usage guidelines on the remote access APIs in JIRA.

As an alternative to developing client applications against the SOAP API directly, as described in this tutorial, you can use the SOAP API through a client wrapper library instead, such as the JIRA SOAP library. This alleviates you from needing to compile and code against the WSDL directly.

 

Plugin source

We encourage you to work through this tutorial. If you want to skip ahead or check your work when you have finished, you can find the plugin source code on Atlassian Bitbucket. Bitbucket serves a public Git repository containing the tutorial's code. To clone the repository, issue the following command:

git clone https://bitbucket.org/atlassian_tutorial/jira-java-soap-client

Alternatively, you can download the source using the get source option here: https://bitbucket.org/atlassian_tutorial/jira-java-soap-client.

Environment used in the tutorial

To keep things simple, the client you build in this tutorial invokes operations in a local, developer instance of JIRA. You will install it using the Atlassian SDK. The following instructions use SDK version 4.1, which installs JIRA version 5.1.6 by default. To see Javadoc for this version, see our reference documentation page. If creating an application intended for another version, refer to the JIRA Javadoc for your version. The SOAP API is exposed in JIRA by the RPC JIRA plugin.

The tutorial code relies on Maven 2. If you have the Atlassian SDK, you already have Maven 2. Before starting, make sure you have Maven 2 and, if necessary, install it. 

These instructions use Linux OS for its command examples. The exact commands you need to enter may differ depending on your operating system.

Step 1. Install and configure the local JIRA instance

Start by installing and setting up a local JIRA instance using the Atlassian SDK:

  1. Open a terminal window and run the following command:
    atlas-run-standalone --product jira
    The  command downloads and starts a developer's instance of JIRA. This takes a few moments to finish.
  2. When JIRA finishes starting up, open a browser and log in to JIRA using the default administrator account. The default username and password are admin/admin. 
  3. Create a new project named TST.
    This is the name of the project in which our client application will create issues. Note that, to keep the client code simple, both the name of the project and credentials for the SOAP client user are hard-coded into the client code.
  4. Create a user for the application with the username and password of soaptester.
  5. Open the Administration Console and make sure that the RPC JIRA plugin is present and enabled.
    Client application invoke SOAP methods through the RPC JIRA plugin. Since JIRA 4.3, the RPC plugin is included and enabled by default in JIRA. You can verify the RPC JIRA Plugin on your instance in the 'Manage Add-ons' page. On the page, expand the System Plugin list and search for 'RPC JIRA plugin'.

  6. Before deploying to a production system, you would also need to ensure that JIRA is configured to accept remote API calls has been enabled. This option appears in the Options list on the System > General Configuration page. It is enabled by default in the JIRA developer instance installed by the SDK.

JIRA is now ready to go.

Step 2. Create the SOAP client project 

From the command line:

  1. Create the project directory that will contain your SOAP client source code and resource files using the following command:
    mkdir soap_client_jira
  2. Change to the soap_client_jira directory and create a new file named pom.xml, and add to it the following code:


    This will be the parent POM for the Java SOAP client module, jira-soapclient. This makes it easier to expand the project later.

  3. Now, in the same directory, create a new directory for the SOAP client module as follows:
    mkdir jira-soapclient
  4. In the new directory, create a new file named pom.xml and add the following text to the file:

  5. Replace myhost in the jira.soapclient.jiraurl element with the host name of your JIRA instance.
  6. Create directories under the jira-soapclient directory to form the following source file path:
    src/main/java/com/atlassian/jira_soapclient/
  7. In the new jira_soapclient directory under src, create the file SOAPSessions.java and add the following code:


    SOAPSession.java handles the connection to the JIRA SOAP service. 

  8. In the same directory, create the file SOAPClient.java and add the following code:


    Note that the class defines a few constants it will use for the new JIRA issues. The class does just a few things:

    • Connects to the JIRA instance.

    • Establishes an authenticated session.
    • Creates an issue.
  9. Replace hostname in the baseUrl value assignment with the host name of your JIRA instance. For example:
    String baseUrl = "http://jira-host:2990/jira/rpc/soap/jirasoapservice-v2";
  10. Verify that your JIRA instance is serving the WSDL properly by opening the following URL in a browser:
    http://hostname:2990/jira/rpc/soap/jirasoapservice-v2?wsdl
    Replace 'hostname' with the hostname appropriate for your JIRA instance. To run our client application, we will need access to this WSDL.
  11. Create a new directory named wsdl at the following location under your project home:
    /jira-soapclient/src/main/wsdl

That's it! You can now test out the client application.

Step 3. Run the application

Give your application a try:

  1. In the jira-soapclient directory under your project home, run the following command:
    mvn -Pfetch-wsdl -Djira.soapclient.jiraurl=http://hostname:2990/jira
    Replace hostname in jiraurl with the one appropriate for your JIRA instance.

    Icon

    To use the Maven executable included in the Atlassian SDK, prepend atlas- to the Maven command. For example:
    atlas-mvn -Pfetch-wsdl -Djira.soapclient.jiraurl=http://hostname:2990/jira
     

  2. Build the client application:
    mvn -Pbuildclient
  3. Now run the client application:
    mvn exec:java -Dexec.mainClass="com.atlassian.jira_soapclient.SOAPClient"

If successful, you should see a message similar to the following in the screen output.

After the success message, the print out includes details for the new issues. If you navigate to the project in JIRA, you'll see the newly created issue. Each time you execute the command, the client application creates a new issue.

 

 

 

264 Comments

  1. It's great that JIRA is opening up services for remote integration with other apps. It makes it that much more useful of a tool.

    I wonder if there is any way we can do some kind of single sign-on where if a user is already logged into JIRA and the other app, you can grab their token for the existing JIRA session somehow? That would be better in some ways than having to prompt for (or store) a username/password.

    1. Hi,

      I don't know if that what you are looking for, but yes you can automate web application, I mean there are tools to automate web applications tests, for example you can automate butons clicks or even login to a website....

      Canoo Web test is a tool writen in Java and it is a great tool to do this kinf of job. There is another one if you want to use other language such as PHP, PERL .....

  2. All,

    I am not fimiliar with Maven, and want to separate the Jira soap client from Maven. Ultimately I would like to get the soap client to work within Eclipse. Is that possible and if so how?

    Thanks,
    Mike

  3. Mike,

    It is actually possible to generate Eclipse project files using Maven. For more information please see: http://maven.apache.org/reference/plugins/eclipse/

    If you use the maven eclipse plugin and run:
    maven eclipse

    you should get an Eclipse project files generated for you.

    I am sure it is possible to manually go through the process of creating these files, but maven makes things much easier. I suggest looking into maven, as it is a powerful tool and one that you might find useful to add to your arsenal of developement tools.

    Anton

  4. Great description. The SOAP interface works fine on my installation. One question though: is it possible to use the SOAP interface to actually log in the users to the site (provided that you get their credentials from somewhere else...) so that they don't have to type in their password again? If not, is there anything else I could use to achieve this "single-sign on"?

    Nicolas

  5. I don't see JiraSoapServiceServiceLocator or getJirasoapserviceV2 anywhere in the API documentation.  Am I missing something?  I am trying to duplicate the Java example code above in .NET.  Are these lines below setup steps specific to Java?

    I pulled the lines I am referring to from the begining of the Java example above:
    JiraSoapServiceService jiraSoapServiceGetter = new JiraSoapServiceServiceLocator();
    JiraSoapService jiraSoapService = jiraSoapServiceGetter.getJirasoapserviceV2();

    1. Hi,

      We are not too familiar with .NET here. However I imagine there are SOAP tools in .NET that generate appropriate classes given the WSDL file. You will need to use the generated classes. The classes might be called something totally different to JiraSoapServiceServiceLocator().

      Another avenue to try is to contact JIRA users via the mailing list: http://www.atlassian.com/software/jira/mailinglist.jsp

      There should be JIRA users who have more idea about .NET.

      Thanks,
      Anton

    2. Anonymous

      Hi ,I Used VS2008 to create a client to connect to Jira server. I create steps as below:

      1.create a console application

      2. add web service reference to the jira server such as http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl  

      this webservice named as Test .Than try to login to jira server

      http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl

      Test.JiraSoapServiceClient a = new Test.JiraSoapServiceClient();

        //login
        string token= a.login("UserName", "pwd");

       //Get project information

      Test.RemoteProject project = a.getProjectByKey(token, "Proect key");

      Any questions you can mail to yaoohfox#hotmail.com  please change #- to @.

      1. Hi,

            I am using VS2008 , i can do login, create issue through SOAP API, but I want to get the fields of issue type through SOAP API, can you help me regarding this, that how can I get the issue type fields, it may be inbuilt field of JIRA or the Custom field of a particular issue type.

        Suppose BUG is a issue type and it has fields like priority, duedate, resolution etc and a custom field goto, so, I want to get this fields and custom fields through SOAP API.

        Please help

        1. Anonymous

          Did you get any solution? Please help me

        2. Anonymous

          Did you get any solution? Please help me my email is montapas@gmail.com

        3. Anonymous

          I am using VS too but i am not able to create connection to the JIRA server. how do you use SOAP API? how do u add references in your reference library? 

          Thanks in advance

  6. Having a bit of difficulty with PHP, specifically the getUser method:

     

    $user returns the following fault string: "com.atlassian.jira.rpc.exception.RemoteAuthenticationException: User not authenticated yet, or session timed out."

    I'm assuming that this is the correct approach to returning a RemoteUser object; all I'm after here is the user's full name and email (getFullName() and getEmail() respectively) methods.

    The login method is indeed returning a token so obviously that user exists.

    thoughts?

    1. This worked for me:

      req: php 5, and it was compiled with '--enable-soap', or something like that.   It doesnt come with soap by default, (I wasnt able to get PHP PEAR soap to work (sad) )

      for confluence: ---------------------------------------------------------------------

       

       

       

       

       

       

       

      for jira --------- the comment object had to be a object rather than an array/hash as i used for the wiki

      The 'just getting' commands are simpler.

      I think I had a similar error message when I was trying to get PEAR soap to work.

      1. If what I typed doesnt work.  Its probably because I mucked up stripping out stuff to paste it here..  Also the ['s got escaped.   But it should work.

        :8080/rpc/soap-glue/confluenceservice-v1.wsdl - confluence

        8080/rpc/soap/jirasoapservice-v2?wsdl- jira

  7. Jason,

    I'm not quite sure about PHP, but perhaps if you reverse the order of the credz = array('username', $token); so that the toeken is the first param, that might work?

    Cheers

    Mark C

  8. Here is an example that works with PHP 4.x by using the NuSOAP library ...  I'm using a variation of this to post commit messages from my Subversion repository to JIRA ... (yes, I admit that I stole the basic structure from the NuSOAP sample scripts)

    1. Landon - is there a reason to use SOAP to do this instead of the Subversion plugin?

  9. Hi!

    I have checke in JIRA soap API and did not found a way to get or set the working time (in the same way as work logging in JIRA web interface) for a given issue. Is there any method for this? If not, what is the possible work arround? Would be to create another module for JIRA soap plugin?

    1. Marcelo,

      What you're after isn't currently possible but you can download the RPC plugin source to add any functionality to it. The source can be found at:

      http://repository.atlassian.com/atlassian-jira-rpc-plugin/distributions/

      If you're editing the default plugin, then make changes to the interface:

      com.atlassian.jira.rpc.soap.JiraSoapService

      You will then need to compile the jar with (maven jar) and then place the jar in the WEB-INF/lib folder of your JIRA installation. In the RPC code, you have full access to the internal JIRA API, so you can do just about anything.

      Drop us a line on jira-developer@lists.atlassian.com if you need more help on setting this up.

      Cheers

      Marl C

  10. I am using php soap.

    I havent had any problems except for calling getProjects($token).  This just hangs.

    I can seem to get everything else, (components, versions, etc).  Also, getProjectsNoScheme($token) works as well.    But have their been any issues with getProjects?   Its not critical for me, since I am using getProjectsNoScheme,  But i might like to use getProjects in the future.

    1. Amrit,
      The problem with getProjects() is that it retreives all teh associated schemes which can be a massive resulting object and will take a long, long time to return.
      Stick to using getProjectNoSchemes() and then get the schemes seperately if you still need them.

      Cheers,
      Nick

      1. Ok Thanks for the information Nick.

  11.  (reposting Amrit's comment without the long line which breaks formatting)

    Has you or anyone else added an attachment to a wiki or jira page using php?

    Is this possible?

    The api for add attachment to a jira issue is this

    public boolean addAttachmentsToIssue(String token,
    String issueKey,
    String[] fileNames,
    byte[][] attachments)

    $key = 'RI-273';
    $filenames = array();
    $filenames0='blah.html';

    if my file was in /tmp/blah.html

    could someone provide code that would upload that file to my jira issue

    $blah = $client->addAttachmentsToIssue($token, $key, $filenames, $contents);

    Or is this not possible with php. (The byte[][] part), when i try, I get the following exception

    Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] Function (
    "addAttachmentsToIssue") is not a valid method for this service in /sites/confluence/confluencehtml/php/incommingMail/jira/pear_hello_client.php:79 Stack trace: #0
    /sites/confluence/confluencehtml/php/incommingMail/jira/pear_hello_client.php(79):
    SoapClient->__call('addAttachmentsT...', Array) #1
    /sites/confluence/confluencehtml/php/incommingMail/jira/pear_hello_client.php(79):
    SoapClient->addAttachmentsToIssue('J0wwM8PX24', 'RI-273', Array, Array) #2 {main} thrown in
    /sites/confluence/confluencehtml/php/incommingMail/jira/pear_hello_client.php on line 79
    

    Posted by Amrit Lalli at Feb 24, 2006 08:14 | Permalink | Remove | Reply To This

    1. actually I just realized when using a java client, that the api for addAttachmentToIssue changed (and didnt work before..) in jira3.5, So i need to upgrade.  that was why i guess i was getting the 'not a valid method' error.

      1. if anyone knows how to solve the pass byte[][] from php for addAttachementsToIssue, please reply to this issue.  Since i am still getting an illegal argument exception every way i try it.

        1. Hi Amrit,
          Sorry to say there is not anyone around here too familiar with php. Perhaps you might want to try the users list.
          Dylan

          1. I got around that, by writing a java utility, that would take, issuekey, username, filename, path, and I would call that through java.  It worked.  

            But for some reason. Uploading file (using java), took too long to be useable. a 1.2 MB file took about 2 mins to transfer, (from one machine to another on the same lan).

            So am not bothering with attachments anymore.

            on another note. I noticed a) there is no way to create subtasks... (I have a work around for that). and Also.

            There is no way to add watchers to an issue through soap that i could see (on an individual basis – without adding them to a scheme, or group). Is this true as well? It seems like everything i need to do with soap is not yet implemented?

  12. Hi Amrit,
    You are correct, there is not currently a way to manipulate watchers via SOAP. Our RPC plugin is certainly in a state of evolution and it is user needs that seem to drive its API to catch up with the web interface. There is an issue about this at, http://jira.atlassian.com/browse/JRA-8557 and it would seem that the reporter has started to implement the feature himself, perhaps he will share the code.
    Sorry I could not help more,
    Dylan

  13. I am trying to invoke addUserToGroup(). By looking at the WSDL, it appears that I need to pass on a fully specified user (i.e. name, email, fullname, etc.) and group (i.e. its name and the name of ALL its members). Why? Shouldn't simply specifying a username and a groupname be enough? Not only does it use unnecessary bandwidth (including two extra round-trips to get the group & user, in addition to sending unnecessary data) but it complicates client code.

    By the way, the javadocs didn't help any; there's no Atlassian added info to default javadoc generation.

    I couldn't use the XMLRPC client because it is not as complete as the SOAP one.

    1. The addUserToGroup() method wants a RemoteGroup and RemoteUser, which can be obtained easily enough:

      1. I don't doubt that your code is brief; I am not complaining about bloating my code by two lines. I am complaining about the ramifications. Your code involves two more round-trips to the server than what I argue is necessary. Also, the payload to addUserToGroup is much more bulky because now it contains all the group members and the user metadata which isn't truly necessary for addUserToGroup to do its job. It also introduces the possibility of a race condition. If two remote clients execute that very code above at the same time but for different people, then it is possible that only one of them will be added to the group. I am asking you (Atlassian), why does addUserToGroup take a RemoteUser and a RemoteGroup instead of strings that refer to the name of each?

        1. David,
          I have created a new improvement request to offer an alternative method that only takes strings.

          Cheers,
          Nick

  14. Is there a way to get a list of issues for a particular project for the currently logged in user using the SOAP apis? I see the getIssuesFromTextSearch() method, but it just looks for the search terms in all the fields of the ticket, doesn't it. It's basically the equivalent of the "Quick Search" from what I can tell. Or can you specify something like "reporter=$

    Unknown macro: {currentuser}

    " or something?

    The only alternative I can think of is to create a filter in JIRA and just call that rather than actually specify search options on the client side. Any ideas?

    Thanks,
    Rich

    1. Hmm... seems I broke something. Sorry. I'd fix it, but it seems you can't edit posts. I guess I should have used a code tag. What I was asking was if you could use something like

      [code]
      report=$

      Unknown macro: {currentUser}

      [/code]

      or something similar?

      1. Rich,
        Confluence uses {noformat} to block out code. or there is a code macro as well.

        You should be able to pass in "my" to the text search and it will retreive all issues for the logged in user. You can also the specify the project key to narrow it to a project.

        Cheers,
        Nick

        1. Thanks for the reply.  I was afraid that since I screwed up the formatting so bady I wouldn't get any.  Sorry about that.  I'll just use the "Rich Text" formatting from now on to be safe (wink)

          Is there a place where any special strings like that are documented?

           Thanks again,
          Rich

            1. Thanks again Nick.

              Just a few more questions if you don't mind.

              Is there anyway to get access to a projects issue type scheme using the SOAP APIs?  I'm writing a HelpDesk portlet to embed in our company portal and this would be really useful. Right now I'm going to have to statically define in the configuration of the portlet which issues to use even tho I have an issue scheme setup just for help desk issues.

              Another useful feature would be to be able to specify priority schemes for projects.  It's about the only thing that you can't customize on a per project basis and it would be tremendously useful for our planned usage. Otherwise, we wind up with "ASAP", "Next Couple of days", etc. as priorities on our software projects and "Bug", "Improvement", etc. as priorities in the help desk project.

              Should I submit these suggestions somewhere else?

              Thanks again for all the help,
              Rich

              1. Sorry Rich.

                Issue type Scheme is unavailable at this time.

                Priorities and resolutions are still not able to be configured on project by project basis. These are already logged as improvments on http://jira.atlassian.com.

                Developer related questions are best asked on our forums - http://forums.atlassian.com

                Cheers,
                Nick

  15. I'm looking at the WSDL.  Where are the argument names?  Look at this:

    <wsdl:message name="createProjectRequest">
    <wsdl:part name="in0" type="xsd:string"/>
    <wsdl:part name="in1" type="xsd:string"/>
    <wsdl:part name="in2" type="xsd:string"/>
    <wsdl:part name="in3" type="xsd:string"/>
    <wsdl:part name="in4" type="xsd:string"/>
    <wsdl:part name="in5" type="xsd:string"/>
    <wsdl:part name="in6" type="tns1:RemotePermissionScheme"/>
    <wsdl:part name="in7" type="tns1:RemoteScheme"/>
    <wsdl:part name="in8" type="tns1:RemoteScheme"/>
    </wsdl:message>

    in0, in1, in2... WTF?!? How do I get descriptive parameter names? 

    1. Hi Nathaniel,
      Looking at the WSDL is not the best way to see how our SOAP API works, I would suggest using the javadocs which you can find here, http://www.atlassian.com/software/jira/docs/api/rpc-jira-plugin/latest/. You will want to look at the JiraSoapService javadoc.

      I hope this helps,
      Dylan

      1. That's a cop-out. I build the Java binding from the WSDL, as suggested by the documentation, and then use the Java API in the IDE. The auto-complete is therefore completely worthless. It looks as if the WSDL is being generated from class files that have not been compiled with debug information. It's a bug in the build script that's trivial to fix.

        1. Hi Nathaniel,
          We always compile all our source with debug information. What you are refering to is very well summed up in one of the axis mailing list messages:

          The issue is that you need to have the java class files compiled with
          the debug option. That is where Java2WSDL gets the param names. But it
          has to be a class not an interface that gets compiled with the debug
          option.

          Note the last sentence, the problem is that we are exposing interfaces and not classes via SOAP. We have a few problems that we run into using Axis and we are planning on investigating other alternatives for SOAP/XMLRPC generation in the future.

  16. Do we have any Sample SOAP client written in PERL? How different it will be from XML RPC Clients?

    1. Hello Sikhar,

      In terms of syntax, it doesn't look much different compared with XML-RPC, perhaps, a bit simpler (afterall, it's SIMPLE object access protocol).

      Let me know if this example helps you:

      Cheers,
      Yuen-Chi

      1. Hi Yuen-Chi,

        Thanks a lot for the perl example, but I just wanted to add that in your example, if the password or username is all numbers, the SOAP call will break because it thinks it is an integer datatype. I found a resolution in this thread: http://jira.atlassian.com/browse/JRA-13078

        Here is my changed code:

        I also think it is worth noting that if anyone is having problems with the perl SOAP jira interface, it is helpful to include this snippet of code to print out any error or debug messages in the request:

        If I had known those things from the start it would have saved me a lot of time.

        Cheers,
        Taylor 

        1. Hi Yuen-Chi and Taylor, I used your ideas to implement a module to make the Perl interface to JIRA a bit easier. It's released at CPAN as http://search.cpan.org/dist/JIRA-Client/.

          Hope you find it useful.

          Gustavo.

      2. Anonymous

        I tried the updateIssue above in perl like:

        my $soapResponse = $jira->updateIssue($token, "CRASHBURN-269", [
         

        Unknown macro: {"id" => SOAP}

        ]);

        but returns with faultcode, faultstring, and faultdetail as follows:

          soapenv:Server.userException, org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType, HASH(0x8b84dc4)

        The deserializer complains about the anyType of the field "summary" that I want to update.

        Any clue?

  17. I'm not sure if this is a SOAP thing or a bug in Jira, but if I send a bad request to the SOAP API the HTTP reply has the code 500 (internal server error) when it should be something in the 400's (client error).

    1. Hi Nathaniel,
      Perhaps you could be a bit more specific, what exactly do you mean by "send a bad request"? This sounds reasonable, perhaps opening an Improvement request at http://jira.atlassian.com with the full details of the behavior would be the best action to take.

  18. If you are having troubles to upload files to JIRA via SOAP client written in other languages (perl, python, php, etc.), please refer to the documentation of the toolkit you are using for details about converting a file to xsd_base64Binary.

    Here is a simple Python example which uses the SOAPpy's Types.base64BinaryType wrapper:

    1. Hi

      I am using this code, and it works for most attachments. However, when used on zip files the resultant zip file cannot be unzipped on our linux server as it appears to be missing the last character. (The same zip file can be unzipped successfully on Windows).

      Adding a null character to the end of the attached zip file appears to get around the problem but feels very hacky.

      Does anyone have a better understanding of what is going on here, so that a better "fix" can be made?

      Thanks

      David

    2. Thank you for this.  Would you happen to have a suds version?

      1. Got it working (updated):

        1. That's good news. The API is

          boolean addBase64EncodedAttachmentsToIssue(String token, String issueKey, String[] fileNames, String[] base64EncodedAttachmentData)

          so I think you may have to put the third and fourth parameters inside arrays.

          1. Updated code above.  Thanks.

          2. As of today jira4r doesn't appear to have been updated to add the new method addBase64EncodedAttachmentsToIssue.  For others using jira4r, here is a link to an description of how I modified jira4r to get this new method to work:  http://forums.atlassian.com/message.jspa?messageID=257374599#257374599

  19. I don't see any method in the API to link issues or create subtasks. Is that supported?

    1. Hi Ugo,

      Yes, the current SOAP service does not support subtask creation. You will need to modify the source code in order to do that.

      The classes that you will need to look into are:

      • com.atlassian.jira.rpc.soap.beans.RemoteIssue (Add getter and setter)
      • com.atlassian.jira.rpc.soap.service.IssueServiceImpl

      Hope it helps,
      Yuen-Chi

      1. Hello Yuen-Chi,

        is there any way using SOAP to link one issue to another?

        Regards
        Clemens

        1. Hello Clemens,

          I'm sorry that it is currently not supported. You may consider extending the plugin yourself or creating a feature request.

          Cheers,
          Yuen-Chi

  20. Yuen-Chi,

    any chances of having this in one of the next releases? Is there a JIRA issue for this?

    1. I have created a feature request at JRA-10656. Feel free to comment on it, cast your vote, or watch it to be notified of further development.

      Cheers,
      Yuen-Chi

  21. FYI,

    RemoteVersion's sequence value is set like this, e.g. sequence = 2

    from (in respect to the order as shown in the Manage Versions page):

    to:

    Cheers,
    Yuen-Chi

  22. I have a question about the validity of tokens returned by the login method. I am storing the token indefinetely in order to avoid having to call login before every method call. However it seems that after some time the token is no longer valid and I have to login again.

    Is there a way to know if a token is still valid before calling a method?

    1. Hello Ugo,

      Unfortunately, this is not supported by JIRA at the moment. Perhaps you can try modifying the DEFAULT_TIMEOUT constant of com.atlassian.jira.rpc.auth.TokenManagerImpl to prolong the session time or modify com.atlassian.jira.rpc.soap.JiraSoapServiceImpl to add new functions.

      There's currently a feature request with regards to this being tracked at JRA-11015, feel free to comment and vote on it.

      Cheers,
      Yuen-Chi

      1. Anonymous

        Could you please give a code example (preferably Perl) as to how to modify the DEFAULT_TIMEOUT constant once you have logged in and received the authentication token?  Thank you very much!

  23. Interestingly the WSDL works with .NET v1.1 but doesn't seem to work with .NET v2.0. After I generated the client stubs (with the wsdl.exe contained in the .NET framework) I do:

    ... The following exception is thrown suggesting that the server is returning content type text/plain rather than text/xml. Does anyone have an idea how to fix this?

    Client found response content type of 'text/plain; charset=UTF-8', but expected 'text/xml'.
    The request failed with the error message:
    --
    <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:loginResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://soap.rpc.jira.atlassian.com"><loginReturn xsi:type="xsd:string">Htmt499a48</loginReturn></ns1:loginResponse></soapenv:Body></soapenv:Envelope>
    --.

    1. Reading this http://www.alotsoft.com/alotsoftweb/download/UserGuideCs.pdf suggests that this could be caused by .NET not supporting 'MIME SOAP with Attachments'?!?!

    2. Anonymous

      can you login rightly?  I  add a web service reference to  http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl  

       as test. so I can login it with right username and pwd.such as

      test.JiraSoapServiceClient a = new test.JiraSoapServiceClient();
                  string token= a.login("UserName", "pwd");

  24. I'm using SOAP to update issues by reading a text file with the updated values.  I'm trying to replicate it to read values from an XML file provide with values used to either create or edit issue in JIRA.  I'm not XML expert so can you help me understand how to read this information into the SOAP client?

    1. Hello Benjill,

      May I know which programming language you are using? You can always google to find simple tutorials for XML parsing.

      If you are writing a Java client, you may try the dom4j library.

      Cheers,
      Yuen-Chi

  25. Hi, I have written a small utility using Jira RPC service. I need to get the "Original Estimate" from my RemoteIssue. How do I do this? Thanks much. Regards, Kartik

    1. Hello Kartik,

      It doesn't seem like it's supported in the RemoteIssue object, I'm afraid that you'll need to modify its source code.

      Cheers,
      Yuen-Chi Lian

      1. Any chance that "Original Estimate" (and "Remaining Estimate" etc) are now supported in RemoteIssue?

  26. Anyone has this problem? 

    1. Hello Chris,

      The Maven 1 repository has migrated to http://mirrors.ibiblio.org/pub/mirrors/maven.

      For more information, please refer to this entry in our development blog: Maven 1 repository changes

      Cheers,
      Yuen-Chi Lian

  27. Hi there,

    It's great to have open APIs, but I need to change the issue type and I don't understand your way of thinking. I'm using Python and I first tried the XML-RPC API:

    >>> s.jira1.updateIssue(auth, jira_key, { 'type': '16'})
    Traceback (most recent call last):
      File "<pyshell#59>", line 1, in ?
        s.jira1.updateIssue(auth, jira_key, { 'type': '16'})
      File "C:\Program\Python22\lib\xmlrpclib.py", line 821, in __call__
        return self.__send(self.__name, args)
      File "C:\Program\Python22\lib\xmlrpclib.py", line 975, in __request
        verbose=self.__verbose
      File "C:\Program\Python22\lib\xmlrpclib.py", line 853, in request
        return self.parse_response(h.getfile())
      File "C:\Program\Python22\lib\xmlrpclib.py", line 896, in parse_response
        return u.close()
      File "C:\Program\Python22\lib\xmlrpclib.py", line 571, in close
        raise apply(Fault, (), self._stack[0])
    Fault: <Fault 0: 'java.lang.Exception: java.lang.ClassCastException'>
    

    Then I tried the SOAP api. Acording to your example I have the key is "issuetype":

    >>> soap.updateIssue(auth, 'GPLMSDP-9', [{'id': 'issuetype', 'values': '4'}])
    <SOAPpy.Types.structType multiRef at 20798992>: {'key': 'GPLMSDP-9',
     'priority': '2', 'attachmentNames': None, 'votes': 0L, 'updated': (2006, 12, 15, 16, 38, 
    44.0), 'description': None, 'project': 'GPLMSDP', 'created': (2006, 3, 24, 15, 44, 
    20.0), 'customFieldValues': [], 'type': '4', ... }
    

    Which works, but why does the result come back with a key "type"??? So now back to XML-RPC:

    >>> s.jira1.updateIssue(auth, jira_key, { 'issuetype': '16'})
    Traceback (most recent call last):
      File "<pyshell#51>", line 1, in ?
        s.jira1.updateIssue(auth, jira_key, { 'issuetype': '16'})
      File "C:\Program\Python22\lib\xmlrpclib.py", line 821, in __call__
        return self.__send(self.__name, args)
      File "C:\Program\Python22\lib\xmlrpclib.py", line 975, in __request
        verbose=self.__verbose
      File "C:\Program\Python22\lib\xmlrpclib.py", line 853, in request
        return self.parse_response(h.getfile())
      File "C:\Program\Python22\lib\xmlrpclib.py", line 896, in parse_response
        return u.close()
      File "C:\Program\Python22\lib\xmlrpclib.py", line 571, in close
        raise apply(Fault, (), self._stack[0])
    Fault: <Fault 0: 'java.lang.Exception: java.lang.ClassCastException'>
    

    So it still doesn't work!? Why? Let's try making it a list:

    >>> s.jira1.updateIssue(auth, jira_key, { 'issuetype': ['16']})
    

    And that works. Incidentally you can send in 'type' without getting any errors, but nothing changes. Very odd.

    Where can I find documentation on what the issue type fields are called, since what I get back obviously doesn't match what I need to send in? And whether I should send a list or a string or an integer because it varies a lot. It gets so difficult then...

    A lot of the other stuff works well, why this is so messed up I don't understand (wink)

    Cheers,
    Peter

    1. Hi Peter-

      The JiraSoapService api can be found here: JiraSoapService api

      updateIssue() looks like:

      The RemoteFieldValue[] constructor is:

      So, yes, it appears that your final solution matches the constructor.

      Hopefully this helps!
      Jeff

    2. Hi Peter,

      Let me know if this page addresses your problem:

      To correctly define the field type and such, it's best to refer to the WSDL.

      Cheers,
      Yuen-Chi Lian

      1. Hello,

        I've used your APIs, both XML-RPC (preferred for simplicity) and SOAP and the part I don't understand is how I could possibly figure out that the key is 'issuetype'??

        The response contains the key 'type'. Afaict the WSDL also uses 'type', at least I cannot find the word "issuetype" in it. The JiraSoapService and ditto XmlRpc javadoc doesn't say anything about the field names. Incidentally the XmlRpc doc contains slightly more documentation than the SOAP one. Am I blind?

        The APIs are a terrific thing, they would be even better if the documentation was upped a bit!

        Cheers,
        Peter

        1. And to add to the confusion, 'type' is a perfectly valid key except nothing happens when you try to modify it, you don't even get an error (sad)

          1. Hi Peter,

            Please use the getFieldsForEdit to retrieve the list of possible fields if you're updating via SOAP,

            e.g.

            Result:

            FYI, there will be a major rework on the Remote API in our future release. I can't guarantee when it'll be though.

            Regards,
            Yuen-Chi Lian

            1. Hi,

              I am trying to update the issue and I am trying to update its "Fix Version's" field but this fields does not appear in when I callgetFieldsForEdit methods. Also somebody knows how to use the method releaseVersion. I am trying to release a version but its not happening.
               
              Yogesh   

  28. Hi, does anyone know of a SOAP implementation/library for JavaScript?

    There's a good one for XML-RPC: http://jsolait.net/wiki/documentation/xmlrpc

    But since JIRA's SOAP functionality is better than its XML-RPC, I'd like to be able to use it from JavaScript. I want web pages to directly talk to JIRA (AJAXy stuff) instead of having server-side Java, Ruby, etc.

    Thanks in advance. (smile)

    1. Have you tried the Mozilla SOAPCall()?

      Cheers,
      Yuen-Chi Lian

  29. Hello guys ,

    I am relatively new to Jira and I am currently trying to create a application which accesses the JIRA methods via RPC. I started with XML RPC but I had to have an addattachment method called and found out to be absent in XML RPC. Then i thought of having the soap routines. But i dont know here top start from. Firstly i have the atlassian-jira-rpc-plugin-3.7.2-1.jar and the dependent jars in my swing application which is being developed in Eclipse. I went through the page in atlassian where creation of a soap client was depicted but could not find the class JiraSoapServiceService along with other classes in the jar file. Please advice me on how to go about creating a client from the jar files downloaded. I also wanted to know where the jira settings should be given like the url and stuff.

    Thank you ,

    Dinesh 

    1. As in the first example on this page, the first step for creating a SOAP client is to get hold of com.atlassian.jira.rpc.soap.service.JiraSoapServiceServiceLocator. However, after downloading and including atlassian-jira-rpc-plugin-3.7.2-1.jar into my project, my Swing application still cannot find the location class. Is the above example outdated or do I need to include some more jira jars?

      Please advise soon.

      Thanks,
      Dinesh

      1. Hello Dinesh,

        Are you sure the JAR is correctly included in the classpath? Can you also check the content of the JAR to make sure that you are specifying the packages and classes correctly?

        You may try asking your question in the mailing list, someone experienced may be able to help troubleshooting this:

        Cheers,
        Yuen-Chi Lian

        1. Thanks for the reply Yuen .. I solved my problem by creating a web service client available from Eclipse. I gave the wsdl and it created the exact files as the jira client sample jar had. A single jar has been created and it works fine now.

          Thanks and regards,
          Dinesh 

        2. Hey Yuen ..
          I seem to be stuck with the createProject method in the soap API . It gives me errors.
          I try to get the security, permission and notification schemes from the list of security, permission and notification schemes and then try to create my own projects as given in the method createProject().
          I get this error

          AxisFault
          faultCode:

          Unknown macro: {http}

          Server.userException
          faultSubcode:
          faultString: java.lang.reflect.InvocationTargetException
          faultActor:
          faultNode:
          faultDetail:
          {}faultData:<cause xmlns:ns2="http://lang.java" xsi:type="ns2:Throwable"><cause xsi:nil="true" xsi:type="ns2:Throwable"/><localizedMessage xsi:type="xsd:string">com.atlassian.jira.project.ProjectManager.refresh(Lorg/ofbiz/core/entity/GenericValue;)V</localizedMessage><message xsi:type="xsd:string">com.atlassian.jira.project.ProjectManager.refresh(Lorg/ofbiz/core/entity/GenericValue;)V</message><stackTrace soapenc:arrayType="ns2:StackTraceElement[53]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:Array"><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.rpc.soap.service.ProjectServiceImpl</className><fileName xsi:type="xsd:string">ProjectServiceImpl.java</fileName><lineNumber xsi:type="xsd:int">229</lineNumber><methodName xsi:type="xsd:string">createProject</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.rpc.soap.service.ProjectServiceImpl</className><fileName xsi:type="xsd:string">ProjectServiceImpl.java</fileName><lineNumber xsi:type="xsd:int">257</lineNumber><methodName xsi:type="xsd:string">createProject</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.rpc.soap.JiraSoapServiceImpl</className><fileName xsi:type="xsd:string">JiraSoapServiceImpl.java</fileName><lineNumber xsi:type="xsd:int">255</lineNumber><methodName xsi:type="xsd:string">createProject</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">sun.reflect.NativeMethodAccessorImpl</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-2</lineNumber><methodName xsi:type="xsd:string">invoke0</methodName><nativeMethod xsi:type="xsd:boolean">true</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">sun.reflect.NativeMethodAccessorImpl</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">sun.reflect.DelegatingMethodAccessorImpl</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">java.lang.reflect.Method</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.providers.java.RPCProvider</className><fileName xsi:type="xsd:string">RPCProvider.java</fileName><lineNumber xsi:type="xsd:int">397</lineNumber><methodName xsi:type="xsd:string">invokeMethod</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.providers.java.RPCProvider</className><fileName xsi:type="xsd:string">RPCProvider.java</fileName><lineNumber xsi:type="xsd:int">186</lineNumber><methodName xsi:type="xsd:string">processMessage</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.providers.java.JavaProvider</className><fileName xsi:type="xsd:string">JavaProvider.java</fileName><lineNumber xsi:type="xsd:int">323</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.strategies.InvocationStrategy</className><fileName xsi:type="xsd:string">InvocationStrategy.java</fileName><lineNumber xsi:type="xsd:int">32</lineNumber><methodName xsi:type="xsd:string">visit</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.SimpleChain</className><fileName xsi:type="xsd:string">SimpleChain.java</fileName><lineNumber xsi:type="xsd:int">118</lineNumber><methodName xsi:type="xsd:string">doVisiting</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.SimpleChain</className><fileName xsi:type="xsd:string">SimpleChain.java</fileName><lineNumber xsi:type="xsd:int">83</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.handlers.soap.SOAPService</className><fileName xsi:type="xsd:string">SOAPService.java</fileName><lineNumber xsi:type="xsd:int">453</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.server.AxisServer</className><fileName xsi:type="xsd:string">AxisServer.java</fileName><lineNumber xsi:type="xsd:int">281</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.transport.http.AxisServlet</className><fileName xsi:type="xsd:string">AxisServlet.java</fileName><lineNumber xsi:type="xsd:int">699</lineNumber><methodName xsi:type="xsd:string">doPost</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">javax.servlet.http.HttpServlet</className><fileName xsi:type="xsd:string">HttpServlet.java</fileName><lineNumber xsi:type="xsd:int">709</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.transport.http.AxisServletBase</className><fileName xsi:type="xsd:string">AxisServletBase.java</fileName><lineNumber xsi:type="xsd:int">327</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">javax.servlet.http.HttpServlet</className><fileName xsi:type="xsd:string">HttpServlet.java</fileName><lineNumber xsi:type="xsd:int">802</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.servlet.rpc.LazyAxisDecoratorServlet</className><fileName xsi:type="xsd:string">LazyAxisDecoratorServlet.java</fileName><lineNumber xsi:type="xsd:int">55</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">252</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.filters.AccessLogFilter</className><fileName xsi:type="xsd:string">AccessLogFilter.java</fileName><lineNumber xsi:type="xsd:int">51</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.seraph.filter.SecurityFilter</className><fileName xsi:type="xsd:string">SecurityFilter.java</fileName><lineNumber xsi:type="xsd:int">182</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.seraph.filter.LoginFilter</className><fileName xsi:type="xsd:string">LoginFilter.java</fileName><lineNumber xsi:type="xsd:int">177</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.util.profiling.filters.ProfilingFilter</className><fileName xsi:type="xsd:string">ProfilingFilter.java</fileName><lineNumber xsi:type="xsd:int">132</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.filters.ProfilingAndErrorFilter</className><fileName xsi:type="xsd:string">ProfilingAndErrorFilter.java</fileName><lineNumber xsi:type="xsd:int">35</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.filters.ActionCleanupDelayFilter</className><fileName xsi:type="xsd:string">ActionCleanupDelayFilter.java</fileName><lineNumber xsi:type="xsd:int">39</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.core.filters.AbstractEncodingFilter</className><fileName xsi:type="xsd:string">AbstractEncodingFilter.java</fileName><lineNumber xsi:type="xsd:int">37</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardWrapperValve</className><fileName xsi:type="xsd:string">StandardWrapperValve.java</fileName><lineNumber xsi:type="xsd:int">213</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardContextValve</className><fileName xsi:type="xsd:string">StandardContextValve.java</fileName><lineNumber xsi:type="xsd:int">178</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardHostValve</className><fileName xsi:type="xsd:string">StandardHostValve.java</fileName><lineNumber xsi:type="xsd:int">126</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.valves.ErrorReportValve</className><fileName xsi:type="xsd:string">ErrorReportValve.java</fileName><lineNumber xsi:type="xsd:int">105</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardEngineValve</className><fileName xsi:type="xsd:string">StandardEngineValve.java</fileName><lineNumber xsi:type="xsd:int">107</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.connector.CoyoteAdapter</className><fileName xsi:type="xsd:string">CoyoteAdapter.java</fileName><lineNumber xsi:type="xsd:int">148</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.coyote.http11.Http11Processor</className><fileName xsi:type="xsd:string">Http11Processor.java</fileName><lineNumber xsi:type="xsd:int">869</lineNumber><methodName xsi:type="xsd:string">process</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler</className><fileName xsi:type="xsd:string">Http11BaseProtocol.java</fileName><lineNumber xsi:type="xsd:int">664</lineNumber><methodName xsi:type="xsd:string">processConnection</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.tomcat.util.net.PoolTcpEndpoint</className><fileName xsi:type="xsd:string">PoolTcpEndpoint.java</fileName><lineNumber xsi:type="xsd:int">527</lineNumber><methodName xsi:type="xsd:string">processSocket</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.tomcat.util.net.LeaderFollowerWorkerThread</className><fileName xsi:type="xsd:string">LeaderFollowerWorkerThread.java</fileName><lineNumber xsi:type="xsd:int">80</lineNumber><methodName xsi:type="xsd:string">runIt</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">org.apache.tomcat.util.threads.ThreadPool$ControlRunnable</className><fileName xsi:type="xsd:string">ThreadPool.java</fileName><lineNumber xsi:type="xsd:int">684</lineNumber><methodName xsi:type="xsd:string">run</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns2:StackTraceElement"><className xsi:type="xsd:string">java.lang.Thread</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">run</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace></stackTrace></cause><targetException xmlns:ns3="http://lang.java" xsi:type="ns3:Throwable"><cause xsi:nil="true" xsi:type="ns3:Throwable"/><localizedMessage xsi:type="xsd:string">com.atlassian.jira.project.ProjectManager.refresh(Lorg/ofbiz/core/entity/GenericValue;)V</localizedMessage><message xsi:type="xsd:string">com.atlassian.jira.project.ProjectManager.refresh(Lorg/ofbiz/core/entity/GenericValue;)V</message><stackTrace soapenc:arrayType="ns3:StackTraceElement[53]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:Array"><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.rpc.soap.service.ProjectServiceImpl</className><fileName xsi:type="xsd:string">ProjectServiceImpl.java</fileName><lineNumber xsi:type="xsd:int">229</lineNumber><methodName xsi:type="xsd:string">createProject</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.rpc.soap.service.ProjectServiceImpl</className><fileName xsi:type="xsd:string">ProjectServiceImpl.java</fileName><lineNumber xsi:type="xsd:int">257</lineNumber><methodName xsi:type="xsd:string">createProject</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.rpc.soap.JiraSoapServiceImpl</className><fileName xsi:type="xsd:string">JiraSoapServiceImpl.java</fileName><lineNumber xsi:type="xsd:int">255</lineNumber><methodName xsi:type="xsd:string">createProject</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">sun.reflect.NativeMethodAccessorImpl</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-2</lineNumber><methodName xsi:type="xsd:string">invoke0</methodName><nativeMethod xsi:type="xsd:boolean">true</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">sun.reflect.NativeMethodAccessorImpl</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">sun.reflect.DelegatingMethodAccessorImpl</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">java.lang.reflect.Method</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.providers.java.RPCProvider</className><fileName xsi:type="xsd:string">RPCProvider.java</fileName><lineNumber xsi:type="xsd:int">397</lineNumber><methodName xsi:type="xsd:string">invokeMethod</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.providers.java.RPCProvider</className><fileName xsi:type="xsd:string">RPCProvider.java</fileName><lineNumber xsi:type="xsd:int">186</lineNumber><methodName xsi:type="xsd:string">processMessage</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.providers.java.JavaProvider</className><fileName xsi:type="xsd:string">JavaProvider.java</fileName><lineNumber xsi:type="xsd:int">323</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.strategies.InvocationStrategy</className><fileName xsi:type="xsd:string">InvocationStrategy.java</fileName><lineNumber xsi:type="xsd:int">32</lineNumber><methodName xsi:type="xsd:string">visit</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.SimpleChain</className><fileName xsi:type="xsd:string">SimpleChain.java</fileName><lineNumber xsi:type="xsd:int">118</lineNumber><methodName xsi:type="xsd:string">doVisiting</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.SimpleChain</className><fileName xsi:type="xsd:string">SimpleChain.java</fileName><lineNumber xsi:type="xsd:int">83</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.handlers.soap.SOAPService</className><fileName xsi:type="xsd:string">SOAPService.java</fileName><lineNumber xsi:type="xsd:int">453</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.server.AxisServer</className><fileName xsi:type="xsd:string">AxisServer.java</fileName><lineNumber xsi:type="xsd:int">281</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.transport.http.AxisServlet</className><fileName xsi:type="xsd:string">AxisServlet.java</fileName><lineNumber xsi:type="xsd:int">699</lineNumber><methodName xsi:type="xsd:string">doPost</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">javax.servlet.http.HttpServlet</className><fileName xsi:type="xsd:string">HttpServlet.java</fileName><lineNumber xsi:type="xsd:int">709</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.axis.transport.http.AxisServletBase</className><fileName xsi:type="xsd:string">AxisServletBase.java</fileName><lineNumber xsi:type="xsd:int">327</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">javax.servlet.http.HttpServlet</className><fileName xsi:type="xsd:string">HttpServlet.java</fileName><lineNumber xsi:type="xsd:int">802</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.servlet.rpc.LazyAxisDecoratorServlet</className><fileName xsi:type="xsd:string">LazyAxisDecoratorServlet.java</fileName><lineNumber xsi:type="xsd:int">55</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">252</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.filters.AccessLogFilter</className><fileName xsi:type="xsd:string">AccessLogFilter.java</fileName><lineNumber xsi:type="xsd:int">51</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.seraph.filter.SecurityFilter</className><fileName xsi:type="xsd:string">SecurityFilter.java</fileName><lineNumber xsi:type="xsd:int">182</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.seraph.filter.LoginFilter</className><fileName xsi:type="xsd:string">LoginFilter.java</fileName><lineNumber xsi:type="xsd:int">177</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.util.profiling.filters.ProfilingFilter</className><fileName xsi:type="xsd:string">ProfilingFilter.java</fileName><lineNumber xsi:type="xsd:int">132</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.filters.ProfilingAndErrorFilter</className><fileName xsi:type="xsd:string">ProfilingAndErrorFilter.java</fileName><lineNumber xsi:type="xsd:int">35</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.jira.web.filters.ActionCleanupDelayFilter</className><fileName xsi:type="xsd:string">ActionCleanupDelayFilter.java</fileName><lineNumber xsi:type="xsd:int">39</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">com.atlassian.core.filters.AbstractEncodingFilter</className><fileName xsi:type="xsd:string">AbstractEncodingFilter.java</fileName><lineNumber xsi:type="xsd:int">37</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">202</lineNumber><methodName xsi:type="xsd:string">internalDoFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.ApplicationFilterChain</className><fileName xsi:type="xsd:string">ApplicationFilterChain.java</fileName><lineNumber xsi:type="xsd:int">173</lineNumber><methodName xsi:type="xsd:string">doFilter</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardWrapperValve</className><fileName xsi:type="xsd:string">StandardWrapperValve.java</fileName><lineNumber xsi:type="xsd:int">213</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardContextValve</className><fileName xsi:type="xsd:string">StandardContextValve.java</fileName><lineNumber xsi:type="xsd:int">178</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardHostValve</className><fileName xsi:type="xsd:string">StandardHostValve.java</fileName><lineNumber xsi:type="xsd:int">126</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.valves.ErrorReportValve</className><fileName xsi:type="xsd:string">ErrorReportValve.java</fileName><lineNumber xsi:type="xsd:int">105</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.core.StandardEngineValve</className><fileName xsi:type="xsd:string">StandardEngineValve.java</fileName><lineNumber xsi:type="xsd:int">107</lineNumber><methodName xsi:type="xsd:string">invoke</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.catalina.connector.CoyoteAdapter</className><fileName xsi:type="xsd:string">CoyoteAdapter.java</fileName><lineNumber xsi:type="xsd:int">148</lineNumber><methodName xsi:type="xsd:string">service</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.coyote.http11.Http11Processor</className><fileName xsi:type="xsd:string">Http11Processor.java</fileName><lineNumber xsi:type="xsd:int">869</lineNumber><methodName xsi:type="xsd:string">process</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler</className><fileName xsi:type="xsd:string">Http11BaseProtocol.java</fileName><lineNumber xsi:type="xsd:int">664</lineNumber><methodName xsi:type="xsd:string">processConnection</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.tomcat.util.net.PoolTcpEndpoint</className><fileName xsi:type="xsd:string">PoolTcpEndpoint.java</fileName><lineNumber xsi:type="xsd:int">527</lineNumber><methodName xsi:type="xsd:string">processSocket</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.tomcat.util.net.LeaderFollowerWorkerThread</className><fileName xsi:type="xsd:string">LeaderFollowerWorkerThread.java</fileName><lineNumber xsi:type="xsd:int">80</lineNumber><methodName xsi:type="xsd:string">runIt</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">org.apache.tomcat.util.threads.ThreadPool$ControlRunnable</className><fileName xsi:type="xsd:string">ThreadPool.java</fileName><lineNumber xsi:type="xsd:int">684</lineNumber><methodName xsi:type="xsd:string">run</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace><stackTrace xsi:type="ns3:StackTraceElement"><className xsi:type="xsd:string">java.lang.Thread</className><fileName xsi:nil="true" xsi:type="xsd:string"/><lineNumber xsi:type="xsd:int">-1</lineNumber><methodName xsi:type="xsd:string">run</methodName><nativeMethod xsi:type="xsd:boolean">false</nativeMethod></stackTrace></stackTrace></targetException>

          Unknown macro: {http}

          hostname:dvasudevan

          java.lang.reflect.InvocationTargetException
          at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
          at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
          at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
          at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
          at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
          at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
          at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
          at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
          at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
          at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
          at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
          at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
          at javax.xml.parsers.SAXParser.parse(Unknown Source)
          at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
          at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
          at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
          at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
          at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
          at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
          at org.apache.axis.client.Call.invoke(Call.java:2767)
          at org.apache.axis.client.Call.invoke(Call.java:2443)
          at org.apache.axis.client.Call.invoke(Call.java:2366)
          at org.apache.axis.client.Call.invoke(Call.java:1812)
          at dvasudevan.jira.rpc.soap.jirasoapservice_v2.JirasoapserviceV2SoapBindingStub.createProject(JirasoapserviceV2SoapBindingStub.java:2991)
          at repository.RepositoryApplication.create_jira_project(RepositoryApplication.java:2238)
          at repository.RepositoryApplication$6.doInBackground(RepositoryApplication.java:2169)
          at javax.swing.SwingWorker$1.call(Unknown Source)
          at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
          at java.util.concurrent.FutureTask.run(Unknown Source)
          at javax.swing.SwingWorker.run(Unknown Source)
          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
          at java.lang.Thread.run(Unknown Source)

          Please advise me on the same ..
          Thanks and Regards,
          Dinesh

          1. Hey guys ..the project is visible only after i restart the apache tomcat server .. Could anyone please help me with this issue ?

            Thanks and Regards
            Dinesh

            1. Hello Dinesh,

              May I know which version of JIRA you're using? It may be one of these reported problems: JRA-7016, JRA-9812, JRA-10438

              I'd advise you to create a support request on this instead and provide us more details. Alternatively, you can ask your question in the jira-developer mailing list, someone who has experienced this may be able to shed some light on your problem.

              Cheers,
              Yuen-Chi Lian

              1. Hi Yuen ,
                I am using Atlassian JIRA™ the Professional Issue Tracker. (Enterprise Edition, Version: 3.6.5)

                Thanks and Regards,
                Dinesh

              2. Hi Yuen ,
                Could u also tell me how i could download an attachment from a particular issue ?? I would like to download all attachments from a particular issue and then check them in the application.

                Thanks and Regards,
                Dinesh

                1. There is an issue tracking something similar with this at JRA-11180.

                  Cheers,
                  Yuen-Chi Lian

                  1. Hi Yuen,
                    I tried using the getAttachments method but even if there are attachments in the issue, the method returns me null. I don't know why this happens. Please help with the various possibilities by which i could download this attachment using java.

                    Thanks and Regards,
                    Dinesh

  30. Hello, I'm using python client, problem is API didnt support addComment with different assigner.

    Could you help me ?

  31. Hi,

    I am trying the build/run the sample SOAP client . I get the following errors.

    I have all along worked with ANT. ( not familiar with Maven much)

    Please let me know if I am missing something .

    I dont see the following classes JiraSoapServiceService, JiraSoapServiceServiceLocator,JiraSoapService.  Which .jar file has these classes?Here is the Maven log .......

    C:\kiran\jira-rpc-samples-3.6-1>maven
     __  __
    |  \/  |_ _Apache_ ___
    | |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
    ||  |_,|_/__|||_|  v. 1.0

    plugin maven-pom-plugin-1.5.1 is cached (dynatag dep) but no longer present
    Cache invalidated due to out of date plugins
    Attempting to download dom4j-1.4-dev-8.jar.
    475K downloaded
    Attempting to download commons-jelly-20030902.160215.jar.
    150K downloaded
    Attempting to download commons-jelly-tags-jsl-20030211.143151.jar.
    14K downloaded
    Attempting to download commons-jelly-tags-log-20030211.142821.jar.
    8K downloaded
    Attempting to download commons-jelly-tags-velocity-20030303.205659.jar.
    7K downloaded
    Attempting to download commons-jelly-tags-xml-20040613.030723.jar.
    33K downloaded
    Attempting to download commons-logging-1.0.3.jar.
    30K downloaded
    Attempting to download velocity-1.4-dev.jar.
    505K downloaded
    Attempting to download xml-apis-1.0.b2.jar.
    106K downloaded
    Attempting to download isorelax-20030108.jar.
    188K downloaded
    Attempting to download jing-20030619.jar.
    475K downloaded
    Attempting to download xerces-2.4.0.jar.
    874K downloaded
    Attempting to download commons-io-20030203.000550.jar.
    59K downloaded
    Attempting to download commons-net-1.1.0.jar.
    139K downloaded
    Attempting to download commons-httpclient-2.0.jar.
    217K downloaded
    Attempting to download jsch-0.1.5.jar.
    79K downloaded
    Attempting to download junit-3.8.1.jar.
    118K downloaded
    Attempting to download commons-jelly-tags-antlr-20030211.143720.jar.
    7K downloaded
    Attempting to download antlr-2.7.2.jar.
    349K downloaded
    Plugin 'maven-deploy-plugin' in project 'Atlassian JIRA Sample SOAP client' is not available

    BUILD FAILED
    File...... C:\kiran\jira-rpc-samples-3.6-1\maven.xml
    Element... attainGoal
    Line...... 4
    Column.... 38
    No goal [axis:compile]
    Total time: 1 minutes 7 seconds
    Finished at: Sun Jul 22 08:33:06 EDT 2007

    C:\kiran\jira-rpc-samples-3.6-1>maven java:compile
     __  __
    |  \/  |_ _Apache_ ___
    | |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
    ||  |_,|_/__|||_|  v. 1.0

    BUILD FAILED
    File...... C:\kiran\jira-rpc-samples-3.6-1\maven.xml
    Element... attainGoal
    Line...... 4
    Column.... 38
    No goal [axis:compile]
    Total time: 1 seconds
    Finished at: Sun Jul 22 08:59:38 EDT 2007

    C:\kiran\jira-rpc-samples-3.6-1>maven test
     __  __
    |  \/  |_ _Apache_ ___
    | |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
    ||  |_,|_/__|||_|  v. 1.0

    BUILD FAILED
    File...... C:\kiran\jira-rpc-samples-3.6-1\maven.xml
    Element... attainGoal
    Line...... 4
    Column.... 38
    No goal [axis:compile]
    Total time: 1 seconds
    Finished at: Sun Jul 22 09:00:00 EDT 2007

    C:\kiran\jira-rpc-samples-3.6-1>maven build:end
     __  __
    |  \/  |_ _Apache_ ___
    | |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
    ||  |_,|_/__|||_|  v. 1.0

    BUILD SUCCESSFUL
    Total time: 1 seconds
    Finished at: Sun Jul 22 09:02:32 EDT 2007

    C:\kiran\jira-rpc-samples-3.6-1>maven -u
     __  __
    |  \/  |_ _Apache_ ___
    | |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
    ||  |_,|_/__|||_|  v. 1.0

    Project Goals
    =============

    Undocumented goals :

      fetch-wsdl
      release

    C:\kiran\jira-rpc-samples-3.6-1>maven java:compile
     __  __
    |  \/  |_ _Apache_ ___
    | |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
    ||  |_,|_/__|||_|  v. 1.0

    BUILD FAILED
    File...... C:\kiran\jira-rpc-samples-3.6-1\maven.xml
    Element... attainGoal
    Line...... 4
    Column.... 38
    No goal [axis:compile]
    Total time: 1 seconds
    Finished at: Sun Jul 22 09:03:32 EDT 2007

    C:\kiran\jira-rpc-samples-3.6-1>




    1. According to the README.txt file, you need to run the following first:

      maven plugin:download -Dmaven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven -DartifactId=maven-axis-plugin -DgroupId=atlassian -Dversion=0.7AXIS1.3

  32. Is there any option or possible call to LOG WORK DONE? It's the most useful function for my system.

    I'm trying to integrate the RPC-Plugin with a Subversion pre-commit hook, and trough the comment log I'd like to input work done, for example:

    "JRA-1234 Fix all feature. [3h]"

    Using the RPC-Plugin I'd like to add 3 hours of work done to the task automatically. That's possible modifying the pre-commit hook script of the repository.

    Regards,

    Basi.

  33. Note: This does not work at all in maven 2.x. Get a 1.x release here: http://archive.apache.org/dist/maven/binaries/

    The instructions should be updated to make it clear that it does not work at all in newer versions of maven.

  34. Using the follwing code, I am attempting to run a filter and get a list of issue keys. Interestingly enough it does produce the correct list, however the only field on the RemoteIssue that is not populated is the issue key.

    Does anyone have a clue why this would happen?

        public String[] getIssueKeys(String user, String pass, String filter) 
            throws ServiceException, RemoteException, RemoteAuthenticationException, com.atlassian.jira.rpc.exception.RemoteException 
        {
            RemoteIssue[] issues;
            String[]      keys;
    
            JiraSoapService service = new JiraSoapServiceServiceLocator().getJirasoapserviceV2();        
            String token = service.login(user, pass);
    
            issues = service.getIssuesFromFilter(token, filter);
    
            if(issues != null && issues.length > 0) {
                keys = new String[issues.length];
    
                for(int x = 0; x < issues.length; x++) {
                    keys[x] = issues[x].getKey();
                    System.out.println(issues[x].getId() + ": " + issues[x].getKey());
                }
            } else {
                keys = null;
            }
    
            return keys;
        }
    
    1. note: This is a problem with the java client. I ran this direclty and the xml does contain every field, including the key.

      1. I figured my problem out. You need to run with the latest version of the RPC plugin, no matter what version of Jira you have. Plugin version 3.10.2 works just fine with Jira 3.7.2. This should probably be made more clear somewhere.

  35. Hi,

     I am new to JIRA and I tried using the sample SOAP-Client mentioned here.

     My java project complies but when I execute this project from command line I get the below errors:

     Could someone please help me out here, its quite urgent.

    Thanks !
    D:\Dev\samplerpc-plugin\jira-rpc-samples-3.6-1>java -jar release/jira-rpc-sample
    s-3.6-1.jar
    Running test SOAP client...
    Exception in thread "main" AxisFault

     faultCode:

    Unknown macro: {http}

    Server.userException


     faultSubcode:
     faultString: java.net.UnknownHostException: jira.atlassian.com
     faultActor:
     faultNode:
     faultDetail:

           

    Unknown macro: {http}

    stackTrace:java.net.UnknownHostException: j


    ira.atlassian.com
            at java.net.PlainSocketImpl.connect(Unknown Source)
            at java.net.SocksSocketImpl.connect(Unknown Source)
            at java.net.Socket.connect(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSoc
    ketFactory.java:153)
            at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSoc
    ketFactory.java:120)
            at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:1
    91)
            at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.ja
    va:404)
            at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)

            at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
    y.java:32)
            at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
            at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
            at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
            at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
            at org.apache.axis.client.Call.invoke(Call.java:2767)
            at org.apache.axis.client.Call.invoke(Call.java:2443)
            at org.apache.axis.client.Call.invoke(Call.java:2366)
            at org.apache.axis.client.Call.invoke(Call.java:1812)
            at _soapclient.JirasoapserviceV2SoapBindingStub.login(JirasoapserviceV2S
    oapBindingStub.java:5432)
            at com.atlassian.jira_soapclient.SOAPClient.main(SOAPClient.java:29)

           

    Unknown macro: {http}

    hostname:UK094784LT

    java.net.UnknownHostException: jira.atlassian.com
            at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
            at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154)

            at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
    y.java:32)
            at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
            at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
            at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
            at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
            at org.apache.axis.client.Call.invoke(Call.java:2767)
            at org.apache.axis.client.Call.invoke(Call.java:2443)
            at org.apache.axis.client.Call.invoke(Call.java:2366)
            at org.apache.axis.client.Call.invoke(Call.java:1812)
            at _soapclient.JirasoapserviceV2SoapBindingStub.login(JirasoapserviceV2S
    oapBindingStub.java:5432)
            at com.atlassian.jira_soapclient.SOAPClient.main(SOAPClient.java:29)
    Caused by: java.net.UnknownHostException: jira.atlassian.com
            at java.net.PlainSocketImpl.connect(Unknown Source)
            at java.net.SocksSocketImpl.connect(Unknown Source)
            at java.net.Socket.connect(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSoc
    ketFactory.java:153)
            at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSoc
    ketFactory.java:120)
            at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:1
    91)
            at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.ja
    va:404)
            at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)

            ... 11 more

  36. Hi -- does that PHP example above really work with ver. 3.10?

    Specifically, I'm wondering about this snippet:

    baseurl = soap.getServerInfo(auth)'baseUrl'
    newissue = soap.createIssue(auth,{'project': 'TST', 'type': '1', 'summary': 'Issue created with Python!'})

    print "Created %s/browse/%s" % (baseurl, newissue'key')

    In the Java sample, it appears that createIssue needs to have an object created by RemoteIssue. However the Python example leads me to believe that you can feed it a much simpler associative array (dictionary). I tried doing something similar in PHP and it's rejecting me.

  37. Bunch of beginner questions:

    Is there any chance there is an updated soap demo project?

    I saw a comment someplace before about a need to use Atlassian's custom Axis implementation.  But can we now use axis-1_4,  I do not remember the reason and lost the reference sorry.

    I want to get initial environment for Eclipse and roll with it.  So I'm trying to put a the needed pieces together.

    There is a really nice maven plugin for Eclipse but it is for maven 2.x.

    When I get the demo working is there any interest in posting it?

    1. Edward, absolutely please do.

      PS I noticed a http://repository.atlassian.com/jira-rpc-samples/poms/&nbsp;directory. Not sure but perhaps this got something to do with maven 2.x project object model.

      1. I have Eclipse project working against The Atlassian test jira instance and my own test instance so for I can create test issues.

        If I get he project working with Maven 2 I will see if there is a place to post the POMs. However I think this is site config issue not a Maven version issue. I'm not much of a maven user yet though.

        I have another problem I'm heving trouble finding a resources about now though. For my jira project time tracking is required. But there does not seem to be a good way to set this field yest I've tried a few variations.
        String[] timetrack = new String[] {"1d","1h","0"}

        ;
        struct.put("timetracking", timetrack);
        //// and,
        // struct.put("originalestimate","10000");
        // struct.put("estimate","9000");
        // struct.put("spent","0");
        ////as well as witht he DB name for these fields (prefix with time)
        Any chance you know a place I can look for more information about setting timetracking

  38. Hi All.

    Using 3.10 and trying to figure out how to set issue level security via a Java SOAP client.

    Is this valid?...issue.setSecurity("My Security Level");

    Thanks!

    Bill

  39. I don't understand what I am doing wrong. I have the soap client example version 3.10.1-src working out of the box with my local JIRA installation. I need to integrate this soap client into my existing java application. I went through various forums on nabble/jira support and still can't figure this out.

    Why can't i just add the soap generated client jar from the example to my existing application and invoke methods in my existing application through my java application. I am not using Maven project structure otherwise I am sure I can figure this out.

    SOAPClient client = new SOAPClient();

    I don't know why that doesn't work. I get all sorts of NoClassDefError's. 

     - Yes, I've imported all the axis-required jar's into my java application. I've also included the jira-rpc plugin jar and the generated SOAP client-side jar. Can we only use JIRA SOAP plugin if we have a Maven project structure? I don't understand, can someone please clarify?

    Thanks,

    Sandeep 

    1. Hi Sandeep,

      The problem is that there are a bunch of dependencies out of using soap, that you need to satisfy in order to use the soap code. Maven can simplify this. I have built a maven2 library for jira and confluences SOAP interfaces that could be 'depended' on by your project, requiring minimal coding on your part to get running. If you're getting ClassNotFound you dont have all depencies. If you have already grabbed the necessary dependencies there may also be a versioning problem with some of the jars.

      You don't need Maven, but it means that once someone else has figured out the dependencies (and versions!) you don't have to.

      I'm not sure why there isn't an Atlasian provided jar that has done this yet, Im going to add one to the developer maven2 repo over the weekend in any case as its a faff to build in the first place. This should help people who just want to 'get going'. To illustrate, once you've got such a library, you only need coding like this:

      JiraSoapServiceServiceLocator fJiraSoapServiceGetter=new JiraSoapServiceServiceLocator(); 
      fJiraSoapServiceGetter.setJirasoapserviceV2EndpointAddress(JIRA_SERVER_URL+"/rpc/soap/jirasoapservice-v2");
      fJiraSoapServiceGetter.setMaintainSession(true);
      fJiraSoapService = fJiraSoapServiceGetter.getJirasoapserviceV2();       
      String token = fJiraSoapService.login(LOGIN_USER, LOGIN_PASS);
      RemoteUser u =fJiraSoapService.getUser(token,userID);
      ... 
      
      1. Hi Andy,

        Did you manage to create it already. I would be happy to use it.

        1. Hey Andy -

          I second Patric's motion. I have a very small app I'm looking to throw together and Maven and building the libs are way more than I want to bite off right now.

          Thanks,

          Travis

          1. OK, I meant to do this a while back, Ive now created a page that will hopefully be enough for maven2 savvy people to use. You my need to hunt around for the dependency jars due to licensing (SUN mail/activation etc), Ive put a dependency graph on the page for info.

            Well, for what its worth I also added one for Confluence, here

  40. Hi all,

    I'm in the process of making a nice little wrapper for some SOAP calls. No (huge) issues so far. However, I was wondering how I'd be able to pull down attachments and display them?

    Currently, I am generating the URL based on attachment info and pointing to the respective JIRA URL. This works fine when I'm logged into the JIRA server within that browser; however, if I'm not logged in, the file does not display. This makes sense, as you should have to be logged in to view the attachments to an issue. Following the link results in an unfriendly error message at (/secure/views/securitybreach.jsp):

    ###
    ACCESS DENIED

    It seems that you have tried to perform an operation which you are not permitted to perform.

    If you think this message is wrong, please consult your administrators about getting the necessary permissions.
    ###

    All of this makes sense to me; I'm requesting a URL that isn't kicking back an image or file but an 'Access Denied' error when not logged in to JIRA. This is a good thing in that security is working. However, in my wrapper, I now cannot guarantee that I will be able to view attached files unless I'm logged in to JIRA AND logged into my wrapper (needs auth token for all the requests).

    Are there any suggestions out there as to how I'd be able to do this, if there is a way?

    Thanks in advance!

    1. Nevermind; found what I was looking for!

      1. Anonymous

        What is it that you were looking for?

    1. Link has been fixed. Thanks for the heads up.

      Cheers,
      Andrew

  41. Tell me please where I can get jar with these classes: JiraSoapServiceService, JiraSoapServiceServiceLocator;

    There is same question above and no clear answer!!!

    It is in example, but I can't use this api without jar or source.

    1. Hi,

      I fyou are using Eclipse, use the Web Tools to make a client out of the wsdl. This Used Wsdl2java , accepts the wsdl and creates the corresponding Java files. You could then bundle this as a jar and then use it for your individual applications.

      http://www.eclipse.org/webtools/jst/components/ws/1.5/tutorials/WebServiceClient/WebServiceClient.html

      http://dev2dev.bea.com/pub/a/2005/09/eclipse_web_tools_platform.html\\

      Thanks and Regards,

      Dinesh

      1. Thanks, but what if I don't use Eclipse? I'm still want to get jar with these classes, probably someone can make it public and give me a link? Big thanks for your help, then.

        1. Use wsdl2java ( that this eclipse plugin indirectly uses ) available from Apache Axis.

          http://ws.apache.org/axis/java/user-guide.html

          Thanks and Regards,

          Dinesh

  42. I just wanted to provide a working php5 (I'm using Ubuntu) example since the other php examples on this page are for php4.

    And these are the pear modules I have installed:

    Thanks
    -taylor

    1. Hi,

      Thanks for your example, I'm running Ubuntu and PHP5 configured with soap. but when i execute this command: pear list

      I get this out put:

      Installed packages, channel pear.php.net:
      =========================================
      Package          Version State
      Archive_Tar      1.3.2   stable
      Console_Getopt   1.2.3   stable
      PEAR             1.6.1   stable
      Structures_Graph 1.0.2   stable

      But  I don't see SOAP there, how did you configure SOAP and PEAR?

      Thanks.

  43. Is there an updated api anywhere?  The example code I'm looking at does stuff that shouldn't be possible according to the api linked off this page...like creating an instance of JiraSoapService even though it is an interface.  Also, there's no description of JiraSoapServiceServiceLocator.

  44. I would also like to find updated API documentation.  In the createIssue() method, for example, I would like to know which fields are required and which are optional.

  45. Guys,

    What about a setup where security level is required? I'm using Jira 3.12.2. First of all, there are no methods provided in the SOAP API to get a list of security levels in a given security scheme, then - the "security" property of a RemoteIssue is not even defined in the wsdl definition. So - even if I add a key/value: 'security' => [level_ID] to the issue variable passed to createIssue, I still get:

    I checked the WSDL definition on your web page and it still does not contain any references to security levels. This currently a major showstopper for me. I am using PHP to create a bridge between customer's issue management system and JIRA.

    Any ideas?

  46. I thought I'd share some code for those of you trying to call addUserToGroup and removeUserFromGroup using SOAPpy (tested with SOAPpy 0.11.3 and Jira 3.12.3)

    You can use these types to do something like this:

    1. Anonymous

      Iam trying as follows in Perl. but no luck. if any hep appreciate. Thank you.

      Error:

      1. What are you passing via $grp? It should be a RemoteGroup object but the error message seems to indicate that it contains a string (perhaps, the group name?)...

        1. Anonymous

          Yes, I was passing Group name(String $grp), but now i have tried as suggested. but no luck.

          Error:

          1. You have to do the same thing for the "user" argument. You should pass a RemoteUser object instead of a string.

            1. Anonymous

              Thanks Gustavo - thats resolved (smile)

  47. Here's the problem I'm having, please let me know if this has been addressed, but I haven't found anything helpful yet. 

     We have a flex app that uses xml we create based on the Jira Soap Service.  We have a need for a field like components, but separate.  So we have a single select custom field that we set to segment our issues.  Our problem is that we can't get a listing of the selectable options for that custom field through the soap service.  We tried using getCustomFields, but it won't return anything unless logged in as an administrator. 

    Is there anyway to get an enumeration of the selectable items for that custom field?

    Thanks,

    Joel

    1. I'm having this problem also. When running SOAP against a Jira server V3.13.3, I don't see any way to figure out any type-related information for a custom field. RemoteCustomFieldValue.getKey() always returns null; suspicious, and it seems like this could be used to indicate what kind of custom field it is.

      As is, given that a custom field has value 10001, how do I know if that is a component, version or just plain number?

    2. Same problem here - is there a way to get a listing of the selectable options for a single select list custom field through the soap service?

  48. Guys,

    How I can export from Jira sub-tasks and Issue Links. There seems to be no such methods in API? I can see thread about adding subtask. But what about just read it from Jira with API?

    -ta 

    1. Anonymous

      I also need to get SubTasks ... some of the comments about the API being missing are YEARS old.

      Is there a way to get SubTasks via the SOAP API nowadays? What about via any other API?

  49. Here an example of creating a SOAP Client with PHP5 using SOAP extension,This allow you to create an Issue with specific custom field :

  50. Here is a C# example:

    Stub code, or skeleton code, is a method of generating server class files based off a web service defintion file (WSDL). Most programming languages have SOAP tools designed to generate stub code from a WSDL file.

    Visual Studio .NET installs with an application called wsdl.exe which can be used to generate server stub code as well as client code to interact with that service. This file is usually located under the .NET SDK bin directory for example:

    C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe
    

    The wsdl file supports converting a WSDL file into a .NET language stub/client code. There is a /language argument that can be used to specify the .NET language to generate the stub code file in. The default language is C#. Here are some examples commands using the WSDL file from our local JIRA installation.

    wsdl /language:CS http://jira/jira//rpc/soap/jirasoapservice-v2?wsdl
    

    This will generate a class called JiraSoapServiceService.cs that can be used to remotely access JIRA via C#.

    This class has quite a few methods (see class diagram below or javadocs above). Most can be called synchronously or asynchronously with an event handler.

    Here is a simple example program that uses the stub/client code to create a new issue in our JIRA server

  51. I got timestamps working in Python (at least for worklogs). You have to truncate the "day of week","day of year", and DST codes them cast the resulting tuple as a SOAPpy.dateTimeType.

    Also, to add a worklog, you can use the following snippit of code:

    Oh, for those using Python and SOAPpy, it may be very helpful to enable debugging:

    This will show you everything being sent out and coming back in.

    1. Anonymous

      Thanks mate, this really helped me out with worklogs! I just kept getting SOAPpy.Types.faultType exceptions which did not really say anything..

  52. What is the interaction expected between the SOAP API and Crowd integration? Do SOAP clients need to do anything different?

    Thanks!

    1. Hi Sohail,

      SOAP doesn't know about Crowd. You just need to provide the username/password when connecting via SOAP and JIRA handles the rest.

      Kind Regards,
      Andrew

  53. Anonymous

    Hi,

    I want to import my HTML Form into Jira. How can i manage that? With JSP? PHP? I don´t know JSP... only PHP a bit but i have only worked on databases with php and not with a soap...

    i want to create a projekt in jira with my HTML Form fields... plz help me! Im totally confused!

    1. You could always use email - Jira has a bunch of community provided Jira Mail Processors, eg Jira Extendable Mail Handler, you would then just have to worry about formatting a simple email rather than getting soap etc setup....

      1. Anonymous

        And that works with the <form action"mailto: ..."> , type="Submit" Form function?

        1. MMM, not sure if client side javascript can provide the body of an email, if so, you might well be able could generate the formats needed. I was thinking of sending it from the server side where such manipulation is a little easier and you wont be depending on users email being operational....

          1. Anonymous

            When i send an email with the submit function i get the form cell name (name) + the insert eg: "name=Ralf sex=M happy=ture date=1.1.09". That is the text in my email. Can jira work with this?

            i could rename the form cells like the jira cells (reporter for name and duedate for date and so on...)

            1. Try reading the page linked above to get an idea of what Jira needs in order to create an issue, Other mail handlers work in similar ways but irrespective of the format in your form you need to write something to process that form that would either (a) invoke soap or (b) send a mail in the right format ...

  54. Anonymous

    I am getting an exception trying to create an issue from java. I have resolved all the initial validation errors resulting from required custom fields. Now the response comes with NullPointerException. I am able to retrieve and update existing issues in jira over soap but create. I found the same exception caused by different version of axis (http://forums.atlassian.com/thread.jspa?messageID=257254529&#257254529) but if that was the case I wouldn't be able to retrieve issues either. Thanks.

    AxisFault
     faultCode:

    Unknown macro: {http}

    Server.userException
     faultSubcode:
     faultString: java.lang.NullPointerException
     faultActor:
     faultNode:
     faultDetail:
        {}faultData:null
       

    Unknown macro: {http}

    hostname:CU253
    java.lang.NullPointerException
        at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
        at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
        at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

  55. Anonymous

    I get the same NullPointerException as the other Anonymous.

    Is there not a way of providing an API in a jar file?  I don't use maven.  Nor do I want to use maven.  I'm starting to think it would be easier to screen scrape the HTML off Jira to do what I want... (sad)

    1. Anonymous

      Replying to myself... Ok the NullPointer thing is probably from ether the call to testGetIssueCountForFilter() or the component.setId(COMPONENT_ID).  Comment them both out if you are testing against your own instance of Jira.

      I still hate the whole maven thing, though... (tongue)

      1. Well a judicious search for 'Jira SOAP' would give you JIRA Maven2 SOAP Library which is precompiled....

        1. Anonymous

          Maybe... but an even more judicious search found me the Jira RMI plugin (http://confluence.atlassian.com/display/JIRAEXT/JiraRMI) which is *way* nicer, IMHO...

  56. Hi Friends,

    I am very new to maven. i m trying to create soap client with the given client SOAP distribution. i am using Netbeans 6.5 IDE but Netbeans 6.5 support Maven2 and SOAP client distribution is in maven1. how would i open this project into Netbeans6.5.

    Help Me (sad)

    Regards,

    Mahendra Athneria

  57. Anonymous

    Hi to all;

            I am new to working with Jira but I have been using Perl for years.  I built a small script to pull issues from Jira and dump them to excel using Perl and SOAP::Lite.  This works very well on an installtion we have at work in the US.  Now I am trying to connect to our Jira server over in the EU and I have been granted access and all.  I am able to go to the dashboard and everyhting, look at the Projects get issues in the dashboard displayed and such, butI can not get my Perl code to pull the defects back.  The server is set to https for the address so I know I needed to have Crypt-SSLeay and/or Net-SSLeay installed as Perl modules and they are set correctly from what I can tell.

    Here is the error that I receive:

    404 /securerpc/soap/jirasoapservice-v2 at line 20

    Line 20 looks like this my $auth = $soap->login($DEFAULT_USER, $DEFAULT_PASSWORD)->result() or die $!;

    I know the login and password work so I am not sure as to why I am getting the 404, maybe the EU group did not set up the RPC or something with the WSDL not sure.  Any help would be appreciated.

  58. hi to all,

              I am new to jira i m trying to create a soap client with the code mentioned above and i was getting the errors that

              cannot locate the class jirasoapserviceservice ,jirasoapserviceservicelocator  

              i was trying to compile the code with the help of java compiler and it was raising these errors

              i imported the class JiraSoapService but i couldnt find the class JiraSoapServiceService and JiraSoapServiceServiceLocator  

              when i gone through the above it was given that to go through maven plugin

              but when i m trying to use maven it is saying you must mention the goals

               is there is any alternate way to create a soap client

            Help Me out

            Thanks in advance!

          

  59. Anonymous

    Hi All,

    Im also new to the JIRA SOAP API.

    I want create an issue an to assign it to one of the JIRA users. Therefore i need a list of all the users.

    I miss something like getUsers() in the JIRA service class.

    Did someone knows how to solve this prroblem ?

    Many thanks in advance .

    Reda

    1. Anonymous

      Hello everybody!

      I am new to Jira and its SOAP API.
      Would it be possible for anyone to email me some PHP code on how the whole thing works?
      I've been searching many forums, but there is no "real" help about that.

      If you can email me an example (or maybe a complete project) I would be very happy! (wink)

      Please mail to: count78 (at) hotmail (dot) de

      Thanks a lot!!!

    2. Anonymous

      Hi Reda,

      you have to use "getGroup(String token, String groupName)" to solve this problem.

      Here is some PHP code for the Userlist:

      function get_userlist()
      {
      ...
      $rg = $client->getGroup($login,"jira-users"); // look what groups YOU have in your JIRA
      return $rg;
      ...
      }

      and the HTML-output
      ...
      $users = get_userlist();
      foreach($users as $x)
      {
      foreach($x as $y)

      Unknown macro: { echo "<option>" . $y->fullname . "</option>"; }

      }
      ...

      Hope that helps

  60. Hello!

    What comes to using Jira's SOAP interface with Python, there's little something what may come in handy, it's called JPype: http://jpype.sourceforge.net/

    Probably any Python to Java bridge works, but at least this was proven handy for us. One of the most irritateing problems when using SOAP through python is the conversion of Python's long to BigInt in java. As Jira uses long-type in id-fields this causes Bad type exceptions. At least I was able to create project to Jira with the help of JPype with something like this (I'd guess this way we could do other type conversions as well), and it seems to work, Cheers!

  61. Using SOAPpy on CentOS 5.3 with Jira 3.13.4 over SSL I was getting errors parsing the XML because of random data appearing in the WSDL. I changed to non-SSL and it worked as expected but since we can't do non-SSL, I sought out a new SOAP client. I found SUDS (https://fedorahosted.org/suds) which works beautifully.

    Example code:

    Returns:

    Hope that helps anyone who found SOAPpy to be less than fulfilling.

    1. Thanks for the pointer. SOAPpy is getting a bit dated.

      ~Matt

    2. Yes, the Python example should be updated to use the suds distribution, since SOAPpy has not been maintained in a long time (I believe it doesn't work on Python 2.5 or 2.6), where as suds works fine on Python 2.6.

      1. SOAPpy seems to work on 2.5 for me

  62. Anonymous

    Could anyone post the syntax of the updateIssue() function for use in updating a costumfieldid in PHP? I can set the custom field when creating an issue, but can't figure out how to update it.

    Thanks!

    1. Anonymous

      Got it working

      $result = $client->updateIssue($login, 'TEST-1',array(array('id' => 'customfield_10000', 'values' => array ('XXXXX'))));

      Hope it migh help someone.

  63. Anonymous

    Does anyone know how long a token will last for?  Is it possible to set a login token once and use it for many transactions in a singleton design pattern, or is it intended to be a per transaction type deal.

      1. I think it is about 30 minutes
      2. Yes, it can span requests - JIRA Command Line Interface has login token support for instance.
  64. Anonymous

    Anyone knows how to use SOAP to assign an issue to someone?  I don't have permission to create issue / update issue fields, but I can assign the issue to myself or someone else. 

    Thank you in advance.

    1. updateIssue and change the assignee field.

      1. I'm having a problem with this when trying to change an issue's assignee through C# - it always assigns it to the default Project Lead account, rather than the person I specify. It doesn't give any errors, it just won't assign it to the person it needs to.

        I've also tried the progressWorkflowAction() method to push it through the assign step of the workflow, but that's not helped either.

        Any suggestions?

        Never mind, I'd missed something really obvious.

      2. Anonymous

        Does not work for me :(

        Using the same id-value pairs as works for progressWorkflowAction()

  65. Anonymous

    Hi,

    is there any possibility to change the name and/or the release date of a project version? I have only found something to release/archive or add an version, nothing found to update a version.

    Regards

    Robin

  66. Is there any way to recover timetracking values like "remaining stimate" or "original stimate"?. I've tried to recover them with the the object "RemoteField" through "getFieldsForEdit" method but this object doesn't have the fields values and i can't find any method to recover de object "RemoteFieldValue".
    Thanks.

  67. Hi,

    How I can get the text in "Subversion Commit" tab from API? I am writing a script in perl and I want to get the latest Subversion Commit to check something. Even if I can get entire message it would be ok as I can parse the latest Commit message from it.

    I use,

    my $comments = $soap->getComments($auth,"QWER-3004")->result();

    for Comment tab and that works perfectly but not sure what to use to "Subversion Commit" tab. Any help will be greatly appreciated.

    Thanks

  68. I need to retrieve the Original Estimate and the current remaining estimate from an issue. I do not see these fields in the RemoteIssue but I know they are fields in the issue table in the DB and not custom fields. Does anyone have any suggestions

  69. Hi,

    Does anyone know how to retrieve/determine all required Custom Fields when editing or creating a new Issue?  Seems like the API returns ALL the Custom Fields with no way of determining which project(s) and screen(s) it is associated with.

    Thanks.

  70. an example

    I've been working on getting a perl client to add versions today and thought i would share the code (also, the original posting asked for anyone to share how to push the date in addVersions).

  71. .Net Client

    Add service as web reference in your .net application and use following code

     JiraService.JiraSoapServiceService jservice = new sample_app.JiraService.JiraSoapServiceService();

                    string token = jservice.login("user_name", "user_password");

                    JiraService.RemoteIssue issue = new sample_app.JiraService.RemoteIssue();

                    issue.project = "FN"; // " Project Key";

                    issue.type = "1";//issue type id

                    issue.summary = "For testing";

                    issue.priority = "3";//priority id

                    issue.description = "for integration testing";

                    JiraService.RemoteCustomFieldValue custfieldvalue_0 = new sample_app.JiraService.RemoteCustomFieldValue();

                    //for first drop down

                    custfieldvalue_0.customfieldId = "customfield_10200";

                    custfieldvalue_0.values = new string[]

    Unknown macro: { "customfield_10200_value" }


                    JiraService.RemoteCustomFieldValue custfieldvalue_1 = new sample_app.JiraService.RemoteCustomFieldValue();

    //Example of Cascaded custom filed

                    custfieldvalue_1.customfieldId = "customfield_10004";

                    custfieldvalue_1.values = new string[]

    Unknown macro: { "12802" }

    ; //option id

                    JiraService.RemoteCustomFieldValue custfieldvalue_2 = new sample_app.JiraService.RemoteCustomFieldValue();

                    custfieldvalue_2.customfieldId = "customfield_10004:1";

                    custfieldvalue_2.values = new string[]

    Unknown macro: { "12803" }

    ;

                    //for Partner PTM key

                    JiraService.RemoteCustomFieldValue custfieldvalue_3 = new sample_app.JiraService.RemoteCustomFieldValue();

                    custfieldvalue_3.customfieldId = "customfield_10910";

                    custfieldvalue_3.values = new string[]

    Unknown macro: { "customfield_10910_value" }

    ;

                    //for Project PTM key

                    JiraService.RemoteCustomFieldValue custfieldvalue_4 = new sample_app.JiraService.RemoteCustomFieldValue();

                    custfieldvalue_4.customfieldId = "customfield_10930";

                    custfieldvalue_4.values = new string[]

    Unknown macro: { "customfield_1093_value" }

    ;

                    JiraService.RemoteCustomFieldValue[] custfieldvalue = new sample_app.JiraService.RemoteCustomFieldValue[]

    Unknown macro: { custfieldvalue_0, custfieldvalue_1, custfieldvalue_2, custfieldvalue_3, custfieldvalue_4 }

    ;

                    issue.customFieldValues = custfieldvalue;

                    JiraService.JiraSoapServiceService jss = new sample_app.JiraService.JiraSoapServiceService();

                    JiraService.RemoteIssue returnedIssue = jss.createIssue(token,issue);

                    string issueKey = returnedIssue.key;

  72. I've downloaded and compiled the SOAP client example and have run the client from the command line i.e.  

    C:\SOAP\jira-soapclient>java -jar target/jira-soapclient-*-jar-with-dependencies
    .jar
    C:\SOAP\jira-soapclient>java -jar target/jira-soapclient-*-jar-with-dependencies.jar

    The login is successful, however I am presented with the following error message:

    You don't have permission to access /rpc/soap/jirasoapservice-v2 

    Any ideas? do i need to get a new version of the WSDL file?

    1. I'm having the same problem!

      Please let me know if you found a solution!

      Thanks in advance,

  73. Hi All,

    I'm trying to retrieve an issue, and then update it using remote RPC.

    I've downloaded the JiraSoapClient download, fixed my maven installation, and got the JiraSoapClient to build.

    I'm trying to incorporate the resulting jar into my application, which is built using Ant/Ivy.

    I am getting the following error/exception when I try to access the Jira sandbox:

    org.xml.sax.SAXException: Processing instructions are not allowed within SOAP messages
    AxisFault
     faultCode:

    Unknown macro: {http}

    Server.userException
     faultSubcode:
     faultString: org.xml.sax.SAXException: Processing instructions are not allowed within SOAP messages
     faultActor:
     faultNode:
     faultDetail:
        

    Unknown macro: {http}

    stackTrace:org.xml.sax.SAXException: Processing instructions are not allowed within SOAP messages
        at org.apache.axis.encoding.DeserializationContext.startDTD(DeserializationContext.java:1161)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.doctypeDecl(AbstractSAXParser.java:334)

    ...

    Can anybody shed any light on this?

    Cheers!
    Nik

    1. To answer my own post - this was caused in my case by a broken URL for the SOAP service.

      Cheers!

      Nik

  74. Ok, so I can progress an Issue through the workflow, and I can add a comment.

    So why do I get an exception when I try to list the editable actions, or update the issue?

    Here is the output I am getting:

    available action: Submit for Approval
    progressing workflow: Submit for Approval
    available action: Approve
    progressing workflow: Approve
    Error in publish: com.atlassian.jira.rpc.exception.RemotePermissionException: This issue does not exist or you don't have permission to view it.
    AxisFault
     faultCode:

    Unknown macro: {http}

    Server.userException
     faultSubcode:
     faultString: com.atlassian.jira.rpc.exception.RemotePermissionException: This issue does not exist or you don't have permission to view it.
     faultActor:
     faultNode:
     faultDetail:
        {}com.atlassian.jira.rpc.exception.RemoteException:null
        

    Unknown macro: {http}

    hostname:sandbox.onjira.com

    com.atlassian.jira.rpc.exception.RemotePermissionException: This issue does not exist or you don't have permission to view it.

    Notice that my trace shows I've successfully Submitted for Approval, and Approved (closed) the Issue.

    I'm trying to also change the resolution to Resolved. CUrrently, I have all these Closed, Unresolved Issues - not what I want.

    Cheers!

    Nik

    1. Ok, in the absence of any other information, I'll answer this myself (again).

      This exception is caused by a bug in the Jira SOAP plugin.

      The methods JiraSoapService.updateIssue() and JiraSoapService.getFieldsForEdit() are documented as taking an Issue KEY, but will throw this exception if you actually provide a KEY. Instead, they only work if you provide an Issue ID.

      Cheers!

      Nik

  75. I've downloaded, and i followed all steps in README

    But when i run "java -jar target/jira-soapclient-*-jar-with-dependencies.jar"

     The login is successful, however I am presented with the following error message:

    You don't have permission to access /rpc/soap/jirasoapservice-v2 

    I really need some help here...

    Thanks

    1. I'm getting this as well. Looks like something changed with the security?

      1. Yep, I am working with IT on this problem just now, as I also have just discovered that with both jira.atlassian.com and support.atlassian.com (studio.atlassian.com looks good).

        1. JIRA 4.1.1 out of the box also!

          1. Matt, I have a couple of OOB JIRA 4.1.1 instances installed here and I can use their SOAP interface without any problem.
            In case of support.atlassian.com it turned out that there is now an additional IP filtering in place for remote API URLs configured at Apache level.

            1. So http://localhost:8080/rpc/soap shows a list of methods for you?
              Hmm, which JDK and OS are you using? I'm on

              No, that probably isn't it since I see the same problem on a remote 4.0.2 (patched) instance running on Linux with JDK1.6. I also confirmed that 4.0.2 works as downloaded for me but stops working when the latest security patch for it is installed. Mysterious.

              1. Yes.

                JDK & OS: differ as I use several computers simultaneously.
                I've just checked on my laptop at home (of course I have always at least JIRA instance running on every machine I am touching (wink)):

                >java -version
                java version "1.6.0_20"
                Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
                Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
                

                It's Windows7 Pro 64-bit.
                Atlassian JIRA (v4.1.1#522)

                It also worked fine for me on Ubuntu 10.04 32-bit with Java 1.6 18 or 20 (do not remember exactly now).

        2. FYI: XML RPC and SOAP have been restored on http://jira.atlassian.com

          1. You're a star. I bet the Tech Pubs people weren't looking forward to having to remove all the references to it and rewrite the examples! Seems like a nice little self-contained integration test might warn of trouble in this area in the future?

            ~Matt

            1. In this very case, it was not a bug, but AFAIK the intentional re-configuration of fronting Apache rules (after our infamous April security incident) which just probably was left for too long, although security improvements were applied some time ago (e.g. captcha for brute-force attacks on passwords) and then the full access to jira.atlassian.com via remote API again could have been restored.

  76. FYI, if you like me and have to manipulate data that has been copied from a word doc into a jira ticket (unicode).

    in Perl to get the unicode characters back into Jira via SOAP

    use HTML::Entities qw(encode_entities_numeric);
    encode_entities_numeric($string)

    This also escapes any possibly harmful character into numeric HTML entities. Reducing my need for xml CDATA to nil

  77. The auto-generated Java codes for WSDL include "java.rmi".    If you are working on a client for Android devices, how would you go about doing it since it does not include the "java.rmi" package?

    Thanks.

    -Chunyen

    1. Anonymous

      I got this figured out by adding some jar files.   Some have naming conflict with Android but there were hacks round them.

  78. Customer emailed Support Mailbox with the following. It may be of some interest:

    email received:
    > From: Andrew Erickson <andrew@twitter.com>
    > Date: Tue, 10 Aug 2010 20:10:01 -0700
    > To: <jira-support@atlassian.com>
    > Subject: jira4r example code

    http://confluence.atlassian.com/display/JIRA/Creating+a+SOAP+Client

    The URL above mentions that you'd like Ruby Jira4R examples. Here's
    one that shows updating custom fields that was particularly painful to
    get working (and isn't shown on the internet and was very
    unintuitive)... it would be great to have it posted.

    Andy

    ====

    require 'rubygems'
    require 'jira4r'

    # VALID CALLS:
    #    http://docs.atlassian.com/software/jira/docs/api/rpc-jira-plugin/latest/com/atlassian/jira/rpc/soap/JiraSoapService.html

    jira = Jira4R::JiraTool.new(2, "http://jira.yourcom.com")
    jira.login('user', 'pass')

    issue = jira.getIssue('TEST-1')
    puts "Retrieved issue: " + issue.key , "\n"

    summary = Jira4R::V2::RemoteFieldValue.new("summary", "pizza")

    ## custom fields
    # don't use RemoteCustomFieldValue

    # remote field 1
    rb = Jira4R::V2::RemoteFieldValue.new
    rb.id = "customfield_10000"
    rb.values = 'http://test.com'

    # remote field 2
    b = Jira4R::V2::RemoteFieldValue.new
    b.id = "customfield_10001"
    b.values = 'chcolate'

    begin
      puts "updating ticket..."
      jira.updateIssue(issue.key, [summary, rb, b])
    rescue
      raise
    end

  79. Anonymous

    Does anyone know a way to access the description of a Version? There is access to a project description, as well as an issue description, but I have found no way to access the version.

    If I missed something, please let me know.

    Thanks,

    Matthew

    1. SOAP interface exposes getVersions() method (takes 2 args: login token and project key).
      Your generated stubs should have it too. Take a look at ours generated for Atlassian Connector for Eclipse

      In WSDL (e.g. http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl) you can see:

  80. I've been using the suds library in python; it's dead simple. Here's some code I put together today:

    class JIRAClient(Client):
    url = "http://xxx.xxx.xx.xx:PORT/jira/rpc/soap/jirasoapservice-v2?wsdl"
    def _init_(self, userName, passwd):
    self.userName = userName
    self.passwd = passwd
    Client._init_(self, JIRAClient.url)
    self.doLogin()
    self.__customFields = {}
    self.__fixVersions = {}
    self.__issueTypes = {}
    self.__priorities = {}
    self.__statuses = {}
    self.__resolutions = {}

    fixVersions = property(lambda self:self.__getFixVersions() )
    customFields = property(lambda self:self.__getCustomFields() )
    issueTypes = property(lambda self:self.__getIssueTypes() )
    priorities = property(lambda self:self.__getPriorities() )
    statuses = property(lambda self:self.__getStatuses() )

    def getIssue(self, issueKey):
    """Issue keys take the form ABCD-1234"""
    if not self.login:
    return None
    else:
    try:
    return self.service.getIssue(self.login, issueKey)
    except Exception, err:
    print "ERROR!"
    print str(err)
    return None

    def updateIssueData(self, issue, **params):
    if not self.login: return None

    if not self.customFields: self.getCustomFields()

    requestFields = []
    for param in params:
    values = params[param]
    if param in self.__customFields:
    fieldKey = self.__customFields[param]
    requestFields.append(

    Unknown macro: {"id"}

    )
    elif param in ['assignee', 'resolution','summary']:
    pass
    self.service.updateIssue(self.login, issue['key'], requestFields)

    def updateIssueFixVersion(self, issue, fixVersion):
    if not self.login: return None

    if not self.__fixVersions:
    self.__getFixVersions()

    if fixVersion not in self.fixVersions:
    print "Version " + fixVersion + "not found"
    return None
    else:
    id = self.__fixVersions[fixVersion]
    self.service.updateIssue(self.login, issue['key'],
    [

    Unknown macro: {"id"}

    ])
    return True

    def __getFixVersions(self):
    if not self.__fixVersions:
    versions = self.service.getVersions(self.login, 'ULTR')
    for version in versions:
    self.__fixVersions[version['name']] = version['id']
    return self.__fixVersions

    def __getIssueTypes(self):
    if not self.__issueTypes:
    issueTypes = self.service.getIssueTypes(self.login, 'ULTR')
    for issueType in issueTypes:
    self.__issueTypes[issueType['name']] = issueType['id']

    return self.__issueTypes

    def __getStatuses(self):
    if not self.__statuses:
    statuses = self.service.getStatuses(self.login, 'ULTR')
    for status in statuses:
    self.__statuses[status['name']] = status['id']
    return self.__statuses

    def __getPriorities(self):
    if not self.__priorities:
    priorities = self.service.getPriorities(self.login, 'ULTR')
    for priority in priorities:
    self.__priorities[priority['name']] = priority['id']

    return self.__priorities

    def __getCustomFields(self):
    if not self.__customFields:
    fieldList = self.service.getCustomFields(self.login)
    for field in fieldList:
    self.__customFields[field[0]] = field[1]
    return self.__customFields

    def doLogin(self):
    try:
    self.login = self.service.login(self.userName,self.passwd)
    except Exception, err:
    print "Error logging in"
    print str(err)
    self.login = None

    def test():
    jira = JIRAClient(userName, passwd)
    issue = jira.getIssue('ABCD-1234')
    jira.updateIssueData(issue, fixVersions=["2.1.3"])

    print jira.customFields
    return None
    print jira.issueTypes
    print jira.statuses
    print jira.priorities

    1. David,

      Looks good. I've been meaning to update the JIRA Python CLI (https://studio.plugins.atlassian.com/browse/JCLIMD) for a while now to change the underlying library from SOAPpy to suds. Of course, I also want to refactor or rewrite it at the same time but that's another job. If you're interested in helping, let me know at mdoar@pobox.com

      ~Matt

      1. I did update the Python CLI for JIRA to use suds. See version 4.2 at https://plugins.atlassian.com/manage/plugin/10751

        1. Is it possible to use your Python CLI while sending the username and password as arguments?

  81. Is it possible to perform SOAP requests to JIRA through Apache http server? The example listed in the article works fine for the case of JIRA without any proxies but fails to login to JIRA when JIRA runs under Apache http server.

    1. AFAIK it's possible to talk to JIRA fronted by Apache HTTP server via SOAP - after all Atlassian Connector for Eclipse does just it (smile)
      In your case I suspect you may need an additional authentication headers required by Apache (in your configuration) - probably HTTP basic authentication.

      1. Hi, Wojciech!

        In your case I suspect you may need an additional authentication headers required by Apache (in your configuration) - probably HTTP basic authentication.

        We use SSPI authentication. What additional authentication headers should I include?

        Could you, please, provide any examples of JIRA SOAP clients which are able to run requests through Apache?

        Thanks,

        Nick

        1. Hi,

          I don't know practically anything about SSPI and honestly we don't support it. You have to dig here by yourself.

          Regarding examples on how configure JIRA SOAP client - please take a look how com.atlassian.connector.eclipse.internal.jira.core.service.soap.JiraSoapClient and org.eclipse.mylyn.commons.net.WebUtil.createHostConfiguration(HttpClient, AbstractWebLocation, IProgressMonitor) work - e.g. sources can be found in the Connector and Eclipse Mylyn repos.

          Cheers,
          Wojtek

  82. Hi - I found out using jython you get very neat code - as you have the com.atlassian.jira.rpc.soap.client.* Remote Objects ready for use in python.
    Basically I am using the SOAPSession java class from the atlassian soap client example.

    Create a Ticket per Email

    I the mailserver aliases there is a line

    This way I can use my favorite language and leverage the java objects which I get thru the atlassian plugin sdk.

    have fun!

  83. Hello

    Is there any way to update the jira groups with an array of groups?. e.g.

  84. Anonymous

    Hi

    I'm trying to use the SOAP service to bulk create fix versions for 60+ projects.

    However, I am unable to add a description to the fix versions created.

    Are there any plans to add such a feature?

    JRA-15788 and JRA-10870 have been created but seems to be inactive.

  85. Anonymous

    This might help others,

    iss =  {
                    'project': 'TEST',
                    'type': '15',
                    'summary': 'this is the summery',
                    'description': 'this is the description',
                    "assignee" : "userr",
                    "components" : [

    Unknown macro: { "id"}

    ],
                    "customFieldValues" : [

    Unknown macro: { "customfieldId"}

    ]
                    }
            newissue = self.client.createIssueWithSecurityLevel(self.auth, iss, SOAPpy.longType(10020))

  86. Anonymous

    Hi, 

    I am using the SOAP service with a service account. I have been able to use JQL to query issues by passing actual username's (different than the service account username). This has been working great. I know need to know the list of projects a given user has. If I were to call, getProjects with authtoken it would use the service account's permissions scheme. Is there a way to just pass in a username of any user who has not been authenticated to get their list of projects? I need this because I do not have password information of the logged in user. The soap client is used by an external web application. 

    thanks in advance.

    1. I think you'd have to use getProjectRoles on each project and check that the user has a role that you know has permission to view with the project's permission scheme. Fiddly.

  87. Anonymous

    Hello to you all,

    can someone give me a clue how to access the change history of an issue via SOPA?

    I can get a "Comment-History" via:

    jiraSoapService.getComments(authToken, key);

    But I can´t seem to find a similar method for a change history,

    jiraSoapService.getAvailableActions(authToken, key);

    and

    jiraSoapService.getWorklogs(authToken, key);

    Seem to be something different...

    Thx

    Chris

  88. Anonymous

    How to retrieve customfield value using python ???

    issue = soap.getIssue(auth, issueKey)

    I have written as 

    print issue.customfield_10002 but it does not works.

    1. Take a look at the wsdl or JiraSoapService, the returned class is RemoteIssue. RemoteIssue has a member named customFieldValues that is RemoteCustomFieldValue[]

      In python you want something like:

      1. Thanks for this tip.  Having an issue with updating a RemoteCustomFieldValue's key.

        Here's my code

        This results in:

        I now try to update customfield_10050's key with the following code:

        This results in this error:

        What is the "key" variable name when using suds to update an issue?

        1. Don't add the "key":"1" entry to the dictionary. Check out RemoteFieldValue which only has id and values variables.

          1. You are correct, and thank you for the clarification.  Apparently, updateIssue does not a RemoteCustomFieldValue.  I have updated the stackoverflow question with my attempt.  Still need help!

    1. Funny, but it just looks like spam to me.

  89. I want to send a big thanks to the community for all the valuable information available through these pages.  I needed to come up with an efficient way to update large numbers of Jira issues and it's been challenging to say the least.  Since I never found exactly what I'm looking for, I thought I'd share with you here.  This definitely works.

    A few things I will always remember:

    1. VBA just doesn't get the job done.  I've used Access & VBA to consolidate data sources and take advantage of the easy query and report design tools to do some analytical work.  As soon as I needed to start interacting more seriously with the Jira server, it just wasn't working.  I think the best advice is to switch to another language.  I used PHP because I know it and SOAP is out of the box easy.
    2.  I had a hard time with this one: the Jira user you use to connect to the server needs admin rights to update issues.  You get an error message saying that you don't have the right privileges to update issues, and if you search google, most of the information will tell you that it is in fact due to the format of your query.  Well, it could actually be that you don't have the rights.

    Here is a sample PHP code that updates a given custom field.  I wrapped this in a file called "setCustomField.php" which I call from the CLI.  It takes 3 arguments: IssueKey, CustomFieldName, NewValue.  I left the extra echos I used to test while developing the routine.

    Again, thanks to all contributors for sharing.

    Fabien Papleux

    1. Fabien, that's useful code. If you add a noformat macro above and below it, it will be easier for others to reuse.

      > the Jira user you use to connect to the server needs admin rights to update issues.

      Not admin rights, but edit permission yes.

      ~Matt

  90. Anonymous

    Hi All,

    Is it possible to integrate JIRA with service test 11.1?

    Regards

    Sen

  91. Anonymous

    You can also find a Java example with soap-dust here : http://soap-dust.sourceforge.net/

    1. Hey Anonymous,

      Does soap-dust work with the JIRA wsdl? Much easier than generating all those classes, but what does it not do?

      ~Matt

      1. Anonymous

        Hi Matt,

        I just stumbled on your post... it is old but here is an answer :

        soap-dust may have its limits but with time, it "does not do" less and less... and would probably help you doing everything you need with jira.

        If you ever find something you can't do with soap-dust, just post it to the mailing-list.

        Best regards

  92. Hi,

    I have to write a SOAP client which runs on another application and makes call to the JIRA. Now, I want details for a particular user (allowing only what user can access). How do I achieve that? I see that SOAP requires you to authenticate before you access data. Now, I have various user login and I cannot ask the user to enter id and password from the other application to pass it on to Jira.

    Can I use a generic admin login and then, get data as per the user access (may be by userid without password)? Please let me know.

  93. I thought I'd add this, in case anyone else runs into the same issue:

    I'm writing a client with suds 0.3.9 and Python 2.6.1.  I wanted to get a trivial use case working, and I was making this call:

    However, I was getting "Comment body can not be empty!" errors.  I guess you are not supposed to use dictionaries to represent domain objects anymore.  The suds docs mention that it's not preferred because it "increases the risk of passing incomplete objects," but in this case, it seems like it simply isn't working at all.

    This worked for me:

    Happy hacking.

    1. Max,

      Thanks, that's good to know. I tested that the old way still works using Python 2.5.2 for the JIRA Python CLI and it does. I wonder why it changes with Python 2.6.1?

      ~Matt

      1. Are you using the same version of suds as well?  Maybe they removed support for that kind of "type assumption" between versions.

  94. Please correct link to the jira instance - http://jira.atlassian.com's

    There is an extra 's in the url. 

    Tnx in advance

    /br Leonid M 

    1. I fixed it. Some ideas that Atlassian has, like letting partners fix typos in their docs, are really smart!

  95. For .NET developers:

    You can now download a LinqToJira provider to query for issues from a JIRA server using LINQ syntax:

    I hope it helps, let me know if you have any feedback!

  96. Anonymous

    je travail sur une application lite de jira sous android.

    et j'ai eu une exception  de serialisation de l'object RemoteFieldValue lore de l'update d'une tache???????

  97. Anonymous

    Hi,

    I'm new to Jira. Using python with suds to communicate. We can't to track linking through suds, but I can't seem to find any call for it in the API. Does anyone have an idea how I could get,set linking information through python?

    Cheers,

    Shawn

  98. JIRA SOAP API doesnt return moved Issue Details

    Here is the use case, I raised a defect in JIRA project eg. DEV-123 but it was moved to project DOC-453 since it was not a defect but a documentation issue to be fixed by another team.

    Now I use the JIRA SOAP APi in Testlink to get the details of the Defect DEV-123 ( initially entered in Testlink for bug linking with test case) and it gives an error "Issue not found" which is a custom error from my integration script of JIRA-TESTLINK.

    If I type the same issue id on JIRA search bar (DEV-123) it pushed me to the page with details of DOC-453 which means internally it has a linking and thats y it pushed me on that new big id.

    Isnt there some way where the SOAP API getIssue exposed by JIRA do the same thing and return the new bug ID which is DOC-453 on the SOAP interface also ?

    I am not sure this is a defect or a bug enhancement but should be fixed for uniformity and better integration across platforms.

    Thanks

    Amit Khullar

  99. I am thinking of accessing JIRA's SOAP interface using VBA.

    Does anyone have any experience or code examples to share?

    The bottom line is that I want to generate Word documents based on JIRA data.

    Your help is very much appreciated.

    Thanks,
    Scott

  100. Because of the pain I went through to figure this out I have to post this.  I'm amazed that this information isn't more readily available on the net.

    There are cases where you need to know how the outbound SOAP XML is formatted for various arguments with Jira calls.    If you've ever wondered/needed-to-know what the in2 argument looks like for updating multiple elements of an existing Jira issue, it needs to look similar to this:

    1. Yes, it's not obvious what is required. I usually start with the method I want in JiraSoapService.java and look at the parameters there. Then I look at the definition of e.g. RemoteFieldValue in the RemoteFieldValue.java and see that it wants an id and an array of Strings for the values. I think this sort of thing is one of the reasons people find SOAP hard to use.

  101. Anonymous

    Hello all, I would like to report an issue with the sample SOPA client available at:

    https://svn.atlassian.com/svn/public/atlassian/rpc-jira-plugin/tags/atlassian_jira_4_1_1_1/jira-soapclient/

    Indeed when trying to build the client an error occurs:

    [ERROR]     Non-resolvable parent POM: Could not find artifact com.atlassian.jir
    a.plugins:atlassian-jira-rpc-parent:pom:4.1.1-1 in central (http://repo1.maven.o
    rg/maven2) and 'parent.relativePath' points at wrong local POM @ line 4, column
    13 -> [Help 2]

    Since the POM does not references any repository, it is obvious that maven won'y find the parent pom.

    Consequently, I search the web for the atlassian repo and i found that url: http://repository.atlassian.com/maven2/

    So now I can build the sample client but whenever I run it I get a java error:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
            JiraSoapService cannot be resolved to a type
            The method getJiraSoapService() from the type SOAPSession refers to the
    missing type JiraSoapService
            RemoteIssue cannot be resolved to a type

            at com.atlassian.jira_soapclient.SOAPClient.main(SOAPClient.java:99)

    Indeed, when I open the projet with eclipse, I see that any com.atlassian.jira imports cannot be resolved.

    Once again that is obvious since there is no dependancy to any atlassian artifact within the pom.

    Is the sample client out of date or am I missing something?

    Thanks for your help.

    1. Anonymous

      So, I solved my problem:

      Concerning the parent pom issue, JIRA plugin developers are supposed to have a setting.xml in their maven. These settings define among other thing the repositories where to find parent pom. If you want the sample client to work but don't want to modify settings.xml you can juste add this to the project pom:

         <repositories>
               <repository>
                 <id>atlassian-public</id>
                 <url>https://m2proxy.atlassian.com/repository/public</url>
                 <snapshots>
                   <enabled>true</enabled>
                   <updatePolicy>daily</updatePolicy>
                   <checksumPolicy>warn</checksumPolicy>
                 </snapshots>
                 <releases>
                   <enabled>true</enabled>
                   <checksumPolicy>warn</checksumPolicy>
                 </releases>
               </repository>
             <repository>
               <id>atlassian-plugin-sdk</id>
                 <url>file://$

      Unknown macro: {env.ATLAS_HOME}

      /repository</url>
                 <snapshots>
                   <enabled>false</enabled>
                 </snapshots>
                 <releases>
                   <enabled>true</enabled>
                   <checksumPolicy>warn</checksumPolicy>
                 </releases>
               </repository>
          </repositories>
       
          <pluginRepositories>
              <pluginRepository>
              <id>atlassian-public</id>
              <url>https://m2proxy.atlassian.com/repository/public</url>
              <releases>
               <enabled>true</enabled>
               <checksumPolicy>warn</checksumPolicy>
              </releases>
              <snapshots>
               <checksumPolicy>warn</checksumPolicy>
              </snapshots>
              </pluginRepository>
          </pluginRepositories>
         <repositories>

               <repository>

                 <id>atlassian-public</id>

                 <url>https://m2proxy.atlassian.com/repository/public</url>

                 <snapshots>

                   <enabled>true</enabled>

                   <updatePolicy>daily</updatePolicy>

                   <checksumPolicy>warn</checksumPolicy>

                 </snapshots>

                 <releases>

                   <enabled>true</enabled>

                   <checksumPolicy>warn</checksumPolicy>

                 </releases>

               </repository>

             <repository>

               <id>atlassian-plugin-sdk</id>

                 <url>file://$

      /repository</url>

                 <snapshots>

                   <enabled>false</enabled>

                 </snapshots>

                 <releases>

                   <enabled>true</enabled>

                   <checksumPolicy>warn</checksumPolicy>

                 </releases>

               </repository>

          </repositories>

          <pluginRepositories>

              <pluginRepository>

              <id>atlassian-public</id>

              <url>https://m2proxy.atlassian.com/repository/public</url>

              <releases>

               <enabled>true</enabled>

               <checksumPolicy>warn</checksumPolicy>

              </releases>

              <snapshots>

               <checksumPolicy>warn</checksumPolicy>

              </snapshots>

              </pluginRepository>

          </pluginRepositories>

      For the Eclipse issue, if package can't be resolved try to to that:

      right click on the eclipse project > Maven > Update project configuration

      This should generate the missing package, ho happiness.

      That could be great to add those info into the README.txt since they are not really straightforward for beginners. 

      Thanks

  102. Anonymous

    I'm trying to create an issue from a google app script(javascript) using jira's soap interface. I was able to login, but to create an issue I have to provide a issue object.

      I tried like this:

    var issue =

    new Object();
     

    I tried the "token" for other functions(like getIssuesFromFilterWithLimit() ) and it work, so that is not the problem. I got the error "The project does not exist or you don't have permission to create issues in it". I tried creating issues manually and it worked, so this is not the problem either. 

    I tried like this:

    and I get the same error.

     I tried like this:

    If you look, this is the same code in the example for python and I get the same error. I am pretty sure that "PI" is the name of the project, because there are issue called "PI-355" or something like that. 

           Please tell me if the problem is from the code, from the name of the project, or from the permissions(I use the same username and password to login with soap as I use with the web interface).

    Thank you

    1. Sounds like you're missing a required field. The common ones are summary, reporter, issue type and issue project. Assignee may be required by your local JIRA or even other custom fields.

  103. Anonymous

    I tried adding reporter and assignee like so:

    but I get the same error. I don't think it even checks for the other fields as long as the project field is wrong.

  104. Anonymous

    I tried adding reporter and assignee like so:

    but I get the same error. I don't think it even checks for the other fields as long as the project field is wrong.

  105. Hi,

    I am using the 

    RemoteProject[] projects = jiraSoapService.getProjectsNoSchemes(token);

    and this returns the project key that I need.

    I want to access all JIRA issues in a particular project. How could I accomplish that ?

    Please note that I have an older version of JIRA which does not support any JQLSearch in the WSDL

    RemoteIssue[] issuesFromPrjSearch = jiraSoapService.getIssuesFromTextSearchWithProject(token,new String[]

    Unknown macro: {projectkey}

    , "a*", 5000);

    but this requires a search term and searches for that particular letter in the summary. Please explain this API too.

    Thanks,

    Divya Arun

  106. Anonymous

    Hello,

    I am using the SOAP API to integrate Jira into my own web application. Among other stuff, i am using the project creation API functionnality and I would like to report a need for improvement here.

    Basically, Jira does not allow two projects to have the same name and I would like to let my user know when they are trying to create a project with an unavailable name.

    With the API, whenever user tries to create a project with an unavailable name, Jira returns a RemoteValidationException. Problem is that there is no way to tell if that exception is thrown because project name is already used or because of something else. Indeed, the only info that is available in that exception is the faultString attribute. RemoteValidationExcpetion is not precise enough.

    Has anyone faced this problem alredy? Is there any plan to improve API exceptions?

    Thanks.

  107. Anonymous

    Using Metro (JAX-WS RI 2.2.5, July 29, 2011).
    Trying to use wsimport on the WSDL via http gets me:
    -----
    Using Metro (JAX-WS RI 2.2.5, July 29, 2011).

    Trying to use wsimport on the WSDL via http gets me:

    -----

    ./wsimport.sh -Xendorsed http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl

    parsing WSDL...

    [ERROR] White spaces are required between publicId and systemId.

      line 1 of http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl

    [ERROR] White spaces are required between publicId and systemId.

    Failed to read the WSDL document: http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl, because 1) could not find the document; /2) the document could not be read; 3) the root element of the document is not <wsdl:definitions>.

    [ERROR] failed.noservice=Could not find wsdl:service in the provided WSDL(s): 

     At least one WSDL with at least one service definition needs to be provided.

            Failed to parse the WSDL.

    -----

    Doing the same via HTTPS gets me a different error:

    -----

    ./wsimport.sh -Xendorsed https://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl

    parsing WSDL...

    [ERROR] "Use of SOAP Encoding is not supported. 

    SOAP extension element on line 5,380 in https://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl has use="encoded" "

            Failed to parse the WSDL.

    -----

    BTW Using 

    java -version

    java version "1.6.0_26"

    Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425)

    Java HotSpot(TM) Client VM (build 20.1-b02-384, mixed mode)

  108. Anonymous

    If I run the example, I get the error

    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project jira-soapclient: An exception occured while executing the
     Java class. null: InvocationTargetException: (500)Internal Server Error -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project jira-soap
    client: An exception occured while executing the Java class. null
            at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
    .java:216)

    (more lines)

    I'm not used to Maven. I''m stuck.