001/* 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one 004 * or more contributor license agreements. See the NOTICE file 005 * distributed with this work for additional information 006 * regarding copyright ownership. The ASF licenses this file 007 * to you under the Apache License, Version 2.0 (the 008 * "License"); you may not use this file except in compliance 009 * with the License. You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 */ 019package org.apache.hadoop.hbase.replication; 020 021import org.apache.commons.lang3.reflect.ConstructorUtils; 022import org.apache.yetus.audience.InterfaceAudience; 023import org.apache.hadoop.conf.Configuration; 024import org.apache.hadoop.hbase.Abortable; 025import org.apache.hadoop.hbase.Stoppable; 026import org.apache.hadoop.hbase.zookeeper.ZKWatcher; 027 028/** 029 * A factory class for instantiating replication objects that deal with replication state. 030 */ 031@InterfaceAudience.Private 032public class ReplicationFactory { 033 034 public static ReplicationQueues getReplicationQueues(ReplicationQueuesArguments args) 035 throws Exception { 036 return (ReplicationQueues) ConstructorUtils.invokeConstructor(ReplicationQueuesZKImpl.class, 037 args); 038 } 039 040 public static ReplicationQueuesClient 041 getReplicationQueuesClient(ReplicationQueuesClientArguments args) throws Exception { 042 return (ReplicationQueuesClient) ConstructorUtils 043 .invokeConstructor(ReplicationQueuesClientZKImpl.class, args); 044 } 045 046 public static ReplicationPeers getReplicationPeers(final ZKWatcher zk, Configuration conf, 047 Abortable abortable) { 048 return getReplicationPeers(zk, conf, null, abortable); 049 } 050 051 public static ReplicationPeers getReplicationPeers(final ZKWatcher zk, Configuration conf, 052 final ReplicationQueuesClient queuesClient, Abortable abortable) { 053 return new ReplicationPeersZKImpl(zk, conf, queuesClient, abortable); 054 } 055 056 public static ReplicationTracker getReplicationTracker(ZKWatcher zookeeper, 057 final ReplicationPeers replicationPeers, Configuration conf, Abortable abortable, 058 Stoppable stopper) { 059 return new ReplicationTrackerZKImpl(zookeeper, replicationPeers, conf, abortable, stopper); 060 } 061}