--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.yang2sources.plugin;
+
+import java.io.File;
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Complex configuration arguments
+ */
+public abstract class ConfigArg {
+
+ protected File outputBaseDir;
+
+ public ConfigArg(File outputBaseDir) {
+ this.outputBaseDir = outputBaseDir;
+ }
+
+ public ConfigArg() {
+ }
+
+ public File getOutputBaseDir() {
+ return outputBaseDir;
+ }
+
+ public abstract void check();
+
+ public static final class ResourceProviderArg extends ConfigArg {
+ private String resourceProviderClass;
+
+ public ResourceProviderArg() {
+ }
+
+ public ResourceProviderArg(String resourceProviderClass,
+ File outputBaseDir) {
+ super(outputBaseDir);
+ this.resourceProviderClass = resourceProviderClass;
+ }
+
+ @Override
+ public void check() {
+ Preconditions
+ .checkNotNull(resourceProviderClass,
+ "resourceProviderClass for ResourceProvider cannot be null");
+ Preconditions.checkNotNull(outputBaseDir,
+ "outputBaseDir for ResourceProvider cannot be null, "
+ + resourceProviderClass);
+ }
+
+ public String getResourceProviderClass() {
+ return resourceProviderClass;
+ }
+ }
+
+ /**
+ * Transfer object for code generator class and output directory.
+ */
+ public static final class CodeGeneratorArg extends ConfigArg {
+ private String codeGeneratorClass;
+
+ public CodeGeneratorArg() {
+ }
+
+ public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
+ super(outputBaseDir);
+ this.codeGeneratorClass = codeGeneratorClass;
+ }
+
+ @Override
+ public void check() {
+ Preconditions.checkNotNull(codeGeneratorClass,
+ "codeGeneratorClass for CodeGenerator cannot be null");
+ Preconditions.checkNotNull(outputBaseDir,
+ "outputBaseDir for CodeGenerator cannot be null, "
+ + codeGeneratorClass);
+ }
+
+ public String getCodeGeneratorClass() {
+ return codeGeneratorClass;
+ }
+ }
+}
\ No newline at end of file