A race condition occurs between ARPHandler and HostTracker if the ARP
[controller.git] / opendaylight / sal / yang-prototype / yang / maven-yang-plugin / src / main / java / org / opendaylight / controller / yang2sources / plugin / ConfigArg.java
1 /*
2  * Copyright (c) 2013 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.controller.yang2sources.plugin;
9
10 import java.io.File;
11 import java.util.Map;
12
13 import org.apache.maven.project.MavenProject;
14
15 import com.google.common.base.Preconditions;
16 import com.google.common.collect.Maps;
17
18 /**
19  * Base complex configuration arguments
20  */
21 public abstract class ConfigArg {
22
23     private final File outputBaseDir;
24
25     public ConfigArg(String outputBaseDir) {
26         this.outputBaseDir = outputBaseDir == null ? null : new File(outputBaseDir);
27     }
28
29     public File getOutputBaseDir(MavenProject project) {
30         if (outputBaseDir == null) {
31             return null;
32         }
33         if (outputBaseDir.isAbsolute()) {
34             return outputBaseDir;
35         } else {
36             return new File(project.getBasedir(), outputBaseDir.getPath());
37         }
38     }
39
40     public abstract void check();
41
42     /**
43      * Configuration argument for code generator class and output directory.
44      */
45     public static final class CodeGeneratorArg extends ConfigArg {
46         private static final String CODE_GEN_DEFAULT_RESOURCE_DIR = "target" + File.separator + "generated-resources";
47
48         private String codeGeneratorClass;
49         private File resourceBaseDir = new File(CODE_GEN_DEFAULT_RESOURCE_DIR);
50
51         private Map<String, String> additionalConfiguration = Maps.newHashMap();
52
53         public CodeGeneratorArg() {
54             super(null);
55         }
56
57         public CodeGeneratorArg(String codeGeneratorClass) {
58             this(codeGeneratorClass, null);
59         }
60
61         public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir) {
62             super(outputBaseDir);
63             this.codeGeneratorClass = codeGeneratorClass;
64         }
65
66         public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir, String resourceBaseDir) {
67             super(outputBaseDir);
68             this.codeGeneratorClass = codeGeneratorClass;
69             this.resourceBaseDir = new File(resourceBaseDir);
70         }
71
72         @Override
73         public void check() {
74             Preconditions.checkNotNull(codeGeneratorClass, "codeGeneratorClass for CodeGenerator cannot be null");
75         }
76
77         public String getCodeGeneratorClass() {
78             return codeGeneratorClass;
79         }
80
81         public File getResourceBaseDir(MavenProject project) {
82             if (resourceBaseDir.isAbsolute()) {
83                 return resourceBaseDir;
84             } else {
85                 return new File(project.getBasedir(), resourceBaseDir.getPath());
86             }
87         }
88
89         public Map<String, String> getAdditionalConfiguration() {
90             return additionalConfiguration;
91         }
92     }
93 }