Skip to content

Commit 2cd40af

Browse files
committed
Fix rogue model_1 import without removing trait definitions from model
1 parent 514bd34 commit 2cd40af

File tree

4 files changed

+15
-12
lines changed

4 files changed

+15
-12
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CodegenVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ void execute() {
191191
for (Shape shape : TopologicalIndex.of(prunedModel).getRecursiveShapes()) {
192192
shape.accept(this);
193193
}
194-
SymbolVisitor.writeModelIndex(prunedModel, symbolProvider, fileManifest);
194+
SymbolVisitor.writeModelIndex(shapeSet, symbolProvider, fileManifest);
195195

196196
// Generate the client Node and Browser configuration files. These
197197
// files are switched between in package.json based on the targeted

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/DirectedTypeScriptCodegen.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import software.amazon.smithy.model.shapes.ServiceShape;
4747
import software.amazon.smithy.model.shapes.ShapeId;
4848
import software.amazon.smithy.model.traits.PaginatedTrait;
49-
import software.amazon.smithy.model.transform.ModelTransformer;
5049
import software.amazon.smithy.typescript.codegen.integration.ProtocolGenerator;
5150
import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin;
5251
import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration;
@@ -378,9 +377,10 @@ public void customizeBeforeIntegrations(CustomizeDirective<TypeScriptCodegenCont
378377

379378
// TODO: Do nonTraits need to be used in any other part of the logic?
380379
// Like CodegenVisitor did it before visiting structures etc.
381-
Model nonTraits = ModelTransformer.create().getModelWithoutTraitShapes(directive.model());
382-
SymbolVisitor.writeModelIndex(nonTraits, directive.symbolProvider(), directive.fileManifest());
380+
// Model nonTraits = ModelTransformer.create().getModelWithoutTraitShapes(directive.model());
381+
// SymbolVisitor.writeModelIndex(nonTraits, directive.symbolProvider(), directive.fileManifest());
383382
// SymbolVisitor.writeModelIndex(directive.model(), directive.symbolProvider(), directive.fileManifest());
383+
SymbolVisitor.writeModelIndex(directive.connectedShapes().values(), directive.symbolProvider(), directive.fileManifest());
384384

385385
// Generate the client Node and Browser configuration files. These
386386
// files are switched between in package.json based on the targeted

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/SymbolVisitor.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static java.lang.String.format;
1919

2020
import java.nio.file.Paths;
21+
import java.util.Collection;
2122
import java.util.Comparator;
2223
import java.util.HashMap;
2324
import java.util.HashSet;
@@ -118,8 +119,8 @@ final class SymbolVisitor implements SymbolProvider, ShapeVisitor<Symbol> {
118119
moduleNameDelegator = new ModuleNameDelegator(shapeChunkSize);
119120
}
120121

121-
static void writeModelIndex(Model model, SymbolProvider symbolProvider, FileManifest fileManifest) {
122-
ModuleNameDelegator.writeModelIndex(model, symbolProvider, fileManifest);
122+
static void writeModelIndex(Collection<Shape> shapes, SymbolProvider symbolProvider, FileManifest fileManifest) {
123+
ModuleNameDelegator.writeModelIndex(shapes, symbolProvider, fileManifest);
123124
}
124125

125126
@Override
@@ -442,19 +443,20 @@ public String formatModuleName(Shape shape, String name) {
442443
return path;
443444
}
444445

445-
static void writeModelIndex(Model model, SymbolProvider symbolProvider, FileManifest fileManifest) {
446+
static void writeModelIndex(Collection<Shape> shapes, SymbolProvider symbolProvider, FileManifest fileManifest) {
446447
TypeScriptWriter writer = new TypeScriptWriter("");
447448
String modelPrefix = Paths.get(".", CodegenUtils.SOURCE_FOLDER, SHAPE_NAMESPACE_PREFIX).toString();
448-
model.shapes()
449+
shapes.stream()
449450
.map(shape -> symbolProvider.toSymbol(shape).getNamespace())
450451
.filter(namespace -> namespace.startsWith(modelPrefix))
451452
.distinct()
452453
.sorted(Comparator.naturalOrder())
453454
.forEach(namespace -> writer.write(
454-
"export * from $S;", namespace.replaceFirst(modelPrefix, ".")));
455+
"export * from $S;", namespace.replaceFirst(modelPrefix, ".")));
455456
fileManifest.writeFile(
456-
Paths.get(CodegenUtils.SOURCE_FOLDER, SHAPE_NAMESPACE_PREFIX, "index.ts").toString(),
457-
writer.toString());
457+
Paths.get(CodegenUtils.SOURCE_FOLDER, SHAPE_NAMESPACE_PREFIX, "index.ts").toString(),
458+
writer.toString());
458459
}
460+
459461
}
460462
}

smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/SymbolProviderTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.hamcrest.Matchers.containsString;
55
import static org.hamcrest.Matchers.equalTo;
66

7+
import java.util.Arrays;
78
import org.junit.jupiter.api.Test;
89
import software.amazon.smithy.build.MockManifest;
910
import software.amazon.smithy.codegen.core.Symbol;
@@ -57,7 +58,7 @@ public void createsSymbolsIntoTargetNamespace() {
5758
Symbol symbol1 = provider.toSymbol(shape1);
5859
Symbol symbol2 = provider.toSymbol(shape2);
5960
MockManifest manifest = new MockManifest();
60-
SymbolVisitor.writeModelIndex(model, provider, manifest);
61+
SymbolVisitor.writeModelIndex(Arrays.asList(shape1, shape2), provider, manifest);
6162

6263
assertThat(symbol1.getName(), equalTo("Hello"));
6364
assertThat(symbol1.getNamespace(), equalTo("./" + CodegenUtils.SOURCE_FOLDER + "/models/models_0"));

0 commit comments

Comments
 (0)