http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java
 
b/slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java
deleted file mode 100644
index 86025ee..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/common/tools/SliderVersionInfo.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.common.tools;
-
-import org.apache.hadoop.util.VersionInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Locale;
-import java.util.Properties;
-
-/**
- * Extract the version properties, which will look something like
- * <pre>
- * application.name=${pom.name}
- * application.version=${pom.version}
- * application.build=${buildNumber}
- * application.build.java.version=${java.version}
- * application.build.info=${pom.name}-${pom.version} Built against 
${buildNumber} on ${java.version} by ${user.name}
- * </pre>
- * 
- * the <code>mvn process-resources</code> target will expand the properties
- * and add the resources to target/classes, which will then look something like
- * <pre>
- *   application.name=Slider Core
- *   application.version=0.7.1-SNAPSHOT
- *   application.build=1dd69
- *   application.build.java.version=1.7.0_45
- *   application.build.user=stevel
- *   application.build.info=Slider Core-0.7.1-SNAPSHOT Built against 1dd69 on 
1.7.0_45 by stevel
- * </pre>
- * 
- * Note: the values will change and more properties added.
- */
-public class SliderVersionInfo {
-  private static final Logger log = 
LoggerFactory.getLogger(SliderVersionInfo.class);
-
-  /**
-   * Name of the resource containing the filled-in-at-runtime props
-   */
-  public static final String VERSION_RESOURCE =
-      "org/apache/slider/providers/dynamic/application.properties";
-
-  public static final String APP_NAME = "application.name";
-  public static final String APP_VERSION = "application.version";
-  public static final String APP_BUILD = "application.build";
-  public static final String APP_BUILD_JAVA_VERSION = 
"application.build.java.version";
-  public static final String APP_BUILD_USER = "application.build.user";
-  public static final String APP_BUILD_INFO = "application.build.info";
-  public static final String HADOOP_BUILD_INFO = "hadoop.build.info";
-  public static final String HADOOP_DEPLOYED_INFO = "hadoop.deployed.info";
-
-
-  public static Properties loadVersionProperties()  {
-    Properties props = new Properties();
-    URL resURL = SliderVersionInfo.class.getClassLoader()
-                                   .getResource(VERSION_RESOURCE);
-    assert resURL != null : "Null resource " + VERSION_RESOURCE;
-
-    try {
-      InputStream inStream = resURL.openStream();
-      assert inStream != null : "Null input stream from " + VERSION_RESOURCE;
-      props.load(inStream);
-    } catch (IOException e) {
-      log.warn("IOE loading " + VERSION_RESOURCE, e);
-    }
-    return props;
-  }
-
-  /**
-   * Load the version info and print it
-   * @param logger logger
-   */
-  public static void loadAndPrintVersionInfo(Logger logger) {
-    Properties props = loadVersionProperties();
-    logger.info(props.getProperty(APP_BUILD_INFO));
-    logger.info("Compiled against Hadoop {}",
-                props.getProperty(HADOOP_BUILD_INFO));
-    logger.info(getHadoopVersionString());
-  }
-  
-  public static String getHadoopVersionString() {
-    return String.format(Locale.ENGLISH,
-        "Hadoop runtime version %s with source checksum %s and build date %s",
-        VersionInfo.getBranch(),
-        VersionInfo.getSrcChecksum(),
-        VersionInfo.getDate());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/build/BuildHelper.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/build/BuildHelper.java 
b/slider-core/src/main/java/org/apache/slider/core/build/BuildHelper.java
deleted file mode 100644
index 1098e2c..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/build/BuildHelper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.build;
-
-import org.apache.hadoop.util.VersionInfo;
-import org.apache.slider.common.tools.SliderVersionInfo;
-
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * classes to help with the build
- */
-public class BuildHelper {
-  /**
-   * Add the cluster build information; this will include Hadoop details too
-   * @param dest map to insert this too
-   * @param prefix prefix for the build info
-   */
-  public static void addBuildMetadata(Map<String, Object> dest, String prefix) 
{
-
-    Properties props = SliderVersionInfo.loadVersionProperties();
-    dest.put(prefix + "." + SliderVersionInfo.APP_BUILD_INFO,
-             props.getProperty(
-      SliderVersionInfo.APP_BUILD_INFO));
-    dest.put(prefix + "." + SliderVersionInfo.HADOOP_BUILD_INFO,
-             props.getProperty(SliderVersionInfo.HADOOP_BUILD_INFO));
-
-    dest.put(prefix + "." + SliderVersionInfo.HADOOP_DEPLOYED_INFO,
-             VersionInfo.getBranch() + " @" + VersionInfo.getSrcChecksum());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java 
b/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
deleted file mode 100644
index 8155214..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.build;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.permission.FsPermission;
-import org.apache.slider.api.InternalKeys;
-import org.apache.slider.api.OptionKeys;
-import org.apache.slider.api.ResourceKeys;
-import org.apache.slider.api.StatusKeys;
-import org.apache.slider.common.SliderKeys;
-import org.apache.slider.common.SliderXmlConfKeys;
-import org.apache.slider.common.tools.CoreFileSystem;
-import org.apache.slider.common.tools.SliderUtils;
-import org.apache.slider.core.conf.AggregateConf;
-import org.apache.slider.core.conf.ConfTreeOperations;
-import org.apache.slider.core.conf.MapOperations;
-import org.apache.slider.core.exceptions.BadClusterStateException;
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.apache.slider.core.exceptions.ErrorStrings;
-import org.apache.slider.core.exceptions.SliderException;
-import org.apache.slider.core.persist.ConfPersister;
-import org.apache.slider.core.persist.InstancePaths;
-import org.apache.slider.core.persist.LockAcquireFailedException;
-import org.apache.slider.core.persist.LockHeldAction;
-import org.apache.slider.core.zk.ZKPathBuilder;
-import org.apache.slider.core.zk.ZookeeperUtils;
-import org.apache.slider.providers.agent.AgentKeys;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeSet;
-
-import static org.apache.slider.api.InternalKeys.INTERNAL_ADDONS_DIR_PATH;
-import static org.apache.slider.api.InternalKeys.INTERNAL_APPDEF_DIR_PATH;
-import static org.apache.slider.api.InternalKeys.INTERNAL_QUEUE;
-import static org.apache.slider.api.OptionKeys.INTERNAL_AM_TMP_DIR;
-import static org.apache.slider.api.OptionKeys.INTERNAL_TMP_DIR;
-import static org.apache.slider.api.OptionKeys.INTERNAL_APPLICATION_HOME;
-import static org.apache.slider.api.OptionKeys.INTERNAL_APPLICATION_IMAGE_PATH;
-import static org.apache.slider.api.OptionKeys.INTERNAL_DATA_DIR_PATH;
-import static org.apache.slider.api.OptionKeys.INTERNAL_GENERATED_CONF_PATH;
-import static org.apache.slider.api.OptionKeys.INTERNAL_SNAPSHOT_CONF_PATH;
-import static org.apache.slider.api.OptionKeys.ZOOKEEPER_HOSTS;
-import static org.apache.slider.api.OptionKeys.ZOOKEEPER_PATH;
-import static org.apache.slider.api.OptionKeys.ZOOKEEPER_QUORUM;
-import static org.apache.slider.api.RoleKeys.ROLE_PREFIX;
-import static org.apache.slider.common.SliderKeys.COMPONENT_AM;
-import static org.apache.slider.common.SliderKeys.COMPONENT_SEPARATOR;
-import static org.apache.slider.common.SliderKeys.COMPONENT_TYPE_EXTERNAL_APP;
-import static org.apache.slider.common.SliderKeys.COMPONENT_TYPE_KEY;
-import static org.apache.slider.common.tools.SliderUtils.isClusternameValid;
-
-/**
- * Build up the instance of a cluster.
- */
-public class InstanceBuilder {
-
-  private final String clustername;
-  private final Configuration conf;
-  private final CoreFileSystem coreFS;
-  private final InstancePaths instancePaths;
-  private AggregateConf instanceDescription;
-  private Map<String, Path> externalAppDefs = new HashMap<>();
-  private TreeSet<Integer> priorities = new TreeSet<>();
-
-  private static final Logger log =
-    LoggerFactory.getLogger(InstanceBuilder.class);
-
-  public InstanceBuilder(CoreFileSystem coreFileSystem,
-                         Configuration conf,
-                         String clustername) {
-    this.clustername = clustername;
-    this.conf = conf;
-    this.coreFS = coreFileSystem;
-    Path instanceDir = coreFileSystem.buildClusterDirPath(clustername);
-    instancePaths = new InstancePaths(instanceDir);
-
-  }
-
-  public AggregateConf getInstanceDescription() {
-    return instanceDescription;
-  }
-
-  public InstancePaths getInstancePaths() {
-    return instancePaths;
-  }
-
-
-  @Override
-  public String toString() {
-    return "Builder working with " + clustername + " at " +
-           getInstanceDir();
-  }
-
-  private Path getInstanceDir() {
-    return instancePaths.instanceDir;
-  }
-
-  /**
-   * Initial part of the build process
-   * @param instanceConf
-   * @param provider
-   */
-  public void init(
-    String provider,
-    AggregateConf instanceConf) {
-
-
-    this.instanceDescription = instanceConf;
-
-    //internal is extended
-    ConfTreeOperations internalOps = instanceConf.getInternalOperations();
-
-    Map<String, Object> md = internalOps.getConfTree().metadata;
-    long time = System.currentTimeMillis();
-    md.put(StatusKeys.INFO_CREATE_TIME_HUMAN, SliderUtils.toGMTString(time));
-    md.put(StatusKeys.INFO_CREATE_TIME_MILLIS, Long.toString(time));
-
-    MapOperations globalOptions = internalOps.getGlobalOptions();
-    BuildHelper.addBuildMetadata(md, "create");
-    SliderUtils.setInfoTime(md,
-        StatusKeys.INFO_CREATE_TIME_HUMAN,
-        StatusKeys.INFO_CREATE_TIME_MILLIS,
-        System.currentTimeMillis());
-
-    internalOps.set(INTERNAL_AM_TMP_DIR,
-                    instancePaths.tmpPathAM.toUri());
-    internalOps.set(INTERNAL_TMP_DIR,
-                    instancePaths.tmpPath.toUri());
-    internalOps.set(INTERNAL_SNAPSHOT_CONF_PATH,
-                    instancePaths.snapshotConfPath.toUri());
-    internalOps.set(INTERNAL_GENERATED_CONF_PATH,
-                    instancePaths.generatedConfPath.toUri());
-    internalOps.set(INTERNAL_DATA_DIR_PATH,
-                    instancePaths.dataPath.toUri());
-    internalOps.set(INTERNAL_APPDEF_DIR_PATH,
-                    instancePaths.appDefPath.toUri());
-    internalOps.set(INTERNAL_ADDONS_DIR_PATH,
-                    instancePaths.addonsPath.toUri());
-
-
-    internalOps.set(InternalKeys.INTERNAL_PROVIDER_NAME, provider);
-    internalOps.set(OptionKeys.APPLICATION_NAME, clustername);
-
-  }
-
-  /**
-   * Set the queue used to start the application
-   * @param queue
-   * @throws BadConfigException
-   */
-  public void setQueue(String queue) throws BadConfigException {
-    if(queue != null) {
-      if(SliderUtils.isUnset(queue)) {
-        throw new BadConfigException("Queue value cannot be empty.");
-      }
-
-      instanceDescription.getInternalOperations().set(INTERNAL_QUEUE, queue);
-    }
-  }
-
-  /**
-   * Set up the image/app home path
-   * @param appImage   path in the DFS to the tar file
-   * @param appHomeDir other strategy: home dir
-   * @throws BadConfigException if both are found
-   */
-  public void setImageDetailsIfAvailable(
-      Path appImage,
-      String appHomeDir) throws BadConfigException {
-    boolean appHomeUnset = SliderUtils.isUnset(appHomeDir);
-    // App home or image
-    if (appImage != null) {
-      if (!appHomeUnset) {
-        // both args have been set
-        throw new BadConfigException(
-            ErrorStrings.E_BOTH_IMAGE_AND_HOME_DIR_SPECIFIED);
-      }
-      
instanceDescription.getInternalOperations().set(INTERNAL_APPLICATION_IMAGE_PATH,
-                                                      appImage.toUri());
-    } else {
-      // the alternative is app home, which now MUST be set
-      if (!appHomeUnset) {
-        
instanceDescription.getInternalOperations().set(INTERNAL_APPLICATION_HOME,
-                                                        appHomeDir);
-      }
-    }
-  }
-
-
-  /**
-   * Propagate any critical principals from the current site config down to 
the HBase one.
-   */
-  public void propagatePrincipals() {
-    String dfsPrincipal = 
conf.get(SliderXmlConfKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY);
-    if (dfsPrincipal != null) {
-      String siteDfsPrincipal = OptionKeys.SITE_XML_PREFIX +
-                                
SliderXmlConfKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY;
-      instanceDescription.getAppConfOperations().set(siteDfsPrincipal, 
dfsPrincipal);
-    }
-  }
-
-  public void propagateFilename() {
-    String fsDefaultName = conf.get(
-      CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY);
-    instanceDescription.getAppConfOperations().set(OptionKeys.SITE_XML_PREFIX +
-                                            
CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY,
-                                            fsDefaultName
-                                           );
-
-    instanceDescription.getAppConfOperations().set(OptionKeys.SITE_XML_PREFIX +
-                                            
SliderXmlConfKeys.FS_DEFAULT_NAME_CLASSIC,
-                                            fsDefaultName
-                                           );
-
-  }
-
-
-  public void takeSnapshotOfConfDir(Path appconfdir) throws
-                                                     IOException,
-                                                     BadConfigException,
-                                                     BadClusterStateException {
-    FileSystem srcFS = FileSystem.get(appconfdir.toUri(), conf);
-    if (!srcFS.isDirectory(appconfdir)) {
-      throw new BadConfigException(
-        "Source Configuration directory is not valid: %s",
-        appconfdir.toString());
-    }
-    // bulk copy
-    FsPermission clusterPerms = coreFS.getInstanceDirectoryPermissions();
-    // first the original from wherever to the DFS
-    SliderUtils.copyDirectory(conf, appconfdir, instancePaths.snapshotConfPath,
-        clusterPerms);
-  }
-
-
-  private Set<String> getExternalComponents(ConfTreeOperations ops)
-      throws BadConfigException {
-    Set<String> externalComponents = new HashSet<>();
-    if (ops.getGlobalOptions().containsKey(COMPONENT_TYPE_KEY)) {
-      throw new BadConfigException(COMPONENT_TYPE_KEY + " must be " +
-          "specified per-component, not in global");
-    }
-
-    for (Entry<String, Map<String, String>> entry : ops.getComponents()
-        .entrySet()) {
-      if (COMPONENT_AM.equals(entry.getKey())) {
-        continue;
-      }
-      Map<String, String> options = entry.getValue();
-      if (COMPONENT_TYPE_EXTERNAL_APP.equals(options.get(COMPONENT_TYPE_KEY))) 
{
-        externalComponents.add(entry.getKey());
-      }
-    }
-    return externalComponents;
-  }
-
-  private void mergeExternalComponent(ConfTreeOperations ops,
-      ConfTreeOperations externalOps, String externalComponent,
-      Integer priority) throws BadConfigException {
-    for (String subComponent : externalOps.getComponentNames()) {
-      if (COMPONENT_AM.equals(subComponent)) {
-        continue;
-      }
-      String prefix = externalComponent + COMPONENT_SEPARATOR;
-      log.debug("Merging options for {} into {}", subComponent,
-          prefix + subComponent);
-      MapOperations subComponentOps = ops.getOrAddComponent(
-          prefix + subComponent);
-      if (priority == null) {
-        SliderUtils.mergeMaps(subComponentOps,
-            ops.getComponent(externalComponent).options);
-        subComponentOps.remove(COMPONENT_TYPE_KEY);
-      }
-
-      SliderUtils.mergeMapsIgnoreDuplicateKeysAndPrefixes(subComponentOps,
-          externalOps.getComponent(subComponent),
-          SliderKeys.COMPONENT_KEYS_TO_SKIP);
-
-      // add prefix to existing prefix
-      String existingPrefix = subComponentOps.get(ROLE_PREFIX);
-      if (existingPrefix != null) {
-        if (!subComponent.startsWith(existingPrefix)) {
-          throw new BadConfigException("Bad prefix " + existingPrefix +
-              " for subcomponent " + subComponent + " of " + 
externalComponent);
-        }
-        prefix = prefix + existingPrefix;
-      }
-      subComponentOps.set(ROLE_PREFIX, prefix);
-
-      // adjust priority
-      if (priority != null) {
-        subComponentOps.put(ResourceKeys.COMPONENT_PRIORITY,
-            Integer.toString(priority));
-        priorities.add(priority);
-        priority++;
-      }
-    }
-  }
-
-  private int getNextPriority() {
-    if (priorities.isEmpty()) {
-      return 1;
-    } else {
-      return priorities.last() + 1;
-    }
-  }
-
-  public void resolve()
-      throws BadConfigException, IOException, BadClusterStateException {
-    ConfTreeOperations appConf = instanceDescription.getAppConfOperations();
-    ConfTreeOperations resources = instanceDescription.getResourceOperations();
-
-    for (Entry<String, Map<String, String>> entry : resources.getComponents()
-        .entrySet()) {
-      if (COMPONENT_AM.equals(entry.getKey())) {
-        continue;
-      }
-      if (entry.getValue().containsKey(ResourceKeys.COMPONENT_PRIORITY)) {
-        priorities.add(Integer.parseInt(entry.getValue().get(
-            ResourceKeys.COMPONENT_PRIORITY)));
-      }
-    }
-
-    Set<String> externalComponents = getExternalComponents(appConf);
-    if (!externalComponents.isEmpty()) {
-      log.info("Found external components {}", externalComponents);
-    }
-
-    for (String component : externalComponents) {
-      if (!isClusternameValid(component)) {
-        throw new BadConfigException(component + " is not a valid external " +
-            "component");
-      }
-      Path componentClusterDir = coreFS.buildClusterDirPath(component);
-      try {
-        coreFS.verifyPathExists(componentClusterDir);
-      } catch (IOException e) {
-        throw new BadConfigException("external component " + component +
-            " doesn't exist");
-      }
-      AggregateConf componentConf = new AggregateConf();
-      ConfPersister persister = new ConfPersister(coreFS, componentClusterDir);
-      try {
-        persister.load(componentConf);
-      } catch (Exception e) {
-        throw new BadConfigException("Couldn't read configuration for " +
-            "external component " + component);
-      }
-
-      ConfTreeOperations componentAppConf = 
componentConf.getAppConfOperations();
-      String externalAppDef = componentAppConf.get(AgentKeys.APP_DEF);
-      if (SliderUtils.isSet(externalAppDef)) {
-        Path newAppDef = new Path(coreFS.buildAppDefDirPath(clustername),
-            component + "_" + SliderKeys.DEFAULT_APP_PKG);
-        componentAppConf.set(AgentKeys.APP_DEF, newAppDef);
-        componentAppConf.append(AgentKeys.APP_DEF_ORIGINAL, externalAppDef);
-        log.info("Copying external appdef {} to {} for {}", externalAppDef,
-            newAppDef, component);
-        externalAppDefs.put(externalAppDef, newAppDef);
-        externalAppDef = newAppDef.toString();
-      }
-
-      for (String rcomp : componentConf.getResourceOperations()
-          .getComponentNames()) {
-        if (COMPONENT_AM.equals(rcomp)) {
-          continue;
-        }
-        log.debug("Adding component {} to appConf for {}", rcomp, component);
-        componentAppConf.getOrAddComponent(rcomp);
-      }
-      componentConf.resolve();
-
-      for (String rcomp : componentConf.getResourceOperations()
-          .getComponentNames()) {
-        if (COMPONENT_AM.equals(rcomp)) {
-          continue;
-        }
-        String componentAppDef = componentAppConf.getComponentOpt(
-            rcomp, AgentKeys.APP_DEF, null);
-        if (SliderUtils.isUnset(componentAppDef) ||
-            componentAppDef.equals(externalAppDef)) {
-          continue;
-        }
-        if (externalAppDefs.containsKey(componentAppDef)) {
-          log.info("Using external appdef {} for {}",
-              externalAppDefs.get(componentAppDef), rcomp);
-        } else {
-          String existingPrefix = componentAppConf.getComponentOpt(rcomp,
-              ROLE_PREFIX, null);
-          if (SliderUtils.isUnset(existingPrefix)) {
-            existingPrefix = "";
-          } else {
-            existingPrefix = COMPONENT_SEPARATOR + SliderUtils.trimPrefix(
-                existingPrefix);
-          }
-          Path newAppDef = new Path(coreFS.buildAppDefDirPath(clustername),
-              component + existingPrefix + "_" + SliderKeys.DEFAULT_APP_PKG);
-          externalAppDefs.put(componentAppDef, newAppDef);
-          log.info("Copying external appdef {} to {} for {}", componentAppDef,
-              newAppDef, component + COMPONENT_SEPARATOR + rcomp);
-        }
-        componentAppConf.setComponentOpt(rcomp, AgentKeys.APP_DEF,
-            externalAppDefs.get(componentAppDef).toString());
-        componentAppConf.appendComponentOpt(rcomp,
-            AgentKeys.APP_DEF_ORIGINAL, componentAppDef);
-      }
-      Set<Path> newAppDefs = new HashSet<>();
-      newAppDefs.addAll(externalAppDefs.values());
-      if (newAppDefs.size() != externalAppDefs.size()) {
-        throw new IllegalStateException("Values repeat in external appdefs "
-            + externalAppDefs);
-      }
-      log.info("External appdefs after {}: {}", component, externalAppDefs);
-
-      mergeExternalComponent(appConf, componentAppConf, component, null);
-      mergeExternalComponent(resources, componentConf.getResourceOperations(),
-          component, getNextPriority());
-    }
-  }
-
-
-  /**
-   * Persist this
-   * @param appconfdir conf dir
-   * @param overwrite if true, we don't need to create cluster dir
-   * @throws IOException
-   * @throws SliderException
-   * @throws LockAcquireFailedException
-   */
-  public void persist(Path appconfdir, boolean overwrite) throws
-      IOException,
-      SliderException,
-      LockAcquireFailedException {
-    if (!overwrite) {
-      coreFS.createClusterDirectories(instancePaths);
-    }
-    ConfPersister persister =
-      new ConfPersister(coreFS, getInstanceDir());
-    ConfDirSnapshotAction action = null;
-    if (appconfdir != null) {
-      action = new ConfDirSnapshotAction(appconfdir);
-    }
-    persister.save(instanceDescription, action);
-    for (Entry<String, Path> appDef : externalAppDefs.entrySet()) {
-      SliderUtils.copy(conf, new Path(appDef.getKey()), appDef.getValue());
-    }
-  }
-
-  /**
-   * Add the ZK paths to the application options. 
-   * 
-   * @param zkBinding ZK binding
-   */
-  public void addZKBinding(ZKPathBuilder zkBinding) throws BadConfigException {
-
-    String quorum = zkBinding.getAppQuorum();
-    if (SliderUtils.isSet(quorum)) {
-      MapOperations globalAppOptions =
-          instanceDescription.getAppConfOperations().getGlobalOptions();
-      globalAppOptions.put(ZOOKEEPER_PATH, zkBinding.getAppPath());
-      globalAppOptions.put(ZOOKEEPER_QUORUM, quorum);
-      globalAppOptions.put(ZOOKEEPER_HOSTS,
-          ZookeeperUtils.convertToHostsOnlyList(quorum));
-    }
-  }
-
-  /**
-   * Class to execute the snapshotting of the configuration directory
-   * while the persistence lock is held. 
-   * 
-   * This guarantees that there won't be an attempt to launch a cluster
-   * until the snapshot is complete -as the write lock won't be released
-   * until afterwards.
-   */
-  private class ConfDirSnapshotAction implements LockHeldAction {
-
-    private final Path appconfdir;
-
-    private ConfDirSnapshotAction(Path appconfdir) {
-      this.appconfdir = appconfdir;
-    }
-
-    @Override
-    public void execute() throws IOException, SliderException {
-
-      takeSnapshotOfConfDir(appconfdir);
-    }
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/build/InstanceIO.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/build/InstanceIO.java 
b/slider-core/src/main/java/org/apache/slider/core/build/InstanceIO.java
deleted file mode 100644
index 3a8f805..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/build/InstanceIO.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.build;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.slider.common.tools.CoreFileSystem;
-import org.apache.slider.core.conf.AggregateConf;
-import org.apache.slider.core.exceptions.BadClusterStateException;
-import org.apache.slider.core.exceptions.SliderException;
-import org.apache.slider.core.persist.ConfPersister;
-import org.apache.slider.core.persist.LockAcquireFailedException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-public class InstanceIO {
-  protected static final Logger log =
-    LoggerFactory.getLogger(InstanceIO.class);
-
-  /**
-   * Load in an instance definition -but do not resolve it
-   * @param sliderFileSystem filesystem
-   * @param clusterDirectory CD
-   * @return the unresolved aggregate configuration
-   * @throws IOException
-   * @throws SliderException
-   * @throws BadClusterStateException if a lock could not be acquired
-   */
-  public static AggregateConf loadInstanceDefinitionUnresolved(
-    CoreFileSystem sliderFileSystem,
-    Path clusterDirectory)
-      throws IOException, SliderException {
-    AggregateConf instanceDefinition = new AggregateConf();
-    ConfPersister persister =
-      new ConfPersister(sliderFileSystem, clusterDirectory);
-    try {
-      persister.load(instanceDefinition);
-    } catch (LockAcquireFailedException e) {
-      log.debug("Lock acquisition failure of {}", clusterDirectory, e);
-
-      throw new BadClusterStateException(
-        "Application at %s is locked for reading",
-        clusterDirectory.toString());
-    }
-    return instanceDefinition;
-  }
-
-
-  /**
-   * Update a persisted instance definition
-   * @param coreFS filesystem
-   * @param dir directory to load from
-   * @param instanceDefinition instance definition to save do
-   * @throws SliderException
-   * @throws IOException
-   * @throws LockAcquireFailedException
-   */
-  public static void saveInstanceDefinition(CoreFileSystem coreFS,
-      Path dir,
-      AggregateConf instanceDefinition)
-      throws SliderException, IOException, LockAcquireFailedException {
-    ConfPersister persister =
-      new ConfPersister(coreFS, dir);
-    persister.save(instanceDefinition, null);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/AbstractInputPropertiesValidator.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/AbstractInputPropertiesValidator.java
 
b/slider-core/src/main/java/org/apache/slider/core/conf/AbstractInputPropertiesValidator.java
deleted file mode 100644
index 336b4dc..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/conf/AbstractInputPropertiesValidator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.slider.core.conf;
-
-import org.apache.slider.core.exceptions.BadConfigException;
-
-/**
- *
- */
-public abstract class AbstractInputPropertiesValidator implements 
InputPropertiesValidator{
-
-  abstract void validatePropertyNamePrefix(String key) throws 
BadConfigException;
-
-  public void validate(ConfTreeOperations props)
-      throws BadConfigException {
-    validateGlobalProperties(props);
-    validateComponentProperties(props);
-
-  }
-
-  protected void validateComponentProperties(ConfTreeOperations props)
-      throws BadConfigException {
-    for (String compName : props.getComponentNames()) {
-      MapOperations mo = props.getComponent(compName);
-      if (mo == null) continue;
-      for (String key : mo.keySet()) {
-        validatePropertyNamePrefix(key);
-      }
-    }
-  }
-
-  abstract void validateGlobalProperties(ConfTreeOperations props)
-      throws BadConfigException;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/AggregateConf.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/AggregateConf.java 
b/slider-core/src/main/java/org/apache/slider/core/conf/AggregateConf.java
deleted file mode 100644
index 18c3156..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/conf/AggregateConf.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.conf;
-
-import org.apache.commons.lang.RandomStringUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.slider.common.SliderKeys;
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import java.io.IOException;
-
-/**
- * Aggregate Configuration.
- *
- * It is serializable to JSON
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public final class AggregateConf {
-
-  private String name;
-  private ConfTree resources;
-  private ConfTree internal;
-  private ConfTree appConf;
-
-  private ConfTreeOperations resourceOperations;
-  private ConfTreeOperations appConfOperations;
-  private ConfTreeOperations internalOperations;
-
-  private String passphrase;
-
-  public AggregateConf() {
-    this(new ConfTree(), new ConfTree(), new ConfTree());
-  }
-
-  public AggregateConf(String name) {
-    this(new ConfTree(), new ConfTree(), new ConfTree());
-    this.name = name;
-  }
-
-  public AggregateConf(ConfTree resources,
-                       ConfTree appConf,
-                       ConfTree internal) {
-    setResources(resources);
-    setAppConf(appConf);
-    setInternal(internal);
-  }
-
-  /**
-   * Take a snapshot of the configuration
-   * @param instanceDefinition source
-   * @throws IOException marshalling/copying problems
-   */
-  public AggregateConf(AggregateConf instanceDefinition) throws IOException {
-    ConfTreeOperations resourcesSnapshot =
-        ConfTreeOperations.fromInstance(instanceDefinition.getResources());
-    ConfTreeOperations appConfSnapshot =
-        ConfTreeOperations.fromInstance(instanceDefinition.getAppConf());
-    ConfTreeOperations internalsSnapshot =
-        ConfTreeOperations.fromInstance(instanceDefinition.getInternal());
-    //build a new aggregate from the snapshots
-    setResources(resourcesSnapshot.confTree);
-    setAppConf(appConfSnapshot.confTree);
-    setInternal(internalsSnapshot.confTree);
-  }
-  
-  public void setResources(ConfTree resources) {
-    this.resources = resources;
-    resourceOperations = new ConfTreeOperations(resources);
-  }
-
-  public void setAppConf(ConfTree appConf) {
-    this.appConf = appConf;
-    appConfOperations = new ConfTreeOperations(appConf);
-  }
-
-  public ConfTree getInternal() {
-    return internal;
-  }
-
-  public void setInternal(ConfTree internal) {
-    this.internal = internal;
-    internalOperations = new ConfTreeOperations(internal);
-  }
-
-  public ConfTree getResources() {
-    return resources;
-  }
-
-  public ConfTree getAppConf() {
-    return appConf;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  @JsonIgnore
-  public ConfTreeOperations getResourceOperations() {
-    return resourceOperations;
-  }
-
-
-  @JsonIgnore
-  public ConfTreeOperations getAppConfOperations() {
-    return appConfOperations;
-  }
-
-  @JsonIgnore
-  public ConfTreeOperations getInternalOperations() {
-    return internalOperations;
-  }
-
-  /**
-   * predicate to query if all sections have data structures
-   * @return true if every section is non-null
-   */
-  @JsonIgnore
-  public boolean isComplete() {
-    return resources != null && appConf != null && internal != null;
-  }
-
-  public void validate() throws BadConfigException {
-    if (!isComplete()) {
-      throw new BadConfigException("Incomplete instance %s", this);
-    }
-    resourceOperations.validate();
-    internalOperations.validate();
-    appConfOperations.validate();
-  }
-
-  public void resolve() throws BadConfigException {
-    validate();
-    resourceOperations.resolve();
-    internalOperations.resolve();
-    appConfOperations.resolve();
-  }
-
-  @JsonIgnore
-  public String getPassphrase() {
-    if (passphrase == null) {
-      passphrase = RandomStringUtils.randomAlphanumeric(
-          Integer.valueOf(SliderKeys.PASS_LEN));
-    }
-
-    return passphrase;
-  }
-
-  /**
-   * Is this app package versioned?
-   * 
-   * @return true if {@link SliderKeys#APP_VERSION} was set in the app config
-   *         provided during creation of this app
-   * @since 0.80.0-incubating
-   */
-  public boolean isVersioned() {
-    return StringUtils.isNotEmpty(getAppConfOperations().getGlobalOptions()
-        .get(SliderKeys.APP_VERSION));
-  }
-
-  /**
-   * string operation includes all the inner conftrees
-   * @return a string description
-   */
-  @Override
-  public String toString() {
-    final StringBuilder sb =
-      new StringBuilder("{");
-    sb.append(",\n\"internal\": ").append(internal);
-    sb.append(",\n\"resources\": ").append(resources);
-    sb.append(",\n\"appConf\" :").append(appConf);
-    sb.append('}');
-    return sb.toString();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/ConfTree.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/ConfTree.java 
b/slider-core/src/main/java/org/apache/slider/core/conf/ConfTree.java
deleted file mode 100644
index be7c56f..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/conf/ConfTree.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.conf;
-
-import org.apache.slider.core.persist.ConfTreeSerDeser;
-import org.apache.slider.core.persist.PersistKeys;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A conf tree represents one of the configuration trees
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
-public final class ConfTree {
-
-  /**
-   * Size of an initial map. This is kept low so the cost of having
-   * many conf trees in a process is low.
-   */
-  public static final int INITAL_MAP_CAPACITY = 3;
-
-  protected static final Logger
-    log = LoggerFactory.getLogger(ConfTree.class);
-
-  /**
-   * version counter
-   */
-  public String schema = PersistKeys.SCHEMA;
-
-  /**
-   * Metadata
-   */
-  public Map<String, Object> metadata = new HashMap<>(INITAL_MAP_CAPACITY);
-
-
-  /**
-   * Global options
-   */
-  public Map<String, String> global =
-    new HashMap<>(INITAL_MAP_CAPACITY);
-
-
-  /**
-   * Credentials
-   */
-  public Map<String, List<String>> credentials =
-      new HashMap<>(INITAL_MAP_CAPACITY);
-
-  /**
-   * Role options, 
-   * role -> option -> value
-   */
-  public Map<String, Map<String, String>> components =
-    new HashMap<>(INITAL_MAP_CAPACITY);
-
-
-  /**
-   * Shallow clone
-   * @return a shallow clone
-   * @throws CloneNotSupportedException
-   */
-  @Override
-  public Object clone() throws CloneNotSupportedException {
-    return super.clone();
-  }
-
-  @Override
-  public String toString() {
-    try {
-      return toJson();
-    } catch (Exception e) {
-      log.warn("Failed to convert to JSON ", e);
-      return super.toString();
-    }
-  }
-
-  /**
-   * Convert to a JSON string
-   * @return a JSON string description
-   * @throws IOException Problems mapping/writing the object
-   */
-  public String toJson() throws IOException,
-                                JsonGenerationException,
-                                JsonMappingException {
-    return ConfTreeSerDeser.toString(this);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java 
b/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java
deleted file mode 100644
index 526e17d..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.conf;
-
-import org.apache.slider.common.tools.SliderUtils;
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.apache.slider.core.persist.ConfTreeSerDeser;
-import org.apache.slider.core.persist.PersistKeys;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-public class ConfTreeOperations {
-
-  public final ConfTree confTree;
-  private final MapOperations globalOptions;
-
-  protected static final Logger
-    log = LoggerFactory.getLogger(ConfTreeOperations.class);
-
-
-  public ConfTreeOperations(ConfTree confTree) {
-    assert confTree != null : "null tree";
-    assert confTree.components != null : "null tree components";
-    this.confTree = confTree;
-    globalOptions = new MapOperations("global", confTree.global);
-  }
-
-  /**
-   * Get the underlying conf tree
-   * @return the tree
-   */
-  public ConfTree getConfTree() {
-    return confTree;
-  }
-
-  /**
-   * Validate the configuration
-   * @throws BadConfigException
-   */
-  public void validate() throws BadConfigException {
-    validate(null);
-  }
-
-  /**
-   * Validate the configuration
-   * @param validator a provided properties validator
-   * @throws BadConfigException
-   */
-  public void validate(InputPropertiesValidator validator) throws 
BadConfigException {
-    String version = confTree.schema;
-    if (version == null) {
-      throw new BadConfigException("'version' undefined");
-    }
-    if (!PersistKeys.SCHEMA.equals(version)) {
-      throw new BadConfigException(
-          "version %s incompatible with supported version %s",
-          version,
-          PersistKeys.SCHEMA);
-    }
-    if (validator != null) {
-      validator.validate(this);
-    }
-  }
-
-  /**
-   * Resolve a ConfTree by mapping all global options into each component
-   * -if there is none there already
-   */
-  public void resolve() {
-    for (Map.Entry<String, Map<String, String>> comp : 
confTree.components.entrySet()) {
-      mergeInGlobal(comp.getValue());
-    }
-  }
-
-  /**
-   * Merge any options
-   * @param component dest values
-   */
-  public void mergeInGlobal(Map<String, String> component) {
-    SliderUtils.mergeMapsIgnoreDuplicateKeys(component, confTree.global);
-  }
-
-  /**
-   * Get operations on the global set
-   * @return a wrapped map
-   */
-  public MapOperations getGlobalOptions() {
-    return globalOptions;
-  }
-
-
-  /**
-   * look up a component and return its options
-   * @param component component name
-   * @return component mapping or null
-   */
-  public MapOperations getComponent(String component) {
-    Map<String, String> instance = confTree.components.get(component);
-    if (instance != null) {
-      return new MapOperations(component, instance);
-    }
-    return null;
-  }
-
-  /**
-   * look up a component and return its options with the specified replacements
-   * @param component component name
-   * @param replacementOptions replacement options
-   * @return component mapping or null
-   */
-  public MapOperations getComponent(String component, Map<String,String>
-      replacementOptions) {
-    Map<String, String> instance = confTree.components.get(component);
-    if (instance != null) {
-      Map<String, String> newInstance = new HashMap<>();
-      newInstance.putAll(instance);
-      newInstance.putAll(replacementOptions);
-      return new MapOperations(component, newInstance);
-    }
-    return null;
-  }
-
-  /**
-   * Get at the underlying component map
-   * @return a map of components. This is the raw ConfTree data structure
-   */
-  public Map<String, Map<String, String>> getComponents() {
-    return confTree.components;
-  }
-
-  /**
-   * Get a component -adding it to the components map if
-   * none with that name exists
-   * @param name role
-   * @return role mapping
-   */
-  public MapOperations getOrAddComponent(String name) {
-    MapOperations operations = getComponent(name);
-    if (operations != null) {
-      return operations;
-    }
-    //create a new instances
-    Map<String, String> map = new HashMap<>();
-    confTree.components.put(name, map);
-    return new MapOperations(name, map);
-  }
-
-
-  /*
-   * return the Set of names names
-   */
-  @JsonIgnore
-  public Set<String> getComponentNames() {
-    return new HashSet<String>(confTree.components.keySet());
-  }
-  
-  
-
-  /**
-   * Get a component whose presence is mandatory
-   * @param name component name
-   * @return the mapping
-   * @throws BadConfigException if the name is not there
-   */
-  public MapOperations getMandatoryComponent(String name) throws
-                                                          BadConfigException {
-    MapOperations ops = getComponent(name);
-    if (ops == null) {
-      throw new BadConfigException("Missing component " + name);
-    }
-    return ops;
-  }
-
-  /**
-   * Set a global option, converting it to a string as needed
-   * @param key key
-   * @param value non null value
-   */
-  public void set(String key, Object value) {
-    globalOptions.put(key, value.toString());
-  }
-  /**
-   * get a global option
-   * @param key key
-   * @return value or null
-   * 
-   */
-  public String get(String key) {
-    return globalOptions.get(key);
-  }
-  /**
-   * append to a global option
-   * @param key key
-   * @return value
-   *
-   */
-  public String append(String key, String value) {
-    if (SliderUtils.isUnset(value)) {
-      return null;
-    }
-    if (globalOptions.containsKey(key)) {
-      globalOptions.put(key, globalOptions.get(key) + "," + value);
-    } else {
-      globalOptions.put(key, value);
-    }
-    return globalOptions.get(key);
-  }
-
-  /**
-   * Propagate all global keys matching a prefix
-   * @param src source
-   * @param prefix prefix
-   */
-  public void propagateGlobalKeys(ConfTree src, String prefix) {
-    Map<String, String> global = src.global;
-    for (Map.Entry<String, String> entry : global.entrySet()) {
-      String key = entry.getKey();
-      if (key.startsWith(prefix)) {
-        set(key, entry.getValue());
-      }
-    }
-  }
-
-  /**
-   * Propagate all global keys matching a prefix
-   * @param src source
-   * @param prefix prefix
-   */
-  public void propagateGlobalKeys(ConfTreeOperations src, String prefix) {
-    propagateGlobalKeys(src.confTree, prefix);
-  }
-
-  /**
-   * Merge the map of a single component
-   * @param component component name
-   * @param map map to merge
-   */
-  public void mergeSingleComponentMap(String component, Map<String, String> 
map) {
-    MapOperations comp = getOrAddComponent(component);
-    comp.putAll(map);
-  }
-  /**
-   * Merge the map of a single component
-   * @param component component name
-   * @param map map to merge
-   */
-  public void mergeSingleComponentMapPrefix(String component,
-                                            Map<String, String> map,
-                                            String prefix,
-                                            boolean overwrite) {
-    boolean needsMerge = false;
-    for (Map.Entry<String, String> entry : map.entrySet()) {
-      String key = entry.getKey();
-      if (key.startsWith(prefix)) {
-        needsMerge = true;
-        break;
-      }
-    }
-    if (!needsMerge) {
-      return;
-    }
-    MapOperations comp = getOrAddComponent(component);
-    comp.mergeMapPrefixedKeys(map,prefix, overwrite);
-  }
-
-  /**
-   * Merge in components
-   * @param commandOptions component options on the CLI
-   */
-  public void mergeComponents(Map<String, Map<String, String>> commandOptions) 
{
-    for (Map.Entry<String, Map<String, String>> entry : 
commandOptions.entrySet()) {
-      mergeSingleComponentMap(entry.getKey(), entry.getValue());
-    }
-  }
-
-  /**
-   * Merge in components
-   * @param commandOptions component options on the CLI
-   */
-  public void mergeComponentsPrefix(Map<String,
-    Map<String, String>> commandOptions,
-                                    String prefix,
-                                    boolean overwrite) {
-    for (Map.Entry<String, Map<String, String>> entry : 
commandOptions.entrySet()) {
-      mergeSingleComponentMapPrefix(entry.getKey(), entry.getValue(), prefix, 
overwrite);
-    }
-  }
-
-  /**
-   * Merge in another tree -no overwrites of global or conf data
-   * (note that metadata does a naive putAll merge/overwrite)
-   * @param that the other tree
-   */
-  public void mergeWithoutOverwrite(ConfTree that) {
-
-    getGlobalOptions().mergeWithoutOverwrite(that.global);
-    confTree.metadata.putAll(that.metadata);
-    confTree.credentials.putAll(that.credentials);
-
-    for (Map.Entry<String, Map<String, String>> entry : 
that.components.entrySet()) {
-      MapOperations comp = getOrAddComponent(entry.getKey());
-      comp.mergeWithoutOverwrite(entry.getValue());
-    }
-  }
-  
-  /**
-   * Merge in another tree with overwrites
-   * @param that the other tree
-   */
-  public void merge(ConfTree that) {
-
-    getGlobalOptions().putAll(that.global);
-    confTree.metadata.putAll(that.metadata);
-    confTree.credentials.putAll(that.credentials);
-
-    for (Map.Entry<String, Map<String, String>> entry : 
that.components.entrySet()) {
-      MapOperations comp = getOrAddComponent(entry.getKey());
-      comp.putAll(entry.getValue());
-    }
-  }
-
-  
-  /**
-   * Load from a resource. The inner conf tree is the loaded data -unresolved
-   * @param resource resource
-   * @return loaded value
-   * @throws IOException load failure
-   */
-  public static ConfTreeOperations fromResource(String resource) throws
-                                                                 IOException {
-    ConfTreeSerDeser confTreeSerDeser = new ConfTreeSerDeser();
-    ConfTreeOperations ops = new ConfTreeOperations(
-       confTreeSerDeser.fromResource(resource) );
-    return ops;      
-  }
-  
-  /**
-   * Load from a resource. The inner conf tree is the loaded data -unresolved
-   * @param resource resource
-   * @return loaded value
-   * @throws IOException load failure
-   */
-  public static ConfTreeOperations fromFile(File resource) throws
-                                                                 IOException {
-    ConfTreeSerDeser confTreeSerDeser = new ConfTreeSerDeser();
-    ConfTreeOperations ops = new ConfTreeOperations(
-       confTreeSerDeser.fromFile(resource) );
-    return ops;
-  }
-
-  /**
-   * Build from an existing instance -which is cloned via JSON ser/deser
-   * @param instance the source instance
-   * @return loaded value
-   * @throws IOException load failure
-   */
-  public static ConfTreeOperations fromInstance(ConfTree instance) throws
-                                                                 IOException {
-    ConfTreeSerDeser confTreeSerDeser = new ConfTreeSerDeser();
-    ConfTreeOperations ops = new ConfTreeOperations(
-       confTreeSerDeser.fromJson(confTreeSerDeser.toJson(instance)) );
-    return ops;
-  }
-
-  /**
-   * Load from a file and merge it in
-   * @param file file
-   * @throws IOException any IO problem
-   * @throws BadConfigException if the file is invalid
-   */
-  public void mergeFile(File file) throws IOException, BadConfigException {
-    mergeFile(file, null);
-  }
-
-  /**
-   * Load from a file and merge it in
-   * @param file file
-   * @param validator properties validator
-   * @throws IOException any IO problem
-   * @throws BadConfigException if the file is invalid
-   */
-  public void mergeFile(File file, InputPropertiesValidator validator) throws 
IOException, BadConfigException {
-    ConfTreeSerDeser confTreeSerDeser = new ConfTreeSerDeser();
-    ConfTree tree = confTreeSerDeser.fromFile(file);
-    ConfTreeOperations ops = new ConfTreeOperations(tree);
-    ops.validate(validator);
-    merge(ops.confTree);
-  }
-
-  @Override
-  public String toString() {
-    return confTree.toString();
-  }
-
-  /**
-   * Convert to a JSON string
-   * @return a JSON string description
-   */
-  public String toJson() throws IOException,
-                                JsonGenerationException,
-                                JsonMappingException {
-    return confTree.toJson();
-  }
-
-  /**
-   * Get a component option
-   * @param name component name
-   * @param option option name
-   * @param defVal default value
-   * @return resolved value
-   */
-  public String getComponentOpt(String name, String option, String defVal) {
-    MapOperations roleopts = getComponent(name);
-    if (roleopts == null) {
-      return defVal;
-    }
-    return roleopts.getOption(option, defVal);
-  }
-
-  /**
-   * Get a component opt; use {@link Integer#decode(String)} so as to take hex
-   * oct and bin values too.
-   *
-   * @param name component name
-   * @param option option name
-   * @param defVal default value
-   * @return parsed value
-   * @throws NumberFormatException if the role could not be parsed.
-   */
-  public int getComponentOptInt(String name, String option, int defVal) {
-    String val = getComponentOpt(name, option, Integer.toString(defVal));
-    return Integer.decode(val);
-  }
-
-  /**
-   * Get a component opt as a boolean using {@link Boolean#valueOf(String)}.
-   *
-   * @param name component name
-   * @param option option name
-   * @param defVal default value
-   * @return parsed value
-   * @throws NumberFormatException if the role could not be parsed.
-   */
-  public boolean getComponentOptBool(String name, String option, boolean 
defVal) {
-    String val = getComponentOpt(name, option, Boolean.toString(defVal));
-    return Boolean.valueOf(val);
-  }
-
-  /**
-   * Set a component option, creating the component if necessary
-   * @param component component name
-   * @param option option name
-   * @param val value
-   */
-  public void setComponentOpt(String component, String option, String val) {
-    Map<String, String> roleopts = getOrAddComponent(component);
-    roleopts.put(option, val);
-  }
-
-  /**
-   * Set an integer role option, creating the role if necessary
-   * @param role role name
-   * @param option option name
-   * @param val integer value
-   */
-  public void setComponentOpt(String role, String option, int val) {
-    setComponentOpt(role, option, Integer.toString(val));
-  }
-  /**
-   * Set a long role option, creating the role if necessary
-   * @param role role name
-   * @param option option name
-   * @param val long value
-   */
-  public void setComponentOpt(String role, String option, long val) {
-    setComponentOpt(role, option, Long.toString(val));
-  }
-
-  /**
-   * append to a component option
-   * @param key key
-   * @return value
-   *
-   */
-  public String appendComponentOpt(String role, String key, String value) {
-    if (SliderUtils.isUnset(value)) {
-      return null;
-    }
-    MapOperations roleopts = getComponent(role);
-    if (roleopts == null) {
-      return null;
-    }
-
-    if (roleopts.containsKey(key)) {
-      roleopts.put(key, roleopts.get(key) + "," + value);
-    } else {
-      roleopts.put(key, value);
-    }
-    return roleopts.get(key);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/InputPropertiesValidator.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/InputPropertiesValidator.java
 
b/slider-core/src/main/java/org/apache/slider/core/conf/InputPropertiesValidator.java
deleted file mode 100644
index 237c240..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/conf/InputPropertiesValidator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.slider.core.conf;
-
-import org.apache.slider.core.exceptions.BadConfigException;
-
-/**
- *
- */
-public interface InputPropertiesValidator {
-  void validate(ConfTreeOperations props) throws BadConfigException;
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/MapOperations.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/MapOperations.java 
b/slider-core/src/main/java/org/apache/slider/core/conf/MapOperations.java
deleted file mode 100644
index 9714a0f..0000000
--- a/slider-core/src/main/java/org/apache/slider/core/conf/MapOperations.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.conf;
-
-import com.google.common.base.Preconditions;
-import org.apache.slider.common.tools.SliderUtils;
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Standard map operations.
- *
- * This delegates the standard map interface to the map passed in,
- * so it can be used to add more actions to the map.
- */
-public class MapOperations implements Map<String, String> {
-  private static final Logger log =
-    LoggerFactory.getLogger(MapOperations.class);
-  public static final String DAYS = ".days";
-  public static final String HOURS = ".hours";
-  public static final String MINUTES = ".minutes";
-  public static final String SECONDS = ".seconds";
-
-  /**
-   * Global options
-   */
-  public final Map<String, String> options;
-
-  public final String name;
-
-  public MapOperations() {
-    options = new HashMap<String, String>();
-    name = "";
-  }
-
-  /**
-   * Create an instance
-   * @param name name
-   * @param options source of options
-   */
-  public MapOperations(String name, Map<String, String> options) {
-    Preconditions.checkArgument(options != null, "null map");
-    this.options = options;
-    this.name = name;
-  }
-
-  /**
-   * Create an instance from an iterative map entry
-   * @param entry entry to work with
-   */
-  public MapOperations(Map.Entry<String, Map<String, String>> entry) {
-    Preconditions.checkArgument(entry != null, "null entry");
-    this.name = entry.getKey();
-    this.options = entry.getValue();
-  }
-
-  /**
-   * Get an option value
-   *
-   * @param key key
-   * @param defVal default value
-   * @return option in map or the default
-   */
-  public String getOption(String key, String defVal) {
-    String val = options.get(key);
-    return val != null ? val : defVal;
-  }
-
-  /**
-   * Get a boolean option
-   *
-   * @param key option key
-   * @param defVal default value
-   * @return option true if the option equals "true", or the default value
-   * if the option was not defined at all.
-   */
-  public Boolean getOptionBool(String key, boolean defVal) {
-    String val = getOption(key, Boolean.toString(defVal));
-    return Boolean.valueOf(val);
-  }
-
-  /**
-   * Get a cluster option or value
-   *
-   * @param key option key
-   * @return the value
-   * @throws BadConfigException if the option is missing
-   */
-
-  public String getMandatoryOption(String key) throws BadConfigException {
-    String val = options.get(key);
-    if (val == null) {
-      if (log.isDebugEnabled()) {
-        log.debug("Missing key {} from config containing {}",
-                  key, this);
-      }
-      String text = "Missing option " + key;
-      if (SliderUtils.isSet(name)) {
-        text += " from set " + name;
-      }
-      throw new BadConfigException(text);
-    }
-    return val;
-  }
-
-  /**
-   * Get an integer option; use {@link Integer#decode(String)} so as to take 
hex
-   * oct and bin values too.
-   *
-   * @param option option name
-   * @param defVal default value
-   * @return parsed value
-   * @throws NumberFormatException if the role could not be parsed.
-   */
-  public int getOptionInt(String option, int defVal) {
-    String val = getOption(option, Integer.toString(defVal));
-    return Integer.decode(val);
-  }
-
-  /**
-   * Get a long option; use {@link Long#decode(String)} so as to take hex
-   * oct and bin values too.
-   *
-   * @param option option name
-   * @param defVal default value
-   * @return parsed value
-   * @throws NumberFormatException
-   */
-  public long getOptionLong(String option, long defVal) {
-    String val = getOption(option, Long.toString(defVal));
-    return Long.decode(val);
-  }
-
-  /**
-   * Get a mandatory integer option; use {@link Integer#decode(String)} so as 
to take hex
-   * oct and bin values too.
-   *
-   * @param option option name
-   * @return parsed value
-   * @throws NumberFormatException if the option could not be parsed.
-   * @throws BadConfigException if the option could not be found
-   */
-  public int getMandatoryOptionInt(String option) throws BadConfigException {
-    getMandatoryOption(option);
-    return getOptionInt(option, 0);
-  }
-
-  /**
-   * Verify that an option is set: that is defined AND non-empty
-   * @param key
-   * @throws BadConfigException
-   */
-  public void verifyOptionSet(String key) throws BadConfigException {
-    if (SliderUtils.isUnset(getOption(key, null))) {
-      throw new BadConfigException("Unset option %s", key);
-    }
-  }
-  
-  public void mergeWithoutOverwrite(Map<String, String> that) {
-    SliderUtils.mergeMapsIgnoreDuplicateKeys(options, that);
-  }
-
-  /**
-   * Merge a map by prefixed keys
-   * @param that the map to merge in
-   * @param prefix prefix to match on
-   * @param overwrite flag to enable overwrite
-   */
-  public void mergeMapPrefixedKeys(Map<String, String> that,
-                                    String prefix,
-                                    boolean overwrite) {
-    for (Map.Entry<String, String> entry : that.entrySet()) {
-      String key = entry.getKey();
-      if (key.startsWith(prefix)) {
-        if (overwrite || get(key) == null) {
-          put(key, entry.getValue());
-        }
-      }
-    }
-  }
-
-  /**
-   * Set a property if it is not already set
-   * @param key key
-   * @param value value
-   */
-  public void putIfUnset(String key, String value) {
-    if (get(key) == null) {
-      put(key, value);
-    }
-  }
-  
-  public void set(String key, Object value) {
-    assert value != null;
-    put(key, value.toString());
-  }
-
-  public int size() {
-    return options.size();
-  }
-
-  public boolean isEmpty() {
-    return options.isEmpty();
-  }
-
-  public boolean containsValue(Object value) {
-    return options.containsValue(value);
-  }
-
-  public boolean containsKey(Object key) {
-    return options.containsKey(key);
-  }
-
-  public String get(Object key) {
-    return options.get(key);
-  }
-
-  public String put(String key, String value) {
-    return options.put(key, value);
-  }
-
-  public String remove(Object key) {
-    return options.remove(key);
-  }
-
-  public void putAll(Map<? extends String, ? extends String> m) {
-    options.putAll(m);
-  }
-
-  public void clear() {
-    options.clear();
-  }
-
-  public Set<String> keySet() {
-    return options.keySet();
-  }
-
-  public Collection<String> values() {
-    return options.values();
-  }
-
-  public Set<Map.Entry<String, String>> entrySet() {
-    return options.entrySet();
-  }
-
-  @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
-  public boolean equals(Object o) {
-    return options.equals(o);
-  }
-
-  @Override
-  public int hashCode() {
-    return options.hashCode();
-  }
-
-  public boolean isSet(String key) {
-    return SliderUtils.isSet(get(key));
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder builder = new StringBuilder();
-    builder.append(name).append("=\n");
-
-    for (Entry<String, String> entry : options.entrySet()) {
-      builder.append("  ")
-             .append(entry.getKey())
-             .append('=')
-             .append(entry.getValue())
-             .append('\n');
-    }
-    return builder.toString();
-  }
-
-  /**
-   * Get the time range of a set of keys
-   * @param basekey base key to which suffix gets applied
-   * @param defDays
-   * @param defHours
-   * @param defMins
-   * @param defSecs
-   * @return the aggregate time range in seconds
-   */
-  public long getTimeRange(String basekey,
-      int defDays,
-      int defHours,
-      int defMins,
-      int defSecs) {
-    Preconditions.checkArgument(basekey != null);
-    int days = getOptionInt(basekey + DAYS, defDays);
-    int hours = getOptionInt(basekey + HOURS, defHours);
-
-    int minutes = getOptionInt(basekey + MINUTES, defMins);
-    int seconds = getOptionInt(basekey + SECONDS, defSecs);
-    // range check
-    Preconditions.checkState(days >= 0 && hours >= 0 && minutes >= 0
-                             && seconds >= 0,
-        "Time range for %s has negative time component %s:%s:%s:%s",
-        basekey, days, hours, minutes, seconds);
-
-    // calculate total time, schedule the reset if expected
-    long totalMinutes = (long) days * 24 * 60 + (long) hours * 24 + minutes;
-    return totalMinutes * 60 + seconds;
-  }
-
-  /**
-   * Get all entries with a specific prefix
-   * @param prefix prefix
-   * @return a prefixed map, possibly empty
-   */
-  public Map<String, String> prefixedWith(String prefix) {
-
-    Map<String, String> prefixed = new HashMap<>(size());
-    for (Entry<String, String> entry: entrySet()) {
-      if (entry.getKey().startsWith(prefix)) {
-        prefixed.put(entry.getKey(), entry.getValue());
-      }
-    }
-    return prefixed;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/ResourcesInputPropertiesValidator.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/ResourcesInputPropertiesValidator.java
 
b/slider-core/src/main/java/org/apache/slider/core/conf/ResourcesInputPropertiesValidator.java
deleted file mode 100644
index 19f6f8d..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/conf/ResourcesInputPropertiesValidator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.slider.core.conf;
-
-import org.apache.slider.api.ResourceKeys;
-import org.apache.slider.core.exceptions.BadConfigException;
-
-/**
- *
- */
-public class ResourcesInputPropertiesValidator
-    extends AbstractInputPropertiesValidator {
-
-  void validatePropertyNamePrefix(String key) throws BadConfigException {
-    if (!key.startsWith("yarn.") && !key.equals(ResourceKeys.UNIQUE_NAMES)) {
-      throw new BadConfigException(
-          "argument %s does not have 'yarn.' prefix", key);
-    }
-  }
-
-  protected void validateGlobalProperties(ConfTreeOperations props)
-      throws BadConfigException {
-    for (String key : props.getGlobalOptions().keySet()) {
-      validatePropertyNamePrefix(key);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/conf/TemplateInputPropertiesValidator.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/conf/TemplateInputPropertiesValidator.java
 
b/slider-core/src/main/java/org/apache/slider/core/conf/TemplateInputPropertiesValidator.java
deleted file mode 100644
index aad2757..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/conf/TemplateInputPropertiesValidator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.slider.core.conf;
-
-import org.apache.slider.core.exceptions.BadConfigException;
-
-/**
- *
- */
-public class TemplateInputPropertiesValidator
-    extends AbstractInputPropertiesValidator {
-
-  void validatePropertyNamePrefix(String key) throws BadConfigException {
-    if (key.startsWith("yarn.")) {
-      throw new BadConfigException(
-          "argument %s has 'yarn.' prefix - this is not allowed in templates", 
key);
-    }
-  }
-
-  @Override
-  void validateGlobalProperties(ConfTreeOperations props) {
-    // do nothing
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/exceptions/BadClusterStateException.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/BadClusterStateException.java
 
b/slider-core/src/main/java/org/apache/slider/core/exceptions/BadClusterStateException.java
deleted file mode 100644
index e73ce57..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/BadClusterStateException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.exceptions;
-
-
-/**
- * The system is in a bad state
- */
-public class BadClusterStateException extends SliderException {
-  public BadClusterStateException(String message,
-                                  Object... args) {
-    super(EXIT_BAD_STATE, message, args);
-  }
-
-  public BadClusterStateException(Throwable throwable,
-                                  String message, Object... args) {
-    super(EXIT_BAD_STATE, throwable, message, args);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/exceptions/BadCommandArgumentsException.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/BadCommandArgumentsException.java
 
b/slider-core/src/main/java/org/apache/slider/core/exceptions/BadCommandArgumentsException.java
deleted file mode 100644
index 0d5d686..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/BadCommandArgumentsException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.slider.core.exceptions;
-
-public class BadCommandArgumentsException extends SliderException {
-  public BadCommandArgumentsException(String s, Object... args) {
-    super(EXIT_COMMAND_ARGUMENT_ERROR, s, args);
-  }
-
-  public BadCommandArgumentsException(Throwable throwable, String message,
-                                      Object... args) {
-    super(EXIT_COMMAND_ARGUMENT_ERROR, throwable, message, args);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/exceptions/BadConfigException.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/BadConfigException.java
 
b/slider-core/src/main/java/org/apache/slider/core/exceptions/BadConfigException.java
deleted file mode 100644
index 65a8ea8..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/BadConfigException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.slider.core.exceptions;
-
-/**
- * An exception to raise on a bad configuration
- */
-public class BadConfigException extends SliderException {
-
-  public BadConfigException(String s) {
-    super(EXIT_BAD_CONFIGURATION, s);
-  }
-
-  public BadConfigException(String message, Object... args) {
-    super(EXIT_BAD_CONFIGURATION, message, args);
-  }
-
-  public BadConfigException(
-                            Throwable throwable,
-                            String message, Object... args) {
-    super(EXIT_BAD_CONFIGURATION, throwable, message, args);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/51c2b92c/slider-core/src/main/java/org/apache/slider/core/exceptions/ErrorStrings.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/ErrorStrings.java 
b/slider-core/src/main/java/org/apache/slider/core/exceptions/ErrorStrings.java
deleted file mode 100644
index 8b04969..0000000
--- 
a/slider-core/src/main/java/org/apache/slider/core/exceptions/ErrorStrings.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.core.exceptions;
-
-public interface ErrorStrings {
-  String E_UNSTABLE_CLUSTER = "Unstable Application Instance :";
-  String E_CLUSTER_RUNNING = "Application Instance running";
-  String E_ALREADY_EXISTS = "already exists";
-  String PRINTF_E_INSTANCE_ALREADY_EXISTS = "Application Instance \"%s\" 
already exists and is defined in %s";
-  String PRINTF_E_INSTANCE_DIR_ALREADY_EXISTS = "Application Instance dir 
already exists: %s";
-  String E_MISSING_PATH = "Missing path ";
-  String E_INCOMPLETE_CLUSTER_SPEC =
-    "Cluster specification is marked as incomplete: ";
-  String E_UNKNOWN_INSTANCE = "Unknown application instance ";
-  String E_DESTROY_CREATE_RACE_CONDITION =
-      "created while it was being destroyed";
-  String E_UNKNOWN_ROLE = "Unknown role ";
-  /**
-   * ERROR Strings
-   */
-  String ERROR_NO_ACTION = "No action specified";
-  String ERROR_UNKNOWN_ACTION = "Unknown command: ";
-  String ERROR_NOT_ENOUGH_ARGUMENTS =
-    "Not enough arguments for action: ";
-  String ERROR_PARSE_FAILURE =
-      "Failed to parse ";
-  /**
-   * All the remaining values after argument processing
-   */
-  String ERROR_TOO_MANY_ARGUMENTS =
-    "Too many arguments";
-  String ERROR_DUPLICATE_ENTRY = "Duplicate entry for ";
-  String E_APPLICATION_NOT_RUNNING = "Application not running";
-  String E_FINISHED_APPLICATION = E_APPLICATION_NOT_RUNNING + ": %s state=%s ";
-  String E_NO_IMAGE_OR_HOME_DIR_SPECIFIED =
-    "Neither an image path nor binary home directory were specified";
-  String E_BOTH_IMAGE_AND_HOME_DIR_SPECIFIED =
-    "Both application image path and home dir have been provided";
-  String E_CONFIGURATION_DIRECTORY_NOT_FOUND =
-    "Configuration directory \"%s\" not found";
-}

Reply via email to