Skip to content

Commit 700cc2b

Browse files
committed
Use CopyUtil methods in swagger core
1 parent 7fa57a0 commit 700cc2b

File tree

3 files changed

+18
-30
lines changed

3 files changed

+18
-30
lines changed

modules/swagger-core/src/main/java/io/swagger/v3/core/filter/SpecFilter.java

+8-14
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.swagger.v3.core.filter;
22

33
import io.swagger.v3.core.model.ApiDescription;
4-
import io.swagger.v3.core.util.Json;
4+
import io.swagger.v3.core.util.CopyUtil;
55
import io.swagger.v3.core.util.RefUtils;
66
import io.swagger.v3.oas.models.Components;
77
import io.swagger.v3.oas.models.OpenAPI;
@@ -22,7 +22,6 @@
2222
import io.swagger.v3.oas.models.tags.Tag;
2323
import org.apache.commons.lang3.StringUtils;
2424

25-
import java.io.IOException;
2625
import java.util.ArrayList;
2726
import java.util.Collections;
2827
import java.util.HashSet;
@@ -276,19 +275,14 @@ protected Map<String, Schema> filterComponentsSchema(OpenAPISpecFilter filter, M
276275
}
277276
}
278277

279-
try {
280-
// TODO solve this, and generally handle clone and passing references
281-
Schema clonedModel = Json.mapper().readValue(Json.pretty(definition), Schema.class);
282-
if (clonedModel.getProperties() != null) {
283-
clonedModel.getProperties().clear();
284-
}
285-
if (!clonedProperties.isEmpty()) {
286-
clonedModel.setProperties(clonedProperties);
287-
}
288-
clonedComponentsSchema.put(key, clonedModel);
289-
290-
} catch (IOException e) {
278+
Schema clonedModel = CopyUtil.copy(definition);
279+
if (clonedModel.getProperties() != null) {
280+
clonedModel.getProperties().clear();
281+
}
282+
if (!clonedProperties.isEmpty()) {
283+
clonedModel.setProperties(clonedProperties);
291284
}
285+
clonedComponentsSchema.put(key, clonedModel);
292286
}
293287
}
294288
return clonedComponentsSchema;

modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java

+8-16
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import io.swagger.v3.core.converter.ModelConverterContext;
3333
import io.swagger.v3.core.util.AnnotationsUtils;
3434
import io.swagger.v3.core.util.Constants;
35-
import io.swagger.v3.core.util.Json;
35+
import io.swagger.v3.core.util.CopyUtil;
3636
import io.swagger.v3.core.util.ObjectMapperFactory;
3737
import io.swagger.v3.core.util.OptionalUtils;
3838
import io.swagger.v3.core.util.PrimitiveType;
@@ -894,15 +894,12 @@ protected Type findJsonValueType(final BeanDescription beanDesc) {
894894
}
895895

896896
private Schema clone(Schema property) {
897-
if(property == null)
897+
if(property == null) {
898898
return property;
899-
try {
900-
String cloneName = property.getName();
901-
property = Json.mapper().readValue(Json.pretty(property), Schema.class);
902-
property.setName(cloneName);
903-
} catch (IOException e) {
904-
LOGGER.error("Could not clone property, e");
905899
}
900+
String cloneName = property.getName();
901+
property = CopyUtil.copy(property);
902+
property.setName(cloneName);
906903
return property;
907904
}
908905

@@ -1033,14 +1030,9 @@ private void handleUnwrapped(List<Schema> props, Schema innerModel, String prefi
10331030
}
10341031
if (innerModel.getProperties() != null) {
10351032
for (Schema prop : (Collection<Schema>) innerModel.getProperties().values()) {
1036-
try {
1037-
Schema clonedProp = Json.mapper().readValue(Json.pretty(prop), Schema.class);
1038-
clonedProp.setName(prefix + prop.getName() + suffix);
1039-
props.add(clonedProp);
1040-
} catch (IOException e) {
1041-
LOGGER.error("Exception cloning property", e);
1042-
return;
1043-
}
1033+
Schema clonedProp = CopyUtil.copy(prop);
1034+
clonedProp.setName(prefix + prop.getName() + suffix);
1035+
props.add(clonedProp);
10441036
}
10451037
}
10461038
}

modules/swagger-core/src/main/java/io/swagger/v3/core/util/CopyUtil.java

+2
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ else if (o instanceof JsonNode) {
8181
return ((Date) o).clone();
8282
} else if (o instanceof byte[]) {
8383
return ((byte[]) o).clone();
84+
} else if (o instanceof Schema) {
85+
return copy((Schema) o, CopyUtil::copy);
8486
}
8587
try {
8688
return Json.mapper().readTree(Json.pretty(o));

0 commit comments

Comments
 (0)