X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2Fplugin%2FJMXGenerator.java;h=c8356274f8144095581e504e8b45680051be319d;hp=743ffba739c97399a6a73556ab01a3061eed6816;hb=531621aac4cff9d39cbd8668a53bdeba8a0e6d81;hpb=9fb64948564e252018f9b1e13e7cea2c92f991aa diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGenerator.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGenerator.java index 743ffba739..c8356274f8 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGenerator.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGenerator.java @@ -7,17 +7,11 @@ */ package org.opendaylight.controller.config.yangjmxgenerator.plugin; -import java.io.File; -import java.io.IOException; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import org.apache.commons.io.FileUtils; import org.apache.maven.plugin.logging.Log; import org.apache.maven.project.MavenProject; @@ -28,6 +22,7 @@ import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry import org.opendaylight.controller.config.yangjmxgenerator.TypeProviderWrapper; import org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang2sources.spi.CodeGenerator; @@ -35,11 +30,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.impl.StaticLoggerBinder; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; +import java.io.File; +import java.io.IOException; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * This class interfaces with yang-maven-plugin. Gets parsed yang modules in @@ -54,7 +54,7 @@ public class JMXGenerator implements CodeGenerator { private PackageTranslator packageTranslator; private final CodeWriter codeWriter; - private static final Logger logger = LoggerFactory + private static final Logger LOGGER = LoggerFactory .getLogger(JMXGenerator.class); private Map namespaceToPackageMapping; private File resourceBaseDir; @@ -62,7 +62,7 @@ public class JMXGenerator implements CodeGenerator { private boolean generateModuleFactoryFile = true; public JMXGenerator() { - this.codeWriter = new FreeMarkerCodeWriterImpl(); + this.codeWriter = new CodeWriter(); } public JMXGenerator(CodeWriter codeWriter) { @@ -71,7 +71,7 @@ public class JMXGenerator implements CodeGenerator { @Override public Collection generateSources(SchemaContext context, - File outputBaseDir, Set yangModulesInCurrentMavenModule) { + File outputBaseDir, Set yangModulesInCurrentMavenModule) { Preconditions.checkArgument(context != null, "Null context received"); Preconditions.checkArgument(outputBaseDir != null, @@ -83,28 +83,30 @@ public class JMXGenerator implements CodeGenerator { packageTranslator = new PackageTranslator(namespaceToPackageMapping); - if (!outputBaseDir.exists()) + if (!outputBaseDir.exists()) { outputBaseDir.mkdirs(); + } GeneratedFilesTracker generatedFiles = new GeneratedFilesTracker(); + // create SIE structure qNamesToSIEs Map qNamesToSIEs = new HashMap<>(); - // create SIE structure qNamesToSIEs + + Map knownSEITracker = new HashMap<>(); for (Module module : context.getModules()) { String packageName = packageTranslator.getPackageName(module); Map namesToSIEntries = ServiceInterfaceEntry - .create(module, packageName); + .create(module, packageName, knownSEITracker); for (Entry sieEntry : namesToSIEntries .entrySet()) { - // merge value into qNamesToSIEs if (qNamesToSIEs.containsKey(sieEntry.getKey()) == false) { qNamesToSIEs.put(sieEntry.getKey(), sieEntry.getValue()); } else { throw new IllegalStateException( - "Cannot add two SIE with same qname " - + sieEntry.getValue()); + "Cannot add two SIE with same qname " + + sieEntry.getValue()); } } if (yangModulesInCurrentMavenModule.contains(module)) { @@ -126,7 +128,7 @@ public class JMXGenerator implements CodeGenerator { Preconditions.checkNotNull(resourceBaseDir, "resource base dir attribute was null"); - StringBuffer fullyQualifiedNamesOfFactories = new StringBuffer(); + StringBuilder fullyQualifiedNamesOfFactories = new StringBuilder(); // create MBEs for (Module module : yangModulesInCurrentMavenModule) { String packageName = packageTranslator.getPackageName(module); @@ -139,7 +141,7 @@ public class JMXGenerator implements CodeGenerator { ModuleMXBeanEntry mbe = mbeEntry.getValue(); try { List files1 = codeWriter.writeMbe(mbe, outputBaseDir, - mainBaseDir, resourceBaseDir); + mainBaseDir); generatedFiles.addFile(files1); } catch (Exception e) { throw new RuntimeException( @@ -165,7 +167,7 @@ public class JMXGenerator implements CodeGenerator { fullyQualifiedNamesOfFactories.toString()); } catch (IOException e) { String message = "Cannot write to " + serviceLoaderFile; - logger.error(message); + LOGGER.error(message); throw new RuntimeException(message, e); } } @@ -183,10 +185,11 @@ public class JMXGenerator implements CodeGenerator { @Override public void setAdditionalConfig(Map additionalCfg) { - if (logger != null) - logger.debug(getClass().getCanonicalName(), + if (LOGGER != null) { + LOGGER.debug(getClass().getCanonicalName(), ": Additional configuration received: ", additionalCfg.toString()); + } this.namespaceToPackageMapping = extractNamespaceMapping(additionalCfg); this.generateModuleFactoryFile = extractModuleFactoryBoolean(additionalCfg); } @@ -194,16 +197,18 @@ public class JMXGenerator implements CodeGenerator { private boolean extractModuleFactoryBoolean( Map additionalCfg) { String bool = additionalCfg.get(MODULE_FACTORY_FILE_BOOLEAN); - if (bool == null) + if (bool == null) { return true; - if (bool.equals("false")) + } + if ("false".equals(bool)) { return false; + } return true; } @Override public void setLog(Log log) { - StaticLoggerBinder.getSingleton().setLog(log); + StaticLoggerBinder.getSingleton().setMavenLog(log); } private static Map extractNamespaceMapping( @@ -249,8 +254,8 @@ public class JMXGenerator implements CodeGenerator { public void setMavenProject(MavenProject project) { this.projectBaseDir = project.getBasedir(); - if (logger != null) - logger.debug(getClass().getCanonicalName(), " project base dir: ", + if (LOGGER != null) + LOGGER.debug(getClass().getCanonicalName(), " project base dir: ", projectBaseDir); } @@ -267,7 +272,7 @@ public class JMXGenerator implements CodeGenerator { } } if (undeletedFiles.isEmpty() == false) { - logger.error( + LOGGER.error( "Illegal state occurred: Unable to delete already generated files, undeleted files: {}", undeletedFiles); }