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