Skip to content

Commit b3ccee2

Browse files
sgramponeBeta Bot
authored andcommitted
Cherry pick branch 'genexuslabs:gamutils_eo' into beta
1 parent b8ea7eb commit b3ccee2

3 files changed

Lines changed: 30 additions & 0 deletions

File tree

gamutils/src/main/java/com/genexus/gam/GamUtilsEO.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public static String randomHexaBits(int bits) {
4343
return Random.hexaBits(bits);
4444
}
4545

46+
public static String randomUrlSafeCharacters(int length) { return Random.urlSafe(length); }
47+
4648
//**JWK**//
4749

4850
public static String generateKeyPair() {

gamutils/src/main/java/com/genexus/gam/utils/Random.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,19 @@ public static String alphanumeric(int length) {
3232
return sb.toString();
3333
}
3434

35+
public static String urlSafe(int length) {
36+
SecureRandom random = instanceRandom();
37+
if (random == null) {
38+
logger.error("randomurlSafeCharacters SecureRandom is null");
39+
return "";
40+
}
41+
String characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~";
42+
StringBuilder sb = new StringBuilder(length);
43+
for (int i = 0; i < length; i++)
44+
sb.append(characters.charAt(random.nextInt(characters.length())));
45+
return sb.toString();
46+
}
47+
3548
public static String numeric(int length) {
3649
SecureRandom random = instanceRandom();
3750
if (random == null) {

gamutils/src/test/java/com/genexus/gam/utils/test/RandomTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,21 @@ public void testRandomAlphanumeric() {
5656
Assert.assertEquals("l256 alphanumeric: ", l256, l256_string.length());
5757
}
5858

59+
@Test
60+
public void testRandomUrlSafeCharacters() {
61+
String l5_string = GamUtilsEO.randomUrlSafeCharacters(l5);
62+
Assert.assertEquals("l5 urlSafeCharacters: ", l5, l5_string.length());
63+
64+
String l10_string = GamUtilsEO.randomUrlSafeCharacters(l10);
65+
Assert.assertEquals("l10 urlSafeCharacters: ", l10, l10_string.length());
66+
67+
String l128_string = GamUtilsEO.randomUrlSafeCharacters(l128);
68+
Assert.assertEquals("l128 urlSafeCharacters: ", l128, l128_string.length());
69+
70+
String l256_string = GamUtilsEO.randomUrlSafeCharacters(l256);
71+
Assert.assertEquals("l256 urlSafeCharacters: ", l256, l256_string.length());
72+
}
73+
5974
@Test
6075
public void testHexaBits() {
6176
int[] lengths = new int[]{32, 64, 128, 256, 512, 1024};

0 commit comments

Comments
 (0)