diff options
Diffstat (limited to 'vpp-integration/api-docs/core/src/main/java/io/fd/hc2vpp/docs/core/CoverageGenerator.java')
-rw-r--r-- | vpp-integration/api-docs/core/src/main/java/io/fd/hc2vpp/docs/core/CoverageGenerator.java | 68 |
1 files changed, 10 insertions, 58 deletions
diff --git a/vpp-integration/api-docs/core/src/main/java/io/fd/hc2vpp/docs/core/CoverageGenerator.java b/vpp-integration/api-docs/core/src/main/java/io/fd/hc2vpp/docs/core/CoverageGenerator.java index 4b6ab776c..4a8a77827 100644 --- a/vpp-integration/api-docs/core/src/main/java/io/fd/hc2vpp/docs/core/CoverageGenerator.java +++ b/vpp-integration/api-docs/core/src/main/java/io/fd/hc2vpp/docs/core/CoverageGenerator.java @@ -34,7 +34,6 @@ import io.fd.hc2vpp.docs.api.PluginCoverage; import io.fd.hc2vpp.docs.api.YangType; import io.fd.honeycomb.translate.write.WriterFactory; import java.lang.reflect.Field; -import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -59,14 +58,13 @@ public class CoverageGenerator implements VppApiUtils { final List<Module> scannedModules, final YangTypeLinkIndex yangTypeIndex, final ClassPathTypeIndex classPathIndex) { - LOG.info("Generating config coverage for plugin {}", pluginClass); + LOG.info("Generating config VPP API to Yang mapping for plugin {}", pluginClass); getInjectedWriterFactories(scannedModules).forEach(writerFactory -> writerFactory.init(writerBuilder)); - LOG.info("Processing single node handlers"); - final Set<CoverageUnit> singleNodeCoverageUnits = writerBuilder.getSingleNodeHandlers().stream() - .flatMap(writer -> { + final Set<CoverageUnit> coverageUnits = writerBuilder.getWriteHandlers().stream() + .flatMap(handler -> { // extracts customizer class from handler - final Class<?> customizerClass = getCustomizerClass(writer); + final Class<?> customizerClass = getCustomizerClass(handler.getWriter()); // scans within write method final Set<PluginMethodReference> writeReferences = @@ -81,62 +79,19 @@ public class CoverageGenerator implements VppApiUtils { new CoverageScanner(customizerClass, DELETE, pluginClass).scan(); return Stream.of(writeReferences.stream(), updateReferences.stream(), deleteReferences.stream()) - .flatMap(pluginMethodReferences -> pluginMethodReferences) + .flatMap(pluginMethodReferenceStream -> pluginMethodReferenceStream) .map(reference -> { final CoverageUnit.CoverageUnitBuilder builder = new CoverageUnit.CoverageUnitBuilder(); // binds vpp api name and generateLink bind with version - builder.setVppApi(fromJvppApi(version, reference)); + builder.setVppApi(fromJvppApi(version, reference.getName())); //binds java api reference builder.setJavaApi(new JavaApiMessage(reference.getName())); - //binds Yang types with links from pre-build index - // TODO - use deserialized yii - final String typeName = writer.getManagedDataObjectType().getTargetType().getTypeName(); - builder.setYangTypes(Collections.singletonList(new YangType( - typeName, - yangTypeIndex.getLinkForType(typeName)))); - - final List<Operation> supportedOperations = new LinkedList<>(); - - final String callerClassLink = classPathIndex.linkForClass(reference.getCaller()); - if (writeReferences.contains(reference)) { - supportedOperations.add(new Operation(callerClassLink, WRITE)); - } - - if (updateReferences.contains(reference)) { - supportedOperations.add(new Operation(callerClassLink, UPDATE)); - } - - if (deleteReferences.contains(reference)) { - supportedOperations.add(new Operation(callerClassLink, DELETE)); - } - return builder.setSupportedOperations(supportedOperations).build(); - }); - }).collect(Collectors.toSet()); - - LOG.info("Processing multi node handlers"); - final Set<CoverageUnit> multiNodeCoverageUnits = writerBuilder.getMultiNodeWriteHandlers().stream() - .flatMap(handler -> { - final Class<?> customizerClass = getCustomizerClass(handler.getWriter()); - final Set<PluginMethodReference> writeReferences = - new CoverageScanner(customizerClass, WRITE, pluginClass).scan(); - - final Set<PluginMethodReference> updateReferences = - new CoverageScanner(customizerClass, UPDATE, pluginClass).scan(); - - final Set<PluginMethodReference> deleteReferences = - new CoverageScanner(customizerClass, DELETE, pluginClass).scan(); - - return Stream.of(writeReferences.stream(), updateReferences.stream(), deleteReferences.stream()) - .flatMap(pluginMethodReferenceStream -> pluginMethodReferenceStream) - .map(reference -> { - final CoverageUnit.CoverageUnitBuilder builder = new CoverageUnit.CoverageUnitBuilder(); - builder.setVppApi(fromJvppApi(version, reference)); - builder.setJavaApi(new JavaApiMessage(reference.getName())); - - builder.setYangTypes(handler.getHandledChildren().stream() + // binds Yang types with links from pre-build index + // TODO - use deserialized yii e.g. /module:parent-node/child-node + builder.setYangTypes(handler.getHandledNodes().stream() .map(type -> new YangType(type, yangTypeIndex.getLinkForType(type))) .collect(Collectors.toList())); @@ -157,10 +112,7 @@ public class CoverageGenerator implements VppApiUtils { }); }).collect(Collectors.toSet()); - return new PluginCoverage(pluginClass.getSimpleName(), - Stream.of(singleNodeCoverageUnits.stream(), multiNodeCoverageUnits.stream()) - .flatMap(coverageUnitStream -> coverageUnitStream) - .collect(Collectors.toSet()), true); + return new PluginCoverage(pluginClass.getSimpleName(), coverageUnits, true); } private static Class<?> getCustomizerClass(final Object handler) { |