Skip to content

Commit 846c4d0

Browse files
committed
change builder to force specification of authenticationProvider and make getAuthenticationProvider abstract in DefaultClientConfig
1 parent 68981a2 commit 846c4d0

File tree

4 files changed

+95
-45
lines changed

4 files changed

+95
-45
lines changed

src/main/java/com/microsoft/graph/core/DefaultClientConfig.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@
3737
*/
3838
public abstract class DefaultClientConfig implements IClientConfig {
3939

40-
/**
41-
* The authentication provider instance
42-
*/
43-
private IAuthenticationProvider authenticationProvider;
44-
4540
/**
4641
* The executors instance
4742
*/
@@ -72,8 +67,12 @@ public static IClientConfig createWithAuthenticationProvider(
7267
final IAuthenticationProvider authenticationProvider
7368
) {
7469
DefaultClientConfig config = new DefaultClientConfig() {
70+
71+
@Override
72+
public IAuthenticationProvider getAuthenticationProvider() {
73+
return authenticationProvider;
74+
}
7575
};
76-
config.authenticationProvider = authenticationProvider;
7776
config.getLogger()
7877
.logDebug(
7978
"Using provided auth provider "
@@ -90,10 +89,7 @@ public static IClientConfig createWithAuthenticationProvider(
9089
* @return the authentication provider
9190
*/
9291
@Override
93-
public IAuthenticationProvider getAuthenticationProvider() {
94-
return authenticationProvider;
95-
}
96-
92+
public abstract IAuthenticationProvider getAuthenticationProvider();
9793
/**
9894
* Gets the HTTP provider
9995
*

src/main/java/com/microsoft/graph/requests/extensions/GraphServiceClient.java

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,40 @@ public static IGraphServiceClient fromConfig(final IClientConfig config) {
7474
public static Builder builder() {
7575
return new Builder();
7676
}
77+
78+
public static final class Builder {
79+
80+
Builder() {
81+
// restrict instantiation
82+
}
7783

84+
/**
85+
* Sets the authentication provider
86+
*
87+
* @param authenticationProvider
88+
* the authentication provider
89+
* @return a new builder that allows specification of other aspects of the GraphServiceClient
90+
*/
91+
public Builder2 authenticationProvider(IAuthenticationProvider authenticationProvider) {
92+
checkNotNull(authenticationProvider, "authenticationProvider");
93+
return new Builder2(authenticationProvider);
94+
}
95+
}
96+
7897
/**
7998
* The builder for this GraphServiceClient
8099
*/
81-
public static final class Builder {
82-
100+
public static final class Builder2 {
101+
102+
private final IAuthenticationProvider authenticationProvider;
83103
private ISerializer serializer;
84104
private IHttpProvider httpProvider;
85-
private IAuthenticationProvider authenticationProvider;
86105
private IExecutors executors;
87106
private ILogger logger;
88107

89-
Builder() {
90-
// ensure instantiation only from static factory method
108+
109+
Builder2(IAuthenticationProvider authenticationProvider) {
110+
this.authenticationProvider = authenticationProvider;
91111
}
92112

93113
/**
@@ -97,7 +117,8 @@ public static final class Builder {
97117
* the serializer
98118
* @return the instance of this builder
99119
*/
100-
public Builder serializer(final ISerializer serializer) {
120+
public Builder2 serializer(final ISerializer serializer) {
121+
checkNotNull(serializer, "serializer");
101122
this.serializer = serializer;
102123
return this;
103124
}
@@ -109,31 +130,21 @@ public Builder serializer(final ISerializer serializer) {
109130
* the httpProvider
110131
* @return the instance of this builder
111132
*/
112-
public Builder httpProvider(final IHttpProvider httpProvider) {
133+
public Builder2 httpProvider(final IHttpProvider httpProvider) {
134+
checkNotNull(httpProvider, "httpProvider");
113135
this.httpProvider = httpProvider;
114136
return this;
115137
}
116138

117-
/**
118-
* Sets the authentication provider
119-
*
120-
* @param authenticationProvider
121-
* the authentication provider
122-
* @return the instance of this builder
123-
*/
124-
public Builder authenticationProvider(final IAuthenticationProvider authenticationProvider) {
125-
this.authenticationProvider = authenticationProvider;
126-
return this;
127-
}
128-
129139
/**
130140
* Sets the executors
131141
*
132142
* @param executors
133143
* the executors
134144
* @return the instance of this builder
135145
*/
136-
public Builder executors(final IExecutors executors) {
146+
public Builder2 executors(final IExecutors executors) {
147+
checkNotNull(executors, "executors");
137148
this.executors = executors;
138149
return this;
139150
}
@@ -145,7 +156,8 @@ public Builder executors(final IExecutors executors) {
145156
* the logger
146157
* @return the instance of this builder
147158
*/
148-
public Builder logger(final ILogger logger) {
159+
public Builder2 logger(final ILogger logger) {
160+
checkNotNull(logger, "logger");
149161
this.logger = logger;
150162
return this;
151163
}
@@ -162,11 +174,7 @@ public IGraphServiceClient buildClient() throws ClientException {
162174

163175
@Override
164176
public IAuthenticationProvider getAuthenticationProvider() {
165-
if (authenticationProvider != null) {
166-
return authenticationProvider;
167-
} else {
168-
return super.getAuthenticationProvider();
169-
}
177+
return authenticationProvider;
170178
}
171179

172180
@Override
@@ -209,4 +217,9 @@ public ISerializer getSerializer() {
209217
}
210218
}
211219

220+
private static void checkNotNull(Object o, String name) {
221+
if (o==null) {
222+
throw new NullPointerException(name + " cannot be null");
223+
}
224+
}
212225
}

src/test/java/com/microsoft/graph/core/DefaultClientConfigTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ public ILogger getLogger() {
4949
return logger;
5050
}
5151

52+
@Override
53+
public IAuthenticationProvider getAuthenticationProvider() {
54+
return new MockAuthenticationProvider();
55+
}
56+
5257
};
5358
config.getExecutors();
5459
config.getAuthenticationProvider();

src/test/java/com/microsoft/graph/requests/extensions/GraphServiceClientTest.java

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.junit.Test;
1111

1212
import com.microsoft.graph.authentication.IAuthenticationProvider;
13+
import com.microsoft.graph.authentication.MockAuthenticationProvider;
1314
import com.microsoft.graph.concurrency.DefaultExecutors;
1415
import com.microsoft.graph.concurrency.ICallback;
1516
import com.microsoft.graph.concurrency.IExecutors;
@@ -28,11 +29,19 @@
2829

2930
public class GraphServiceClientTest {
3031

32+
private static final IAuthenticationProvider auth = new MockAuthenticationProvider();
33+
3134
@Test
3235
public void testClientMethodsReturnStuff() {
36+
3337
IGraphServiceClient client = GraphServiceClient.fromConfig(new DefaultClientConfig() {
38+
39+
@Override
40+
public IAuthenticationProvider getAuthenticationProvider() {
41+
return auth;
42+
}
3443
});
35-
assertNull(client.getAuthenticationProvider());
44+
assertEquals(auth, client.getAuthenticationProvider());
3645
assertNotNull(client.getExecutors());
3746
assertNotNull(client.getHttpProvider());
3847
assertNotNull(client.getLogger());
@@ -43,9 +52,10 @@ public void testClientMethodsReturnStuff() {
4352
public void testOverrideOfDefaultLogger() {
4453
ILogger logger = createLogger();
4554
IGraphServiceClient client = GraphServiceClient.builder() //
55+
.authenticationProvider(auth) //
4656
.logger(logger) //
4757
.buildClient();
48-
assertNull(client.getAuthenticationProvider());
58+
assertEquals(auth, client.getAuthenticationProvider());
4959
assertNotNull(client.getExecutors());
5060
assertNotNull(client.getHttpProvider());
5161
assertNotNull(client.getLogger());
@@ -73,7 +83,8 @@ public void authenticateRequest(IHttpRequest request) {
7383
assertNotNull(client.getHttpProvider());
7484
assertNotNull(client.getLogger());
7585
assertNotNull(client.getSerializer());
76-
assertEquals(ap, ((DefaultHttpProvider) client.getHttpProvider()).getAuthenticationProvider());
86+
assertEquals(ap,
87+
((DefaultHttpProvider) client.getHttpProvider()).getAuthenticationProvider());
7788
}
7889

7990
@Test
@@ -97,16 +108,18 @@ public <Result> void performOnForeground(int progress, int progressMax,
97108
}
98109

99110
@Override
100-
public <Result> void performOnForeground(ClientException exception, ICallback<Result> callback) {
111+
public <Result> void performOnForeground(ClientException exception,
112+
ICallback<Result> callback) {
101113
// do nothing
102114
}
103115

104116
};
105117
IGraphServiceClient client = GraphServiceClient.builder() //
118+
.authenticationProvider(auth) //
106119
.executors(ex) //
107120
.buildClient();
108121
assertEquals(ex, client.getExecutors());
109-
assertNull(client.getAuthenticationProvider());
122+
assertEquals(auth, client.getAuthenticationProvider());
110123
assertNotNull(client.getHttpProvider());
111124
assertNotNull(client.getLogger());
112125
assertNotNull(client.getSerializer());
@@ -134,10 +147,11 @@ public <T> T deserializeObject(String inputString, Class<T> clazz) {
134147
}
135148
};
136149
IGraphServiceClient client = GraphServiceClient.builder() //
150+
.authenticationProvider(auth) //
137151
.serializer(serializer) //
138152
.buildClient();
139153
assertEquals(serializer, client.getSerializer());
140-
assertNull(client.getAuthenticationProvider());
154+
assertEquals(auth, client.getAuthenticationProvider());
141155
assertNotNull(client.getHttpProvider());
142156
assertNotNull(client.getLogger());
143157
assertNotNull(client.getExecutors());
@@ -166,23 +180,45 @@ public <Result, BodyType> Result send(IHttpRequest request, Class<Result> result
166180
}
167181

168182
@Override
169-
public <Result, BodyType, DeserializeType> Result send(IHttpRequest request, Class<Result> resultClass,
170-
BodyType serializable, IStatefulResponseHandler<Result, DeserializeType> handler)
183+
public <Result, BodyType, DeserializeType> Result send(IHttpRequest request,
184+
Class<Result> resultClass, BodyType serializable,
185+
IStatefulResponseHandler<Result, DeserializeType> handler)
171186
throws ClientException {
172187
return null;
173188
}
174189
};
175190
IGraphServiceClient client = GraphServiceClient //
176191
.builder() //
192+
.authenticationProvider(auth) //
177193
.httpProvider(hp) //
178194
.buildClient();
179195
assertEquals(hp, client.getHttpProvider());
180-
assertNull(client.getAuthenticationProvider());
196+
assertEquals(auth, client.getAuthenticationProvider());
181197
assertNotNull(client.getSerializer());
182198
assertNotNull(client.getLogger());
183199
assertNotNull(client.getExecutors());
184200
}
185201

202+
@Test(expected = NullPointerException.class)
203+
public void testAuthenticationProviderCannotBeNull() {
204+
GraphServiceClient.builder().authenticationProvider(null);
205+
}
206+
207+
@Test(expected = NullPointerException.class)
208+
public void testHttpProviderCannotBeNull() {
209+
GraphServiceClient.builder().authenticationProvider(auth).httpProvider(null);
210+
}
211+
212+
@Test(expected = NullPointerException.class)
213+
public void testExecutorsCannotBeNull() {
214+
GraphServiceClient.builder().authenticationProvider(auth).executors(null);
215+
}
216+
217+
@Test(expected = NullPointerException.class)
218+
public void testLoggerCannotBeNull() {
219+
GraphServiceClient.builder().authenticationProvider(auth).logger(null);
220+
}
221+
186222
private static ILogger createLogger() {
187223
return new ILogger() {
188224

0 commit comments

Comments
 (0)