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;
12 import com.google.common.base.MoreObjects;
14 import java.util.HashMap;
16 import org.apache.maven.project.MavenProject;
19 * Base complex configuration arguments.
21 public abstract class ConfigArg {
22 private final File outputBaseDir;
24 public ConfigArg(final String outputBaseDir) {
25 this.outputBaseDir = outputBaseDir == null ? null : new File(outputBaseDir);
28 public File getOutputBaseDir(final MavenProject project) {
29 return outputBaseDir.isAbsolute() ? outputBaseDir : new File(project.getBasedir(), outputBaseDir.getPath());
33 requireNonNull(outputBaseDir,
34 "outputBaseDir is null. Please provide a valid outputBaseDir value in the pom.xml");
38 * Configuration argument for code generator class and output directory.
40 public static final class CodeGeneratorArg extends ConfigArg {
42 private final Map<String, String> additionalConfiguration = new HashMap<>();
44 private String codeGeneratorClass;
45 private File resourceBaseDir;
47 public CodeGeneratorArg() {
51 public CodeGeneratorArg(final String codeGeneratorClass) {
52 this(codeGeneratorClass, null);
55 public CodeGeneratorArg(final String codeGeneratorClass, final String outputBaseDir) {
57 this.codeGeneratorClass = codeGeneratorClass;
60 public CodeGeneratorArg(final String codeGeneratorClass, final String outputBaseDir,
61 final String resourceBaseDir) {
63 this.codeGeneratorClass = codeGeneratorClass;
64 this.resourceBaseDir = new File(resourceBaseDir);
70 requireNonNull(codeGeneratorClass, "codeGeneratorClass for CodeGenerator cannot be null");
73 public String getCodeGeneratorClass() {
74 return codeGeneratorClass;
77 public File getResourceBaseDir(final MavenProject project) {
78 if (resourceBaseDir == null) {
79 // if it has not been set, use a default (correctly dealing with target/ VS target-ide)
80 return new GeneratedDirectories(project).getYangServicesDir();
83 return resourceBaseDir.isAbsolute() ? resourceBaseDir
84 : new File(project.getBasedir(), resourceBaseDir.getPath());
87 public Map<String, String> getAdditionalConfiguration() {
88 return additionalConfiguration;
92 public String toString() {
93 return MoreObjects.toStringHelper(this).omitNullValues()
94 .add("resourceDir", resourceBaseDir)
95 .add("configuration", additionalConfiguration)