Skip to content

java v2: client wrapper instrumentation #7638

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.clientcore.core.http.models.HttpResponseException;
import io.clientcore.core.http.models.RequestContext;
import io.clientcore.core.http.models.Response;
import io.clientcore.core.instrumentation.Instrumentation;

/**
* Initializes a new instance of the synchronous ApiKeyClient type.
Expand All @@ -18,14 +19,18 @@ public final class ApiKeyClient {
@Metadata(properties = { MetadataProperties.GENERATED })
private final ApiKeyClientImpl serviceClient;

private final Instrumentation instrumentation;

/**
* Initializes an instance of ApiKeyClient class.
*
* @param serviceClient the service client implementation.
* @param instrumentation the instrumentation instance.
*/
@Metadata(properties = { MetadataProperties.GENERATED })
ApiKeyClient(ApiKeyClientImpl serviceClient) {
ApiKeyClient(ApiKeyClientImpl serviceClient, Instrumentation instrumentation) {
this.serviceClient = serviceClient;
this.instrumentation = instrumentation;
}

/**
Expand All @@ -40,7 +45,8 @@ public final class ApiKeyClient {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> validWithResponse(RequestContext requestContext) {
return this.serviceClient.validWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("ApiKeyClient.valid", requestContext,
updatedContext -> this.serviceClient.validWithResponse(updatedContext));
}

/**
Expand All @@ -67,7 +73,8 @@ public void valid() {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> invalidWithResponse(RequestContext requestContext) {
return this.serviceClient.invalidWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("ApiKeyClient.invalid", requestContext,
updatedContext -> this.serviceClient.invalidWithResponse(updatedContext));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,18 @@
import io.clientcore.core.http.pipeline.HttpRetryOptions;
import io.clientcore.core.http.pipeline.HttpRetryPolicy;
import io.clientcore.core.http.pipeline.KeyCredentialPolicy;
import io.clientcore.core.instrumentation.Instrumentation;
import io.clientcore.core.instrumentation.SdkInstrumentationOptions;
import io.clientcore.core.traits.ConfigurationTrait;
import io.clientcore.core.traits.EndpointTrait;
import io.clientcore.core.traits.HttpTrait;
import io.clientcore.core.traits.KeyCredentialTrait;
import io.clientcore.core.traits.ProxyTrait;
import io.clientcore.core.utils.CoreUtils;
import io.clientcore.core.utils.configuration.Configuration;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
Expand All @@ -40,6 +44,9 @@ public final class ApiKeyClientBuilder
@Metadata(properties = { MetadataProperties.GENERATED })
private static final String SDK_VERSION = "version";

@Metadata(properties = { MetadataProperties.GENERATED })
private static final Map<String, String> PROPERTIES = CoreUtils.getProperties("authentication-apikey.properties");

@Metadata(properties = { MetadataProperties.GENERATED })
private final List<HttpPipelinePolicy> pipelinePolicies;

Expand Down Expand Up @@ -236,6 +243,15 @@ private HttpPipeline createHttpPipeline() {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
public ApiKeyClient buildClient() {
return new ApiKeyClient(buildInnerClient());
HttpInstrumentationOptions localHttpInstrumentationOptions = this.httpInstrumentationOptions == null
? new HttpInstrumentationOptions()
: this.httpInstrumentationOptions;
SdkInstrumentationOptions sdkInstrumentationOptions
= new SdkInstrumentationOptions(PROPERTIES.getOrDefault(SDK_NAME, "UnknownName"))
.setSdkVersion(PROPERTIES.get(SDK_VERSION))
.setEndpoint(this.endpoint != null ? this.endpoint : "http://localhost:3000");
Instrumentation instrumentation
= Instrumentation.create(localHttpInstrumentationOptions, sdkInstrumentationOptions);
Comment on lines +246 to +254
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we consider moving this to buildInnerClient method? This will help when we introduce a buildAsyncClient in the future and also avoid having to duplicate the endpoint value in both places.

return new ApiKeyClient(buildInnerClient(), instrumentation);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.clientcore.core.http.models.HttpResponseException;
import io.clientcore.core.http.models.RequestContext;
import io.clientcore.core.http.models.Response;
import io.clientcore.core.instrumentation.Instrumentation;

/**
* Initializes a new instance of the synchronous CustomClient type.
Expand All @@ -18,14 +19,18 @@ public final class CustomClient {
@Metadata(properties = { MetadataProperties.GENERATED })
private final CustomClientImpl serviceClient;

private final Instrumentation instrumentation;

/**
* Initializes an instance of CustomClient class.
*
* @param serviceClient the service client implementation.
* @param instrumentation the instrumentation instance.
*/
@Metadata(properties = { MetadataProperties.GENERATED })
CustomClient(CustomClientImpl serviceClient) {
CustomClient(CustomClientImpl serviceClient, Instrumentation instrumentation) {
this.serviceClient = serviceClient;
this.instrumentation = instrumentation;
}

/**
Expand All @@ -40,7 +45,8 @@ public final class CustomClient {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> validWithResponse(RequestContext requestContext) {
return this.serviceClient.validWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("CustomClient.valid", requestContext,
updatedContext -> this.serviceClient.validWithResponse(updatedContext));
}

/**
Expand All @@ -67,7 +73,8 @@ public void valid() {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> invalidWithResponse(RequestContext requestContext) {
return this.serviceClient.invalidWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("CustomClient.invalid", requestContext,
updatedContext -> this.serviceClient.invalidWithResponse(updatedContext));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,18 @@
import io.clientcore.core.http.pipeline.HttpRetryOptions;
import io.clientcore.core.http.pipeline.HttpRetryPolicy;
import io.clientcore.core.http.pipeline.KeyCredentialPolicy;
import io.clientcore.core.instrumentation.Instrumentation;
import io.clientcore.core.instrumentation.SdkInstrumentationOptions;
import io.clientcore.core.traits.ConfigurationTrait;
import io.clientcore.core.traits.EndpointTrait;
import io.clientcore.core.traits.HttpTrait;
import io.clientcore.core.traits.KeyCredentialTrait;
import io.clientcore.core.traits.ProxyTrait;
import io.clientcore.core.utils.CoreUtils;
import io.clientcore.core.utils.configuration.Configuration;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
Expand All @@ -40,6 +44,10 @@ public final class CustomClientBuilder
@Metadata(properties = { MetadataProperties.GENERATED })
private static final String SDK_VERSION = "version";

@Metadata(properties = { MetadataProperties.GENERATED })
private static final Map<String, String> PROPERTIES
= CoreUtils.getProperties("authentication-http-custom.properties");

@Metadata(properties = { MetadataProperties.GENERATED })
private final List<HttpPipelinePolicy> pipelinePolicies;

Expand Down Expand Up @@ -236,6 +244,15 @@ private HttpPipeline createHttpPipeline() {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
public CustomClient buildClient() {
return new CustomClient(buildInnerClient());
HttpInstrumentationOptions localHttpInstrumentationOptions = this.httpInstrumentationOptions == null
? new HttpInstrumentationOptions()
: this.httpInstrumentationOptions;
SdkInstrumentationOptions sdkInstrumentationOptions
= new SdkInstrumentationOptions(PROPERTIES.getOrDefault(SDK_NAME, "UnknownName"))
.setSdkVersion(PROPERTIES.get(SDK_VERSION))
.setEndpoint(this.endpoint != null ? this.endpoint : "http://localhost:3000");
Instrumentation instrumentation
= Instrumentation.create(localHttpInstrumentationOptions, sdkInstrumentationOptions);
return new CustomClient(buildInnerClient(), instrumentation);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.clientcore.core.http.models.HttpResponseException;
import io.clientcore.core.http.models.RequestContext;
import io.clientcore.core.http.models.Response;
import io.clientcore.core.instrumentation.Instrumentation;

/**
* Initializes a new instance of the synchronous OAuth2Client type.
Expand All @@ -18,14 +19,18 @@ public final class OAuth2Client {
@Metadata(properties = { MetadataProperties.GENERATED })
private final OAuth2ClientImpl serviceClient;

private final Instrumentation instrumentation;

/**
* Initializes an instance of OAuth2Client class.
*
* @param serviceClient the service client implementation.
* @param instrumentation the instrumentation instance.
*/
@Metadata(properties = { MetadataProperties.GENERATED })
OAuth2Client(OAuth2ClientImpl serviceClient) {
OAuth2Client(OAuth2ClientImpl serviceClient, Instrumentation instrumentation) {
this.serviceClient = serviceClient;
this.instrumentation = instrumentation;
}

/**
Expand All @@ -40,7 +45,8 @@ public final class OAuth2Client {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> validWithResponse(RequestContext requestContext) {
return this.serviceClient.validWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("OAuth2Client.valid", requestContext,
updatedContext -> this.serviceClient.validWithResponse(updatedContext));
}

/**
Expand All @@ -67,7 +73,8 @@ public void valid() {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> invalidWithResponse(RequestContext requestContext) {
return this.serviceClient.invalidWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("OAuth2Client.invalid", requestContext,
updatedContext -> this.serviceClient.invalidWithResponse(updatedContext));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,18 @@
import io.clientcore.core.http.pipeline.HttpRetryOptions;
import io.clientcore.core.http.pipeline.HttpRetryPolicy;
import io.clientcore.core.http.pipeline.OAuthBearerTokenAuthenticationPolicy;
import io.clientcore.core.instrumentation.Instrumentation;
import io.clientcore.core.instrumentation.SdkInstrumentationOptions;
import io.clientcore.core.traits.ConfigurationTrait;
import io.clientcore.core.traits.EndpointTrait;
import io.clientcore.core.traits.HttpTrait;
import io.clientcore.core.traits.OAuthTokenCredentialTrait;
import io.clientcore.core.traits.ProxyTrait;
import io.clientcore.core.utils.CoreUtils;
import io.clientcore.core.utils.configuration.Configuration;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
Expand All @@ -44,6 +48,9 @@ public final class OAuth2ClientBuilder
@Metadata(properties = { MetadataProperties.GENERATED })
private static final String[] DEFAULT_SCOPES = new String[] { "https://security.microsoft.com/.default" };

@Metadata(properties = { MetadataProperties.GENERATED })
private static final Map<String, String> PROPERTIES = CoreUtils.getProperties("authentication-oauth2.properties");

@Metadata(properties = { MetadataProperties.GENERATED })
private final List<HttpPipelinePolicy> pipelinePolicies;

Expand Down Expand Up @@ -242,6 +249,15 @@ private HttpPipeline createHttpPipeline() {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
public OAuth2Client buildClient() {
return new OAuth2Client(buildInnerClient());
HttpInstrumentationOptions localHttpInstrumentationOptions = this.httpInstrumentationOptions == null
? new HttpInstrumentationOptions()
: this.httpInstrumentationOptions;
SdkInstrumentationOptions sdkInstrumentationOptions
= new SdkInstrumentationOptions(PROPERTIES.getOrDefault(SDK_NAME, "UnknownName"))
.setSdkVersion(PROPERTIES.get(SDK_VERSION))
.setEndpoint(this.endpoint != null ? this.endpoint : "http://localhost:3000");
Instrumentation instrumentation
= Instrumentation.create(localHttpInstrumentationOptions, sdkInstrumentationOptions);
return new OAuth2Client(buildInnerClient(), instrumentation);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.clientcore.core.http.models.HttpResponseException;
import io.clientcore.core.http.models.RequestContext;
import io.clientcore.core.http.models.Response;
import io.clientcore.core.instrumentation.Instrumentation;

/**
* Initializes a new instance of the synchronous UnionClient type.
Expand All @@ -18,14 +19,18 @@ public final class UnionClient {
@Metadata(properties = { MetadataProperties.GENERATED })
private final UnionClientImpl serviceClient;

private final Instrumentation instrumentation;

/**
* Initializes an instance of UnionClient class.
*
* @param serviceClient the service client implementation.
* @param instrumentation the instrumentation instance.
*/
@Metadata(properties = { MetadataProperties.GENERATED })
UnionClient(UnionClientImpl serviceClient) {
UnionClient(UnionClientImpl serviceClient, Instrumentation instrumentation) {
this.serviceClient = serviceClient;
this.instrumentation = instrumentation;
}

/**
Expand All @@ -40,7 +45,8 @@ public final class UnionClient {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> validKeyWithResponse(RequestContext requestContext) {
return this.serviceClient.validKeyWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("UnionClient.validKey", requestContext,
updatedContext -> this.serviceClient.validKeyWithResponse(updatedContext));
}

/**
Expand All @@ -67,7 +73,8 @@ public void validKey() {
@Metadata(properties = { MetadataProperties.GENERATED })
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> validTokenWithResponse(RequestContext requestContext) {
return this.serviceClient.validTokenWithResponse(requestContext);
return this.instrumentation.instrumentWithResponse("UnionClient.validToken", requestContext,
updatedContext -> this.serviceClient.validTokenWithResponse(updatedContext));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,19 @@
import io.clientcore.core.http.pipeline.HttpRetryPolicy;
import io.clientcore.core.http.pipeline.KeyCredentialPolicy;
import io.clientcore.core.http.pipeline.OAuthBearerTokenAuthenticationPolicy;
import io.clientcore.core.instrumentation.Instrumentation;
import io.clientcore.core.instrumentation.SdkInstrumentationOptions;
import io.clientcore.core.traits.ConfigurationTrait;
import io.clientcore.core.traits.EndpointTrait;
import io.clientcore.core.traits.HttpTrait;
import io.clientcore.core.traits.KeyCredentialTrait;
import io.clientcore.core.traits.OAuthTokenCredentialTrait;
import io.clientcore.core.traits.ProxyTrait;
import io.clientcore.core.utils.CoreUtils;
import io.clientcore.core.utils.configuration.Configuration;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
Expand All @@ -47,6 +51,9 @@ public final class UnionClientBuilder implements HttpTrait<UnionClientBuilder>,
@Metadata(properties = { MetadataProperties.GENERATED })
private static final String[] DEFAULT_SCOPES = new String[] { "https://security.microsoft.com/.default" };

@Metadata(properties = { MetadataProperties.GENERATED })
private static final Map<String, String> PROPERTIES = CoreUtils.getProperties("authentication-union.properties");

@Metadata(properties = { MetadataProperties.GENERATED })
private final List<HttpPipelinePolicy> pipelinePolicies;

Expand Down Expand Up @@ -264,6 +271,15 @@ private HttpPipeline createHttpPipeline() {
*/
@Metadata(properties = { MetadataProperties.GENERATED })
public UnionClient buildClient() {
return new UnionClient(buildInnerClient());
HttpInstrumentationOptions localHttpInstrumentationOptions = this.httpInstrumentationOptions == null
? new HttpInstrumentationOptions()
: this.httpInstrumentationOptions;
SdkInstrumentationOptions sdkInstrumentationOptions
= new SdkInstrumentationOptions(PROPERTIES.getOrDefault(SDK_NAME, "UnknownName"))
.setSdkVersion(PROPERTIES.get(SDK_VERSION))
.setEndpoint(this.endpoint != null ? this.endpoint : "http://localhost:3000");
Instrumentation instrumentation
= Instrumentation.create(localHttpInstrumentationOptions, sdkInstrumentationOptions);
return new UnionClient(buildInnerClient(), instrumentation);
}
}
Loading
Loading