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);
  }