public void renameSource(String name, String newName) throws Exception {

    boolean debug = log.isDebugEnabled();
    if (debug) {
      log.debug(TextUtil.repeat("-", 70));
      log.debug("Renaming source " + name + " to " + newName + ".");
    }

    Partition partition = getPartition();
    boolean running = false;

    if (partition != null) {
      SourceManager sourceManager = partition.getSourceManager();
      running = sourceManager.isRunning(name);
      if (running) sourceManager.stopSource(name);
    }

    removeSourceService(name);

    PartitionConfig partitionConfig = getPartitionConfig();
    SourceConfigManager sourceConfigManager = partitionConfig.getSourceConfigManager();
    sourceConfigManager.renameSourceConfig(name, newName);

    if (partition != null) {
      SourceManager sourceManager = partition.getSourceManager();
      if (running) sourceManager.startSource(newName);
    }

    createSourceService(newName);
  }
  public void removeSource(String name) throws Exception {

    Partition partition = getPartition();

    Directory directory = partition.getDirectory();
    Collection<Entry> entries = directory.getEntriesBySourceName(name);
    if (entries != null && !entries.isEmpty()) {
      throw new Exception("Source " + name + " is in use.");
    }

    SourceManager sourceManager = partition.getSourceManager();
    sourceManager.stopSource(name);

    SourceConfigManager sourceConfigManager = sourceManager.getSourceConfigManager();
    sourceConfigManager.removeSourceConfig(name);

    removeSourceService(name);
  }