Skip to content

Commit fe3ffc3

Browse files
committed
Add 'smithy.ai#prompts' as a default runtime trait'
1 parent de53f88 commit fe3ffc3

File tree

2 files changed

+18
-103
lines changed

2 files changed

+18
-103
lines changed

codegen/codegen-core/src/main/java/software/amazon/smithy/java/codegen/CodeGenerationContext.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,14 @@ public class CodeGenerationContext
6666

6767
private static final InternalLogger LOGGER = InternalLogger.getLogger(CodeGenerationContext.class);
6868

69-
private static final List<ShapeId> PRELUDE_RUNTIME_TRAITS = List.of(
69+
// visible for testing
70+
static final List<ShapeId> PRELUDE_RUNTIME_TRAITS = List.of(
7071
// Validation Traits
7172
LengthTrait.ID,
7273
PatternTrait.ID,
7374
RangeTrait.ID,
7475
RequiredTrait.ID,
7576
SensitiveTrait.ID,
76-
IdempotencyTokenTrait.ID,
7777
SparseTrait.ID,
7878
UniqueItemsTrait.ID,
7979
RequiresLengthTrait.ID,
@@ -96,7 +96,9 @@ public class CodeGenerationContext
9696
IdempotencyTokenTrait.ID,
9797
RetryableTrait.ID,
9898
RequestCompressionTrait.ID,
99-
StreamingTrait.ID);
99+
StreamingTrait.ID,
100+
// AI traits (experimental)
101+
ShapeId.from("smithy.ai#prompts"));
100102

101103
private final Model model;
102104
private final JavaCodegenSettings settings;

codegen/codegen-core/src/test/java/software/amazon/smithy/java/codegen/CodegenContextTest.java

Lines changed: 13 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static org.hamcrest.MatcherAssert.assertThat;
99
import static org.hamcrest.Matchers.containsInAnyOrder;
1010

11+
import java.util.HashSet;
1112
import java.util.Objects;
1213
import org.junit.jupiter.api.BeforeAll;
1314
import org.junit.jupiter.api.Test;
@@ -20,37 +21,6 @@
2021
import software.amazon.smithy.model.node.ObjectNode;
2122
import software.amazon.smithy.model.shapes.ShapeId;
2223
import software.amazon.smithy.model.traits.AnnotationTrait;
23-
import software.amazon.smithy.model.traits.CorsTrait;
24-
import software.amazon.smithy.model.traits.DefaultTrait;
25-
import software.amazon.smithy.model.traits.EndpointTrait;
26-
import software.amazon.smithy.model.traits.ErrorTrait;
27-
import software.amazon.smithy.model.traits.EventHeaderTrait;
28-
import software.amazon.smithy.model.traits.EventPayloadTrait;
29-
import software.amazon.smithy.model.traits.HostLabelTrait;
30-
import software.amazon.smithy.model.traits.HttpErrorTrait;
31-
import software.amazon.smithy.model.traits.HttpPayloadTrait;
32-
import software.amazon.smithy.model.traits.HttpQueryTrait;
33-
import software.amazon.smithy.model.traits.HttpTrait;
34-
import software.amazon.smithy.model.traits.IdempotencyTokenTrait;
35-
import software.amazon.smithy.model.traits.JsonNameTrait;
36-
import software.amazon.smithy.model.traits.LengthTrait;
37-
import software.amazon.smithy.model.traits.MediaTypeTrait;
38-
import software.amazon.smithy.model.traits.PaginatedTrait;
39-
import software.amazon.smithy.model.traits.PatternTrait;
40-
import software.amazon.smithy.model.traits.RangeTrait;
41-
import software.amazon.smithy.model.traits.RequestCompressionTrait;
42-
import software.amazon.smithy.model.traits.RequiredTrait;
43-
import software.amazon.smithy.model.traits.RequiresLengthTrait;
44-
import software.amazon.smithy.model.traits.RetryableTrait;
45-
import software.amazon.smithy.model.traits.SensitiveTrait;
46-
import software.amazon.smithy.model.traits.SparseTrait;
47-
import software.amazon.smithy.model.traits.StreamingTrait;
48-
import software.amazon.smithy.model.traits.TimestampFormatTrait;
49-
import software.amazon.smithy.model.traits.UniqueItemsTrait;
50-
import software.amazon.smithy.model.traits.XmlAttributeTrait;
51-
import software.amazon.smithy.model.traits.XmlFlattenedTrait;
52-
import software.amazon.smithy.model.traits.XmlNameTrait;
53-
import software.amazon.smithy.model.traits.XmlNamespaceTrait;
5424

