diff --git a/src/main/java/org/gitlab4j/api/services/JiraService.java b/src/main/java/org/gitlab4j/api/services/JiraService.java index b2a99b88bc1f2f97e0e71f23b929eaa51ac7c278..53d4745658e077e1426591e5473ffadc23e942e7 100644 --- a/src/main/java/org/gitlab4j/api/services/JiraService.java +++ b/src/main/java/org/gitlab4j/api/services/JiraService.java @@ -1,5 +1,7 @@ package org.gitlab4j.api.services; +import java.util.Map; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -109,4 +111,28 @@ public class JiraService extends NotificationService { setJiraIssueTransitionId(jiraIssueTransitionId); return (this); } + + @Override + public void setProperties(Map properties) { + fixJiraIssueTransitionId(properties); + super.setProperties(properties); + } + + /** + * Make sure jiraIssueTransitionId is an integer and not an empty string. + * @param properties the Map holding the properties + */ + private void fixJiraIssueTransitionId(Map properties) { + + if (properties != null) { + Object jiraIssueTransitionId = properties.get(JIRA_ISSUE_TRANSITION_ID_PROP); + if (jiraIssueTransitionId instanceof String) { + if (((String)jiraIssueTransitionId).trim().isEmpty()) { + properties.put(JIRA_ISSUE_TRANSITION_ID_PROP, null); + } else { + properties.put(JIRA_ISSUE_TRANSITION_ID_PROP, Integer.valueOf((String)jiraIssueTransitionId)); + } + } + } + } } diff --git a/src/test/java/org/gitlab4j/api/TestServicesApi.java b/src/test/java/org/gitlab4j/api/TestServicesApi.java index 456f6945404a0623812cb8f80196f8bd3362e30b..fd3cf450bb6bbe84de03ef9bbbc74f2ad21827ac 100644 --- a/src/test/java/org/gitlab4j/api/TestServicesApi.java +++ b/src/test/java/org/gitlab4j/api/TestServicesApi.java @@ -105,8 +105,14 @@ public class TestServicesApi { @Test public void testGetJiraService() throws GitLabApiException { + JiraService jiraService = gitLabApi.getServicesApi().getJiraService(testProject); assertNotNull(jiraService); + + // Make sure the jira_issue_transition_id is retrievable. + // This is testing that a class cast exception is not thrown. + Integer jiraIssueTransitionId = jiraService.getJiraIssueTransitionId(); + assertTrue(jiraIssueTransitionId == null || jiraIssueTransitionId != null); } @Test