Skip to content

Commit

Permalink
refactor and enhance ClientCredentialsAccessTokenProvider and Microso…
Browse files Browse the repository at this point in the history
…ftClientBuilder to support on-prem and improve intermediate builder naming
  • Loading branch information
davidmoten committed Jun 24, 2024
1 parent 8a29bac commit 2ba2fd3
Show file tree
Hide file tree
Showing 8 changed files with 354 additions and 214 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.github.davidmoten.guavamini.Preconditions;
import com.github.davidmoten.microsoft.client.builder.Creator;
import com.github.davidmoten.microsoft.client.builder.MicrosoftClientBuilder;
import com.github.davidmoten.microsoft.client.builder.MicrosoftClientBuilder.BuilderWithBasicAuthentication;
import com.github.davidmoten.microsoft.client.builder.MicrosoftClientBuilder.UsernamePassword;
import com.github.davidmoten.odata.client.ClientException;
import com.github.davidmoten.odata.client.Context;
Expand All @@ -15,52 +16,52 @@
public final class Analytics {

//
// private static final String SERVICE_BASE_URL = "https://analytics.dev.azure.com/amsadevelopment/_odata/v3.0";
// private static final String SERVICE_BASE_URL = "https://analytics.dev.azure.com/amsadevelopment/_odata/v3.0";

private Analytics() {
// prevent instantiation
}

public static <T extends HasContext> Builder<T> service(Class<T> serviceClass) {
return new Builder<T>(serviceClass);
public static <T extends HasContext> BuilderWithServiceClass<T> service(Class<T> serviceClass) {
return new BuilderWithServiceClass<T>(serviceClass);
}

public static final class Builder<T extends HasContext> {
public static final class BuilderWithServiceClass<T extends HasContext> {

private final Class<T> serviceCls;
private Optional<String> baseUrl = Optional.empty();
private Optional<String> organization = Optional.empty();
private Optional<String> project = Optional.empty();
private Optional<String> version;

Builder(Class<T> serviceClass) {
BuilderWithServiceClass(Class<T> serviceClass) {
Preconditions.checkNotNull(serviceClass);
this.serviceCls = serviceClass;
}

public Builder3<T> baseUrl(String baseUrl) {
public BuilderWithBaseUrl<T> baseUrl(String baseUrl) {
Preconditions.checkNotNull(baseUrl);
this.baseUrl = Optional.of(baseUrl);
return new Builder3<T>(this);
return new BuilderWithBaseUrl<T>(this);
}

public Builder2<T> organization(String organization) {
public BuilderWithOrganization<T> organization(String organization) {
Preconditions.checkNotNull(organization);
this.organization = Optional.of(organization);
return new Builder2<T>(this);
return new BuilderWithOrganization<T>(this);
}

}

public static final class Builder2<T extends HasContext> {
public static final class BuilderWithOrganization<T extends HasContext> {

private final Builder<T> b;
private final BuilderWithServiceClass<T> b;

Builder2(Builder<T> b) {
BuilderWithOrganization(BuilderWithServiceClass<T> b) {
this.b = b;
}

public Builder2<T> project(String project) {
public BuilderWithOrganization<T> project(String project) {
Preconditions.checkNotNull(project);
b.project = Optional.of(project);
return this;
Expand All @@ -73,30 +74,30 @@ public Builder2<T> project(String project) {
* @param version version to use
* @return this
*/
public Builder3<T> version(String version) {
public BuilderWithBaseUrl<T> version(String version) {
Preconditions.checkNotNull(version);
b.version = Optional.of(version);
return new Builder3<T>(b);
return new BuilderWithBaseUrl<T>(b);
}

}

public static final class Builder3<T extends HasContext> {
public static final class BuilderWithBaseUrl<T extends HasContext> {

private static final String ANALYTICS_DEFAULT_VERSION = "v3.0";
private static final String ANALYTICS_BASE_URL = "https://analytics.dev.azure.com/";
private final Builder<T> b;
private final BuilderWithServiceClass<T> b;

public Builder3(Builder<T> b) {
public BuilderWithBaseUrl(BuilderWithServiceClass<T> b) {
this.b = b;
}

public MicrosoftClientBuilder.Builder5<T> basicAuthentication(
public BuilderWithBasicAuthentication<T> basicAuthentication(
Supplier<UsernamePassword> usernamePassword) {
return createBuilder().basicAuthentication(usernamePassword);
}

public MicrosoftClientBuilder.Builder5<T> basicAuthentication(String username,
public BuilderWithBasicAuthentication<T> basicAuthentication(String username,
String password) {
return basicAuthentication(() -> UsernamePassword.create(username, password));
}
Expand Down
Loading

0 comments on commit 2ba2fd3

Please sign in to comment.