Move TypeDefinitions into yang-model-api
[yangtools.git] / yang / yang-maven-plugin-spi / src / main / java / org / opendaylight / yangtools / yang2sources / spi / BasicCodeGenerator.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang2sources.spi;
9
10 import java.io.File;
11 import java.io.IOException;
12 import java.util.Collection;
13 import java.util.Map;
14 import java.util.Optional;
15 import java.util.Set;
16 import java.util.function.Function;
17 import org.opendaylight.yangtools.yang.model.api.Module;
18 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
19
20 /**
21  * Maven 3.1.x and newer uses SLF4J internally, which means we do not need to pass
22  * a logger instance around.
23  */
24 public interface BasicCodeGenerator {
25     /**
26      * Generate sources from provided {@link SchemaContext}.
27      *
28      * @param context
29      *            parsed from YANG files
30      * @param outputBaseDir
31      *            expected output directory for generated sources configured by
32      *            user
33      * @param currentModules
34      *            YANG modules parsed from yangFilesRootDir
35      * @param moduleResourcePathResolver
36      *            Function converting a local module to the packaged resource path
37      * @return collection of files that were generated from schema context
38      */
39     Collection<File> generateSources(SchemaContext context, File outputBaseDir, Set<Module> currentModules,
40             Function<Module, Optional<String>> moduleResourcePathResolver) throws IOException;
41
42     /**
43      * Provided map contains all configuration that was set in pom for code
44      * generator in additionalConfiguration tag.
45      */
46     void setAdditionalConfig(Map<String, String> additionalConfiguration);
47
48     /**
49      * Provided folder is marked as resources and its content will be packaged
50      * in resulting jar. Feel free to add necessary resources.
51      */
52     void setResourceBaseDir(File resourceBaseDir);
53 }