From 22ffd34f5fe6cd5b7edf0b034f7346b6ff8a0db2 Mon Sep 17 00:00:00 2001 From: Oleksandr Zharov Date: Tue, 13 Jun 2023 14:24:26 +0200 Subject: [PATCH] Refactor getOpenApiSpec method Refactored BaseYangOpenApiGenerator#getOpenApiSpec. This method did more than one thing thus it has been divided into getSchemas and getPaths methods. JIRA: NETCONF-1052 Change-Id: If0f3ab19597c5fcdc767b51a295750ef65541dc5 Signed-off-by: Oleksandr Zharov Signed-off-by: Ivan Hrasko --- .../impl/BaseYangOpenApiGenerator.java | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java b/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java index 81790b7f99..fe4171578d 100644 --- a/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java +++ b/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java @@ -126,7 +126,8 @@ public abstract class BaseYangOpenApiGenerator { LOG.debug("Working on [{},{}]...", module.getName(), revisionString); - getOpenApiSpec(module, context, deviceName, schemaContext, definitionNames, docBuilder, false); + docBuilder.getComponents().schemas().putAll(getSchemas(module, schemaContext, definitionNames, false)); + docBuilder.getPaths().putAll(getPaths(module, context, deviceName, schemaContext, definitionNames, false)); } // FIXME rework callers logic to make possible to return OpenApiObject from here @@ -204,21 +205,18 @@ public abstract class BaseYangOpenApiGenerator { public OpenApiObject getOpenApiSpec(final Module module, final String schema, final String host, final String basePath, final String context, final EffectiveModelContext schemaContext) { - final OpenApiObject.Builder docBuilder = createOpenApiObjectBuilder(schema, host, basePath, module.getName()); - final DefinitionNames definitionNames = new DefinitionNames(); - return getOpenApiSpec(module, context, null, schemaContext, definitionNames, docBuilder, true); + final var docBuilder = createOpenApiObjectBuilder(schema, host, basePath, module.getName()); + final var definitionNames = new DefinitionNames(); + final var schemas = getSchemas(module, schemaContext, definitionNames, true); + final var paths = getPaths(module, context, null, schemaContext, definitionNames, true); + docBuilder.getComponents().schemas().putAll(schemas); + docBuilder.paths(paths); + return docBuilder.build(); } - private OpenApiObject getOpenApiSpec(final Module module, final String context, final String deviceName, + private Map getPaths(final Module module, final String context, final String deviceName, final EffectiveModelContext schemaContext, final DefinitionNames definitionNames, - final OpenApiObject.Builder docBuilder, final boolean isForSingleModule) { - try { - final Map schemas = jsonConverter.convertToSchemas(module, schemaContext, - definitionNames, isForSingleModule); - docBuilder.getComponents().schemas().putAll(schemas); - } catch (final IOException e) { - LOG.error("Exception occurred in DefinitionGenerator", e); - } + final boolean isForSingleModule) { final Map paths = new HashMap<>(); final String moduleName = module.getName(); @@ -260,13 +258,19 @@ public abstract class BaseYangOpenApiGenerator { LOG.debug("Number of Paths found [{}]", paths.size()); - if (isForSingleModule) { - docBuilder.paths(paths); - } else { - docBuilder.getPaths().putAll(paths); + return paths; + } + + private Map getSchemas(final Module module, final EffectiveModelContext schemaContext, + final DefinitionNames definitionNames, final boolean isForSingleModule) { + Map schemas = new HashMap<>(); + try { + schemas = jsonConverter.convertToSchemas(module, schemaContext, definitionNames, isForSingleModule); + } catch (final IOException e) { + LOG.error("Exception occurred in DefinitionGenerator", e); // FIXME propagate exception } - return docBuilder.build(); + return schemas; } private static void addRootPostLink(final Module module, final String deviceName, -- 2.36.6