Skip to content

Commit 96336b4

Browse files
committed
refactors RoleConstants to enum Role. fixes #19
1 parent 6f6554e commit 96336b4

File tree

8 files changed

+58
-93
lines changed

8 files changed

+58
-93
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ a connection metadata string:
121121

122122
<pre>
123123
import com.opentok.api.OpenTokSDK;
124-
import com.opentok.api.constants.RoleConstants;
124+
import com.opentok.api.constants.Role;
125125

126126
class Test {
127127
public static void main(String argv[]) throws OpenTokException {

sample/Sample.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import com.opentok.api.OpenTok;
22
import com.opentok.api.Session;
3+
import com.opentok.api.constants.Role;
34
import com.opentok.api.constants.SessionProperties;
4-
import com.opentok.api.constants.RoleConstants;
55
import com.opentok.exception.OpenTokException;
66

77
class Sample {
@@ -26,16 +26,16 @@ public static void main(String argv[]) throws OpenTokException {
2626
System.out.println(s);
2727

2828
// Generate a subscriber token
29-
System.out.println(sessionId.generateToken(RoleConstants.SUBSCRIBER));
29+
System.out.println(sessionId.generateToken(Role.SUBSCRIBER));
3030
System.out.println(s);
3131

3232
// Generate a moderator token
33-
System.out.println(sessionId.generateToken(RoleConstants.MODERATOR));
33+
System.out.println(sessionId.generateToken(Role.MODERATOR));
3434

3535
// Generate a subscriber token that has connection data....
3636

37-
// Use the RoleConstants value appropriate for the client.
38-
String role = RoleConstants.SUBSCRIBER;
37+
// Use the Role value appropriate for the client.
38+
String role = Role.SUBSCRIBER;
3939
// Replace with meaningful metadata for the client.
4040
String connectionData = "username=Bob,userLevel=4";
4141
String token = sessionId.generateToken(role, 0, connectionData);

src/main/java/com/opentok/api/OpenTok.java

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,18 @@
1111
package com.opentok.api;
1212

1313
import java.io.StringReader;
14-
import java.io.UnsupportedEncodingException;
1514
import java.util.Collection;
16-
import java.util.HashMap;
17-
import java.util.List;
1815
import java.util.Map;
1916

20-
import javax.xml.bind.DatatypeConverter;
2117
import javax.xml.xpath.XPath;
2218
import javax.xml.xpath.XPathExpressionException;
2319
import javax.xml.xpath.XPathFactory;
2420

2521
import com.opentok.api.constants.TokenOptions;
26-
import org.codehaus.jackson.JsonNode;
27-
import org.codehaus.jackson.map.ObjectMapper;
28-
import org.codehaus.jackson.type.TypeReference;
2922

30-
import com.opentok.api.constants.RoleConstants;
3123
import com.opentok.api.constants.SessionProperties;
3224
import com.opentok.exception.OpenTokException;
3325
import com.opentok.exception.OpenTokInvalidArgumentException;
34-
import com.opentok.exception.OpenTokRequestException;
35-
import com.opentok.exception.OpenTokSessionNotFoundException;
3626
import org.xml.sax.InputSource;
3727

3828
/**
@@ -98,7 +88,7 @@ public OpenTok(int apiKey, String apiSecret, String apiUrl) {
9888
* a connection metadata string:
9989
* <p>
10090
* <pre>
101-
* import com.opentok.api.constants.RoleConstants;
91+
* import com.opentok.api.constants.Role;
10292
*
10393
* class Test {
10494
* public static void main(String argv[]) throws OpenTokException {
@@ -112,11 +102,11 @@ public OpenTok(int apiKey, String apiSecret, String apiUrl) {
112102
* // Replace with meaningful metadata for the connection.
113103
* String connectionMetadata = "username=Bob,userLevel=4";
114104
*
115-
* // Use the RoleConstants value appropriate for the user.
116-
* String role = RoleConstants.SUBSCRIBER;
105+
* // Use the Role value appropriate for the user.
106+
* String role = Role.SUBSCRIBER;
117107
*
118108
* // Generate a token.
119-
* String token = sdk.generateToken(sessionId, RoleConstants.PUBLISHER, null, connectionMetadata);
109+
* String token = sdk.generateToken(sessionId, Role.PUBLISHER, null, connectionMetadata);
120110
* System.out.println(token);
121111
* }
122112
* }
@@ -128,7 +118,7 @@ public OpenTok(int apiKey, String apiSecret, String apiUrl) {
128118
* @param sessionId The session ID corresponding to the session to which the user will connect.
129119
*
130120
* @param role Each role defines a set of permissions granted to the token.
131-
* Valid values are defined in the RoleConstants class:
121+
* Valid values are defined in the Role class:
132122
*
133123
* * `SUBSCRIBER` &mdash; A subscriber can only subscribe to streams.</li>
134124
*

src/main/java/com/opentok/api/Session.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.security.SignatureException;
88
import java.util.Random;
99

10+
import com.opentok.api.constants.Role;
1011
import com.opentok.util.Crypto;
1112
import org.apache.commons.codec.binary.Base64;
1213

@@ -66,7 +67,7 @@ public String generateToken() throws OpenTokException {
6667
* that user must pass an authentication token along with the API key.
6768
*
6869
* @param role Each role defines a set of permissions granted to the token.
69-
* Valid values are defined in the RoleConstants class:
70+
* Valid values are defined in the Role class:
7071
*
7172
* * `SUBSCRIBER` &mdash; A subscriber can only subscribe to streams.</li>
7273
*
@@ -99,7 +100,7 @@ public String generateToken(TokenOptions tokenOptions) throws OpenTokException {
99100
throw new OpenTokInvalidArgumentException("Token options cannot be null");
100101
}
101102

102-
String role = tokenOptions.getRole();
103+
Role role = tokenOptions.getRole();
103104
double expireTime = tokenOptions.getExpireTime(); // will be 0 if nothing was explicitly set
104105
String data = tokenOptions.getData(); // will be null if nothing was explicitly set
105106
Long create_time = new Long(System.currentTimeMillis() / 1000).longValue();
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*!
2+
* OpenTok Java Library
3+
* http://www.tokbox.com/
4+
*
5+
* Copyright 2010, TokBox, Inc.
6+
*/
7+
8+
package com.opentok.api.constants;
9+
/**
10+
* Defines values for the role parameter of the <code>OpenTokSDK.generateToken()</code> method.
11+
*
12+
* @see <a href="../OpenTokSDK.html#generateToken(java.lang.String, java.lang.String)">OpenTokSDK.generateTokentoken(String, String)</a>
13+
* @see <a href="../OpenTokSDK.html#generateToken(java.lang.String, java.lang.String, java.lang.Long)">OpenTokSDK.generateTokentoken(String, String, Long)</a>
14+
* @see <a href="../OpenTokSDK.html#generateTokentoken(java.lang.String, java.lang.String, java.lang.Long, java.lang.String)">OpenTokSDK.generateTokentoken(String, String, Long, String)</a>
15+
*/
16+
public enum Role {
17+
SUBSCRIBER,
18+
PUBLISHER,
19+
MODERATOR;
20+
21+
@Override
22+
public String toString() {
23+
return super.toString().toLowerCase();
24+
}
25+
}

src/main/java/com/opentok/api/constants/RoleConstants.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/main/java/com/opentok/api/constants/TokenOptions.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
*/
88
public class TokenOptions {
99

10-
private String role;
10+
private Role role;
1111
private double expireTime;
1212
private String data;
1313

1414
private TokenOptions(Builder builder) {
15-
this.role = builder.role != null ? builder.role : "publisher";
15+
this.role = builder.role != null ? builder.role : Role.PUBLISHER;
1616

1717
// default value calculated at token generation time
1818
this.expireTime = builder.expireTime;
@@ -21,7 +21,7 @@ private TokenOptions(Builder builder) {
2121
this.data = builder.data;
2222
}
2323

24-
public String getRole() {
24+
public Role getRole() {
2525
return role;
2626
}
2727

@@ -34,16 +34,12 @@ public String getData() {
3434
}
3535

3636
public static class Builder {
37-
private String role;
37+
private Role role;
3838
private double expireTime = 0;
3939
private String data;
4040

41-
public Builder role(String role) throws OpenTokInvalidArgumentException {
42-
if (role.equals("publisher") || role.equals("subscriber") || role.equals("moderator")) {
43-
this.role = role;
44-
} else {
45-
throw new OpenTokInvalidArgumentException("The given role is not valid: " + role);
46-
}
41+
public Builder role(Role role) {
42+
this.role = role;
4743
return this;
4844
}
4945

src/test/java/com/opentok/test/OpenTokTest.java

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,17 @@
1111
import java.security.NoSuchAlgorithmException;
1212
import java.security.SignatureException;
1313
import java.util.ArrayList;
14-
import java.util.Date;
15-
import java.util.HashMap;
1614
import java.util.Map;
17-
import java.util.Map.Entry;
1815

1916
import com.opentok.api.constants.TokenOptions;
20-
import com.opentok.test.Helpers;
2117

2218
import com.opentok.api.OpenTok;
2319
import com.opentok.api.Session;
2420
import com.opentok.api.constants.Version;
25-
import com.opentok.api.constants.RoleConstants;
21+
import com.opentok.api.constants.Role;
2622
import com.opentok.api.constants.SessionProperties;
2723
import com.opentok.exception.OpenTokException;
2824
import com.opentok.exception.OpenTokInvalidArgumentException;
29-
import com.opentok.exception.OpenTokRequestException;
3025

3126
import org.junit.Before;
3227
import org.junit.Rule;
@@ -191,20 +186,12 @@ public void testTokenRoles() throws
191186
String apiSecret = "1234567890abcdef1234567890abcdef1234567890";
192187
OpenTok opentok = new OpenTok(apiKey, apiSecret);
193188
String sessionId = "1_MX4xMjM0NTZ-flNhdCBNYXIgMTUgMTQ6NDI6MjMgUERUIDIwMTR-MC40OTAxMzAyNX4";
194-
String role = RoleConstants.SUBSCRIBER;
195-
Exception actualException = null;
189+
Role role = Role.SUBSCRIBER;
196190

197191
String defaultToken = opentok.generateToken(sessionId);
198192
String roleToken = opentok.generateToken(sessionId, new TokenOptions.Builder()
199193
.role(role)
200194
.build());
201-
try {
202-
String invalidToken = opentok.generateToken(sessionId, new TokenOptions.Builder()
203-
.role("NOT A VALID ROLE")
204-
.build());
205-
} catch(OpenTokException exception) {
206-
actualException = exception;
207-
}
208195

209196
assertNotNull(defaultToken);
210197
assertNotNull(roleToken);
@@ -214,8 +201,7 @@ public void testTokenRoles() throws
214201
Map<String, String> defaultTokenData = Helpers.decodeToken(defaultToken);
215202
assertEquals("publisher", defaultTokenData.get("role"));
216203
Map<String, String> roleTokenData = Helpers.decodeToken(roleToken);
217-
assertEquals(role, roleTokenData.get("role"));
218-
assertEquals(OpenTokInvalidArgumentException.class, actualException.getClass());
204+
assertEquals(role.toString(), roleTokenData.get("role"));
219205
}
220206

221207
@Test
@@ -271,7 +257,7 @@ public void testTokenExpireTime() throws
271257
// @Test
272258
// public void testRolePublisher() throws OpenTokException {
273259
// Session s= sdk.createSession();
274-
// String t = s.generateToken(RoleConstants.PUBLISHER);
260+
// String t = s.generateToken(Role.PUBLISHER);
275261
// TokBoxXML xml = get_token_info(t);
276262
//
277263
// String expectedRole = "publisher";
@@ -293,7 +279,7 @@ public void testTokenExpireTime() throws
293279
// @Test
294280
// public void testRoleSubscriber() throws OpenTokException {
295281
// Session s= sdk.createSession();
296-
// String t = s.generateToken(RoleConstants.SUBSCRIBER);
282+
// String t = s.generateToken(Role.SUBSCRIBER);
297283
// TokBoxXML xml = get_token_info(t);
298284
//
299285
// String expectedRole = "subscriber";
@@ -315,7 +301,7 @@ public void testTokenExpireTime() throws
315301
// @Test
316302
// public void testRoleModerator() throws OpenTokException {
317303
// Session s= sdk.createSession();
318-
// String t = s.generateToken(RoleConstants.MODERATOR);
304+
// String t = s.generateToken(Role.MODERATOR);
319305
// TokBoxXML xml = get_token_info(t);
320306
//
321307
// String expectedRole = "moderator";
@@ -394,7 +380,7 @@ public void testTokenExpireTime() throws
394380
// @Test
395381
// public void testTokenExpireTimeDefault() throws OpenTokException {
396382
// Session s= sdk.createSession();
397-
// String t = s.generateToken(RoleConstants.MODERATOR);
383+
// String t = s.generateToken(Role.MODERATOR);
398384
// TokBoxXML xml = get_token_info(t);
399385
// Assert.assertFalse("Java SDK tests: expire_time should not exist for default", xml.hasElement("expire_time", "token"));
400386
// }
@@ -404,7 +390,7 @@ public void testTokenExpireTime() throws
404390
// OpenTokException expected = null;
405391
// try {
406392
// Session s= sdk.createSession();
407-
// s.generateToken(RoleConstants.MODERATOR, new Date().getTime() / 1000 - 100);
393+
// s.generateToken(Role.MODERATOR, new Date().getTime() / 1000 - 100);
408394
// } catch (OpenTokException e) {
409395
// expected = e;
410396
// }
@@ -416,7 +402,7 @@ public void testTokenExpireTime() throws
416402
// long expireTime = new Date().getTime() / 1000;
417403
// String expected = "Token expired on " + expireTime;
418404
// Session s = sdk.createSession();
419-
// String t = s.generateToken(RoleConstants.MODERATOR, expireTime);
405+
// String t = s.generateToken(Role.MODERATOR, expireTime);
420406
// // Allow the token to expire.
421407
// try {
422408
// Thread.sleep(1000);
@@ -432,7 +418,7 @@ public void testTokenExpireTime() throws
432418
// public void testTokenExpireTimeNearFuture() throws OpenTokException {
433419
// long expected = new Date().getTime() / 1000 + 34200;
434420
// Session s= sdk.createSession();
435-
// String t = s.generateToken(RoleConstants.MODERATOR, expected);
421+
// String t = s.generateToken(Role.MODERATOR, expected);
436422
// TokBoxXML xml = get_token_info(t);
437423
// long actual = new Long(xml.getElementValue("expire_time", "token").trim());
438424
// Assert.assertEquals("Java SDK tests: expire time not set to expected time", expected, actual);
@@ -443,7 +429,7 @@ public void testTokenExpireTime() throws
443429
// OpenTokException expected = null;
444430
// try {
445431
// Session s= sdk.createSession();
446-
// s.generateToken(RoleConstants.MODERATOR, new Date().getTime() + 604800000);
432+
// s.generateToken(Role.MODERATOR, new Date().getTime() + 604800000);
447433
// } catch (OpenTokException e) {
448434
// expected = e;
449435
// }
@@ -455,7 +441,7 @@ public void testTokenExpireTime() throws
455441
// String expected = "test string";
456442
// String actual = null;
457443
// Session s= sdk.createSession();
458-
// String t = s.generateToken(RoleConstants.PUBLISHER, 0, expected);
444+
// String t = s.generateToken(Role.PUBLISHER, 0, expected);
459445
// TokBoxXML xml = get_token_info(t);
460446
// actual = xml.getElementValue("connection_data", "token").trim();
461447
// Assert.assertEquals("Java SDK tests: connection data not set", expected, actual);
@@ -482,7 +468,7 @@ public void testTokenExpireTime() throws
482468
// "oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo";
483469
// try {
484470
// Session s= sdk.createSession();
485-
// s.generateToken(RoleConstants.PUBLISHER, new Date().getTime(), test_string);
471+
// s.generateToken(Role.PUBLISHER, new Date().getTime(), test_string);
486472
// } catch (OpenTokException e) {
487473
// expected = e;
488474
// }

0 commit comments

Comments
 (0)