1 package com.atlassian.plugins.rest.test;
2
3 import com.atlassian.plugins.rest.common.Link;
4 import com.atlassian.plugins.rest.common.expand.Expandable;
5 import com.atlassian.plugins.rest.common.expand.Expander;
6 import com.google.common.collect.ImmutableList;
7
8 import javax.ws.rs.core.UriInfo;
9
10 import static javax.xml.bind.annotation.XmlAccessType.*;
11
12 import javax.xml.bind.annotation.XmlAccessorType;
13 import javax.xml.bind.annotation.XmlAttribute;
14 import javax.xml.bind.annotation.XmlElement;
15 import javax.xml.bind.annotation.XmlRootElement;
16 import java.util.Collections;
17 import java.util.List;
18
19 @XmlRootElement
20 @XmlAccessorType(FIELD)
21 @Expander(DeveloperExpander.class)
22 public class Developer {
23 @XmlAttribute
24 private String expand;
25
26 @XmlElement
27 private Link link;
28
29 @XmlAttribute
30 private String userName;
31
32 @XmlElement
33 private String fullName;
34
35 @XmlElement
36 private String email;
37
38 @XmlElement
39 @Expandable("drinks")
40 private FavouriteDrinks favouriteDrinks;
41
42 public Link getLink() {
43 return link;
44 }
45
46 public void setLink(Link link) {
47 this.link = link;
48 }
49
50 public String getUserName() {
51 return userName;
52 }
53
54 public void setUserName(String userName) {
55 this.userName = userName;
56 }
57
58 public String getFullName() {
59 return fullName;
60 }
61
62 public void setFullName(String fullName) {
63 this.fullName = fullName;
64 }
65
66 public String getEmail() {
67 return email;
68 }
69
70 public void setEmail(String email) {
71 this.email = email;
72 }
73
74 public void setFavouriteDrinks(FavouriteDrinks favouriteDrinks) {
75 this.favouriteDrinks = favouriteDrinks;
76 }
77
78 public List<FavouriteDrink> getFavouriteDrinks() {
79 return favouriteDrinks.getFavouriteDrinks() != null ? ImmutableList.copyOf(favouriteDrinks.getFavouriteDrinks()) : Collections.<FavouriteDrink>emptyList();
80 }
81
82 public static Developer getDeveloper(String userName, UriInfo uriInfo) {
83 final Developer developer = new Developer();
84 developer.setLink(Link.self(uriInfo.getAbsolutePathBuilder().path("developer").path(userName).build()));
85 developer.setUserName(userName);
86 return developer;
87 }
88 }