package org.opendaylight.controller.yang2sources.spi;
import java.io.File;
+import java.io.IOException;
import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import org.apache.maven.plugin.logging.Log;
+import org.opendaylight.controller.yang.model.api.Module;
import org.opendaylight.controller.yang.model.api.SchemaContext;
+/**
+ * Classes implementing this interface can be submitted to maven-yang-plugin's
+ * generate-sources goal.
+ */
public interface CodeGenerator {
- Collection<File> generateSources(SchemaContext context, File outputBaseDir);
+ /**
+ * Generate sources from provided {@link SchemaContext}
+ *
+ * @param context
+ * parsed from yang files
+ * @param outputBaseDir
+ * expected output directory for generated sources configured by
+ * user
+ * @param currentModules
+ * yang modules parsed from yangFilesRootDir
+ * @param log
+ * maven logger
+ * @return collection of files that were generated from schema context
+ * @throws IOException
+ */
+ Collection<File> generateSources(SchemaContext context, File outputBaseDir,
+ Set<Module> currentModules, File projectBaseDir)
+ throws IOException;
+
+ void setLog(Log log);
+
+ void setAdditionalConfig(Map<String, String> additionalConfiguration);
}