2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.yangtools.yang2sources.plugin;
10 import static java.util.Objects.requireNonNull;
13 import java.util.HashMap;
15 import org.apache.maven.project.MavenProject;
18 * Base complex configuration arguments.
20 public abstract class ConfigArg {
21 private final File outputBaseDir;
23 public ConfigArg(final String outputBaseDir) {
24 this.outputBaseDir = outputBaseDir == null ? null : new File(outputBaseDir);
27 public File getOutputBaseDir(final MavenProject project) {
28 if (outputBaseDir == null) {
31 return outputBaseDir.isAbsolute() ? outputBaseDir : new File(project.getBasedir(), outputBaseDir.getPath());
34 public abstract void check();
37 * Configuration argument for code generator class and output directory.
39 public static final class CodeGeneratorArg extends ConfigArg {
41 private final Map<String, String> additionalConfiguration = new HashMap<>();
43 private String codeGeneratorClass;
44 private File resourceBaseDir;
46 public CodeGeneratorArg() {
50 public CodeGeneratorArg(final String codeGeneratorClass) {
51 this(codeGeneratorClass, null);
54 public CodeGeneratorArg(final String codeGeneratorClass, final String outputBaseDir) {
56 this.codeGeneratorClass = codeGeneratorClass;
59 public CodeGeneratorArg(final String codeGeneratorClass, final String outputBaseDir,
60 final String resourceBaseDir) {
62 this.codeGeneratorClass = codeGeneratorClass;
63 this.resourceBaseDir = new File(resourceBaseDir);
68 requireNonNull(codeGeneratorClass, "codeGeneratorClass for CodeGenerator cannot be null");
71 public String getCodeGeneratorClass() {
72 return codeGeneratorClass;
75 public File getResourceBaseDir(final MavenProject project) {
76 if (resourceBaseDir == null) {
77 // if it has not been set, use a default (correctly dealing with target/ VS target-ide)
78 return new GeneratedDirectories(project).getYangServicesDir();
81 return resourceBaseDir.isAbsolute() ? resourceBaseDir
82 : new File(project.getBasedir(), resourceBaseDir.getPath());
85 public Map<String, String> getAdditionalConfiguration() {
86 return additionalConfiguration;