Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-14373

Unable to update comment on worklog using SOAP.

    XMLWordPrintable

Details

    Description

      Hello,

      I was playing around the SOAP client to edit some Worklog entries. I assumes that the following code would be able to change the comment of a Worklog entry:

      public class WorklogTest
      {
          public static void main(String[] args) throws Exception
          {
              URL url = new URL("http://localhost:8080/rpc/soap/jirasoapservice-v2");
      
              JiraSoapServiceServiceLocator jiraSoapServiceGetter = new JiraSoapServiceServiceLocator();
              JiraSoapService jiraSoapService = jiraSoapServiceGetter.getJirasoapserviceV2(url);
      
              String token = jiraSoapService.login("admin", "admin");
      
              RemoteWorklog[] logs = jiraSoapService.getWorklogs(token, "ONE-1");
              if (logs.length > 0)
              {
              
                  logs[0].setComment("Qwerty");
                  jiraSoapService.updateWorklogAndAutoAdjustRemainingEstimate(token, logs[0]);
              }
          }
      }
      

      However, when I try to execute the code I get the following exception:

      Exception in thread "main" AxisFault
       faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
       faultSubcode: 
       faultString: com.atlassian.jira.rpc.exception.RemoteValidationException: Errors: {timeLogged=Invalid time duration entered.}
      Error Messages: []
       faultActor: 
       faultNode: 
       faultDetail: 
      	{}com.atlassian.jira.rpc.exception.RemoteValidationException:null
      	{http://xml.apache.org/axis/}hostname:honey2.sydney.atlassian.com
      
      com.atlassian.jira.rpc.exception.RemoteValidationException: Errors: {timeLogged=Invalid time duration entered.}
      Error Messages: []
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
      	at java.lang.Class.newInstance0(Class.java:350)
      	at java.lang.Class.newInstance(Class.java:303)
      	at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
      	at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
      	at com.atlassian.jira.rpc.exception.RemoteValidationException.getDeserializer(RemoteValidationException.java:75)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:585)
      	at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
      	at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
      	at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
      	at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
      	at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
      	at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
      	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
      	at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:220)
      	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:322)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
      	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
      	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
      	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
      	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
      	at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
      	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 _soapclient.JirasoapserviceV2SoapBindingStub.updateWorklogAndAutoAdjustRemainingEstimate(JirasoapserviceV2SoapBindingStub.java:5920)
      	at com.atlassian.jira_soapclient.WorklogTest.main(WorklogTest.java:33)
      

      This seems the be caused by the fact that the server expects a different interval format as input from the one it returns when querying an issue. When the server returns a Worklog it sets Worklog.timeSpent to a human readable string (e.g. 15 days, 3 hours). However, when processing an input Worklog the server expects Worklog.timeSpent to be set to a JIRA input interval (e.g 15d 3h).

      Later,
      Brenden.

      Attachments

        Activity

          People

            Unassigned Unassigned
            bbain bain
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: