1   package com.atlassian.seraph.service.rememberme;
2   
3   /**
4    * An implementation of {@link RememberMeToken} that should be suitable for most apps
5    *
6    * Have a look at the {@link #builder(String)} methods to see how you can costruct them easily enough
7    */
8   public class DefaultRememberMeToken implements RememberMeToken
9   {
10      private final Long id;
11      private final String randomString;
12      private final String userName;
13      private final long createdTime;
14  
15  
16      private DefaultRememberMeToken(final Long id, final String randomString, final String userName, final long createdTime)
17      {
18          this.id = id;
19          this.randomString = randomString;
20          this.userName = userName;
21          this.createdTime = createdTime;
22      }
23  
24      public Long getId()
25      {
26          return id;
27      }
28  
29      public String getRandomString()
30      {
31          return randomString;
32      }
33  
34      public String getUserName()
35      {
36          return userName;
37      }
38  
39      public long getCreatedTime()
40      {
41          return createdTime;
42      }
43  
44      public static Builder builder(final Long id, final String randomString)
45      {
46          return new Builder(id, randomString);
47      }
48  
49      public static Builder builder(final String randomString)
50      {
51          return new Builder(randomString);
52      }
53  
54      public static Builder builder(final RememberMeToken token)
55      {
56          return new Builder(token);
57      }
58  
59      public static class Builder
60      {
61  
62          private Long id;
63          private String randomString;
64          private String userName;
65          private long createdTime;
66  
67          public Builder(final RememberMeToken token)
68          {
69              this.id = token.getId();
70              this.randomString = token.getRandomString();
71              this.userName = token.getUserName();
72              this.createdTime = token.getCreatedTime();
73  
74          }
75  
76          public Builder(final Long id, final String randomString)
77          {
78              this.id = id;
79              this.randomString = randomString;
80          }
81  
82          public Builder(final String randomString)
83          {
84              this.randomString = randomString;
85          }
86  
87          public Builder setId(Long id)
88          {
89              this.id = id;
90              return this;
91          }
92  
93          public Builder setUserName(String userName)
94          {
95              this.userName = userName;
96              return this;
97          }
98  
99          public Builder setRandomString(String randomString)
100         {
101             this.randomString = randomString;
102             return this;
103         }
104 
105         public Builder setCreatedTime(long createdTime)
106         {
107             this.createdTime = createdTime;
108             return this;
109         }
110 
111         public RememberMeToken build()
112         {
113             return new DefaultRememberMeToken(id, randomString, userName, createdTime);
114         }
115     }
116 }