Package com.linkedin.databus.bootstrap.common

Source Code of com.linkedin.databus.bootstrap.common.BootstrapConfigBase

package com.linkedin.databus.bootstrap.common;
/*
*
* Copyright 2013 LinkedIn Corp. All rights reserved
*
* Licensed 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.
*
*/


import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.log4j.Logger;

import com.linkedin.databus.client.DatabusHttpClientImpl;
import com.linkedin.databus.client.DatabusHttpClientImpl.CheckpointPersistenceStaticConfig.ProviderType;
import com.linkedin.databus2.core.BackoffTimerStaticConfigBuilder;
import com.linkedin.databus2.core.container.netty.ServerContainer;

public class BootstrapConfigBase
{
  public static final String MODULE = BootstrapConfig.class.getName();
  public static final Logger LOG = Logger.getLogger(MODULE);

  public static final String BOOTSTRAP_DB_PROPS_OPT_LONG_NAME = "bootstrap_db_props";
  public static final char BOOTSTRAP_DB_PROP_OPT_CHAR = 'p';

  public static final int DEFAULT_BOOTSTRAP_HTTP_PORT = 6060;
  public static final String DEFAULT_BOOTSTRAP_DB_USERNAME = "bootstrap";
  public static final String DEFAULT_BOOTSTRAP_DB_PASSWORD = "bootstrap";
  public static final String DEFAULT_BOOTSTRAP_DB_HOSTNAME = "localhost";
  public static final String DEFAULT_BOOTSTRAP_DB_NAME = "bootstrap";

  public static final long DEFAULT_BOOTSTRAP_FETCH_SIZE = 1000;

  public static final int DEFAULT_BOOTSTRAP_LOG_SIZE = 10000;
  public static final boolean DEFAULT_BOOTSTRAP_DB_STATE_CHECK = false;

  protected String _bootstrapDBUsername = DEFAULT_BOOTSTRAP_DB_USERNAME;
  protected String _bootstrapDBPassword = DEFAULT_BOOTSTRAP_DB_PASSWORD;
  protected String _bootstrapDBHostname = DEFAULT_BOOTSTRAP_DB_HOSTNAME;
  protected String _bootstrapDBName = DEFAULT_BOOTSTRAP_DB_NAME;
  protected long _bootstrapBatchSize = DEFAULT_BOOTSTRAP_FETCH_SIZE;
  protected long _bootstrapSnapshotBatchSize = 0;
  protected long _bootstrapCatchupBatchSize = 0;

  protected int _bootstrapLogSize = DEFAULT_BOOTSTRAP_LOG_SIZE;
  protected boolean _bootstrapDBStateCheck = DEFAULT_BOOTSTRAP_DB_STATE_CHECK;

  protected DatabusHttpClientImpl.Config _client;
  protected ServerContainer.Config _container;
  protected BackoffTimerStaticConfigBuilder _retryTimer;


  @SuppressWarnings("static-access")
  public static Properties loadConfigProperties(String[] args) throws IOException
  {
      CommandLineParser cliParser = new GnuParser();

      Option dbOption = OptionBuilder.withLongOpt(BOOTSTRAP_DB_PROPS_OPT_LONG_NAME)
      .withDescription("Bootstrap producer properties to use")
      .hasArg()
      .withArgName("property_file")
      .create(BOOTSTRAP_DB_PROP_OPT_CHAR);
      Options options = new Options();
      options.addOption(dbOption);

      CommandLine cmd = null;
      try
      {
          cmd = cliParser.parse(options, args);
      }
      catch (ParseException pe)
      {
          throw new RuntimeException("BootstrapConfig: failed to parse command-line options.", pe);
      }

      Properties props = null;
      if (cmd.hasOption(BOOTSTRAP_DB_PROP_OPT_CHAR))
      {
          String propFile = cmd.getOptionValue(BOOTSTRAP_DB_PROP_OPT_CHAR);
          LOG.info("Loading bootstrap DB config from properties file " + propFile);
          props = new Properties();
          FileInputStream f = new FileInputStream(propFile);
          try
          {
            props.load(f);
          } finally {
            if ( null != f)
              f.close();
          }
      }
      else
      {
          LOG.info("Using system properties for bootstrap DB config");
      }

      return props;
  }

