Skip to content

Commit 3bc1b86

Browse files
authored
Merge pull request #21 from nfl/update-base64-encoder
update encoder to java utils
2 parents e924d44 + 1c70b81 commit 3bc1b86

21 files changed

+52
-32
lines changed

src/main/java/com/nfl/glitr/Glitr.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,10 @@ private GraphQLSchema buildSchema(Class queryRoot, Class mutationRoot) {
5959
}
6060

6161
GraphQLObjectType queryType = (GraphQLObjectType) typeRegistry.lookup(queryRoot);
62-
GraphQLSchema schema = GraphQLSchema.newSchema()
62+
return GraphQLSchema.newSchema()
6363
.query(queryType)
6464
.mutation(mutationType)
6565
.build(typeRegistry.getTypeDictionary());
66-
return schema;
6766
}
6867

6968
public GraphQLSchema reloadSchema(Class queryRoot, Class mutationRoot) {

src/main/java/com/nfl/glitr/relay/PageInfoWithTotal.java

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public class PageInfoWithTotal extends DefaultPageInfo {
77

88
private int total;
99

10+
1011
public PageInfoWithTotal(ConnectionCursor startCursor, ConnectionCursor endCursor,
1112
boolean hasPreviousPage, boolean hasNextPage) {
1213
super(startCursor, endCursor, hasPreviousPage, hasNextPage);

src/main/java/com/nfl/glitr/relay/RelayHelper.java

+22-23
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.nfl.glitr.relay;
22

3+
import com.nfl.glitr.exception.GlitrException;
34
import com.nfl.glitr.registry.TypeRegistry;
45
import graphql.relay.ConnectionCursor;
56
import graphql.relay.DefaultConnection;
@@ -12,13 +13,14 @@
1213
import graphql.schema.GraphQLObjectType;
1314
import graphql.schema.GraphQLOutputType;
1415

15-
import javax.xml.bind.DatatypeConverter;
16-
import java.io.UnsupportedEncodingException;
17-
import java.nio.charset.Charset;
16+
import java.nio.charset.StandardCharsets;
1817
import java.util.ArrayList;
1918
import java.util.List;
2019

2120
import static graphql.Assert.assertNotNull;
21+
import static java.lang.String.format;
22+
import static java.util.Base64.getDecoder;
23+
import static java.util.Base64.getEncoder;
2224

2325
public class RelayHelper {
2426

@@ -80,31 +82,28 @@ public static graphql.relay.Connection buildConnection(Iterable<?> col, int skip
8082
}
8183

8284
public static String createCursor(int offset) {
83-
return Base64.toBase64(DUMMY_CURSOR_PREFIX + Integer.toString(offset));
85+
byte[] bytes = (DUMMY_CURSOR_PREFIX + Integer.toString(offset)).getBytes(StandardCharsets.UTF_8);
86+
return getEncoder().encodeToString(bytes);
8487
}
8588

8689
public static int getOffsetFromCursor(String cursor, int defaultValue) {
87-
if (cursor == null) return defaultValue;
88-
String string = Base64.fromBase64(cursor);
89-
return Integer.parseInt(string.substring(DUMMY_CURSOR_PREFIX.length()));
90-
}
91-
92-
93-
static public class Base64 {
94-
95-
private Base64() {
90+
if (cursor == null) {
91+
return defaultValue;
9692
}
97-
98-
public static String toBase64(String string) {
99-
try {
100-
return DatatypeConverter.printBase64Binary(string.getBytes("utf-8"));
101-
} catch (UnsupportedEncodingException e) {
102-
throw new RuntimeException(e);
103-
}
93+
byte[] decode;
94+
try {
95+
decode = getDecoder().decode(cursor);
96+
} catch (IllegalArgumentException e) {
97+
throw new GlitrException(format("The cursor is not in base64 format : '%s'", cursor), e);
10498
}
105-
106-
public static String fromBase64(String string) {
107-
return new String(DatatypeConverter.parseBase64Binary(string), Charset.forName("UTF-8"));
99+
String string = new String(decode, StandardCharsets.UTF_8);
100+
if (DUMMY_CURSOR_PREFIX.length() > string.length()) {
101+
throw new GlitrException(format("The cursor prefix is missing from the cursor : '%s'", cursor));
102+
}
103+
try {
104+
return Integer.parseInt(string.substring(DUMMY_CURSOR_PREFIX.length()));
105+
} catch (NumberFormatException nfe) {
106+
throw new GlitrException(format("The cursor was not created by this class : '%s'", cursor), nfe);
108107
}
109108
}
110109
}

src/test/groovy/com/nfl/glitr/data/additionalScalars/CustomScalar.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.nfl.glitr.data.additionalScalars;
22

33
public class CustomScalar {
4+
45
private String value;
56

7+
68
public String getValue() {
79
return value;
810
}

src/test/groovy/com/nfl/glitr/data/additionalScalars/Root.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.nfl.glitr.data.additionalScalars;
22

33
public class Root {
4+
45
private String aString;
56
private CustomScalar scalar;
67

8+
79
public String getaString() {
810
return aString;
911
}

src/test/groovy/com/nfl/glitr/data/circularReference/AbstractRead.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.nfl.glitr.data.circularReference;
22

33
public abstract class AbstractRead {
4+
45
private int pageCount;
56
private Novel novel;
67

8+
79
public int getPageCount() {
810
return pageCount;
911
}

src/test/groovy/com/nfl/glitr/data/circularReference/Book.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.nfl.glitr.data.circularReference;
22

33
public class Book implements Readable {
4+
45
private String title;
56
private Book synopsis;
67

8+
79
public String getTitle() {
810
return title;
911
}

src/test/groovy/com/nfl/glitr/data/circularReference/CircularReferenceTest.groovy

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import spock.lang.Specification
1111

1212
class CircularReferenceTest extends Specification {
1313

14-
1514
def "Inspect AbstractClass that has a field circular reference"() {
1615
setup:
1716
Glitr glitr = GlitrBuilder.newGlitr().withQueryRoot(new QueryType()).build()

src/test/groovy/com/nfl/glitr/data/circularReference/Novel.java

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ public class Novel extends AbstractRead {
55
private String title;
66
private boolean reviewed;
77

8+
89
public String getTitle() {
910
return title;
1011
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.nfl.glitr.data.circularReference;
22

33
public interface Readable {
4+
45
Book getSynopsis();
56
}

src/test/groovy/com/nfl/glitr/data/mutation/Bitrate.java

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class Bitrate implements Playable {
1818
private LocalDate createdDate;
1919
private Instant modifiedDateTime;
2020

21+
2122
public Integer getKbps() {
2223
return kbps;
2324
}

src/test/groovy/com/nfl/glitr/data/mutation/VideoMutationIn.java

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class VideoMutationIn {
88
private String url;
99
private List<Bitrate> bitrateList;
1010

11+
1112
public List<Bitrate> getBitrateList() {
1213
return bitrateList;
1314
}

src/test/groovy/com/nfl/glitr/data/mutation/VideoMutationInput.java

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class VideoMutationInput extends RelayMutationType {
99

1010
private VideoMutationIn videoMutation;
1111

12+
1213
@GlitrDescription("Info meta data needed")
1314
@GlitrNonNull
1415
public VideoMutationIn getVideoMutation() {

src/test/groovy/com/nfl/glitr/data/mutation/VideoMutationOut.java

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public class VideoMutationOut {
77
private String url;
88
private String bitrateList;
99

10+
1011
public String getBitrateList() {
1112
return bitrateList;
1213
}

src/test/groovy/com/nfl/glitr/data/mutation/VideoMutationPayload.java

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public class VideoMutationPayload extends RelayMutationType {
66

77
private VideoMutationOut videoMutationPayload;
88

9+
910
public VideoMutationOut getVideoMutationPayload() {
1011
return videoMutationPayload;
1112
}

src/test/groovy/com/nfl/glitr/data/query/AbstractContent.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.nfl.glitr.data.query;
22

33
public abstract class AbstractContent extends AbstractTimestamped {
4+
45
private String title;
56

7+
68
public String getTitle() {
79
return title;
810
}

src/test/groovy/com/nfl/glitr/data/query/AbstractTimestamped.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.nfl.glitr.data.query;
22

33
public abstract class AbstractTimestamped {
4+
45
private Long lastModifiedDate;
56

7+
68
public Long getLastModifiedDate() {
79
return lastModifiedDate;
810
}

src/test/groovy/com/nfl/glitr/data/query/Identifiable.java

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44

55
@GlitrDescription("Identifiable interface needed for Relay")
66
public interface Identifiable {
7+
78
String getId();
89
}

src/test/groovy/com/nfl/glitr/data/query/IdentifiableAbstractClass.java

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44

55
@GlitrDescription("Identifiable interface needed for Relay")
66
public abstract class IdentifiableAbstractClass {
7+
78
public abstract String getId();
89
}

src/test/groovy/com/nfl/glitr/data/query/Video.java

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class Video extends AbstractContent implements Playable {
1010
private String url;
1111
private List<Bitrate> bitrateList;
1212

13+
1314
public List<Bitrate> getBitrateList() {
1415
return bitrateList;
1516
}

src/test/groovy/com/nfl/glitr/relay/RelayHelperTest.groovy

+6-6
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ class RelayHelperTest extends Specification {
4040
def items = []
4141
for (def i = 0; i < 10; i++) {
4242
if ((i + toSkip) < totalCount) {
43-
items.add(i + toSkip);
43+
items.add(i + toSkip)
4444
}
4545
}
4646

47-
def connection = RelayHelper.buildConnection(items, toSkip, totalCount);
47+
def connection = RelayHelper.buildConnection(items, toSkip, totalCount)
4848
assert (connection.pageInfo.hasNextPage == hasNext)
4949
assert (connection.pageInfo.hasPreviousPage == hasPrev)
5050
assert (connection.edges.size() == resultSize)
@@ -53,12 +53,12 @@ class RelayHelperTest extends Specification {
5353
assert pageInfoWithTotal.total == totalCount
5454

5555
if (resultSize > 0) {
56-
assert (connection.pageInfo.startCursor?.value == RelayHelper.Base64.toBase64("simple-cursor${toSkip}"))
57-
assert (connection.pageInfo.endCursor?.value == RelayHelper.Base64.toBase64("simple-cursor${toSkip + resultSize - 1}"))
56+
assert (connection.pageInfo.startCursor?.value == RelayHelper.createCursor(toSkip))
57+
assert (connection.pageInfo.endCursor?.value == RelayHelper.createCursor(toSkip + resultSize - 1))
5858
}
5959

6060
connection.edges.forEach({
61-
assert (it.cursor.value == RelayHelper.Base64.toBase64("simple-cursor${it.node}"));
62-
});
61+
assert (it.cursor.value == RelayHelper.createCursor(it.node))
62+
})
6363
}
6464
}

0 commit comments

Comments
 (0)