View Javadoc

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  }