  public BootstrapConfigBase() throws IOException
  {
      super();
      _client = new DatabusHttpClientImpl.Config();
      _container = new ServerContainer.Config();
      setBootstrapHttpPort(DEFAULT_BOOTSTRAP_HTTP_PORT);
      _client.getCheckpointPersistence().setType(ProviderType.FILE_SYSTEM.toString());
      _client.getCheckpointPersistence().getFileSystem().setRootDirectory("./bootstrap-checkpoints");

      _retryTimer = new BackoffTimerStaticConfigBuilder();
  }

  public String getBootstrapDBUsername()
  {
      return _bootstrapDBUsername;
  }

  public void setBootstrapDBUsername(String dbUsername)
  {
      _bootstrapDBUsername = dbUsername;
  }

  public String getBootstrapDBName()
  {
      return _bootstrapDBName;
  }

  public void setBootstrapDBName(String dbName)
  {
      _bootstrapDBName = dbName;
  }


  public String getBootstrapDBPassword()
  {
      return _bootstrapDBPassword;
  }

  public String getBootstrapDBHostname()
  {
      return _bootstrapDBHostname;
  }

  /**
   * The HTTP port of the bootstrap producer or server.
   *
   * This property is deprecated. Please use {@link #getContainer()}.getHttpPort().
   */
  @Deprecated
  public int getBootstrapHttpPort()
  {
      return _container.getHttpPort();
  }

  public long getBootstrapBatchSize()
  {
      return _bootstrapBatchSize;
  }

  /**
   *
   * @return bootstrapSnapshotBatchSize : defaults to bootstrapBatchSize if none defined
   */
  public long getBootstrapSnapshotBatchSize()
  {
      return _bootstrapSnapshotBatchSize > 0 ? _bootstrapSnapshotBatchSize : _bootstrapBatchSize;
  }

  /**
   *
   * @return bootstrapCatchupBatchSize : defaults to bootstrapBatchSize if none defined
   */
  public long getBootstrapCatchupBatchSize()
  {
      return _bootstrapCatchupBatchSize > 0 ? _bootstrapCatchupBatchSize : _bootstrapBatchSize;
  }

  public int getBootstrapLogSize()
  {
      return _bootstrapLogSize;
  }

  /**
   * Changes the HTTP port of the bootstrap producer or server.
   *
   * This property is deprecated. Please use {@link #getContainer()}.setHttpPort(int).
   */
  @Deprecated
  public void setBootstrapHttpPort(int bootstrapHttpPort)
  {
      getContainer().setHttpPort(bootstrapHttpPort);
  }

  public void setBootstrapDBPassword(String bootstrapDBPassword)
  {
      _bootstrapDBPassword = bootstrapDBPassword;
  }

  public void setBootstrapDBHostname(String bootstrapDBHostname)
  {
      _bootstrapDBHostname = bootstrapDBHostname;
  }

  public void setBootstrapCatchupBatchSize(long bootstrapBatchSize)
  {
      _bootstrapCatchupBatchSize = bootstrapBatchSize;
  }

  public void setBootstrapSnapshotBatchSize(long bootstrapBatchSize)
  {
      _bootstrapSnapshotBatchSize = bootstrapBatchSize;
  }

  public void setBootstrapBatchSize(long bootstrapBatchSize)
  {
      _bootstrapBatchSize = bootstrapBatchSize;
  }

  public void setBootstrapLogSize(int bootstrapLogSize)
  {
      _bootstrapLogSize = bootstrapLogSize;
  }

  public void setBootstrapDBStateCheck(boolean bootstrapDBStateCheck)
  {
      this._bootstrapDBStateCheck = bootstrapDBStateCheck;
  }

  public boolean getBootstrapDBStateCheck()
  {
      return _bootstrapDBStateCheck;
  }



  public DatabusHttpClientImpl.Config getClient()
  {
      return _client;
  }

  public void setClient(DatabusHttpClientImpl.Config client)
  {
      _client = client;
  }

  public ServerContainer.Config getContainer()
  {
      return _container;
  }

  public void setContainer(ServerContainer.Config container)
  {
      _container = container;
  }

  public BackoffTimerStaticConfigBuilder getRetryTimer() {
      return _retryTimer;
  }

  public void setRetryTimer(BackoffTimerStaticConfigBuilder retryTimer) {
      this._retryTimer = retryTimer;
  }
}
TOP

Related Classes of com.linkedin.databus.bootstrap.common.BootstrapConfigBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.