From 6be62c66e50e2279f3ea7b428a9594c2a0f15894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Sugawara=20=28=E2=88=A9=EF=BD=80-=C2=B4=29?= =?UTF-8?q?=E2=8A=83=E2=94=81=E7=82=8E=E7=82=8E=E7=82=8E=E7=82=8E=E7=82=8E?= Date: Fri, 13 Mar 2026 18:28:28 -0700 Subject: [PATCH] Review public classes and add unstable annotation as needed --- .../AwsCredentialsIdentityRecord.java | 3 ++ .../java/aws/events/AwsEventDeserializer.java | 33 ------------------- .../java/aws/events/AwsEventShapeEncoder.java | 3 ++ .../java/aws/events/AwsFrameDecoder.java | 3 ++ .../java/aws/events/AwsFrameEncoder.java | 3 ++ .../aws/events/EventHeaderSerializer.java | 2 +- .../AwsServiceBundlePluginFactory.java | 2 ++ .../bundler/AwsServiceBundler.java | 2 ++ .../auth/scheme/sigv4/SigV4EventSigner.java | 2 +- .../sdkv2/auth/SdkCredentialsResolver.java | 5 +-- .../aws/sdkv2/retries/SdkRetryStrategy.java | 5 +-- .../aws/sdkv2/shapes/AwsJsonProtocols.java | 2 ++ .../aws/sdkv2/shapes/DocumentConverter.java | 2 ++ .../java/mcp/server/McpServerProxy.java | 2 ++ .../java/mcp/server/ProtocolVersion.java | 3 ++ .../smithy/java/mcp/server/StdioProxy.java | 2 ++ .../smithy/java/mcp/server/ToolFilter.java | 3 ++ .../smithy/modelbundle/api/BundlePlugin.java | 2 ++ .../smithy/modelbundle/api/ModelBundles.java | 2 ++ .../modelbundle/api/PluginProviders.java | 2 ++ .../api/StaticAuthSchemeResolver.java | 2 ++ 21 files changed, 46 insertions(+), 39 deletions(-) delete mode 100644 aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventDeserializer.java diff --git a/aws/aws-auth-api/src/main/java/software/amazon/smithy/java/aws/auth/api/identity/AwsCredentialsIdentityRecord.java b/aws/aws-auth-api/src/main/java/software/amazon/smithy/java/aws/auth/api/identity/AwsCredentialsIdentityRecord.java index 9390269ec..a64b96232 100644 --- a/aws/aws-auth-api/src/main/java/software/amazon/smithy/java/aws/auth/api/identity/AwsCredentialsIdentityRecord.java +++ b/aws/aws-auth-api/src/main/java/software/amazon/smithy/java/aws/auth/api/identity/AwsCredentialsIdentityRecord.java @@ -7,6 +7,9 @@ import java.time.Instant; +/** + * Implementation of {@link AwsCredentialsIdentity}. + */ record AwsCredentialsIdentityRecord( String accessKeyId, String secretAccessKey, diff --git a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventDeserializer.java b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventDeserializer.java deleted file mode 100644 index 32afdbbf1..000000000 --- a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventDeserializer.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -package software.amazon.smithy.java.aws.events; - -import software.amazon.smithy.java.core.schema.Schema; -import software.amazon.smithy.java.core.serde.ShapeDeserializer; -import software.amazon.smithy.java.core.serde.SpecificShapeDeserializer; - -public final class AwsEventDeserializer extends SpecificShapeDeserializer { - - private final Schema expectedMember; - private final ShapeDeserializer memberDeserializer; - - public AwsEventDeserializer(Schema expectedMember, ShapeDeserializer memberDeserializer) { - this.expectedMember = expectedMember; - this.memberDeserializer = memberDeserializer; - } - - @Override - protected RuntimeException throwForInvalidState(Schema schema) { - throw new IllegalStateException( - "Expected to parse a structure for Json-encoded event stream data," - + " but found " + schema); - } - - @Override - public void readStruct(Schema schema, T state, StructMemberConsumer consumer) { - consumer.accept(state, expectedMember, memberDeserializer); - } -} diff --git a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventShapeEncoder.java b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventShapeEncoder.java index e9ac3c2c3..d54ae6b3d 100644 --- a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventShapeEncoder.java +++ b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsEventShapeEncoder.java @@ -32,6 +32,9 @@ import software.amazon.smithy.java.core.serde.event.EventStreamingException; import software.amazon.smithy.model.shapes.ShapeId; +/** + * A encoder for AWS events. + */ final class AwsEventShapeEncoder implements EventEncoder { private final InitialEventType initialEventType; diff --git a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameDecoder.java b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameDecoder.java index 72c0e16c3..2d4b55ef7 100644 --- a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameDecoder.java +++ b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameDecoder.java @@ -12,6 +12,9 @@ import software.amazon.smithy.java.core.serde.event.FrameDecoder; import software.amazon.smithy.java.core.serde.event.FrameProcessor; +/** + * Decodes bytes into {@link AwsEventFrame}. + */ public final class AwsFrameDecoder implements FrameDecoder { private final MessageDecoder decoder = new MessageDecoder(); private final FrameProcessor frameProcessor; diff --git a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameEncoder.java b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameEncoder.java index 1366c6ee0..ed229ce84 100644 --- a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameEncoder.java +++ b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/AwsFrameEncoder.java @@ -8,6 +8,9 @@ import java.nio.ByteBuffer; import software.amazon.smithy.java.core.serde.event.FrameEncoder; +/** + * Encodes a {@link AwsEventFrame} into bytes. + */ public final class AwsFrameEncoder implements FrameEncoder { @Override diff --git a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/EventHeaderSerializer.java b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/EventHeaderSerializer.java index a8799f589..2e6c7f912 100644 --- a/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/EventHeaderSerializer.java +++ b/aws/aws-event-streams/src/main/java/software/amazon/smithy/java/aws/events/EventHeaderSerializer.java @@ -11,7 +11,7 @@ import software.amazon.smithy.java.core.schema.SerializableStruct; import software.amazon.smithy.java.core.serde.SpecificShapeSerializer; -class EventHeaderSerializer extends SpecificShapeSerializer { +final class EventHeaderSerializer extends SpecificShapeSerializer { private final HeadersBuilder headers; public EventHeaderSerializer(HeadersBuilder headers) { diff --git a/aws/aws-service-bundle/src/main/java/software/amazon/smithy/java/aws/servicebundle/provider/AwsServiceBundlePluginFactory.java b/aws/aws-service-bundle/src/main/java/software/amazon/smithy/java/aws/servicebundle/provider/AwsServiceBundlePluginFactory.java index dce5113c8..62b1b09e8 100644 --- a/aws/aws-service-bundle/src/main/java/software/amazon/smithy/java/aws/servicebundle/provider/AwsServiceBundlePluginFactory.java +++ b/aws/aws-service-bundle/src/main/java/software/amazon/smithy/java/aws/servicebundle/provider/AwsServiceBundlePluginFactory.java @@ -9,7 +9,9 @@ import software.amazon.smithy.java.core.serde.document.Document; import software.amazon.smithy.modelbundle.api.BundlePlugin; import software.amazon.smithy.modelbundle.api.BundlePluginFactory; +import software.amazon.smithy.utils.SmithyUnstableApi; +@SmithyUnstableApi public final class AwsServiceBundlePluginFactory implements BundlePluginFactory { public AwsServiceBundlePluginFactory() { diff --git a/aws/aws-service-bundler/src/main/java/software/amazon/smithy/java/aws/servicebundle/bundler/AwsServiceBundler.java b/aws/aws-service-bundler/src/main/java/software/amazon/smithy/java/aws/servicebundle/bundler/AwsServiceBundler.java index 1bf7b6046..a03ba70bf 100644 --- a/aws/aws-service-bundler/src/main/java/software/amazon/smithy/java/aws/servicebundle/bundler/AwsServiceBundler.java +++ b/aws/aws-service-bundler/src/main/java/software/amazon/smithy/java/aws/servicebundle/bundler/AwsServiceBundler.java @@ -35,7 +35,9 @@ import software.amazon.smithy.modelbundle.api.ModelBundler; import software.amazon.smithy.modelbundle.api.model.AdditionalInput; import software.amazon.smithy.modelbundle.api.model.SmithyBundle; +import software.amazon.smithy.utils.SmithyUnstableApi; +@SmithyUnstableApi public final class AwsServiceBundler extends ModelBundler { private static final ShapeId ENDPOINT_TESTS = ShapeId.from("smithy.rules#endpointTests"); diff --git a/aws/aws-sigv4/src/main/java/software/amazon/smithy/java/aws/client/auth/scheme/sigv4/SigV4EventSigner.java b/aws/aws-sigv4/src/main/java/software/amazon/smithy/java/aws/client/auth/scheme/sigv4/SigV4EventSigner.java index e3088bcd1..19297e17a 100644 --- a/aws/aws-sigv4/src/main/java/software/amazon/smithy/java/aws/client/auth/scheme/sigv4/SigV4EventSigner.java +++ b/aws/aws-sigv4/src/main/java/software/amazon/smithy/java/aws/client/auth/scheme/sigv4/SigV4EventSigner.java @@ -35,7 +35,7 @@ *
  • {@code :chunk-signature} - The binary signature for this frame
  • * */ -class SigV4EventSigner implements FrameProcessor { +final class SigV4EventSigner implements FrameProcessor { private static final String ALGORITHM = "AWS4-HMAC-SHA256-PAYLOAD"; private static final String HMAC_SHA_256 = "HmacSHA256"; private static final String TERMINATOR = "aws4_request"; diff --git a/aws/sdkv2/aws-sdkv2-auth/src/main/java/software/amazon/smithy/java/aws/sdkv2/auth/SdkCredentialsResolver.java b/aws/sdkv2/aws-sdkv2-auth/src/main/java/software/amazon/smithy/java/aws/sdkv2/auth/SdkCredentialsResolver.java index 5a515ba8a..06166bc2a 100644 --- a/aws/sdkv2/aws-sdkv2-auth/src/main/java/software/amazon/smithy/java/aws/sdkv2/auth/SdkCredentialsResolver.java +++ b/aws/sdkv2/aws-sdkv2-auth/src/main/java/software/amazon/smithy/java/aws/sdkv2/auth/SdkCredentialsResolver.java @@ -5,6 +5,7 @@ package software.amazon.smithy.java.aws.sdkv2.auth; +import java.util.Objects; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.AwsSessionCredentials; import software.amazon.smithy.java.auth.api.identity.IdentityResult; @@ -12,7 +13,7 @@ import software.amazon.smithy.java.aws.auth.api.identity.AwsCredentialsResolver; import software.amazon.smithy.java.context.Context; -public class SdkCredentialsResolver implements AwsCredentialsResolver { +public final class SdkCredentialsResolver implements AwsCredentialsResolver { /** * The underlying SDK v2 credentials provider that will be used to resolve AWS credentials. @@ -26,7 +27,7 @@ public class SdkCredentialsResolver implements AwsCredentialsResolver { * Must not be null. */ public SdkCredentialsResolver(AwsCredentialsProvider sdkCredentialsProvider) { - this.sdkCredentialsProvider = sdkCredentialsProvider; + this.sdkCredentialsProvider = Objects.requireNonNull(sdkCredentialsProvider, "sdkCredentialsProvider"); } /** diff --git a/aws/sdkv2/aws-sdkv2-retries/src/main/java/software/amazon/smithy/java/aws/sdkv2/retries/SdkRetryStrategy.java b/aws/sdkv2/aws-sdkv2-retries/src/main/java/software/amazon/smithy/java/aws/sdkv2/retries/SdkRetryStrategy.java index fe5d21203..1b5a1c09e 100644 --- a/aws/sdkv2/aws-sdkv2-retries/src/main/java/software/amazon/smithy/java/aws/sdkv2/retries/SdkRetryStrategy.java +++ b/aws/sdkv2/aws-sdkv2-retries/src/main/java/software/amazon/smithy/java/aws/sdkv2/retries/SdkRetryStrategy.java @@ -6,6 +6,7 @@ package software.amazon.smithy.java.aws.sdkv2.retries; import java.time.Duration; +import java.util.Objects; import software.amazon.smithy.java.retries.api.AcquireInitialTokenRequest; import software.amazon.smithy.java.retries.api.AcquireInitialTokenResponse; import software.amazon.smithy.java.retries.api.RecordSuccessRequest; @@ -21,12 +22,12 @@ /** * A Smithy retry strategy that uses a retry strategy from the AWS SDK for Java V2. */ -public class SdkRetryStrategy implements RetryStrategy { +public final class SdkRetryStrategy implements RetryStrategy { private final software.amazon.awssdk.retries.api.RetryStrategy delegate; private SdkRetryStrategy(software.amazon.awssdk.retries.api.RetryStrategy delegate) { - this.delegate = delegate; + this.delegate = Objects.requireNonNull(delegate, "delegate"); } /** diff --git a/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/AwsJsonProtocols.java b/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/AwsJsonProtocols.java index cd5dc0c3d..8b63f0dd0 100644 --- a/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/AwsJsonProtocols.java +++ b/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/AwsJsonProtocols.java @@ -11,10 +11,12 @@ import software.amazon.smithy.java.core.serde.document.Document; import software.amazon.smithy.model.shapes.ShapeId; import software.amazon.smithy.utils.SmithyInternalApi; +import software.amazon.smithy.utils.SmithyUnstableApi; /** * Contains implementations of the built-in Smithy to/from Java SDK document protocol implementations. */ +@SmithyUnstableApi public enum AwsJsonProtocols implements DocumentConverter { /** * Converts AWS SDK documents using "aws.protocols#awsJson1_0". diff --git a/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/DocumentConverter.java b/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/DocumentConverter.java index 7404a5011..dec159943 100644 --- a/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/DocumentConverter.java +++ b/aws/sdkv2/aws-sdkv2-shapes/src/main/java/software/amazon/smithy/java/aws/sdkv2/shapes/DocumentConverter.java @@ -8,10 +8,12 @@ import java.util.Objects; import software.amazon.smithy.java.core.serde.document.Document; import software.amazon.smithy.model.shapes.ShapeId; +import software.amazon.smithy.utils.SmithyUnstableApi; /** * Provides protocol-specific conversions between Smithy documents and AWS SDK for Java V2 documents. */ +@SmithyUnstableApi public interface DocumentConverter { /** * Get a converter for the given protocol. diff --git a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/McpServerProxy.java b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/McpServerProxy.java index b120da7ad..12722c1e6 100644 --- a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/McpServerProxy.java +++ b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/McpServerProxy.java @@ -23,7 +23,9 @@ import software.amazon.smithy.java.mcp.model.PromptInfo; import software.amazon.smithy.java.mcp.model.ToolInfo; import software.amazon.smithy.model.shapes.ShapeType; +import software.amazon.smithy.utils.SmithyUnstableApi; +@SmithyUnstableApi public abstract class McpServerProxy { private static final InternalLogger LOG = InternalLogger.getLogger(McpServerProxy.class); diff --git a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ProtocolVersion.java b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ProtocolVersion.java index e682e62e8..b43d23d52 100644 --- a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ProtocolVersion.java +++ b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ProtocolVersion.java @@ -5,6 +5,9 @@ package software.amazon.smithy.java.mcp.server; +import software.amazon.smithy.utils.SmithyUnstableApi; + +@SmithyUnstableApi public abstract sealed class ProtocolVersion implements Comparable permits ProtocolVersion.UnknownVersion, ProtocolVersion.v2024_11_05, ProtocolVersion.v2025_03_26, ProtocolVersion.v2025_06_18 { diff --git a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/StdioProxy.java b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/StdioProxy.java index c67215c96..94d7388d2 100644 --- a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/StdioProxy.java +++ b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/StdioProxy.java @@ -25,7 +25,9 @@ import software.amazon.smithy.java.logging.InternalLogger; import software.amazon.smithy.java.mcp.model.JsonRpcRequest; import software.amazon.smithy.java.mcp.model.JsonRpcResponse; +import software.amazon.smithy.utils.SmithyUnstableApi; +@SmithyUnstableApi public final class StdioProxy extends McpServerProxy { private static final InternalLogger LOG = InternalLogger.getLogger(StdioProxy.class); private static final JsonCodec JSON_CODEC = JsonCodec.builder().build(); diff --git a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ToolFilter.java b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ToolFilter.java index a7393fd69..4e254952f 100644 --- a/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ToolFilter.java +++ b/mcp/mcp-server/src/main/java/software/amazon/smithy/java/mcp/server/ToolFilter.java @@ -5,6 +5,9 @@ package software.amazon.smithy.java.mcp.server; +import software.amazon.smithy.utils.SmithyUnstableApi; + +@SmithyUnstableApi public interface ToolFilter { boolean allowTool(String mcpServerName, String toolName); diff --git a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/BundlePlugin.java b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/BundlePlugin.java index 0c1d06146..c2d05492f 100644 --- a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/BundlePlugin.java +++ b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/BundlePlugin.java @@ -7,11 +7,13 @@ import software.amazon.smithy.java.client.core.Client; import software.amazon.smithy.java.client.core.RequestOverrideConfig; +import software.amazon.smithy.utils.SmithyUnstableApi; /** * A BundlePlugin applies the settings specified in a {@link software.amazon.smithy.modelbundle.api.model.SmithyBundle} * on a per-call basis. */ +@SmithyUnstableApi public interface BundlePlugin { /** * Applies the bundle-specific settings to a client call. diff --git a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/ModelBundles.java b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/ModelBundles.java index 09b809d4b..d781ea59e 100644 --- a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/ModelBundles.java +++ b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/ModelBundles.java @@ -19,7 +19,9 @@ import software.amazon.smithy.model.traits.StreamingTrait; import software.amazon.smithy.modelbundle.api.model.ModelBundleVersion; import software.amazon.smithy.modelbundle.api.model.SmithyBundle; +import software.amazon.smithy.utils.SmithyUnstableApi; +@SmithyUnstableApi public final class ModelBundles { private ModelBundles() {} diff --git a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/PluginProviders.java b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/PluginProviders.java index a7a2868a0..a53969c87 100644 --- a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/PluginProviders.java +++ b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/PluginProviders.java @@ -8,7 +8,9 @@ import java.util.HashMap; import java.util.Map; import software.amazon.smithy.java.core.serde.document.Document; +import software.amazon.smithy.utils.SmithyUnstableApi; +@SmithyUnstableApi public final class PluginProviders { private final Map providers; diff --git a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/StaticAuthSchemeResolver.java b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/StaticAuthSchemeResolver.java index eb3ccccf1..83ec53abe 100644 --- a/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/StaticAuthSchemeResolver.java +++ b/model-bundle/model-bundle-api/src/main/java/software/amazon/smithy/modelbundle/api/StaticAuthSchemeResolver.java @@ -16,7 +16,9 @@ import software.amazon.smithy.java.client.core.auth.scheme.AuthSchemeResolverParams; import software.amazon.smithy.java.context.Context; import software.amazon.smithy.model.shapes.ShapeId; +import software.amazon.smithy.utils.SmithyUnstableApi; +@SmithyUnstableApi public final class StaticAuthSchemeResolver implements AuthSchemeResolver { static final StaticAuthSchemeResolver INSTANCE = new StaticAuthSchemeResolver(); static final ShapeId CONFIGURED_AUTH = ShapeId.from("modelbundle#configuredAuth");