Skip to content

Commit 56370b2

Browse files
committed
oas 3.1 dereference - don't dereference $anchor
1 parent 59b104b commit 56370b2

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/OpenAPI31Traverser.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,9 @@ public void mergeSchemas(Schema source, Schema target) {
10561056
if (source.getMaxLength() != null){
10571057
target.setMaxLength(source.getMaxLength());
10581058
}
1059+
if (source.get$anchor() != null){
1060+
target.set$anchor(source.get$anchor());
1061+
}
10591062
if (source.get$comment() != null){
10601063
target.set$comment(source.get$comment());
10611064
}

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/ReferenceVisitor.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ public Schema resolveSchemaRef(Schema visiting, String ref, List<String> inherit
198198
baseURI = ReferenceUtils.resolve(ref, baseURI);
199199
baseURI = ReferenceUtils.toBaseURI(baseURI);
200200
Reference reference = null;
201+
boolean isAnchor = false;
201202
if (this.reference.getReferenceSet().containsKey(baseURI)) {
202203
reference = this.reference.getReferenceSet().get(baseURI);
203204
}
@@ -222,9 +223,12 @@ public Schema resolveSchemaRef(Schema visiting, String ref, List<String> inherit
222223
if (evaluatedNode == null) {
223224
throw new RuntimeException("Could not find " + fragment + " in contents of " + ref);
224225
}
226+
isAnchor = true;
225227
}
226228
Schema resolved = openAPITraverser.deserializeFragment(evaluatedNode, Schema.class, ref, fragment, reference.getMessages());
227-
229+
if (isAnchor) {
230+
resolved.$anchor(null);
231+
}
228232
ReferenceVisitor visitor = new ReferenceVisitor(reference, openAPITraverser, this.visited, this.visitedMap);
229233
return openAPITraverser.traverseSchema(resolved, visitor, inheritedIds);
230234
} catch (Exception e) {

modules/swagger-parser-v3/src/test/resources/3.1.0/dereference/schema/$anchor-external/dereferenced.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"type" : "string"
1212
},
1313
"profile" : {
14-
"$anchor" : "user-profile",
1514
"properties" : {
1615
"firstName" : {
1716
"type" : "string"

0 commit comments

Comments
 (0)