Showing
19 changed files
with
692 additions
and
41 deletions
| ... | ... | @@ -27,6 +27,7 @@ import org.apache.http.util.EntityUtils; |
| 27 | 27 | import pl.com.it_crowd.youtrack.api.exceptions.NoResultFoundException; |
| 28 | 28 | import pl.com.it_crowd.youtrack.api.exceptions.YoutrackAPIException; |
| 29 | 29 | import pl.com.it_crowd.youtrack.api.exceptions.YoutrackErrorException; |
| 30 | +import pl.com.it_crowd.youtrack.api.rest.AssigneeList; | |
| 30 | 31 | import pl.com.it_crowd.youtrack.api.rest.Issue; |
| 31 | 32 | import pl.com.it_crowd.youtrack.api.rest.Issues; |
| 32 | 33 | import pl.com.it_crowd.youtrack.api.rest.User; |
| ... | ... | @@ -207,6 +208,23 @@ public class YoutrackAPI { |
| 207 | 208 | return matcher.group(1); |
| 208 | 209 | } |
| 209 | 210 | |
| 211 | + public AssigneeList getAssignees(String project) throws IOException, JAXBException | |
| 212 | + { | |
| 213 | + final URI uri; | |
| 214 | + try { | |
| 215 | + uri = new URIBuilder(serviceLocation + "/rest/admin/project/" + project + "/assignee").build(); | |
| 216 | + } catch (URISyntaxException e) { | |
| 217 | + throw new RuntimeException(e); | |
| 218 | + } | |
| 219 | + final String responseString = execute(new HttpGet(uri)); | |
| 220 | + final Object result = YoutrackUnmarshaller.unmarshall(responseString); | |
| 221 | + if (result instanceof AssigneeList) { | |
| 222 | + return (AssigneeList) result; | |
| 223 | + } else { | |
| 224 | + throw new YoutrackAPIException("Unexpected type: " + result); | |
| 225 | + } | |
| 226 | + } | |
| 227 | + | |
| 210 | 228 | public List<User> getIndividualAssignees(String project) throws IOException, JAXBException |
| 211 | 229 | { |
| 212 | 230 | final URI uri; | ... | ... |
| 1 | +// | |
| 2 | +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 | |
| 3 | +// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// Any modifications to this file will be lost upon recompilation of the source schema. | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | +// | |
| 7 | + | |
| 8 | +package pl.com.it_crowd.youtrack.api.rest; | |
| 9 | + | |
| 10 | +import javax.xml.bind.annotation.XmlAccessType; | |
| 11 | +import javax.xml.bind.annotation.XmlAccessorType; | |
| 12 | +import javax.xml.bind.annotation.XmlElement; | |
| 13 | +import javax.xml.bind.annotation.XmlType; | |
| 14 | + | |
| 15 | +/** | |
| 16 | + * <p>Java class for assignedByType complex type. | |
| 17 | + * <p/> | |
| 18 | + * <p>The following schema fragment specifies the expected content contained within this class. | |
| 19 | + * <p/> | |
| 20 | + * <pre> | |
| 21 | + * <complexType name="assignedByType"> | |
| 22 | + * <complexContent> | |
| 23 | + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> | |
| 24 | + * <sequence> | |
| 25 | + * <element name="userGroupRef" type="{}userGroupRefType"/> | |
| 26 | + * </sequence> | |
| 27 | + * </restriction> | |
| 28 | + * </complexContent> | |
| 29 | + * </complexType> | |
| 30 | + * </pre> | |
| 31 | + */ | |
| 32 | +@XmlAccessorType(XmlAccessType.FIELD) | |
| 33 | +@XmlType(name = "assignedByType", propOrder = {"userGroupRef"}) | |
| 34 | +public class AssignedByType { | |
| 35 | +// ------------------------------ FIELDS ------------------------------ | |
| 36 | + | |
| 37 | + @XmlElement(required = true) | |
| 38 | + protected UserGroupRefType userGroupRef; | |
| 39 | + | |
| 40 | +// --------------------- GETTER / SETTER METHODS --------------------- | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * Gets the value of the userGroupRef property. | |
| 44 | + * | |
| 45 | + * @return possible object is | |
| 46 | + * {@link UserGroupRefType } | |
| 47 | + */ | |
| 48 | + public UserGroupRefType getUserGroupRef() | |
| 49 | + { | |
| 50 | + return userGroupRef; | |
| 51 | + } | |
| 52 | + | |
| 53 | + /** | |
| 54 | + * Sets the value of the userGroupRef property. | |
| 55 | + * | |
| 56 | + * @param value allowed object is | |
| 57 | + * {@link UserGroupRefType } | |
| 58 | + */ | |
| 59 | + public void setUserGroupRef(UserGroupRefType value) | |
| 60 | + { | |
| 61 | + this.userGroupRef = value; | |
| 62 | + } | |
| 63 | +} | ... | ... |
| 1 | +// | |
| 2 | +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 | |
| 3 | +// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// Any modifications to this file will be lost upon recompilation of the source schema. | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | +// | |
| 7 | + | |
| 8 | +package pl.com.it_crowd.youtrack.api.rest; | |
| 9 | + | |
| 10 | +import javax.xml.bind.annotation.XmlAccessType; | |
| 11 | +import javax.xml.bind.annotation.XmlAccessorType; | |
| 12 | +import javax.xml.bind.annotation.XmlAttribute; | |
| 13 | +import javax.xml.bind.annotation.XmlElement; | |
| 14 | +import javax.xml.bind.annotation.XmlRootElement; | |
| 15 | +import javax.xml.bind.annotation.XmlType; | |
| 16 | +import java.util.ArrayList; | |
| 17 | +import java.util.List; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * <p>Java class for anonymous complex type. | |
| 21 | + * <p/> | |
| 22 | + * <p>The following schema fragment specifies the expected content contained within this class. | |
| 23 | + * <p/> | |
| 24 | + * <pre> | |
| 25 | + * <complexType> | |
| 26 | + * <complexContent> | |
| 27 | + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> | |
| 28 | + * <sequence> | |
| 29 | + * <element name="assignees"> | |
| 30 | + * <complexType> | |
| 31 | + * <complexContent> | |
| 32 | + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> | |
| 33 | + * <sequence> | |
| 34 | + * <element name="assignee" type="{}assigneeType" maxOccurs="unbounded" minOccurs="0"/> | |
| 35 | + * </sequence> | |
| 36 | + * </restriction> | |
| 37 | + * </complexContent> | |
| 38 | + * </complexType> | |
| 39 | + * </element> | |
| 40 | + * </sequence> | |
| 41 | + * <attribute name="groupsUrl" type="{http://www.w3.org/2001/XMLSchema}string" /> | |
| 42 | + * <attribute name="individualsUrl" type="{http://www.w3.org/2001/XMLSchema}string" /> | |
| 43 | + * </restriction> | |
| 44 | + * </complexContent> | |
| 45 | + * </complexType> | |
| 46 | + * </pre> | |
| 47 | + */ | |
| 48 | +@XmlAccessorType(XmlAccessType.FIELD) | |
| 49 | +@XmlType(name = "", propOrder = {"assignees"}) | |
| 50 | +@XmlRootElement(name = "assigneeList") | |
| 51 | +public class AssigneeList { | |
| 52 | +// ------------------------------ FIELDS ------------------------------ | |
| 53 | + | |
| 54 | + @XmlElement(required = true) | |
| 55 | + protected AssigneeList.Assignees assignees; | |
| 56 | + | |
| 57 | + @XmlAttribute | |
| 58 | + protected String groupsUrl; | |
| 59 | + | |
| 60 | + @XmlAttribute | |
| 61 | + protected String individualsUrl; | |
| 62 | + | |
| 63 | +// --------------------- GETTER / SETTER METHODS --------------------- | |
| 64 | + | |
| 65 | + /** | |
| 66 | + * Gets the value of the assignees property. | |
| 67 | + * | |
| 68 | + * @return possible object is | |
| 69 | + * {@link AssigneeList.Assignees } | |
| 70 | + */ | |
| 71 | + public AssigneeList.Assignees getAssignees() | |
| 72 | + { | |
| 73 | + return assignees; | |
| 74 | + } | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * Sets the value of the assignees property. | |
| 78 | + * | |
| 79 | + * @param value allowed object is | |
| 80 | + * {@link AssigneeList.Assignees } | |
| 81 | + */ | |
| 82 | + public void setAssignees(AssigneeList.Assignees value) | |
| 83 | + { | |
| 84 | + this.assignees = value; | |
| 85 | + } | |
| 86 | + | |
| 87 | + /** | |
| 88 | + * Gets the value of the groupsUrl property. | |
| 89 | + * | |
| 90 | + * @return possible object is | |
| 91 | + * {@link String } | |
| 92 | + */ | |
| 93 | + public String getGroupsUrl() | |
| 94 | + { | |
| 95 | + return groupsUrl; | |
| 96 | + } | |
| 97 | + | |
| 98 | + /** | |
| 99 | + * Sets the value of the groupsUrl property. | |
| 100 | + * | |
| 101 | + * @param value allowed object is | |
| 102 | + * {@link String } | |
| 103 | + */ | |
| 104 | + public void setGroupsUrl(String value) | |
| 105 | + { | |
| 106 | + this.groupsUrl = value; | |
| 107 | + } | |
| 108 | + | |
| 109 | + /** | |
| 110 | + * Gets the value of the individualsUrl property. | |
| 111 | + * | |
| 112 | + * @return possible object is | |
| 113 | + * {@link String } | |
| 114 | + */ | |
| 115 | + public String getIndividualsUrl() | |
| 116 | + { | |
| 117 | + return individualsUrl; | |
| 118 | + } | |
| 119 | + | |
| 120 | + /** | |
| 121 | + * Sets the value of the individualsUrl property. | |
| 122 | + * | |
| 123 | + * @param value allowed object is | |
| 124 | + * {@link String } | |
| 125 | + */ | |
| 126 | + public void setIndividualsUrl(String value) | |
| 127 | + { | |
| 128 | + this.individualsUrl = value; | |
| 129 | + } | |
| 130 | + | |
| 131 | +// -------------------------- INNER CLASSES -------------------------- | |
| 132 | + | |
| 133 | + /** | |
| 134 | + * <p>Java class for anonymous complex type. | |
| 135 | + * <p/> | |
| 136 | + * <p>The following schema fragment specifies the expected content contained within this class. | |
| 137 | + * <p/> | |
| 138 | + * <pre> | |
| 139 | + * <complexType> | |
| 140 | + * <complexContent> | |
| 141 | + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> | |
| 142 | + * <sequence> | |
| 143 | + * <element name="assignee" type="{}assigneeType" maxOccurs="unbounded" minOccurs="0"/> | |
| 144 | + * </sequence> | |
| 145 | + * </restriction> | |
| 146 | + * </complexContent> | |
| 147 | + * </complexType> | |
| 148 | + * </pre> | |
| 149 | + */ | |
| 150 | + @XmlAccessorType(XmlAccessType.FIELD) | |
| 151 | + @XmlType(name = "", propOrder = {"assignees"}) | |
| 152 | + public static class Assignees { | |
| 153 | +// ------------------------------ FIELDS ------------------------------ | |
| 154 | + | |
| 155 | + @XmlElement(name = "assignee") | |
| 156 | + protected List<AssigneeType> assignees; | |
| 157 | + | |
| 158 | +// --------------------- GETTER / SETTER METHODS --------------------- | |
| 159 | + | |
| 160 | + /** | |
| 161 | + * Gets the value of the assignees property. | |
| 162 | + * <p/> | |
| 163 | + * <p/> | |
| 164 | + * This accessor method returns a reference to the live list, | |
| 165 | + * not a snapshot. Therefore any modification you make to the | |
| 166 | + * returned list will be present inside the JAXB object. | |
| 167 | + * This is why there is not a <CODE>set</CODE> method for the assignees property. | |
| 168 | + * <p/> | |
| 169 | + * <p/> | |
| 170 | + * For example, to add a new item, do as follows: | |
| 171 | + * <pre> | |
| 172 | + * getAssignees().add(newItem); | |
| 173 | + * </pre> | |
| 174 | + * <p/> | |
| 175 | + * <p/> | |
| 176 | + * <p/> | |
| 177 | + * Objects of the following type(s) are allowed in the list | |
| 178 | + * {@link AssigneeType } | |
| 179 | + */ | |
| 180 | + public List<AssigneeType> getAssignees() | |
| 181 | + { | |
| 182 | + if (assignees == null) { | |
| 183 | + assignees = new ArrayList<AssigneeType>(); | |
| 184 | + } | |
| 185 | + return this.assignees; | |
| 186 | + } | |
| 187 | + } | |
| 188 | +} | ... | ... |
| 1 | +// | |
| 2 | +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 | |
| 3 | +// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// Any modifications to this file will be lost upon recompilation of the source schema. | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | +// | |
| 7 | + | |
| 8 | +package pl.com.it_crowd.youtrack.api.rest; | |
| 9 | + | |
| 10 | +import javax.xml.bind.annotation.XmlAccessType; | |
| 11 | +import javax.xml.bind.annotation.XmlAccessorType; | |
| 12 | +import javax.xml.bind.annotation.XmlAttribute; | |
| 13 | +import javax.xml.bind.annotation.XmlElement; | |
| 14 | +import javax.xml.bind.annotation.XmlType; | |
| 15 | + | |
| 16 | +/** | |
| 17 | + * <p>Java class for assigneeType complex type. | |
| 18 | + * <p/> | |
| 19 | + * <p>The following schema fragment specifies the expected content contained within this class. | |
| 20 | + * <p/> | |
| 21 | + * <pre> | |
| 22 | + * <complexType name="assigneeType"> | |
| 23 | + * <complexContent> | |
| 24 | + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> | |
| 25 | + * <sequence> | |
| 26 | + * <element name="assignedBy" type="{}assignedByType"/> | |
| 27 | + * </sequence> | |
| 28 | + * <attribute name="login" type="{http://www.w3.org/2001/XMLSchema}string" /> | |
| 29 | + * <attribute name="isIndividualAssignee" type="{http://www.w3.org/2001/XMLSchema}string" /> | |
| 30 | + * </restriction> | |
| 31 | + * </complexContent> | |
| 32 | + * </complexType> | |
| 33 | + * </pre> | |
| 34 | + */ | |
| 35 | +@XmlAccessorType(XmlAccessType.FIELD) | |
| 36 | +@XmlType(name = "assigneeType", propOrder = {"assignedBy"}) | |
| 37 | +public class AssigneeType { | |
| 38 | +// ------------------------------ FIELDS ------------------------------ | |
| 39 | + | |
| 40 | + @XmlElement(required = true) | |
| 41 | + protected AssignedByType assignedBy; | |
| 42 | + | |
| 43 | + @XmlAttribute | |
| 44 | + protected String isIndividualAssignee; | |
| 45 | + | |
| 46 | + @XmlAttribute | |
| 47 | + protected String login; | |
| 48 | + | |
| 49 | +// --------------------- GETTER / SETTER METHODS --------------------- | |
| 50 | + | |
| 51 | + /** | |
| 52 | + * Gets the value of the assignedBy property. | |
| 53 | + * | |
| 54 | + * @return possible object is | |
| 55 | + * {@link AssignedByType } | |
| 56 | + */ | |
| 57 | + public AssignedByType getAssignedBy() | |
| 58 | + { | |
| 59 | + return assignedBy; | |
| 60 | + } | |
| 61 | + | |
| 62 | + /** | |
| 63 | + * Sets the value of the assignedBy property. | |
| 64 | + * | |
| 65 | + * @param value allowed object is | |
| 66 | + * {@link AssignedByType } | |
| 67 | + */ | |
| 68 | + public void setAssignedBy(AssignedByType value) | |
| 69 | + { | |
| 70 | + this.assignedBy = value; | |
| 71 | + } | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * Gets the value of the isIndividualAssignee property. | |
| 75 | + * | |
| 76 | + * @return possible object is | |
| 77 | + * {@link String } | |
| 78 | + */ | |
| 79 | + public String getIsIndividualAssignee() | |
| 80 | + { | |
| 81 | + return isIndividualAssignee; | |
| 82 | + } | |
| 83 | + | |
| 84 | + /** | |
| 85 | + * Sets the value of the isIndividualAssignee property. | |
| 86 | + * | |
| 87 | + * @param value allowed object is | |
| 88 | + * {@link String } | |
| 89 | + */ | |
| 90 | + public void setIsIndividualAssignee(String value) | |
| 91 | + { | |
| 92 | + this.isIndividualAssignee = value; | |
| 93 | + } | |
| 94 | + | |
| 95 | + /** | |
| 96 | + * Gets the value of the login property. | |
| 97 | + * | |
| 98 | + * @return possible object is | |
| 99 | + * {@link String } | |
| 100 | + */ | |
| 101 | + public String getLogin() | |
| 102 | + { | |
| 103 | + return login; | |
| 104 | + } | |
| 105 | + | |
| 106 | + /** | |
| 107 | + * Sets the value of the login property. | |
| 108 | + * | |
| 109 | + * @param value allowed object is | |
| 110 | + * {@link String } | |
| 111 | + */ | |
| 112 | + public void setLogin(String value) | |
| 113 | + { | |
| 114 | + this.login = value; | |
| 115 | + } | |
| 116 | +} | ... | ... |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 |
| 3 | 3 | // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> |
| 4 | 4 | // Any modifications to this file will be lost upon recompilation of the source schema. |
| 5 | -// Generated on: 2012.07.03 at 12:32:28 PM CEST | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | package pl.com.it_crowd.youtrack.api.rest; |
| ... | ... | @@ -63,7 +63,7 @@ public class Comment { |
| 63 | 63 | @XmlAttribute |
| 64 | 64 | protected String author; |
| 65 | 65 | |
| 66 | - @XmlElementRefs({@XmlElementRef(name = "replies", type = JAXBElement.class), @XmlElementRef(name = "value", type = JAXBElement.class)}) | |
| 66 | + @XmlElementRefs({@XmlElementRef(name = "value", type = JAXBElement.class), @XmlElementRef(name = "replies", type = JAXBElement.class)}) | |
| 67 | 67 | @XmlMixed |
| 68 | 68 | protected List<Serializable> content; |
| 69 | 69 | |
| ... | ... | @@ -130,9 +130,9 @@ public class Comment { |
| 130 | 130 | * <p/> |
| 131 | 131 | * <p/> |
| 132 | 132 | * Objects of the following type(s) are allowed in the list |
| 133 | - * {@link JAXBElement }{@code <}{@link String }{@code >} | |
| 134 | - * {@link JAXBElement }{@code <}{@link Comment.Value }{@code >} | |
| 135 | 133 | * {@link String } |
| 134 | + * {@link JAXBElement }{@code <}{@link Comment.Value }{@code >} | |
| 135 | + * {@link JAXBElement }{@code <}{@link String }{@code >} | |
| 136 | 136 | */ |
| 137 | 137 | public List<Serializable> getContent() |
| 138 | 138 | { | ... | ... |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 |
| 3 | 3 | // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> |
| 4 | 4 | // Any modifications to this file will be lost upon recompilation of the source schema. |
| 5 | -// Generated on: 2012.07.03 at 12:32:28 PM CEST | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | package pl.com.it_crowd.youtrack.api.rest; | ... | ... |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 |
| 3 | 3 | // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> |
| 4 | 4 | // Any modifications to this file will be lost upon recompilation of the source schema. |
| 5 | -// Generated on: 2012.07.03 at 12:32:28 PM CEST | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | package pl.com.it_crowd.youtrack.api.rest; |
| ... | ... | @@ -40,7 +40,7 @@ import java.util.List; |
| 40 | 40 | public class Issue { |
| 41 | 41 | // ------------------------------ FIELDS ------------------------------ |
| 42 | 42 | |
| 43 | - @XmlElements({@XmlElement(name = "field", type = Field.class), @XmlElement(name = "comment", type = Comment.class)}) | |
| 43 | + @XmlElements({@XmlElement(name = "comment", type = Comment.class), @XmlElement(name = "field", type = Field.class)}) | |
| 44 | 44 | protected List<Object> fieldOrComment; |
| 45 | 45 | |
| 46 | 46 | @XmlAttribute |
| ... | ... | @@ -66,8 +66,8 @@ public class Issue { |
| 66 | 66 | * <p/> |
| 67 | 67 | * <p/> |
| 68 | 68 | * Objects of the following type(s) are allowed in the list |
| 69 | - * {@link Field } | |
| 70 | 69 | * {@link Comment } |
| 70 | + * {@link Field } | |
| 71 | 71 | */ |
| 72 | 72 | public List<Object> getFieldOrComment() |
| 73 | 73 | { | ... | ... |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 |
| 3 | 3 | // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> |
| 4 | 4 | // Any modifications to this file will be lost upon recompilation of the source schema. |
| 5 | -// Generated on: 2012.07.03 at 12:32:28 PM CEST | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | package pl.com.it_crowd.youtrack.api.rest; | ... | ... |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 |
| 3 | 3 | // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> |
| 4 | 4 | // Any modifications to this file will be lost upon recompilation of the source schema. |
| 5 | -// Generated on: 2012.07.03 at 12:32:28 PM CEST | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | package pl.com.it_crowd.youtrack.api.rest; |
| ... | ... | @@ -35,6 +35,8 @@ public class ObjectFactory { |
| 35 | 35 | |
| 36 | 36 | private final static QName _Error_QNAME = new QName("", "error"); |
| 37 | 37 | |
| 38 | + private final static QName _Int_QNAME = new QName("", "int"); | |
| 39 | + | |
| 38 | 40 | private final static QName _Issue_QNAME = new QName("", "issue"); |
| 39 | 41 | |
| 40 | 42 | // --------------------------- CONSTRUCTORS --------------------------- |
| ... | ... | @@ -49,6 +51,38 @@ public class ObjectFactory { |
| 49 | 51 | // -------------------------- OTHER METHODS -------------------------- |
| 50 | 52 | |
| 51 | 53 | /** |
| 54 | + * Create an instance of {@link AssignedByType } | |
| 55 | + */ | |
| 56 | + public AssignedByType createAssignedByType() | |
| 57 | + { | |
| 58 | + return new AssignedByType(); | |
| 59 | + } | |
| 60 | + | |
| 61 | + /** | |
| 62 | + * Create an instance of {@link AssigneeList } | |
| 63 | + */ | |
| 64 | + public AssigneeList createAssigneeList() | |
| 65 | + { | |
| 66 | + return new AssigneeList(); | |
| 67 | + } | |
| 68 | + | |
| 69 | + /** | |
| 70 | + * Create an instance of {@link AssigneeList.Assignees } | |
| 71 | + */ | |
| 72 | + public AssigneeList.Assignees createAssigneeListAssignees() | |
| 73 | + { | |
| 74 | + return new AssigneeList.Assignees(); | |
| 75 | + } | |
| 76 | + | |
| 77 | + /** | |
| 78 | + * Create an instance of {@link AssigneeType } | |
| 79 | + */ | |
| 80 | + public AssigneeType createAssigneeType() | |
| 81 | + { | |
| 82 | + return new AssigneeType(); | |
| 83 | + } | |
| 84 | + | |
| 85 | + /** | |
| 52 | 86 | * Create an instance of {@link Comment } |
| 53 | 87 | */ |
| 54 | 88 | public Comment createComment() |
| ... | ... | @@ -108,6 +142,15 @@ public class ObjectFactory { |
| 108 | 142 | } |
| 109 | 143 | |
| 110 | 144 | /** |
| 145 | + * Create an instance of {@link JAXBElement }{@code <}{@link Short }{@code >}} | |
| 146 | + */ | |
| 147 | + @XmlElementDecl(namespace = "", name = "int") | |
| 148 | + public JAXBElement<Short> createInt(Short value) | |
| 149 | + { | |
| 150 | + return new JAXBElement<Short>(_Int_QNAME, Short.class, null, value); | |
| 151 | + } | |
| 152 | + | |
| 153 | + /** | |
| 111 | 154 | * Create an instance of {@link Issue } |
| 112 | 155 | */ |
| 113 | 156 | public Issue createIssue() |
| ... | ... | @@ -141,6 +184,14 @@ public class ObjectFactory { |
| 141 | 184 | } |
| 142 | 185 | |
| 143 | 186 | /** |
| 187 | + * Create an instance of {@link UserGroupRefType } | |
| 188 | + */ | |
| 189 | + public UserGroupRefType createUserGroupRefType() | |
| 190 | + { | |
| 191 | + return new UserGroupRefType(); | |
| 192 | + } | |
| 193 | + | |
| 194 | + /** | |
| 144 | 195 | * Create an instance of {@link UserRefs } |
| 145 | 196 | */ |
| 146 | 197 | public UserRefs createUserRefs() | ... | ... |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 |
| 3 | 3 | // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> |
| 4 | 4 | // Any modifications to this file will be lost upon recompilation of the source schema. |
| 5 | -// Generated on: 2012.07.03 at 12:32:28 PM CEST | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | package pl.com.it_crowd.youtrack.api.rest; | ... | ... |
| 1 | +// | |
| 2 | +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 | |
| 3 | +// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// Any modifications to this file will be lost upon recompilation of the source schema. | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | +// | |
| 7 | + | |
| 8 | +package pl.com.it_crowd.youtrack.api.rest; | |
| 9 | + | |
| 10 | +import javax.xml.bind.annotation.XmlAccessType; | |
| 11 | +import javax.xml.bind.annotation.XmlAccessorType; | |
| 12 | +import javax.xml.bind.annotation.XmlAttribute; | |
| 13 | +import javax.xml.bind.annotation.XmlType; | |
| 14 | +import javax.xml.bind.annotation.XmlValue; | |
| 15 | + | |
| 16 | +/** | |
| 17 | + * <p>Java class for userGroupRefType complex type. | |
| 18 | + * <p/> | |
| 19 | + * <p>The following schema fragment specifies the expected content contained within this class. | |
| 20 | + * <p/> | |
| 21 | + * <pre> | |
| 22 | + * <complexType name="userGroupRefType"> | |
| 23 | + * <simpleContent> | |
| 24 | + * <extension base="<http://www.w3.org/2001/XMLSchema>string"> | |
| 25 | + * <attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" /> | |
| 26 | + * <attribute name="url" type="{http://www.w3.org/2001/XMLSchema}string" /> | |
| 27 | + * </extension> | |
| 28 | + * </simpleContent> | |
| 29 | + * </complexType> | |
| 30 | + * </pre> | |
| 31 | + */ | |
| 32 | +@XmlAccessorType(XmlAccessType.FIELD) | |
| 33 | +@XmlType(name = "userGroupRefType", propOrder = {"value"}) | |
| 34 | +public class UserGroupRefType { | |
| 35 | +// ------------------------------ FIELDS ------------------------------ | |
| 36 | + | |
| 37 | + @XmlAttribute | |
| 38 | + protected String name; | |
| 39 | + | |
| 40 | + @XmlAttribute | |
| 41 | + protected String url; | |
| 42 | + | |
| 43 | + @XmlValue | |
| 44 | + protected String value; | |
| 45 | + | |
| 46 | +// --------------------- GETTER / SETTER METHODS --------------------- | |
| 47 | + | |
| 48 | + /** | |
| 49 | + * Gets the value of the name property. | |
| 50 | + * | |
| 51 | + * @return possible object is | |
| 52 | + * {@link String } | |
| 53 | + */ | |
| 54 | + public String getName() | |
| 55 | + { | |
| 56 | + return name; | |
| 57 | + } | |
| 58 | + | |
| 59 | + /** | |
| 60 | + * Sets the value of the name property. | |
| 61 | + * | |
| 62 | + * @param value allowed object is | |
| 63 | + * {@link String } | |
| 64 | + */ | |
| 65 | + public void setName(String value) | |
| 66 | + { | |
| 67 | + this.name = value; | |
| 68 | + } | |
| 69 | + | |
| 70 | + /** | |
| 71 | + * Gets the value of the url property. | |
| 72 | + * | |
| 73 | + * @return possible object is | |
| 74 | + * {@link String } | |
| 75 | + */ | |
| 76 | + public String getUrl() | |
| 77 | + { | |
| 78 | + return url; | |
| 79 | + } | |
| 80 | + | |
| 81 | + /** | |
| 82 | + * Sets the value of the url property. | |
| 83 | + * | |
| 84 | + * @param value allowed object is | |
| 85 | + * {@link String } | |
| 86 | + */ | |
| 87 | + public void setUrl(String value) | |
| 88 | + { | |
| 89 | + this.url = value; | |
| 90 | + } | |
| 91 | + | |
| 92 | + /** | |
| 93 | + * Gets the value of the value property. | |
| 94 | + * | |
| 95 | + * @return possible object is | |
| 96 | + * {@link String } | |
| 97 | + */ | |
| 98 | + public String getValue() | |
| 99 | + { | |
| 100 | + return value; | |
| 101 | + } | |
| 102 | + | |
| 103 | + /** | |
| 104 | + * Sets the value of the value property. | |
| 105 | + * | |
| 106 | + * @param value allowed object is | |
| 107 | + * {@link String } | |
| 108 | + */ | |
| 109 | + public void setValue(String value) | |
| 110 | + { | |
| 111 | + this.value = value; | |
| 112 | + } | |
| 113 | +} | ... | ... |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-833 |
| 3 | 3 | // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> |
| 4 | 4 | // Any modifications to this file will be lost upon recompilation of the source schema. |
| 5 | -// Generated on: 2012.07.03 at 12:32:28 PM CEST | |
| 5 | +// Generated on: 2012.07.05 at 06:19:38 PM CEST | |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | package pl.com.it_crowd.youtrack.api.rest; | ... | ... |
| ... | ... | @@ -15,6 +15,12 @@ |
| 15 | 15 | </jxb:bindings> |
| 16 | 16 | </jxb:bindings> |
| 17 | 17 | |
| 18 | + <jxb:bindings schemaLocation="../xsd/assignees.xsd" node="/xs:schema"> | |
| 19 | + <jxb:bindings node=".//xs:element[@name='assigneeList']//xs:sequence[@id='innerAssignees']"> | |
| 20 | + <jxb:property name="assignees"/> | |
| 21 | + </jxb:bindings> | |
| 22 | + </jxb:bindings> | |
| 23 | + | |
| 18 | 24 | <jxb:bindings schemaLocation="../xsd/types.xsd" node="/xs:schema"> |
| 19 | 25 | |
| 20 | 26 | <jxb:globalBindings localScoping="nested"/> | ... | ... |
src/main/xsd/assignees.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |
| 2 | +<assigneeList xsi:noNamespaceSchemaLocation="assignees.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| 3 | + groupsUrl="https://it-crowd.com.pl/youtrack/rest/admin/project/QWE_QA/assignee/group" | |
| 4 | + individualsUrl="https://it-crowd.com.pl/youtrack/rest/admin/project/QWE_QA/assignee/individual"> | |
| 5 | + <assignees> | |
| 6 | + <assignee login="bernard" isIndividualAssignee="false"> | |
| 7 | + <assignedBy> | |
| 8 | + <userGroupRef name="IT Crowd team" url="https://it-crowd.com.pl/youtrack/rest/admin/group/IT%20Crowd%20team"/> | |
| 9 | + </assignedBy> | |
| 10 | + </assignee> | |
| 11 | + <assignee login="jacek" isIndividualAssignee="false"> | |
| 12 | + <assignedBy> | |
| 13 | + <userGroupRef name="IT Crowd team" url="https://it-crowd.com.pl/youtrack/rest/admin/group/IT%20Crowd%20team"/> | |
| 14 | + </assignedBy> | |
| 15 | + </assignee> | |
| 16 | + <assignee login="karol" isIndividualAssignee="false"> | |
| 17 | + <assignedBy> | |
| 18 | + <userGroupRef name="IT Crowd team" url="https://it-crowd.com.pl/youtrack/rest/admin/group/IT%20Crowd%20team"/> | |
| 19 | + </assignedBy> | |
| 20 | + </assignee> | |
| 21 | + <assignee login="k.miksa" isIndividualAssignee="false"> | |
| 22 | + <assignedBy> | |
| 23 | + <userGroupRef name="IT Crowd team" url="https://it-crowd.com.pl/youtrack/rest/admin/group/IT%20Crowd%20team"/> | |
| 24 | + </assignedBy> | |
| 25 | + </assignee> | |
| 26 | + <assignee login="tomek" isIndividualAssignee="false"> | |
| 27 | + <assignedBy> | |
| 28 | + <userGroupRef name="IT Crowd team" url="https://it-crowd.com.pl/youtrack/rest/admin/group/IT%20Crowd%20team"/> | |
| 29 | + </assignedBy> | |
| 30 | + </assignee> | |
| 31 | + <assignee login="l.gladek" isIndividualAssignee="false"> | |
| 32 | + <assignedBy> | |
| 33 | + <userGroupRef name="IT Crowd team" url="https://it-crowd.com.pl/youtrack/rest/admin/group/IT%20Crowd%20team"/> | |
| 34 | + </assignedBy> | |
| 35 | + </assignee> | |
| 36 | + </assignees> | |
| 37 | +</assigneeList> | |
| \ No newline at end of file | ... | ... |
src/main/xsd/assignees.xsd
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> | |
| 3 | + | |
| 4 | + <xs:include schemaLocation="types.xsd"/> | |
| 5 | + | |
| 6 | + <xs:element name="assigneeList"> | |
| 7 | + <xs:complexType> | |
| 8 | + <xs:sequence id="assignees" minOccurs="1" maxOccurs="1"> | |
| 9 | + <xs:element name="assignees"> | |
| 10 | + <xs:complexType> | |
| 11 | + <xs:sequence id="innerAssignees"> | |
| 12 | + <xs:element name="assignee" type="assigneeType" maxOccurs="unbounded" minOccurs="0"/> | |
| 13 | + </xs:sequence> | |
| 14 | + </xs:complexType> | |
| 15 | + </xs:element> | |
| 16 | + </xs:sequence> | |
| 17 | + <xs:attribute type="xs:string" name="groupsUrl"/> | |
| 18 | + <xs:attribute type="xs:string" name="individualsUrl"/> | |
| 19 | + </xs:complexType> | |
| 20 | + </xs:element> | |
| 21 | + | |
| 22 | +</xs:schema> | |
| \ No newline at end of file | ... | ... |
src/main/xsd/issuesCount.xml
0 → 100644
src/main/xsd/issuesCount.xsd
0 → 100644
| 1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | 2 | <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1.0"> |
| 3 | 3 | |
| 4 | + <xs:complexType name="assignedByType"> | |
| 5 | + <xs:sequence> | |
| 6 | + <xs:element name="userGroupRef" type="userGroupRefType"/> | |
| 7 | + </xs:sequence> | |
| 8 | + </xs:complexType> | |
| 9 | + | |
| 10 | + <xs:complexType name="assigneeType"> | |
| 11 | + <xs:sequence> | |
| 12 | + <xs:element name="assignedBy" type="assignedByType"/> | |
| 13 | + </xs:sequence> | |
| 14 | + <xs:attribute type="xs:string" name="login" use="optional"/> | |
| 15 | + <xs:attribute type="xs:string" name="isIndividualAssignee" use="optional"/> | |
| 16 | + </xs:complexType> | |
| 4 | 17 | |
| 5 | 18 | <xs:complexType name="fieldType"> |
| 6 | 19 | <xs:sequence id="value" maxOccurs="unbounded" minOccurs="0"> |
| ... | ... | @@ -46,6 +59,15 @@ |
| 46 | 59 | <xs:attribute type="xs:string" name="name" use="optional"/> |
| 47 | 60 | </xs:complexType> |
| 48 | 61 | |
| 62 | + <xs:complexType name="userGroupRefType"> | |
| 63 | + <xs:simpleContent> | |
| 64 | + <xs:extension base="xs:string"> | |
| 65 | + <xs:attribute type="xs:string" name="name" use="optional"/> | |
| 66 | + <xs:attribute type="xs:string" name="url" use="optional"/> | |
| 67 | + </xs:extension> | |
| 68 | + </xs:simpleContent> | |
| 69 | + </xs:complexType> | |
| 70 | + | |
| 49 | 71 | <xs:complexType name="userType"> |
| 50 | 72 | <xs:attribute type="xs:string" name="login" use="required"/> |
| 51 | 73 | <xs:attribute type="xs:anyURI" name="url" use="optional"/> | ... | ... |
| ... | ... | @@ -28,35 +28,6 @@ public class YoutrackAPITest { |
| 28 | 28 | // -------------------------- OTHER METHODS -------------------------- |
| 29 | 29 | |
| 30 | 30 | @Test |
| 31 | - public void commandAllStates() throws IOException, JAXBException | |
| 32 | - { | |
| 33 | - final YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); | |
| 34 | - final String issueId = "TST-1"; | |
| 35 | - IssueWrapper issue; | |
| 36 | - final StateValues[] stateValueses = StateValues.values(); | |
| 37 | - for (StateValues state : stateValueses) { | |
| 38 | - if (state.getCommandValue() != null && !StateValues.Duplicate.equals(state)) { | |
| 39 | - api.command(issueId, Command.stateCommand(state)); | |
| 40 | - issue = api.getIssue(issueId); | |
| 41 | - Assert.assertNotNull(issue); | |
| 42 | - Assert.assertEquals(state.getCommandValue(), issue.getFieldValue(Fields.state)); | |
| 43 | - } | |
| 44 | - } | |
| 45 | - } | |
| 46 | - | |
| 47 | - @Test | |
| 48 | - public void getIndividualAssignees() throws IOException, JAXBException | |
| 49 | - { | |
| 50 | - final YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); | |
| 51 | - final List<User> assignees = api.getIndividualAssignees("TST"); | |
| 52 | - Assert.assertNotNull(assignees); | |
| 53 | - Assert.assertEquals(2, assignees.size()); | |
| 54 | - for (User user : assignees) { | |
| 55 | - Assert.assertTrue("bernard".equals(user.getLogin()) || "root".equals(user.getLogin())); | |
| 56 | - } | |
| 57 | - } | |
| 58 | - | |
| 59 | - @Test | |
| 60 | 31 | public void command() throws IOException, JAXBException |
| 61 | 32 | { |
| 62 | 33 | final YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); |
| ... | ... | @@ -98,6 +69,23 @@ public class YoutrackAPITest { |
| 98 | 69 | } |
| 99 | 70 | |
| 100 | 71 | @Test |
| 72 | + public void commandAllStates() throws IOException, JAXBException | |
| 73 | + { | |
| 74 | + final YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); | |
| 75 | + final String issueId = "TST-1"; | |
| 76 | + IssueWrapper issue; | |
| 77 | + final StateValues[] stateValueses = StateValues.values(); | |
| 78 | + for (StateValues state : stateValueses) { | |
| 79 | + if (state.getCommandValue() != null && !StateValues.Duplicate.equals(state)) { | |
| 80 | + api.command(issueId, Command.stateCommand(state)); | |
| 81 | + issue = api.getIssue(issueId); | |
| 82 | + Assert.assertNotNull(issue); | |
| 83 | + Assert.assertEquals(state.getCommandValue(), issue.getFieldValue(Fields.state)); | |
| 84 | + } | |
| 85 | + } | |
| 86 | + } | |
| 87 | + | |
| 88 | + @Test | |
| 101 | 89 | public void createIssue() throws IOException, AuthenticationException, JAXBException |
| 102 | 90 | { |
| 103 | 91 | YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); |
| ... | ... | @@ -107,6 +95,27 @@ public class YoutrackAPITest { |
| 107 | 95 | } |
| 108 | 96 | |
| 109 | 97 | @Test |
| 98 | + public void getAssignees() throws IOException, AuthenticationException, JAXBException | |
| 99 | + { | |
| 100 | + YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); | |
| 101 | + final AssigneeList assigneeList = api.getAssignees("TST"); | |
| 102 | + Assert.assertNotNull(assigneeList); | |
| 103 | + Assert.assertEquals(2, assigneeList.getAssignees().getAssignees().size()); | |
| 104 | + } | |
| 105 | + | |
| 106 | + @Test | |
| 107 | + public void getIndividualAssignees() throws IOException, JAXBException | |
| 108 | + { | |
| 109 | + final YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); | |
| 110 | + final List<User> assignees = api.getIndividualAssignees("TST"); | |
| 111 | + Assert.assertNotNull(assignees); | |
| 112 | + Assert.assertEquals(2, assignees.size()); | |
| 113 | + for (User user : assignees) { | |
| 114 | + Assert.assertTrue("bernard".equals(user.getLogin()) || "root".equals(user.getLogin())); | |
| 115 | + } | |
| 116 | + } | |
| 117 | + | |
| 118 | + @Test | |
| 110 | 119 | public void getIssue() throws IOException, AuthenticationException, JAXBException |
| 111 | 120 | { |
| 112 | 121 | YoutrackAPI api = new YoutrackAPI(getServiceLocation(), getUsername(), getPassword()); | ... | ... |
Please
register
or
login
to post a comment