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 expiryTime;
14      private final long createdTime;
15  
16  
17      private DefaultRememberMeToken(final Long id, final String randomString, final String userName, final long expiryTime, final long createdTime)
18      {
19          this.id = id;
20          this.randomString = randomString;
21          this.userName = userName;
22          this.expiryTime = expiryTime;
23          this.createdTime = createdTime;
24      }
25  
26      public Long getId()
27      {
28          return id;
29      }
30  
31      public String getRandomString()
32      {
33          return randomString;
34      }
35  
36      public String getUserName()
37      {
38          return userName;
39      }
40  
41      public long getExpiryTime()
42      {
43          return expiryTime;
44      }
45  
46      public long getCreatedTime()
47      {
48          return createdTime;
49      }
50  
51      public static Builder builder(final Long id, final String randomString)
52      {
53          return new Builder(id, randomString);
54      }
55  
56      public static Builder builder(final String randomString)
57      {
58          return new Builder(randomString);
59      }
60  
61      public static Builder builder(final RememberMeToken token)
62      {
63          return new Builder(token);
64      }
65  
66      public static class Builder
67      {
68  
69          private Long id;
70          private String randomString;
71          private String userName;
72          private long expiryTime;
73          private long createdTime;
74  
75          public Builder(final RememberMeToken token)
76          {
77              this.id = token.getId();
78              this.randomString = token.getRandomString();
79              this.userName = token.getUserName();
80              this.expiryTime = token.getExpiryTime();
81              this.createdTime = token.getCreatedTime();
82  
83          }
84  
85          public Builder(final Long id, final String randomString)
86          {
87              this.id = id;
88              this.randomString = randomString;
89          }
90  
91          public Builder(final String randomString)
92          {
93              this.randomString = randomString;
94          }
95  
96          public Builder setId(Long id)
97          {
98              this.id = id;
99              return this;
100         }
101 
102         public Builder setUserName(String userName)
103         {
104             this.userName = userName;
105             return this;
106         }
107 
108         public Builder setRandomString(String randomString)
109         {
110             this.randomString = randomString;
111             return this;
112         }
113 
114         public Builder setExpiryTime(long expiryTime)
115         {
116             this.expiryTime = expiryTime;
117             return this;
118         }
119 
120         public Builder setCreatedTime(long createdTime)
121         {
122             this.createdTime = createdTime;
123             return this;
124         }
125 
126         public RememberMeToken build()
127         {
128             return new DefaultRememberMeToken(id, randomString, userName, expiryTime, createdTime);
129         }
130     }
131 }