5525
public class CodegenContextTest {
5626
private static Model model;
@@ -82,47 +52,19 @@ void getsCorrectRuntimeTraitsForProtocolsAndAuth() {
8252
.build();
8353
plugin.execute(context);
8454

55+
var expected = new HashSet<>(CodeGenerationContext.PRELUDE_RUNTIME_TRAITS);
56+
expected.add(ShapeId.from("smithy.java.codegen#selectedTrait"));
57+
expected.add(ShapeId.from("smithy.api#httpError"));
58+
expected.add(ShapeId.from("smithy.api#httpPayload"));
59+
expected.add(ShapeId.from("smithy.api#timestampFormat"));
60+
expected.add(ShapeId.from("smithy.api#cors"));
61+
expected.add(ShapeId.from("smithy.api#http"));
62+
expected.add(ShapeId.from("smithy.api#httpQuery"));
63+
expected.add(ShapeId.from("smithy.api#endpoint"));
64+
8565
assertThat(
8666
plugin.capturedContext.runtimeTraits(),
87-
containsInAnyOrder(
88-
// Prelude validation traits
89-
LengthTrait.ID,
90-
PatternTrait.ID,
91-
RangeTrait.ID,
92-
RequiredTrait.ID,
93-
SensitiveTrait.ID,
94-
SparseTrait.ID,
95-
UniqueItemsTrait.ID,
96-
RequiresLengthTrait.ID,
97-
ErrorTrait.ID,
98-
DefaultTrait.ID,
99-
// Base Prelude Protocol traits
100-
JsonNameTrait.ID,
101-
TimestampFormatTrait.ID,
102-
MediaTypeTrait.ID,
103-
XmlNameTrait.ID,
104-
XmlFlattenedTrait.ID,
105-
XmlAttributeTrait.ID,
106-
XmlNamespaceTrait.ID,
107-
EventHeaderTrait.ID,
108-
EventPayloadTrait.ID,
109-
HostLabelTrait.ID,
110-
EndpointTrait.ID,
111-
// Protocol Traits
112-
CorsTrait.ID,
113-
HttpTrait.ID,
114-
// Auth traits
115-
HttpQueryTrait.ID,
116-
HttpPayloadTrait.ID,
117-
// Prelude behavior traits
118-
PaginatedTrait.ID,
119-
IdempotencyTokenTrait.ID,
120-
RetryableTrait.ID,
121-
RequestCompressionTrait.ID,
122-
StreamingTrait.ID,
123-
// Added by settings
124-
HttpErrorTrait.ID,
125-
ShapeId.from("smithy.java.codegen#selectedTrait")));
67+
containsInAnyOrder(expected.toArray()));
12668
}
12769

12870
@Test
@@ -141,36 +83,7 @@ void getsCorrectTraitsWithNoProtocolOrAuth() {
14183

14284
assertThat(
14385
plugin.capturedContext.runtimeTraits(),
144-
containsInAnyOrder(
145-
// Prelude Validation Traits
146-
LengthTrait.ID,
147-
PatternTrait.ID,
148-
RangeTrait.ID,
149-
RequiredTrait.ID,
150-
SensitiveTrait.ID,
151-
SparseTrait.ID,
152-
UniqueItemsTrait.ID,
153-
RequiresLengthTrait.ID,
154-
ErrorTrait.ID,
155-
DefaultTrait.ID,
156-
// Base Prelude Protocol traits
157-
JsonNameTrait.ID,
158-
TimestampFormatTrait.ID,
159-
MediaTypeTrait.ID,
160-
XmlNameTrait.ID,
161-
XmlFlattenedTrait.ID,
162-
XmlAttributeTrait.ID,
163-
XmlNamespaceTrait.ID,
164-
EventHeaderTrait.ID,
165-
EventPayloadTrait.ID,
166-
HostLabelTrait.ID,
167-
EndpointTrait.ID,
168-
// Prelude behavior traits
169-
PaginatedTrait.ID,
170-
IdempotencyTokenTrait.ID,
171-
RetryableTrait.ID,
172-
RequestCompressionTrait.ID,
173-
StreamingTrait.ID));
86+
containsInAnyOrder(CodeGenerationContext.PRELUDE_RUNTIME_TRAITS.toArray()));
17487
}
17588

17689
public static class SelectedTrait extends AnnotationTrait {

0 commit comments

Comments
 (0)