View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.hadoop.hbase.rsgroup;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  
24  import org.apache.hadoop.hbase.TableName;
25  import org.apache.hadoop.hbase.classification.InterfaceAudience;
26  import org.apache.hadoop.hbase.net.Address;
27  import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
28  import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
29  import org.apache.hadoop.hbase.protobuf.generated.RSGroupProtos;
30  import org.apache.hadoop.hbase.protobuf.generated.TableProtos;
31  
32  @InterfaceAudience.Private
33  class RSGroupProtobufUtil {
34    static RSGroupInfo toGroupInfo(RSGroupProtos.RSGroupInfo proto) {
35      RSGroupInfo RSGroupInfo = new RSGroupInfo(proto.getName());
36      for(HBaseProtos.ServerName el: proto.getServersList()) {
37        RSGroupInfo.addServer(Address.fromParts(el.getHostName(), el.getPort()));
38      }
39      for(TableProtos.TableName pTableName: proto.getTablesList()) {
40        RSGroupInfo.addTable(ProtobufUtil.toTableName(pTableName));
41      }
42      return RSGroupInfo;
43    }
44  
45    static RSGroupProtos.RSGroupInfo toProtoGroupInfo(RSGroupInfo pojo) {
46      List<TableProtos.TableName> tables = new ArrayList<>(pojo.getTables().size());
47      for(TableName arg: pojo.getTables()) {
48        tables.add(ProtobufUtil.toProtoTableName(arg));
49      }
50      List<HBaseProtos.ServerName> servers = new ArrayList<>(pojo.getServers().size());
51      for(Address el: pojo.getServers()) {
52        servers.add(HBaseProtos.ServerName.newBuilder()
53            .setHostName(el.getHostname())
54            .setPort(el.getPort())
55            .build());
56      }
57      return RSGroupProtos.RSGroupInfo.newBuilder().setName(pojo.getName())
58          .addAllServers(servers)
59          .addAllTables(tables).build();
60    }
61  }