Coverage Report - org.apache.giraph.block_app.framework.api.BlockApiHandle
 
Classes in this File Line Coverage Branch Coverage Complexity
BlockApiHandle
0%
0/26
0%
0/10
1
 
 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  
 package org.apache.giraph.block_app.framework.api;
 19  
 
 20  
 import static com.google.common.base.Preconditions.checkNotNull;
 21  
 
 22  
 /**
 23  
  * Class that contains references to Block Api objects.
 24  
  *
 25  
  * One general use-case for this is for applications to indirectly get a handle
 26  
  * on the Block Api objects and  implement operations that (i) depend on the
 27  
  * Block Api interfaces, (ii) are not in the context of a Piece when defined,
 28  
  * and (iii) are in the context of a Piece when executed.
 29  
  *
 30  
  * To do this, as opposed to defining an application as a
 31  
  * {@link org.apache.giraph.block_app.framework.block.Block}, define
 32  
  * your application as a
 33  
  * {@link org.apache.giraph.block_app.framework.block.BlockWithApiHandle}.
 34  
  *
 35  
  * NOTE: Depending on the context in which this class is used, some of the
 36  
  * handles may not be set. For instance, the {@link masterApi} is not set when
 37  
  * this is in the context of a worker. Trying to get access to a handle when
 38  
  * it is not set will result in a runtime exception. Instead, you should first
 39  
  * use methods like the {@link #isMasterApiSet()} to check.
 40  
  *
 41  
  * The *Api fields are transient as we do not need/want to serialize them. They
 42  
  * will be set at the appropriate time by the framework.
 43  
  */
 44  0
 public class BlockApiHandle {
 45  
   private transient BlockMasterApi masterApi;
 46  
   private transient BlockWorkerReceiveApi workerReceiveApi;
 47  
   private transient BlockWorkerSendApi workerSendApi;
 48  
   private transient BlockWorkerContextReceiveApi workerContextReceiveApi;
 49  
   private transient BlockWorkerContextSendApi workerContextSendApi;
 50  
 
 51  
   public void setMasterApi(BlockMasterApi api) {
 52  0
     this.masterApi = api;
 53  0
   }
 54  
 
 55  
   public void setWorkerReceiveApi(BlockWorkerReceiveApi api) {
 56  0
     this.workerReceiveApi = api;
 57  0
   }
 58  
 
 59  
   public void setWorkerSendApi(BlockWorkerSendApi api) {
 60  0
     this.workerSendApi = api;
 61  0
   }
 62  
 
 63  
   public void setWorkerContextReceiveApi(BlockWorkerContextReceiveApi api) {
 64  0
     this.workerContextReceiveApi = api;
 65  0
   }
 66  
 
 67  
   public void setWorkerContextSendApi(BlockWorkerContextSendApi api) {
 68  0
     this.workerContextSendApi = api;
 69  0
   }
 70  
 
 71  
   public boolean isMasterApiSet() {
 72  0
     return masterApi != null;
 73  
   }
 74  
 
 75  
   public boolean isWorkerReceiveApiSet() {
 76  0
     return workerReceiveApi != null;
 77  
   }
 78  
 
 79  
   public boolean isWorkerSendApiSet() {
 80  0
     return workerSendApi != null;
 81  
   }
 82  
 
 83  
   public boolean isWorkerContextReceiveApiSet() {
 84  0
     return workerContextReceiveApi != null;
 85  
   }
 86  
 
 87  
   public boolean isWorkerContextSendApiSet() {
 88  0
     return workerContextSendApi != null;
 89  
   }
 90  
 
 91  
   public BlockMasterApi getMasterApi() {
 92  0
     checkNotNull(masterApi,
 93  
       "BlockMasterApi not valid in this context.");
 94  0
     return masterApi;
 95  
   }
 96  
 
 97  
   public BlockWorkerReceiveApi getWorkerReceiveApi() {
 98  0
     checkNotNull(workerReceiveApi,
 99  
       "BlockWorkerReceiveApi not valid in this context.");
 100  0
     return workerReceiveApi;
 101  
   }
 102  
 
 103  
   public BlockWorkerSendApi getWorkerSendApi() {
 104  0
     checkNotNull(workerSendApi,
 105  
       "BlockWorkerSendApi not valid in this context.");
 106  0
     return workerSendApi;
 107  
   }
 108  
 
 109  
   public BlockWorkerContextReceiveApi getWorkerContextReceiveApi() {
 110  0
     checkNotNull(workerContextReceiveApi,
 111  
       "BlockWorkerContextReceiveApi not valid in this context");
 112  0
     return workerContextReceiveApi;
 113  
   }
 114  
 
 115  
   public BlockWorkerContextSendApi getWorkerContextSendApi() {
 116  0
     checkNotNull(workerContextSendApi,
 117  
       "BlockWorkerContextSendApi not valid in this context");
 118  0
     return workerContextSendApi;
 119  
   }
 120  
 }