From 74ff567044db25ad8e096fa503cd119289e08583 Mon Sep 17 00:00:00 2001 From: Alex Woods Date: Wed, 24 Jul 2024 12:19:45 -0700 Subject: [PATCH] improve documentation on event stream client operaitons --- .../lib/cbor_event_streams/auth.rb | 8 +- .../lib/cbor_event_streams/client.rb | 7 +- .../lib/cbor_event_streams/config.rb | 37 ++++---- .../lib/cbor_event_streams/endpoint.rb | 11 +-- .../lib/cbor_event_streams/event_stream.rb | 10 +-- .../plugins/global_config.rb | 2 +- .../lib/cbor_event_streams/types.rb | 12 --- .../sig/cbor_event_streams/auth.rbs | 3 +- .../sig/cbor_event_streams/config.rbs | 31 ++++--- .../sig/cbor_event_streams/endpoint.rbs | 5 +- .../white_label/lib/white_label/client.rb | 7 +- .../lib/white_label/event_stream.rb | 8 +- .../white_label/lib/white_label/types.rb | 8 -- .../codegen/generators/ClientGenerator.java | 6 +- .../generators/EventStreamGenerator.java | 8 +- .../docs/ShapeDocumentationGenerator.java | 88 +++++++++++++++++-- .../generators/types/EnumGenerator.java | 2 +- .../generators/types/IntEnumGenerator.java | 2 +- .../generators/types/StructureGenerator.java | 4 +- .../generators/types/UnionGenerator.java | 4 +- hearth/hearth.gemspec | 2 +- 21 files changed, 171 insertions(+), 94 deletions(-) diff --git a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/auth.rb b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/auth.rb index 464fc34a6..2bcd6df1a 100644 --- a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/auth.rb +++ b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/auth.rb @@ -9,7 +9,13 @@ module CborEventStreams module Auth - Params = Struct.new(:operation_name, keyword_init: true) + class Params + def initialize(operation_name: nil) + @operation_name = operation_name + end + + attr_accessor :operation_name + end SCHEMES = [ Hearth::AuthSchemes::Anonymous.new diff --git a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/client.rb b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/client.rb index 52f343985..35b457b49 100644 --- a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/client.rb +++ b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/client.rb @@ -66,10 +66,15 @@ def non_streaming_operation(params = {}, options = {}) # @param [Hash | Types::StartEventStreamInput] params # Request parameters for this operation. # See {Types::StartEventStreamInput#initialize} for available parameters. + # Do not set values for the event stream member +event+. + # Instead use the returned output to signal input events. # @param [Hash] options # Request option override of configuration. See {Config#initialize} for available options. # Some configurations cannot be overridden. - # @return [Hearth::Output] + # @option options [EventStream::StartEventStreamHandler] :event_stream_handler + # Event Stream Handler used to register handlers that will be called when events are received. + # @return [EventStream::StartEventStreamOutput] + # An open stream that supports sending (signaling) input events to the service. # @example Request syntax with placeholder values # resp = client.start_event_stream( # event: { diff --git a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/config.rb b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/config.rb index 13855f90d..a58919e69 100644 --- a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/config.rb +++ b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/config.rb @@ -86,25 +86,28 @@ module CborEventStreams # @return [Hearth::Stubs] # @!attribute validate_input # @return [Boolean] - Config = ::Struct.new( - :auth_resolver, - :auth_schemes, - :disable_host_prefix, - :endpoint, - :endpoint_resolver, - :http2_client, - :http_client, - :interceptors, - :logger, - :plugins, - :retry_strategy, - :stub_responses, - :stubs, - :validate_input, - keyword_init: true - ) do + class Config include Hearth::Configuration + MEMBERS = %i[ + auth_resolver + auth_schemes + disable_host_prefix + endpoint + endpoint_resolver + http2_client + http_client + interceptors + logger + plugins + retry_strategy + stub_responses + stubs + validate_input + ].freeze + + attr_accessor(*MEMBERS) + # Validates the configuration. def validate! Hearth::Validator.validate_responds_to!(auth_resolver, :resolve, context: 'config[:auth_resolver]') diff --git a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/endpoint.rb b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/endpoint.rb index 739d95a44..386cb0eaa 100644 --- a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/endpoint.rb +++ b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/endpoint.rb @@ -9,11 +9,12 @@ module CborEventStreams module Endpoint - Params = ::Struct.new( - :endpoint, - keyword_init: true - ) do - include Hearth::Structure + class Params + def initialize(endpoint: nil) + @endpoint = endpoint + end + + attr_accessor :endpoint end class Resolver diff --git a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/event_stream.rb b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/event_stream.rb index 7a7d1286a..4427c8119 100644 --- a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/event_stream.rb +++ b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/event_stream.rb @@ -68,8 +68,8 @@ def parse_event(type, message) end end - # Output class returned from {Client#start_event_stream} - # and allowing async sending (signaling) of input events. + # Output returned from {Client#start_event_stream} + # and used to signal (send) async input events. # @example Basic Usage # stream = client.simple_event(initial_request) # stream.signal_start_event_stream(event_params) # send an event @@ -78,7 +78,7 @@ class StartEventStreamOutput < Hearth::EventStream::AsyncOutput # Signal (send) an Events::SimpleEvent input event # @param [Hash | Types::SimpleEvent] params - # Request parameters for this operation. + # Request parameters for signaling this event. # See {Types::SimpleEvent#initialize} for available parameters. # @example Request syntax with placeholder values # stream.signal_simple_event( @@ -92,7 +92,7 @@ def signal_simple_event(params = {}) # Signal (send) an Events::NestedEvent input event # @param [Hash | Types::NestedEvent] params - # Request parameters for this operation. + # Request parameters for signaling this event. # See {Types::NestedEvent#initialize} for available parameters. # @example Request syntax with placeholder values # stream.signal_nested_event( @@ -110,7 +110,7 @@ def signal_nested_event(params = {}) # Signal (send) an Events::ExplicitPayloadEvent input event # @param [Hash | Types::ExplicitPayloadEvent] params - # Request parameters for this operation. + # Request parameters for signaling this event. # See {Types::ExplicitPayloadEvent#initialize} for available parameters. # @example Request syntax with placeholder values # stream.signal_explicit_payload_event( diff --git a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/plugins/global_config.rb b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/plugins/global_config.rb index 73056b6a2..0845eff79 100644 --- a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/plugins/global_config.rb +++ b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/plugins/global_config.rb @@ -17,7 +17,7 @@ class GlobalConfig def call(config) options = config.options ::Hearth.config.each do |key, value| - config[key] = value unless options.key?(key) + config.send("#{key}=", value) unless options.key?(key) end end diff --git a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/types.rb b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/types.rb index 9c7bb73b4..74ac84475 100644 --- a/codegen/projections/cbor_event_streams/lib/cbor_event_streams/types.rb +++ b/codegen/projections/cbor_event_streams/lib/cbor_event_streams/types.rb @@ -15,30 +15,18 @@ class SimpleEvent < Events def to_h { simple_event: super(__getobj__) } end - - def to_s - "#" - end end class NestedEvent < Events def to_h { nested_event: super(__getobj__) } end - - def to_s - "#" - end end class ExplicitPayloadEvent < Events def to_h { explicit_payload_event: super(__getobj__) } end - - def to_s - "#" - end end class Unknown < Events diff --git a/codegen/projections/cbor_event_streams/sig/cbor_event_streams/auth.rbs b/codegen/projections/cbor_event_streams/sig/cbor_event_streams/auth.rbs index 215916421..5d899ca30 100644 --- a/codegen/projections/cbor_event_streams/sig/cbor_event_streams/auth.rbs +++ b/codegen/projections/cbor_event_streams/sig/cbor_event_streams/auth.rbs @@ -9,7 +9,8 @@ module CborEventStreams module Auth - class Params < ::Struct[untyped] + class Params + def initialize: (?operation_name: ::Symbol?) -> void attr_accessor operation_name (): ::Symbol end diff --git a/codegen/projections/cbor_event_streams/sig/cbor_event_streams/config.rbs b/codegen/projections/cbor_event_streams/sig/cbor_event_streams/config.rbs index e70287fb8..d56e53923 100644 --- a/codegen/projections/cbor_event_streams/sig/cbor_event_streams/config.rbs +++ b/codegen/projections/cbor_event_streams/sig/cbor_event_streams/config.rbs @@ -1,21 +1,20 @@ module CborEventStreams - class Config < ::Struct[untyped] + class Config include Hearth::Configuration[instance] - - attr_accessor auth_resolver (): Hearth::_AuthResolver[Auth::Params] - attr_accessor auth_schemes (): Array[Hearth::AuthSchemes::Base] - attr_accessor disable_host_prefix (): bool - attr_accessor endpoint (): String - attr_accessor endpoint_resolver (): Hearth::_EndpointResolver[Endpoint::Params] - attr_accessor http2_client (): Hearth::HTTP2::Client - attr_accessor http_client (): Hearth::HTTP::Client - attr_accessor interceptors (): Hearth::InterceptorList[Config] - attr_accessor logger (): Logger - attr_accessor plugins (): Hearth::PluginList[Config] - attr_accessor retry_strategy (): Hearth::_RetryStrategy - attr_accessor stub_responses (): bool - attr_accessor stubs (): Hearth::Stubs - attr_accessor validate_input (): bool + attr_accessor auth_resolver (): Hearth::_AuthResolver[Auth::Params]? + attr_accessor auth_schemes (): Array[Hearth::AuthSchemes::Base]? + attr_accessor disable_host_prefix (): bool? + attr_accessor endpoint (): String? + attr_accessor endpoint_resolver (): Hearth::_EndpointResolver[Endpoint::Params]? + attr_accessor http2_client (): Hearth::HTTP2::Client? + attr_accessor http_client (): Hearth::HTTP::Client? + attr_accessor interceptors (): Hearth::InterceptorList[Config]? + attr_accessor logger (): Logger? + attr_accessor plugins (): Hearth::PluginList[Config]? + attr_accessor retry_strategy (): Hearth::_RetryStrategy? + attr_accessor stub_responses (): bool? + attr_accessor stubs (): Hearth::Stubs? + attr_accessor validate_input (): bool? def validate!: () -> void end diff --git a/codegen/projections/cbor_event_streams/sig/cbor_event_streams/endpoint.rbs b/codegen/projections/cbor_event_streams/sig/cbor_event_streams/endpoint.rbs index 26f7b2fcc..0ad59a007 100644 --- a/codegen/projections/cbor_event_streams/sig/cbor_event_streams/endpoint.rbs +++ b/codegen/projections/cbor_event_streams/sig/cbor_event_streams/endpoint.rbs @@ -9,8 +9,9 @@ module CborEventStreams module Endpoint - class Params < ::Struct[untyped] - attr_accessor endpoint: ::String + class Params + def initialize: (?endpoint: ::String?) -> void + attr_accessor endpoint (): ::String? end class Resolver diff --git a/codegen/projections/white_label/lib/white_label/client.rb b/codegen/projections/white_label/lib/white_label/client.rb index d00a5bd00..f86790f7a 100644 --- a/codegen/projections/white_label/lib/white_label/client.rb +++ b/codegen/projections/white_label/lib/white_label/client.rb @@ -1046,10 +1046,15 @@ def operation____paginators_test_with_bad_names(params = {}, options = {}) # @param [Hash | Types::StartEventStreamInput] params # Request parameters for this operation. # See {Types::StartEventStreamInput#initialize} for available parameters. + # Do not set values for the event stream member +event+. + # Instead use the returned output to signal input events. # @param [Hash] options # Request option override of configuration. See {Config#initialize} for available options. # Some configurations cannot be overridden. - # @return [Hearth::Output] + # @option options [EventStream::StartEventStreamHandler] :event_stream_handler + # Event Stream Handler used to register handlers that will be called when events are received. + # @return [EventStream::StartEventStreamOutput] + # An open stream that supports sending (signaling) input events to the service. # @example Request syntax with placeholder values # resp = client.start_event_stream( # event: { diff --git a/codegen/projections/white_label/lib/white_label/event_stream.rb b/codegen/projections/white_label/lib/white_label/event_stream.rb index 82aa3ac8d..f44cc77ca 100644 --- a/codegen/projections/white_label/lib/white_label/event_stream.rb +++ b/codegen/projections/white_label/lib/white_label/event_stream.rb @@ -54,8 +54,8 @@ def parse_event(type, message) end end - # Output class returned from {Client#start_event_stream} - # and allowing async sending (signaling) of input events. + # Output returned from {Client#start_event_stream} + # and used to signal (send) async input events. # @example Basic Usage # stream = client.event_a(initial_request) # stream.signal_start_event_stream(event_params) # send an event @@ -64,7 +64,7 @@ class StartEventStreamOutput < Hearth::EventStream::AsyncOutput # Signal (send) an Events::EventA input event # @param [Hash | Types::EventA] params - # Request parameters for this operation. + # Request parameters for signaling this event. # See {Types::EventA#initialize} for available parameters. # @example Request syntax with placeholder values # stream.signal_event_a( @@ -78,7 +78,7 @@ def signal_event_a(params = {}) # Signal (send) an Events::EventB input event # @param [Hash | Types::EventB] params - # Request parameters for this operation. + # Request parameters for signaling this event. # See {Types::EventB#initialize} for available parameters. # @example Request syntax with placeholder values # stream.signal_event_b( diff --git a/codegen/projections/white_label/lib/white_label/types.rb b/codegen/projections/white_label/lib/white_label/types.rb index cf4ad2270..1f5cf74d7 100644 --- a/codegen/projections/white_label/lib/white_label/types.rb +++ b/codegen/projections/white_label/lib/white_label/types.rb @@ -476,20 +476,12 @@ class EventA < Events def to_h { event_a: super(__getobj__) } end - - def to_s - "#" - end end class EventB < Events def to_h { event_b: super(__getobj__) } end - - def to_s - "#" - end end class Unknown < Events diff --git a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/ClientGenerator.java b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/ClientGenerator.java index 8b8fd16bd..cf6727827 100644 --- a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/ClientGenerator.java +++ b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/ClientGenerator.java @@ -83,7 +83,7 @@ public void render() { .writeRequireRelativeAdditionalFiles(additionalFiles) .openBlock("module $L", settings.getModule()) .call(() -> new ShapeDocumentationGenerator( - model, writer, symbolProvider, context.service()).render()) + context, writer, symbolProvider, context.service()).render()) .openBlock("class Client < $T", Hearth.CLIENT) .write("") .call(() -> renderClassRuntimePlugins(writer)) @@ -201,7 +201,7 @@ private void renderOperation(RubyCodeWriter writer, OperationShape operation) { writer .write("") - .call(() -> new ShapeDocumentationGenerator(model, writer, symbolProvider, operation).render()) + .call(() -> new ShapeDocumentationGenerator(context, writer, symbolProvider, operation).render()) .call(() -> { if (isStreaming) { writer @@ -250,7 +250,7 @@ private void renderEventStreamOperation( writer .write("") - .call(() -> new ShapeDocumentationGenerator(model, writer, symbolProvider, operation).render()) + .call(() -> new ShapeDocumentationGenerator(context, writer, symbolProvider, operation).render()) .openBlock("def $L(params = {}, options = {})", operationName) .write("middleware_opts = {}") .write("middleware_opts[:event_stream_handler] = options.delete(:event_stream_handler)") diff --git a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/EventStreamGenerator.java b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/EventStreamGenerator.java index 4128d43e6..ee1852d11 100644 --- a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/EventStreamGenerator.java +++ b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/EventStreamGenerator.java @@ -54,7 +54,7 @@ protected String getModule() { } public void render() { - // TODO: Render documentation and examples for these + // TODO: Render RBS For these write(writer -> { writer .preamble() @@ -192,8 +192,8 @@ private void renderEventStreamOutputDocs(RubyCodeWriter writer, OperationShape o String operationName = RubyFormatter.toSnakeCase(symbolProvider.toSymbol(operation).getName()); writer - .write("# Output class returned from {Client#$L}", operationName) - .write("# and allowing async sending (signaling) of input events.") + .write("# Output returned from {Client#$L}", operationName) + .write("# and used to signal (send) async input events.") .writeYardExample("Basic Usage", renderEventStreamOutputExample(operation)); } @@ -240,7 +240,7 @@ private void renderSignalMethodDocs(RubyCodeWriter writer, MemberShape memberSha String eventShapeName = symbolProvider.toSymbol(eventShape).getName(); String paramsDocString = """ - Request parameters for this operation. + Request parameters for signaling this event. See {Types::%s#initialize} for available parameters. """.formatted(eventShapeName); diff --git a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/docs/ShapeDocumentationGenerator.java b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/docs/ShapeDocumentationGenerator.java index 082f2638f..eb6a262de 100644 --- a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/docs/ShapeDocumentationGenerator.java +++ b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/docs/ShapeDocumentationGenerator.java @@ -37,10 +37,14 @@ import software.amazon.smithy.model.traits.RecommendedTrait; import software.amazon.smithy.model.traits.SensitiveTrait; import software.amazon.smithy.model.traits.SinceTrait; +import software.amazon.smithy.model.traits.StreamingTrait; import software.amazon.smithy.model.traits.TagsTrait; import software.amazon.smithy.model.traits.UnstableTrait; +import software.amazon.smithy.ruby.codegen.GenerationContext; import software.amazon.smithy.ruby.codegen.Hearth; import software.amazon.smithy.ruby.codegen.RubyCodeWriter; +import software.amazon.smithy.ruby.codegen.RubyFormatter; +import software.amazon.smithy.ruby.codegen.util.Streaming; import software.amazon.smithy.utils.SmithyInternalApi; /** @@ -49,19 +53,22 @@ @SmithyInternalApi public class ShapeDocumentationGenerator { private final Model model; + private final GenerationContext context; private final RubyCodeWriter writer; private final SymbolProvider symbolProvider; private final Shape shape; /** - * @param model model to generate from - * @param writer writer to write documentation to + * @param context generation context + * @param writer writer to write documentation to * @param symbolProvider symbol provider - * @param shape shape to generate documentation for + * @param shape shape to generate documentation for */ - public ShapeDocumentationGenerator(Model model, RubyCodeWriter writer, SymbolProvider symbolProvider, Shape shape) { + public ShapeDocumentationGenerator(GenerationContext context, RubyCodeWriter writer, SymbolProvider symbolProvider, + Shape shape) { this.writer = writer; - this.model = model; + this.context = context; + this.model = context.model(); this.symbolProvider = symbolProvider; this.shape = shape; } @@ -249,7 +256,11 @@ public Void memberShape(MemberShape shape) { @Override public Void operationShape(OperationShape shape) { - // TODO: write out different documentation for eventStream operations! + if (Streaming.isEventStreaming(model, shape)) { + return eventStreamOperation(shape); + } + + // non-event stream operation writeAllShapeTraits(); Shape inputShape = model.expectShape(shape.getInputShape()); @@ -283,6 +294,71 @@ public Void operationShape(OperationShape shape) { return null; } + private Void eventStreamOperation(OperationShape operation) { + writeAllShapeTraits(); + + Shape inputShape = model.expectShape(operation.getInputShape()); + String inputShapeName = symbolProvider.toSymbol(inputShape).getName(); + Shape outputShape = model.expectShape(operation.getOutputShape()); + String eventName = symbolProvider.toSymbol(operation).getName(); + + Optional inputEventMember = outputShape.members() + .stream() + .filter(m -> StreamingTrait.isEventStream(model, m)) + .findFirst(); + + String paramsDocString = """ + Request parameters for this operation. + See {Types::%s#initialize} for available parameters. + """.formatted(inputShapeName); + + if (inputEventMember.isPresent()) { + paramsDocString += """ + Do not set values for the event stream member +%s+. + Instead use the returned output to signal input events. + """.formatted(RubyFormatter.toSnakeCase(symbolProvider.toMemberName(inputEventMember.get()))); + } + String optionsDocString = """ + Request option override of configuration. See {Config#initialize} for available options. + Some configurations cannot be overridden. + """; + + writer + .writeYardParam("Hash | Types::" + inputShapeName, "params", paramsDocString) + .writeYardParam("Hash", "options", optionsDocString) + .call(() -> { + if (Streaming.isEventStreaming(model, outputShape)) { + writer.writeYardOption( + "options", "EventStream::" + eventName + "Handler", + ":event_stream_handler", "", + "Event Stream Handler used to register handlers that will be " + + "called when events are received."); + } + }) + .call(() -> { + boolean bidirectional = context.eventStreamTransport() + .map(t -> t.supportsBiDirectionalStreaming()) + .orElse(false); + if (bidirectional && Streaming.isEventStreaming(model, outputShape)) { + writer.writeYardReturn("EventStream::" + eventName + "Output", + "An open stream that supports sending (signaling) input " + + "events to the service."); + } else { + writer.writeYardReturn(Hearth.OUTPUT + "", ""); + } + }) + .writeYardExample( + "Request syntax with placeholder values", + new PlaceholderExampleGenerator(operation, symbolProvider, model).generate() + ) + .writeYardExample( + "Response structure", + new ResponseExampleGenerator(operation, symbolProvider, model).generate() + ); + + return null; + } + @Override public Void serviceShape(ServiceShape shape) { writeAllShapeTraits(); diff --git a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/EnumGenerator.java b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/EnumGenerator.java index 627242c30..21a801730 100644 --- a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/EnumGenerator.java +++ b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/EnumGenerator.java @@ -48,7 +48,7 @@ public void render() { write(writer -> { writer .writeDocstring("Enum constants for " + shapeName) - .call(() -> new ShapeDocumentationGenerator(model, writer, symbolProvider, shape).render()) + .call(() -> new ShapeDocumentationGenerator(context, writer, symbolProvider, shape).render()) .addModule(shapeName); enumValues.entrySet().forEach(entry -> { diff --git a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/IntEnumGenerator.java b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/IntEnumGenerator.java index 3eab99fd1..10bdbeb2b 100644 --- a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/IntEnumGenerator.java +++ b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/IntEnumGenerator.java @@ -48,7 +48,7 @@ public void render() { write(writer -> { writer .writeDocstring("Enum constants for " + shapeName) - .call(() -> new ShapeDocumentationGenerator(model, writer, symbolProvider, shape).render()) + .call(() -> new ShapeDocumentationGenerator(context, writer, symbolProvider, shape).render()) .addModule(shapeName); enumValues.entrySet().forEach(entry -> { diff --git a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/StructureGenerator.java b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/StructureGenerator.java index 996e86f9f..4232ab03c 100644 --- a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/StructureGenerator.java +++ b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/StructureGenerator.java @@ -56,7 +56,7 @@ protected String getModule() { public void render() { write(writer -> { - new ShapeDocumentationGenerator(model, writer, symbolProvider, shape).render(); + new ShapeDocumentationGenerator(context, writer, symbolProvider, shape).render(); renderInitializeMethodDocumentation(writer); renderAttributesDocumentation(writer); @@ -164,7 +164,7 @@ private void renderAttributesDocumentation(RubyCodeWriter writer) { .getProperty("docType").orElseThrow(IllegalArgumentException::new); writer.writeYardAttribute(attribute, () -> { - new ShapeDocumentationGenerator(model, writer, symbolProvider, memberShape).render(); + new ShapeDocumentationGenerator(context, writer, symbolProvider, memberShape).render(); writer.writeYardReturn(returnType, ""); }); }); diff --git a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/UnionGenerator.java b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/UnionGenerator.java index df0bb69a8..f3aaf2b74 100644 --- a/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/UnionGenerator.java +++ b/codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/types/UnionGenerator.java @@ -52,13 +52,13 @@ protected String getModule() { public void render() { write(writer -> { writer - .call(() -> new ShapeDocumentationGenerator(model, writer, symbolProvider, shape).render()) + .call(() -> new ShapeDocumentationGenerator(context, writer, symbolProvider, shape).render()) .openBlock("class $T < $T", symbolProvider.toSymbol(shape), Hearth.UNION); for (MemberShape memberShape : shape.members()) { writer .call(() -> new ShapeDocumentationGenerator( - model, writer, symbolProvider, memberShape).render()) + context, writer, symbolProvider, memberShape).render()) .openBlock("class $L < $T", symbolProvider.toMemberName(memberShape), symbolProvider.toSymbol(shape)) .openBlock("def to_h") diff --git a/hearth/hearth.gemspec b/hearth/hearth.gemspec index 045ce01d6..576f2b7a9 100755 --- a/hearth/hearth.gemspec +++ b/hearth/hearth.gemspec @@ -12,7 +12,7 @@ Gem::Specification.new do |spec| spec.required_ruby_version = '>= 3.0' - spec.add_runtime_dependency 'http2' + spec.add_runtime_dependency 'http-2' spec.add_runtime_dependency 'jmespath' spec.add_runtime_dependency 'rexml'