You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ac...@apache.org on 2011/04/01 00:23:34 UTC

svn commit: r1087462 [12/20] - in /hadoop/mapreduce/branches/MR-279: ./ mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapred/ mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/jobhistory/ mr-client/...

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,57 @@
+package org.apache.hadoop.yarn.api.records.impl.pb;
+
+
+import org.apache.hadoop.yarn.api.records.ProtoBase;
+import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProtoOrBuilder;
+
+
+    
+public class ResourcePBImpl extends ProtoBase<ResourceProto> implements Resource {
+  ResourceProto proto = ResourceProto.getDefaultInstance();
+  ResourceProto.Builder builder = null;
+  boolean viaProto = false;
+  
+  public ResourcePBImpl() {
+    builder = ResourceProto.newBuilder();
+  }
+
+  public ResourcePBImpl(ResourceProto proto) {
+    this.proto = proto;
+    viaProto = true;
+  }
+  
+  public ResourceProto getProto() {
+    proto = viaProto ? proto : builder.build();
+    viaProto = true;
+    return proto;
+  }
+
+  private void maybeInitBuilder() {
+    if (viaProto || builder == null) {
+      builder = ResourceProto.newBuilder(proto);
+    }
+    viaProto = false;
+  }
+    
+  
+  @Override
+  public int getMemory() {
+    ResourceProtoOrBuilder p = viaProto ? proto : builder;
+    return (p.getMemory());
+  }
+
+  @Override
+  public void setMemory(int memory) {
+    maybeInitBuilder();
+    builder.setMemory((memory));
+  }
+
+  @Override
+  public int compareTo(Resource other) {
+    return this.getMemory() - other.getMemory();
+  }
+  
+  
+}  

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourceRequestPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourceRequestPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourceRequestPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourceRequestPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,174 @@
+package org.apache.hadoop.yarn.api.records.impl.pb;
+
+
+import org.apache.hadoop.yarn.api.records.Priority;
+import org.apache.hadoop.yarn.api.records.ProtoBase;
+import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.api.records.ResourceRequest;
+import org.apache.hadoop.yarn.api.records.impl.pb.PriorityPBImpl;
+import org.apache.hadoop.yarn.api.records.impl.pb.ResourcePBImpl;
+import org.apache.hadoop.yarn.proto.YarnProtos.PriorityProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ResourceRequestProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ResourceRequestProtoOrBuilder;
+
+
+    
+public class ResourceRequestPBImpl extends ProtoBase<ResourceRequestProto> implements  ResourceRequest {
+  ResourceRequestProto proto = ResourceRequestProto.getDefaultInstance();
+  ResourceRequestProto.Builder builder = null;
+  boolean viaProto = false;
+  
+  private Priority priority = null;
+  private Resource capability = null;
+  
+  
+  public ResourceRequestPBImpl() {
+    builder = ResourceRequestProto.newBuilder();
+  }
+
+  public ResourceRequestPBImpl(ResourceRequestProto proto) {
+    this.proto = proto;
+    viaProto = true;
+  }
+  
+  public ResourceRequestProto getProto() {
+      mergeLocalToProto();
+    proto = viaProto ? proto : builder.build();
+    viaProto = true;
+    return proto;
+  }
+
+  private void mergeLocalToBuilder() {
+    if (this.priority != null) {
+      builder.setPriority(convertToProtoFormat(this.priority));
+    }
+    if (this.capability != null) {
+      builder.setCapability(convertToProtoFormat(this.capability));
+    }
+  }
+
+  private void mergeLocalToProto() {
+    if (viaProto) 
+      maybeInitBuilder();
+    mergeLocalToBuilder();
+    proto = builder.build();
+    viaProto = true;
+  }
+
+  private void maybeInitBuilder() {
+    if (viaProto || builder == null) {
+      builder = ResourceRequestProto.newBuilder(proto);
+    }
+    viaProto = false;
+  }
+    
+  
+  @Override
+  public Priority getPriority() {
+    ResourceRequestProtoOrBuilder p = viaProto ? proto : builder;
+    if (this.priority != null) {
+      return this.priority;
+    }
+    if (!p.hasPriority()) {
+      return null;
+    }
+    this.priority = convertFromProtoFormat(p.getPriority());
+    return this.priority;
+  }
+
+  @Override
+  public void setPriority(Priority priority) {
+    maybeInitBuilder();
+    if (priority == null) 
+      builder.clearPriority();
+    this.priority = priority;
+  }
+  @Override
+  public String getHostName() {
+    ResourceRequestProtoOrBuilder p = viaProto ? proto : builder;
+    if (!p.hasHostName()) {
+      return null;
+    }
+    return (p.getHostName());
+  }
+
+  @Override
+  public void setHostName(String hostName) {
+    maybeInitBuilder();
+    if (hostName == null) {
+      builder.clearHostName();
+      return;
+    }
+    builder.setHostName((hostName));
+  }
+  @Override
+  public Resource getCapability() {
+    ResourceRequestProtoOrBuilder p = viaProto ? proto : builder;
+    if (this.capability != null) {
+      return this.capability;
+    }
+    if (!p.hasCapability()) {
+      return null;
+    }
+    this.capability = convertFromProtoFormat(p.getCapability());
+    return this.capability;
+  }
+
+  @Override
+  public void setCapability(Resource capability) {
+    maybeInitBuilder();
+    if (capability == null) 
+      builder.clearCapability();
+    this.capability = capability;
+  }
+  @Override
+  public int getNumContainers() {
+    ResourceRequestProtoOrBuilder p = viaProto ? proto : builder;
+    return (p.getNumContainers());
+  }
+
+  @Override
+  public void setNumContainers(int numContainers) {
+    maybeInitBuilder();
+    builder.setNumContainers((numContainers));
+  }
+
+  private PriorityPBImpl convertFromProtoFormat(PriorityProto p) {
+    return new PriorityPBImpl(p);
+  }
+
+  private PriorityProto convertToProtoFormat(Priority t) {
+    return ((PriorityPBImpl)t).getProto();
+  }
+
+  private ResourcePBImpl convertFromProtoFormat(ResourceProto p) {
+    return new ResourcePBImpl(p);
+  }
+
+  private ResourceProto convertToProtoFormat(Resource t) {
+    return ((ResourcePBImpl)t).getProto();
+  }
+
+  @Override
+  public int compareTo(ResourceRequest other) {
+    if (this.getPriority().compareTo(other.getPriority()) == 0) {
+      if (this.getHostName().equals(other.getHostName())) {
+        if (this.getCapability().equals(other.getCapability())) {
+          if (this.getNumContainers() == other.getNumContainers()) {
+            return 0;
+          } else {
+            return this.getNumContainers() - other.getNumContainers();
+          }
+        } else {
+          return this.getCapability().compareTo(other.getCapability());
+        }
+      } else {
+        return this.getHostName().compareTo(other.getHostName());
+      }
+    } else {
+      return this.getPriority().compareTo(other.getPriority());
+    }
+  }
+
+}  

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/URLPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/URLPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/URLPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/URLPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,107 @@
+package org.apache.hadoop.yarn.api.records.impl.pb;
+
+
+import org.apache.hadoop.yarn.api.records.ProtoBase;
+import org.apache.hadoop.yarn.api.records.URL;
+import org.apache.hadoop.yarn.proto.YarnProtos.URLProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.URLProtoOrBuilder;
+
+
+    
+public class URLPBImpl extends ProtoBase<URLProto> implements URL {
+  URLProto proto = URLProto.getDefaultInstance();
+  URLProto.Builder builder = null;
+  boolean viaProto = false;
+  
+  public URLPBImpl() {
+    builder = URLProto.newBuilder();
+  }
+
+  public URLPBImpl(URLProto proto) {
+    this.proto = proto;
+    viaProto = true;
+  }
+  
+  public URLProto getProto() {
+    proto = viaProto ? proto : builder.build();
+    viaProto = true;
+    return proto;
+  }
+
+  private void maybeInitBuilder() {
+    if (viaProto || builder == null) {
+      builder = URLProto.newBuilder(proto);
+    }
+    viaProto = false;
+  }
+    
+  
+  @Override
+  public String getFile() {
+    URLProtoOrBuilder p = viaProto ? proto : builder;
+    if (!p.hasFile()) {
+      return null;
+    }
+    return (p.getFile());
+  }
+
+  @Override
+  public void setFile(String file) {
+    maybeInitBuilder();
+    if (file == null) { 
+      builder.clearFile();
+      return;
+    }
+    builder.setFile((file));
+  }
+  @Override
+  public String getScheme() {
+    URLProtoOrBuilder p = viaProto ? proto : builder;
+    if (!p.hasScheme()) {
+      return null;
+    }
+    return (p.getScheme());
+  }
+
+  @Override
+  public void setScheme(String scheme) {
+    maybeInitBuilder();
+    if (scheme == null) { 
+      builder.clearScheme();
+      return;
+    }
+    builder.setScheme((scheme));
+  }
+  @Override
+  public String getHost() {
+    URLProtoOrBuilder p = viaProto ? proto : builder;
+    if (!p.hasHost()) {
+      return null;
+    }
+    return (p.getHost());
+  }
+
+  @Override
+  public void setHost(String host) {
+    maybeInitBuilder();
+    if (host == null) { 
+      builder.clearHost();
+      return;
+    }
+    builder.setHost((host));
+  }
+  @Override
+  public int getPort() {
+    URLProtoOrBuilder p = viaProto ? proto : builder;
+    return (p.getPort());
+  }
+
+  @Override
+  public void setPort(int port) {
+    maybeInitBuilder();
+    builder.setPort((port));
+  }
+
+
+
+}  

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/YarnClusterMetricsPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/YarnClusterMetricsPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/YarnClusterMetricsPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/YarnClusterMetricsPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,53 @@
+package org.apache.hadoop.yarn.api.records.impl.pb;
+
+
+import org.apache.hadoop.yarn.api.records.ProtoBase;
+import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
+import org.apache.hadoop.yarn.proto.YarnProtos.YarnClusterMetricsProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.YarnClusterMetricsProtoOrBuilder;
+
+
+    
+public class YarnClusterMetricsPBImpl extends ProtoBase<YarnClusterMetricsProto> implements YarnClusterMetrics {
+  YarnClusterMetricsProto proto = YarnClusterMetricsProto.getDefaultInstance();
+  YarnClusterMetricsProto.Builder builder = null;
+  boolean viaProto = false;
+  
+  public YarnClusterMetricsPBImpl() {
+    builder = YarnClusterMetricsProto.newBuilder();
+  }
+
+  public YarnClusterMetricsPBImpl(YarnClusterMetricsProto proto) {
+    this.proto = proto;
+    viaProto = true;
+  }
+  
+  public YarnClusterMetricsProto getProto() {
+    proto = viaProto ? proto : builder.build();
+    viaProto = true;
+    return proto;
+  }
+
+  private void maybeInitBuilder() {
+    if (viaProto || builder == null) {
+      builder = YarnClusterMetricsProto.newBuilder(proto);
+    }
+    viaProto = false;
+  }
+    
+  
+  @Override
+  public int getNumNodeManagers() {
+    YarnClusterMetricsProtoOrBuilder p = viaProto ? proto : builder;
+    return (p.getNumNodeManagers());
+  }
+
+  @Override
+  public void setNumNodeManagers(int numNodeManagers) {
+    maybeInitBuilder();
+    builder.setNumNodeManagers((numNodeManagers));
+  }
+
+
+
+}  

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,27 @@
+package org.apache.hadoop.yarn.exceptions;
+
+import java.io.IOException;
+
+public abstract class YarnRemoteException extends IOException {
+  private static final long serialVersionUID = 1L;
+  
+  public YarnRemoteException() {
+    super();
+  }
+  
+  public YarnRemoteException(String message, Throwable cause) {
+    super(message, cause);
+  }
+  
+  public YarnRemoteException(Throwable cause) {
+    super(cause);
+  }
+  
+  public YarnRemoteException(String message) {
+    super(message);
+  }
+  
+  public abstract String getRemoteTrace();
+  
+  public abstract YarnRemoteException getCause();
+}
\ No newline at end of file

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,90 @@
+package org.apache.hadoop.yarn.exceptions.impl.pb;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.proto.YarnProtos.YarnRemoteExceptionProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.YarnRemoteExceptionProtoOrBuilder;
+
+public class YarnRemoteExceptionPBImpl extends YarnRemoteException {
+
+  private static final long serialVersionUID = 1L;
+
+  YarnRemoteExceptionProto proto = YarnRemoteExceptionProto.getDefaultInstance();
+  YarnRemoteExceptionProto.Builder builder = null;
+  boolean viaProto = false;
+
+  public YarnRemoteExceptionPBImpl() {
+  }
+
+  public YarnRemoteExceptionPBImpl(YarnRemoteExceptionProto proto) {
+    this.proto = proto;
+    viaProto = true;
+  }
+  
+  public YarnRemoteExceptionPBImpl(String message) {
+    super(message);
+    maybeInitBuilder();
+    builder.setMessage(super.getMessage());
+  }
+
+  public YarnRemoteExceptionPBImpl(Throwable t) {
+    super(t);
+    maybeInitBuilder();
+
+    if (t.getCause() == null) { 
+    } else {
+      builder.setCause(new YarnRemoteExceptionPBImpl(t.getCause()).getProto());
+      builder.setClassName(t.getClass().getName());
+    }
+    StringWriter sw = new StringWriter();
+    PrintWriter pw = new PrintWriter(sw);
+    t.printStackTrace(pw);
+    pw.close();
+    if (sw.toString() != null)
+      builder.setTrace(sw.toString());
+    if (t.getMessage() != null)
+      builder.setMessage(t.getMessage());
+  }
+  
+  public YarnRemoteExceptionPBImpl(String message, Throwable t) {
+    this(t);
+    if (message != null) 
+      builder.setMessage(message);
+  }
+  @Override
+  public String getMessage() {
+    YarnRemoteExceptionProtoOrBuilder p = viaProto ? proto : builder;
+    return p.getMessage();
+  }
+  
+  @Override
+  public String getRemoteTrace() {
+    YarnRemoteExceptionProtoOrBuilder p = viaProto ? proto : builder;
+    return p.getTrace();
+  }
+
+  @Override
+  public YarnRemoteException getCause() {
+    YarnRemoteExceptionProtoOrBuilder p = viaProto ? proto : builder;
+    if (p.hasCause()) {
+      return new YarnRemoteExceptionPBImpl(p.getCause());
+    } else {
+      return null;
+    }
+  }
+
+  public YarnRemoteExceptionProto getProto() {
+    proto = viaProto ? proto : builder.build();
+    viaProto = true;
+    return proto;
+  }
+
+  private void maybeInitBuilder() {
+    if (viaProto || builder == null) {
+      builder = YarnRemoteExceptionProto.newBuilder(proto);
+    }
+    viaProto = false;
+  }
+}
\ No newline at end of file

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/util/ProtoUtils.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/util/ProtoUtils.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/util/ProtoUtils.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/util/ProtoUtils.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,92 @@
+package org.apache.hadoop.yarn.util;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hadoop.yarn.api.records.ApplicationState;
+import org.apache.hadoop.yarn.api.records.ContainerState;
+import org.apache.hadoop.yarn.api.records.LocalResourceType;
+import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
+import org.apache.hadoop.yarn.api.records.YarnContainerTags;
+import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationStateProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ContainerStateProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.LocalResourceTypeProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.LocalResourceVisibilityProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.YarnContainerTagsProto;
+
+import com.google.protobuf.ByteString;
+
+public class ProtoUtils {
+  
+  
+  /*
+   * ContainerState
+   */
+  private static String CONTAINER_STATE_PREFIX = "C_";
+  public static ContainerStateProto convertToProtoFormat(ContainerState e) {
+    return ContainerStateProto.valueOf(CONTAINER_STATE_PREFIX + e.name());
+  }
+  public static ContainerState convertFromProtoFormat(ContainerStateProto e) {
+    return ContainerState.valueOf(e.name().replace(CONTAINER_STATE_PREFIX, ""));
+  }
+  
+
+  /*
+   * ApplicationState
+   */
+  public static ApplicationStateProto convertToProtoFormat(ApplicationState e) {
+    return ApplicationStateProto.valueOf(e.name());
+  }
+  public static ApplicationState convertFromProtoFormat(ApplicationStateProto e) {
+    return ApplicationState.valueOf(e.name());
+  }
+  
+  /*
+   * LocalResourceType
+   */
+  public static LocalResourceTypeProto convertToProtoFormat(LocalResourceType e) {
+    return LocalResourceTypeProto.valueOf(e.name());
+  }
+  public static LocalResourceType convertFromProtoFormat(LocalResourceTypeProto e) {
+    return LocalResourceType.valueOf(e.name());
+  }
+  
+  /*
+   * LocalResourceVisibility
+   */
+  public static LocalResourceVisibilityProto convertToProtoFormat(LocalResourceVisibility e) {
+    return LocalResourceVisibilityProto.valueOf(e.name());
+  }
+  public static LocalResourceVisibility convertFromProtoFormat(LocalResourceVisibilityProto e) {
+    return LocalResourceVisibility.valueOf(e.name());
+  }
+  
+  /*
+   * YarnContainerTags
+   */
+  public static YarnContainerTagsProto convertToProtoFormat(YarnContainerTags e) {
+    return YarnContainerTagsProto.valueOf(e.name());
+  }
+  public static YarnContainerTags convertFromProtoFormat(YarnContainerTagsProto e) {
+    return YarnContainerTags.valueOf(e.name());
+  }
+  
+  /*
+   * ByteBuffer
+   */
+  public static ByteBuffer convertFromProtoFormat(ByteString byteString) {
+    int capacity = byteString.asReadOnlyByteBuffer().rewind().remaining();
+    byte[] b = new byte[capacity];
+    byteString.asReadOnlyByteBuffer().get(b, 0, capacity);
+    return ByteBuffer.wrap(b);
+  }
+
+  public static ByteString convertToProtoFormat(ByteBuffer byteBuffer) {
+//    return ByteString.copyFrom((ByteBuffer)byteBuffer.duplicate().rewind());
+    int oldPos = byteBuffer.position();
+    byteBuffer.rewind();
+    ByteString bs = ByteString.copyFrom(byteBuffer);
+    byteBuffer.position(oldPos);
+    return bs;
+  }
+  
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/AM_RM_protocol.proto
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/AM_RM_protocol.proto?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/AM_RM_protocol.proto (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/AM_RM_protocol.proto Thu Mar 31 22:23:22 2011
@@ -0,0 +1,13 @@
+option java_package = "org.apache.hadoop.yarn.proto";
+option java_outer_classname = "AMRMProtocol";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+
+import "yarn_service_protos.proto";
+
+
+service AMRMProtocolService {
+  rpc registerApplicationMaster (RegisterApplicationMasterRequestProto) returns (RegisterApplicationMasterResponseProto);
+  rpc finishApplicationMaster (FinishApplicationMasterRequestProto) returns (FinishApplicationMasterResponseProto);
+  rpc allocate (AllocateRequestProto) returns (AllocateResponseProto);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/client_RM_protocol.proto
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/client_RM_protocol.proto?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/client_RM_protocol.proto (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/client_RM_protocol.proto Thu Mar 31 22:23:22 2011
@@ -0,0 +1,20 @@
+option java_package = "org.apache.hadoop.yarn.proto";
+option java_outer_classname = "ClientRMProtocol";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+
+import "yarn_service_protos.proto";
+
+
+
+
+
+
+service ClientRMProtocolService {
+  rpc getNewApplicationId (GetNewApplicationIdRequestProto) returns (GetNewApplicationIdResponseProto);
+  rpc getApplicationMaster (GetApplicationMasterRequestProto) returns (GetApplicationMasterResponseProto);
+  rpc submitApplication (SubmitApplicationRequestProto) returns (SubmitApplicationResponseProto);
+  rpc finishApplication (FinishApplicationRequestProto) returns (FinishApplicationResponseProto);
+  rpc getClusterMetrics (GetClusterMetricsRequestProto) returns (GetClusterMetricsResponseProto);
+}
+

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/container_manager.proto
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/container_manager.proto?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/container_manager.proto (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/container_manager.proto Thu Mar 31 22:23:22 2011
@@ -0,0 +1,17 @@
+option java_package = "org.apache.hadoop.yarn.proto";
+option java_outer_classname = "ContainerManager";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+
+import "yarn_service_protos.proto";
+
+
+
+
+
+service ContainerManagerService {
+  rpc startContainer(StartContainerRequestProto) returns (StartContainerResponseProto);
+  rpc stopContainer(StopContainerRequestProto) returns (StopContainerResponseProto);
+  rpc cleanupContainer(CleanupContainerRequestProto) returns (CleanupContainerResponseProto);
+  rpc getContainerStatus(GetContainerStatusRequestProto) returns (GetContainerStatusResponseProto);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto Thu Mar 31 22:23:22 2011
@@ -0,0 +1,202 @@
+option java_package = "org.apache.hadoop.yarn.proto";
+option java_outer_classname = "YarnProtos";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+
+message YarnRemoteExceptionProto {
+  optional string message = 1;
+  optional string trace = 2;
+  optional string class_name = 3;
+  optional YarnRemoteExceptionProto cause = 4;
+}
+
+message ApplicationIdProto {
+  optional int32 id = 1;
+  optional int64 cluster_timestamp = 2;
+}
+
+message ContainerIdProto {
+  optional ApplicationIdProto app_id = 1;
+  optional int32 id = 2;
+}
+
+message ResourceProto {
+  optional int32 memory = 1;
+}
+
+enum ContainerStateProto {
+  C_INITIALIZING = 1;
+  C_RUNNING = 2;
+  C_COMPLETE = 3;
+}
+
+message ContainerTokenProto {
+  optional bytes identifier = 1;
+  optional bytes password = 2;
+  optional string kind = 3;
+  optional string service = 4;
+}
+
+message ContainerProto {
+  optional ContainerIdProto id = 1;
+  optional string host_name = 2;
+  optional ResourceProto resource = 3;
+  optional ContainerStateProto state = 4;
+  optional ContainerTokenProto container_token =5;
+}
+
+enum ApplicationStateProto {
+  PENDING = 1;
+  ALLOCATING = 2;
+  ALLOCATED = 3;
+  EXPIRED_PENDING=12;
+  LAUNCHING = 4;
+  LAUNCHED = 5;
+  RUNNING = 6;
+  PAUSED = 7;
+  CLEANUP = 8;
+  COMPLETED = 9;
+  KILLED = 10;
+  FAILED = 11;
+}
+
+message ApplicationStatusProto {
+  optional int32 response_id = 1;
+  optional ApplicationIdProto application_id = 2;
+  optional float progress = 3;
+  optional int64 last_seen = 4;
+}
+
+message ApplicationMasterProto {
+  optional ApplicationIdProto application_id = 1;
+  optional string host = 2;
+  optional int32 rpc_port = 3;
+  optional int32 http_port = 4;
+  optional ApplicationStatusProto status = 5;
+  optional ApplicationStateProto state = 6;
+  optional string client_token = 7;
+}
+
+message URLProto {
+  optional string scheme = 1;
+  optional string host = 2; 
+  optional int32 port = 3;
+  optional string file = 4;
+}
+
+enum LocalResourceVisibilityProto {
+  PUBLIC = 1;
+  PRIVATE = 2;
+  APPLICATION = 3;
+}
+
+enum LocalResourceTypeProto {
+  ARCHIVE = 1;
+  FILE = 2;
+}
+
+message LocalResourceProto {
+  optional URLProto resource = 1;
+  optional int64 size = 2;
+  optional int64 timestamp = 3;
+  optional LocalResourceTypeProto type = 4;
+  optional LocalResourceVisibilityProto visibility= 5;
+}
+
+
+
+
+////////////////////////////////////////////////////////////////////////
+////// From AM_RM_Protocol /////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
+message ResourceRequestProto {
+  optional PriorityProto priority = 1;
+  optional string host_name = 2;
+  optional ResourceProto capability = 3;
+  optional int32 num_containers = 4;
+}
+
+message AMResponseProto {
+  optional bool reboot = 1;
+  optional int32 response_id = 2;
+  repeated ContainerProto containers = 3;
+}
+
+
+////////////////////////////////////////////////////////////////////////
+////// From client_RM_Protocol /////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
+message ApplicationSubmissionContextProto {
+  optional ApplicationIdProto application_id = 1;
+  optional string application_name = 2;
+  optional ResourceProto master_capability = 3;
+  repeated StringURLMapProto resources = 4;
+  repeated StringLocalResourceMapProto resources_todo = 5;
+  repeated string fs_tokens = 6;
+  optional bytes fs_tokens_todo = 7;
+  repeated StringStringMapProto environment = 8;
+  repeated string command = 9;
+  optional string queue = 10;
+  optional PriorityProto priority = 11;
+  optional string user = 12;
+}
+
+message YarnClusterMetricsProto {
+  optional int32 num_node_managers = 1;
+}
+
+
+////////////////////////////////////////////////////////////////////////
+////// From container_manager //////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
+enum YarnContainerTagsProto {
+  YARN_ENV_TAG = 1;
+  YARN_WORK_DIR = 2;
+}
+
+message ContainerLaunchContextProto {
+  optional ContainerIdProto container_id = 1;
+  optional string user = 2;
+  optional ResourceProto resource = 3;
+  repeated StringLocalResourceMapProto localResources = 4;
+  optional bytes container_tokens = 5;
+  repeated StringBytesMapProto service_data = 6;
+  repeated StringStringMapProto env = 7;
+  repeated string command = 8;
+}
+
+message ContainerStatusProto {
+  optional ContainerIdProto container_id = 1;
+  optional ContainerStateProto state = 2;
+  optional int32 exit_status = 3;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////
+////// From common//////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
+message PriorityProto {
+  optional int32 priority = 1;
+}
+
+message StringURLMapProto {
+  optional string key = 1;
+  optional URLProto value = 2;
+}
+
+message StringLocalResourceMapProto {
+  optional string key = 1;
+  optional LocalResourceProto value = 2;
+}
+
+message StringStringMapProto {
+  optional string key = 1;
+  optional string value = 2;
+}
+
+message StringBytesMapProto {
+  optional string key = 1;
+  optional bytes value = 2;
+}
+

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_service_protos.proto
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_service_protos.proto?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_service_protos.proto (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_service_protos.proto Thu Mar 31 22:23:22 2011
@@ -0,0 +1,110 @@
+option java_package = "org.apache.hadoop.yarn.proto";
+option java_outer_classname = "YarnServiceProtos";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+
+import "yarn_protos.proto";
+
+//////////////////////////////////////////////////////
+/////// AM_RM_Protocol ///////////////////////////////
+//////////////////////////////////////////////////////
+message RegisterApplicationMasterRequestProto {
+  optional ApplicationMasterProto application_master = 1;
+}
+
+message RegisterApplicationMasterResponseProto {
+}
+
+message FinishApplicationMasterRequestProto {
+  optional ApplicationMasterProto application_master = 1;
+}
+
+message FinishApplicationMasterResponseProto {
+}
+
+message AllocateRequestProto {
+  optional ApplicationStatusProto application_status = 1;
+  repeated ResourceRequestProto ask = 2;
+  repeated ContainerProto release = 3;
+}
+
+message AllocateResponseProto {
+  optional AMResponseProto AM_response = 1;
+}
+
+
+
+//////////////////////////////////////////////////////
+/////// client_RM_Protocol ///////////////////////////
+//////////////////////////////////////////////////////
+
+message GetNewApplicationIdRequestProto {
+}
+
+message GetNewApplicationIdResponseProto {
+  optional ApplicationIdProto application_id = 1;
+}
+
+message GetApplicationMasterRequestProto {
+  optional ApplicationIdProto application_id = 1;
+}
+
+message GetApplicationMasterResponseProto {
+  optional ApplicationMasterProto application_master = 1;
+}
+
+message SubmitApplicationRequestProto {
+  optional ApplicationSubmissionContextProto application_submission_context= 1;
+}
+
+message SubmitApplicationResponseProto {
+}
+
+message FinishApplicationRequestProto {
+  optional ApplicationIdProto application_id = 1;
+}
+
+message FinishApplicationResponseProto {
+}
+
+message GetClusterMetricsRequestProto {
+}
+
+message GetClusterMetricsResponseProto {
+  optional YarnClusterMetricsProto cluster_metrics = 1;
+}
+
+
+
+//////////////////////////////////////////////////////
+/////// client_RM_Protocol ///////////////////////////
+//////////////////////////////////////////////////////
+
+message StartContainerRequestProto {
+  optional ContainerLaunchContextProto container_launch_context = 1;
+}
+
+message StartContainerResponseProto {
+}
+
+message StopContainerRequestProto {
+  optional ContainerIdProto container_id = 1;
+}
+
+message StopContainerResponseProto {
+}
+
+message CleanupContainerRequestProto {
+  optional ContainerIdProto container_id = 1;
+}
+
+message CleanupContainerResponseProto {
+}
+
+message GetContainerStatusRequestProto {
+  optional ContainerIdProto container_id = 1;
+}
+
+message GetContainerStatusResponseProto {
+  optional ContainerStatusProto status = 1;
+}

Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/pom.xml
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/pom.xml?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/pom.xml (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/pom.xml Thu Mar 31 22:23:22 2011
@@ -22,6 +22,11 @@
       <artifactId>yarn-api</artifactId>
       <version>${yarn.version}</version>
     </dependency>
+    <dependency>
+          <groupId>com.google.protobuf</groupId>
+          <artifactId>protobuf-java</artifactId>
+          <version>2.4.0a</version>
+      </dependency>
   </dependencies>
 
   <build>
@@ -39,6 +44,76 @@
          </execution>
        </executions>
      </plugin>
+     
+          <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>create_generate_src_dirctory</id>
+            <phase>initialize</phase>
+            <configuration>
+              <tasks>
+                <mkdir dir="target/generated-sources/proto" />
+              </tasks>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>1.2</version>
+        <executions>
+          <execution>
+            <id>generate-sources</id>
+            <phase>generate-sources</phase>
+            <configuration>
+              <executable>protoc</executable>
+              <arguments>
+                <argument>-I../yarn-api/src/main/proto/</argument>
+                <argument>-Isrc/main/proto/</argument>
+                <argument>--java_out=target/generated-sources/proto</argument>
+                <argument>src/main/proto/yarnprototunnelrpc.proto</argument>
+              </arguments>
+            </configuration>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.5</version>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>target/generated-sources/proto</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+     
+     
+     
+     
+     
+     
+     
     </plugins>
   </build>
 </project>

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/AMRMProtocolPBClientImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/AMRMProtocolPBClientImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/AMRMProtocolPBClientImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/AMRMProtocolPBClientImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,94 @@
+package org.apache.hadoop.yarn.api.impl.pb.client;
+
+import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.net.InetSocketAddress;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.ipc.RPC;
+import org.apache.hadoop.yarn.api.AMRMProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.AllocateRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.AllocateResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationMasterRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationMasterResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.RegisterApplicationMasterRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.RegisterApplicationMasterResponsePBImpl;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.ipc.ProtoOverHadoopRpcEngine;
+import org.apache.hadoop.yarn.proto.AMRMProtocol.AMRMProtocolService;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.AllocateRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.FinishApplicationMasterRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.RegisterApplicationMasterRequestProto;
+
+import com.google.protobuf.ServiceException;
+
+public class AMRMProtocolPBClientImpl implements AMRMProtocol {
+
+  private AMRMProtocolService.BlockingInterface proxy;
+  
+  public AMRMProtocolPBClientImpl(long clientVersion, InetSocketAddress addr, Configuration conf) throws IOException {
+    RPC.setProtocolEngine(conf, AMRMProtocolService.BlockingInterface.class, ProtoOverHadoopRpcEngine.class);
+    proxy = (AMRMProtocolService.BlockingInterface)RPC.getProxy(
+        AMRMProtocolService.BlockingInterface.class, clientVersion, addr, conf);
+  }
+  
+  
+  @Override
+  public AllocateResponse allocate(AllocateRequest request)
+      throws YarnRemoteException {
+    AllocateRequestProto requestProto = ((AllocateRequestPBImpl)request).getProto();
+    try {
+      return new AllocateResponsePBImpl(proxy.allocate(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  
+  
+  @Override
+  public FinishApplicationMasterResponse finishApplicationMaster(
+      FinishApplicationMasterRequest request) throws YarnRemoteException {
+    FinishApplicationMasterRequestProto requestProto = ((FinishApplicationMasterRequestPBImpl)request).getProto();
+    try {
+      return new FinishApplicationMasterResponsePBImpl(proxy.finishApplicationMaster(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public RegisterApplicationMasterResponse registerApplicationMaster(
+      RegisterApplicationMasterRequest request) throws YarnRemoteException {
+    RegisterApplicationMasterRequestProto requestProto = ((RegisterApplicationMasterRequestPBImpl)request).getProto();
+    try {
+      return new RegisterApplicationMasterResponsePBImpl(proxy.registerApplicationMaster(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ClientRMProtocolPBClientImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ClientRMProtocolPBClientImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ClientRMProtocolPBClientImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ClientRMProtocolPBClientImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,136 @@
+package org.apache.hadoop.yarn.api.impl.pb.client;
+
+import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.net.InetSocketAddress;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.ipc.RPC;
+import org.apache.hadoop.yarn.api.ClientRMProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetApplicationMasterRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetApplicationMasterResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetClusterMetricsRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetClusterMetricsResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetNewApplicationIdRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetNewApplicationIdResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.SubmitApplicationRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.SubmitApplicationResponsePBImpl;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.ipc.ProtoOverHadoopRpcEngine;
+import org.apache.hadoop.yarn.proto.ClientRMProtocol.ClientRMProtocolService;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.FinishApplicationRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetApplicationMasterRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetClusterMetricsRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetNewApplicationIdRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.SubmitApplicationRequestProto;
+
+import com.google.protobuf.ServiceException;
+
+public class ClientRMProtocolPBClientImpl implements ClientRMProtocol {
+
+  private ClientRMProtocolService.BlockingInterface proxy;
+  
+  public ClientRMProtocolPBClientImpl(long clientVersion, InetSocketAddress addr, Configuration conf) throws IOException {
+    RPC.setProtocolEngine(conf, ClientRMProtocolService.BlockingInterface.class, ProtoOverHadoopRpcEngine.class);
+    proxy = (ClientRMProtocolService.BlockingInterface)RPC.getProxy(
+        ClientRMProtocolService.BlockingInterface.class, clientVersion, addr, conf);
+  }
+  
+  @Override
+  public FinishApplicationResponse finishApplication(
+      FinishApplicationRequest request) throws YarnRemoteException {
+    FinishApplicationRequestProto requestProto = ((FinishApplicationRequestPBImpl)request).getProto();
+    try {
+      return new FinishApplicationResponsePBImpl(proxy.finishApplication(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public GetApplicationMasterResponse getApplicationMaster(
+      GetApplicationMasterRequest request) throws YarnRemoteException {
+    GetApplicationMasterRequestProto requestProto = ((GetApplicationMasterRequestPBImpl)request).getProto();
+    try {
+      return new GetApplicationMasterResponsePBImpl(proxy.getApplicationMaster(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public GetClusterMetricsResponse getClusterMetrics(
+      GetClusterMetricsRequest request) throws YarnRemoteException {
+    GetClusterMetricsRequestProto requestProto = ((GetClusterMetricsRequestPBImpl)request).getProto();
+    try {
+      return new GetClusterMetricsResponsePBImpl(proxy.getClusterMetrics(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public GetNewApplicationIdResponse getNewApplicationId(
+      GetNewApplicationIdRequest request) throws YarnRemoteException {
+    GetNewApplicationIdRequestProto requestProto = ((GetNewApplicationIdRequestPBImpl)request).getProto();
+    try {
+      return new GetNewApplicationIdResponsePBImpl(proxy.getNewApplicationId(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public SubmitApplicationResponse submitApplication(
+      SubmitApplicationRequest request) throws YarnRemoteException {
+    SubmitApplicationRequestProto requestProto = ((SubmitApplicationRequestPBImpl)request).getProto();
+    try {
+      return new SubmitApplicationResponsePBImpl(proxy.submitApplication(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ContainerManagerPBClientImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ContainerManagerPBClientImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ContainerManagerPBClientImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ContainerManagerPBClientImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,114 @@
+package org.apache.hadoop.yarn.api.impl.pb.client;
+
+import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.net.InetSocketAddress;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.ipc.RPC;
+import org.apache.hadoop.yarn.api.ContainerManager;
+import org.apache.hadoop.yarn.api.protocolrecords.CleanupContainerRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.CleanupContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.StartContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.StopContainerRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.StopContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.CleanupContainerRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.CleanupContainerResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetContainerStatusRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetContainerStatusResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StartContainerRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StartContainerResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StopContainerRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StopContainerResponsePBImpl;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.ipc.ProtoOverHadoopRpcEngine;
+import org.apache.hadoop.yarn.proto.ContainerManager.ContainerManagerService;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.CleanupContainerRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetContainerStatusRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.StartContainerRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.StopContainerRequestProto;
+
+import com.google.protobuf.ServiceException;
+
+public class ContainerManagerPBClientImpl implements ContainerManager {
+
+  private ContainerManagerService.BlockingInterface proxy;
+  
+  public ContainerManagerPBClientImpl(long clientVersion, InetSocketAddress addr, Configuration conf) throws IOException {
+    RPC.setProtocolEngine(conf, ContainerManagerService.BlockingInterface.class, ProtoOverHadoopRpcEngine.class);
+    proxy = (ContainerManagerService.BlockingInterface)RPC.getProxy(
+        ContainerManagerService.BlockingInterface.class, clientVersion, addr, conf);
+  }
+  
+  @Override
+  public CleanupContainerResponse cleanupContainer(CleanupContainerRequest request)
+      throws YarnRemoteException {
+    CleanupContainerRequestProto requestProto = ((CleanupContainerRequestPBImpl)request).getProto();
+    try {
+      return new CleanupContainerResponsePBImpl(proxy.cleanupContainer(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public GetContainerStatusResponse getContainerStatus(
+      GetContainerStatusRequest request) throws YarnRemoteException {
+    GetContainerStatusRequestProto requestProto = ((GetContainerStatusRequestPBImpl)request).getProto();
+    try {
+      return new GetContainerStatusResponsePBImpl(proxy.getContainerStatus(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public StartContainerResponse startContainer(StartContainerRequest request)
+      throws YarnRemoteException {
+    StartContainerRequestProto requestProto = ((StartContainerRequestPBImpl)request).getProto();
+    try {
+      return new StartContainerResponsePBImpl(proxy.startContainer(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+  @Override
+  public StopContainerResponse stopContainer(StopContainerRequest request)
+      throws YarnRemoteException {
+    StopContainerRequestProto requestProto = ((StopContainerRequestPBImpl)request).getProto();
+    try {
+      return new StopContainerResponsePBImpl(proxy.stopContainer(null, requestProto));
+    } catch (ServiceException e) {
+      if (e.getCause() instanceof YarnRemoteException) {
+        throw (YarnRemoteException)e.getCause();
+      } else if (e.getCause() instanceof UndeclaredThrowableException) {
+        throw (UndeclaredThrowableException)e.getCause();
+      } else {
+        throw new UndeclaredThrowableException(e);
+      }
+    }
+  }
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/AMRMProtocolPBServiceImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/AMRMProtocolPBServiceImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/AMRMProtocolPBServiceImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/AMRMProtocolPBServiceImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,70 @@
+package org.apache.hadoop.yarn.api.impl.pb.service;
+
+import org.apache.hadoop.yarn.api.AMRMProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.AllocateRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.AllocateResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationMasterRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationMasterResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.RegisterApplicationMasterRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.RegisterApplicationMasterResponsePBImpl;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.proto.AMRMProtocol.AMRMProtocolService.BlockingInterface;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.AllocateRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.AllocateResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.FinishApplicationMasterRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.FinishApplicationMasterResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.RegisterApplicationMasterRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.RegisterApplicationMasterResponseProto;
+
+import com.google.protobuf.RpcController;
+import com.google.protobuf.ServiceException;
+
+public class AMRMProtocolPBServiceImpl implements BlockingInterface {
+
+  private AMRMProtocol real;
+  
+  public AMRMProtocolPBServiceImpl(AMRMProtocol impl) {
+    this.real = impl;
+  }
+  
+  @Override
+  public AllocateResponseProto allocate(RpcController arg0,
+      AllocateRequestProto proto) throws ServiceException {
+    AllocateRequestPBImpl request = new AllocateRequestPBImpl(proto);
+    try {
+      AllocateResponse response = real.allocate(request);
+      return ((AllocateResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public FinishApplicationMasterResponseProto finishApplicationMaster(
+      RpcController arg0, FinishApplicationMasterRequestProto proto)
+      throws ServiceException {
+    FinishApplicationMasterRequestPBImpl request = new FinishApplicationMasterRequestPBImpl(proto);
+    try {
+      FinishApplicationMasterResponse response = real.finishApplicationMaster(request);
+      return ((FinishApplicationMasterResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public RegisterApplicationMasterResponseProto registerApplicationMaster(
+      RpcController arg0, RegisterApplicationMasterRequestProto proto)
+      throws ServiceException {
+    RegisterApplicationMasterRequestPBImpl request = new RegisterApplicationMasterRequestPBImpl(proto);
+    try {
+      RegisterApplicationMasterResponse response = real.registerApplicationMaster(request);
+      return ((RegisterApplicationMasterResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ClientRMProtocolPBServiceImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ClientRMProtocolPBServiceImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ClientRMProtocolPBServiceImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ClientRMProtocolPBServiceImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,105 @@
+package org.apache.hadoop.yarn.api.impl.pb.service;
+
+import org.apache.hadoop.yarn.api.ClientRMProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.FinishApplicationResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetApplicationMasterRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetApplicationMasterResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetClusterMetricsRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetClusterMetricsResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetNewApplicationIdRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetNewApplicationIdResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.SubmitApplicationRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.SubmitApplicationResponsePBImpl;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.proto.ClientRMProtocol.ClientRMProtocolService.BlockingInterface;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.FinishApplicationRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.FinishApplicationResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetApplicationMasterRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetApplicationMasterResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetClusterMetricsRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetClusterMetricsResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetNewApplicationIdRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetNewApplicationIdResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.SubmitApplicationRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.SubmitApplicationResponseProto;
+
+import com.google.protobuf.RpcController;
+import com.google.protobuf.ServiceException;
+
+public class ClientRMProtocolPBServiceImpl implements BlockingInterface {
+
+  private ClientRMProtocol real;
+  
+  public ClientRMProtocolPBServiceImpl(ClientRMProtocol impl) {
+    this.real = impl;
+  }
+  
+  @Override
+  public FinishApplicationResponseProto finishApplication(RpcController arg0,
+      FinishApplicationRequestProto proto) throws ServiceException {
+    FinishApplicationRequestPBImpl request = new FinishApplicationRequestPBImpl(proto);
+    try {
+      FinishApplicationResponse response = real.finishApplication(request);
+      return ((FinishApplicationResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public GetApplicationMasterResponseProto getApplicationMaster(
+      RpcController arg0, GetApplicationMasterRequestProto proto)
+      throws ServiceException {
+    GetApplicationMasterRequestPBImpl request = new GetApplicationMasterRequestPBImpl(proto);
+    try {
+      GetApplicationMasterResponse response = real.getApplicationMaster(request);
+      return ((GetApplicationMasterResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public GetClusterMetricsResponseProto getClusterMetrics(RpcController arg0,
+      GetClusterMetricsRequestProto proto) throws ServiceException {
+    GetClusterMetricsRequestPBImpl request = new GetClusterMetricsRequestPBImpl(proto);
+    try {
+      GetClusterMetricsResponse response = real.getClusterMetrics(request);
+      return ((GetClusterMetricsResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public GetNewApplicationIdResponseProto getNewApplicationId(
+      RpcController arg0, GetNewApplicationIdRequestProto proto)
+      throws ServiceException {
+    GetNewApplicationIdRequestPBImpl request = new GetNewApplicationIdRequestPBImpl(proto);
+    try {
+      GetNewApplicationIdResponse response = real.getNewApplicationId(request);
+      return ((GetNewApplicationIdResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public SubmitApplicationResponseProto submitApplication(RpcController arg0,
+      SubmitApplicationRequestProto proto) throws ServiceException {
+    SubmitApplicationRequestPBImpl request = new SubmitApplicationRequestPBImpl(proto);
+    try {
+      SubmitApplicationResponse response = real.submitApplication(request);
+      return ((SubmitApplicationResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ContainerManagerPBServiceImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ContainerManagerPBServiceImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ContainerManagerPBServiceImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/service/ContainerManagerPBServiceImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,86 @@
+package org.apache.hadoop.yarn.api.impl.pb.service;
+
+import org.apache.hadoop.yarn.api.ContainerManager;
+import org.apache.hadoop.yarn.api.protocolrecords.CleanupContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.StartContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.StopContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.CleanupContainerRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.CleanupContainerResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetContainerStatusRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetContainerStatusResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StartContainerRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StartContainerResponsePBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StopContainerRequestPBImpl;
+import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.StopContainerResponsePBImpl;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.proto.ContainerManager.ContainerManagerService.BlockingInterface;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.CleanupContainerRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.CleanupContainerResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetContainerStatusRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetContainerStatusResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.StartContainerRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.StartContainerResponseProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.StopContainerRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.StopContainerResponseProto;
+
+import com.google.protobuf.RpcController;
+import com.google.protobuf.ServiceException;
+
+public class ContainerManagerPBServiceImpl implements BlockingInterface {
+
+  private ContainerManager real;
+  
+  public ContainerManagerPBServiceImpl(ContainerManager impl) {
+    this.real = impl;
+  }
+  
+  @Override
+  public CleanupContainerResponseProto cleanupContainer(RpcController arg0,
+      CleanupContainerRequestProto proto) throws ServiceException {
+    CleanupContainerRequestPBImpl request = new CleanupContainerRequestPBImpl(proto);
+    try {
+      CleanupContainerResponse response = real.cleanupContainer(request);
+      return ((CleanupContainerResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public GetContainerStatusResponseProto getContainerStatus(RpcController arg0,
+      GetContainerStatusRequestProto proto) throws ServiceException {
+    GetContainerStatusRequestPBImpl request = new GetContainerStatusRequestPBImpl(proto);
+    try {
+      GetContainerStatusResponse response = real.getContainerStatus(request);
+      return ((GetContainerStatusResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public StartContainerResponseProto startContainer(RpcController arg0,
+      StartContainerRequestProto proto) throws ServiceException {
+    StartContainerRequestPBImpl request = new StartContainerRequestPBImpl(proto);
+    try {
+      StartContainerResponse response = real.startContainer(request);
+      return ((StartContainerResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+  @Override
+  public StopContainerResponseProto stopContainer(RpcController arg0,
+      StopContainerRequestProto proto) throws ServiceException {
+    StopContainerRequestPBImpl request = new StopContainerRequestPBImpl(proto);
+    try {
+      StopContainerResponse response = real.stopContainer(request);
+      return ((StopContainerResponsePBImpl)response).getProto();
+    } catch (YarnRemoteException e) {
+      throw new ServiceException(e);
+    }
+  }
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RecordFactory.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RecordFactory.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RecordFactory.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RecordFactory.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.factories;
+
+import org.apache.hadoop.yarn.YarnException;
+
+
+public interface RecordFactory {
+  public <T> T newRecordInstance(Class<T> clazz) throws YarnException;
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcClientFactory.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcClientFactory.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcClientFactory.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcClientFactory.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,12 @@
+package org.apache.hadoop.yarn.factories;
+
+import java.net.InetSocketAddress;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.YarnException;
+
+public interface RpcClientFactory {
+  
+  public Object getClient(Class<?> protocol, long clientVersion, InetSocketAddress addr, Configuration conf) throws YarnException;
+
+}
\ No newline at end of file

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcServerFactory.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcServerFactory.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcServerFactory.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/RpcServerFactory.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,17 @@
+package org.apache.hadoop.yarn.factories;
+
+import java.net.InetSocketAddress;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.ipc.RPC.Server;
+import org.apache.hadoop.security.token.SecretManager;
+import org.apache.hadoop.security.token.TokenIdentifier;
+import org.apache.hadoop.yarn.YarnException;
+
+public interface RpcServerFactory {
+  
+  public Server getServer(Class<?> protocol, Object instance,
+      InetSocketAddress addr, Configuration conf,
+      SecretManager<? extends TokenIdentifier> secretManager)
+      throws YarnException;
+}
\ No newline at end of file

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/YarnRemoteExceptionFactory.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/YarnRemoteExceptionFactory.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/YarnRemoteExceptionFactory.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/YarnRemoteExceptionFactory.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,9 @@
+package org.apache.hadoop.yarn.factories;
+
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+
+public interface YarnRemoteExceptionFactory {
+  public YarnRemoteException createYarnRemoteException(String message);
+  public YarnRemoteException createYarnRemoteException(String message, Throwable t);
+  public YarnRemoteException createYarnRemoteException(Throwable t);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RecordFactoryPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RecordFactoryPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RecordFactoryPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RecordFactoryPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,78 @@
+package org.apache.hadoop.yarn.factories.impl.pb;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.YarnException;
+import org.apache.hadoop.yarn.factories.RecordFactory;
+
+public class RecordFactoryPBImpl implements RecordFactory {
+
+  private static final String PB_IMPL_PACKAGE_SUFFIX = "impl.pb";
+  private static final String PB_IMPL_CLASS_SUFFIX = "PBImpl";
+
+  private static final RecordFactoryPBImpl self = new RecordFactoryPBImpl();
+  private Configuration localConf = new Configuration();
+  private Map<Class<?>, Constructor<?>> cache = new HashMap<Class<?>, Constructor<?>>();
+
+  private RecordFactoryPBImpl() {
+  }
+  
+  public static RecordFactory get() {
+    return self;
+  }
+  
+  @Override
+  public <T> T newRecordInstance(Class<T> clazz) throws YarnException {
+    
+    Constructor<?> constructor = null;
+    if (cache.get(clazz) == null) {
+      Class<?> pbClazz = null;
+      try {
+        pbClazz = localConf.getClassByName(getPBImplClassName(clazz));
+      } catch (ClassNotFoundException e) {
+        throw new YarnException("Failed to load class: ["
+            + getPBImplClassName(clazz) + "]", e);
+      }
+      try {
+        constructor = pbClazz.getConstructor(null);
+        constructor.setAccessible(true);
+        cache.put(clazz, constructor);
+      } catch (NoSuchMethodException e) {
+        throw new YarnException("Could not find 0 argument constructor", e);
+      }
+    } else {
+      constructor = cache.get(clazz);
+    }
+    try {
+      Object retObject = constructor.newInstance();
+      return (T)retObject;
+    } catch (InvocationTargetException e) {
+      throw new YarnException(e);
+    } catch (IllegalAccessException e) {
+      throw new YarnException(e);
+    } catch (InstantiationException e) {
+      throw new YarnException(e);
+    }
+  }
+
+  private String getPBImplClassName(Class<?> clazz) {
+    String srcPackagePart = getPackageName(clazz);
+    String srcClassName = getClassName(clazz);
+    String destPackagePart = srcPackagePart + "." + PB_IMPL_PACKAGE_SUFFIX;
+    String destClassPart = srcClassName + PB_IMPL_CLASS_SUFFIX;
+    return destPackagePart + "." + destClassPart;
+  }
+  
+  private String getClassName(Class<?> clazz) {
+    String fqName = clazz.getName();
+    return (fqName.substring(fqName.lastIndexOf(".") + 1, fqName.length()));
+  }
+  
+  private String getPackageName(Class<?> clazz) {
+    return clazz.getPackage().getName();
+  }
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcClientFactoryPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcClientFactoryPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcClientFactoryPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcClientFactoryPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,81 @@
+package org.apache.hadoop.yarn.factories.impl.pb;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.YarnException;
+import org.apache.hadoop.yarn.factories.RpcClientFactory;
+
+public class RpcClientFactoryPBImpl implements RpcClientFactory {
+
+  private static final String PB_IMPL_PACKAGE_SUFFIX = "impl.pb.client";
+  private static final String PB_IMPL_CLASS_SUFFIX = "PBClientImpl";
+  
+  private static final RpcClientFactoryPBImpl self = new RpcClientFactoryPBImpl();
+  private Configuration localConf = new Configuration();
+  private Map<Class<?>, Constructor<?>> cache = new HashMap<Class<?>, Constructor<?>>();
+  
+  public static RpcClientFactoryPBImpl get() {
+    return RpcClientFactoryPBImpl.self;
+  }
+  
+  private RpcClientFactoryPBImpl() {
+  }
+  
+  public Object getClient(Class<?> protocol, long clientVersion, InetSocketAddress addr, Configuration conf) throws YarnException {
+   
+    Constructor<?> constructor = null;
+    if (cache.get(protocol) == null) {
+      Class<?> pbClazz = null;
+      try {
+        pbClazz = localConf.getClassByName(getPBImplClassName(protocol));
+      } catch (ClassNotFoundException e) {
+        throw new YarnException("Failed to load class: ["
+            + getPBImplClassName(protocol) + "]", e);
+      }
+      try {
+        constructor = pbClazz.getConstructor(Long.TYPE, InetSocketAddress.class, Configuration.class);
+        constructor.setAccessible(true);
+        cache.put(protocol, constructor);
+      } catch (NoSuchMethodException e) {
+        throw new YarnException("Could not find constructor with params: " + Long.TYPE + ", " + InetSocketAddress.class + ", " + Configuration.class, e);
+      }
+    } else {
+      constructor = cache.get(protocol);
+    }
+
+    try {
+      Object retObject = constructor.newInstance(clientVersion, addr, conf);
+      return retObject;
+    } catch (InvocationTargetException e) {
+      throw new YarnException(e);
+    } catch (IllegalAccessException e) {
+      throw new YarnException(e);
+    } catch (InstantiationException e) {
+      throw new YarnException(e);
+    }
+  }
+  
+  
+  
+  private String getPBImplClassName(Class<?> clazz) {
+    String srcPackagePart = getPackageName(clazz);
+    String srcClassName = getClassName(clazz);
+    String destPackagePart = srcPackagePart + "." + PB_IMPL_PACKAGE_SUFFIX;
+    String destClassPart = srcClassName + PB_IMPL_CLASS_SUFFIX;
+    return destPackagePart + "." + destClassPart;
+  }
+  
+  private String getClassName(Class<?> clazz) {
+    String fqName = clazz.getName();
+    return (fqName.substring(fqName.lastIndexOf(".") + 1, fqName.length()));
+  }
+  
+  private String getPackageName(Class<?> clazz) {
+    return clazz.getPackage().getName();
+  }
+}
\ No newline at end of file

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcServerFactoryPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcServerFactoryPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcServerFactoryPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/factories/impl/pb/RpcServerFactoryPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,141 @@
+package org.apache.hadoop.yarn.factories.impl.pb;
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.ipc.RPC;
+import org.apache.hadoop.ipc.RPC.Server;
+import org.apache.hadoop.security.token.SecretManager;
+import org.apache.hadoop.security.token.TokenIdentifier;
+import org.apache.hadoop.yarn.YarnException;
+import org.apache.hadoop.yarn.factories.RpcServerFactory;
+import org.apache.hadoop.yarn.ipc.ProtoOverHadoopRpcEngine;
+
+import com.google.protobuf.BlockingService;
+
+public class RpcServerFactoryPBImpl implements RpcServerFactory {
+
+  private static final String PROTO_GEN_PACKAGE_NAME = "org.apache.hadoop.yarn.proto";
+  private static final String PROTO_GEN_CLASS_SUFFIX = "Service";
+  private static final String PB_IMPL_PACKAGE_SUFFIX = "impl.pb.service";
+  private static final String PB_IMPL_CLASS_SUFFIX = "PBServiceImpl";
+  
+  private static final RpcServerFactoryPBImpl self = new RpcServerFactoryPBImpl();
+
+  private Configuration localConf = new Configuration();
+  private Map<Class<?>, Constructor<?>> serviceCache = new HashMap<Class<?>, Constructor<?>>();
+  private Map<Class<?>, Method> protoCache = new HashMap<Class<?>, Method>();
+  
+  public static RpcServerFactoryPBImpl get() {
+    return RpcServerFactoryPBImpl.self;
+  }
+  
+
+  private RpcServerFactoryPBImpl() {
+  }
+  
+  @Override
+  public Server getServer(Class<?> protocol, Object instance,
+      InetSocketAddress addr, Configuration conf,
+      SecretManager<? extends TokenIdentifier> secretManager)
+      throws YarnException {
+    
+    Constructor<?> constructor = null;
+    if (serviceCache.get(protocol) == null) {
+      Class<?> pbServiceImplClazz = null;
+      try {
+        pbServiceImplClazz = localConf
+            .getClassByName(getPbServiceImplClassName(protocol));
+      } catch (ClassNotFoundException e) {
+        throw new YarnException("Failed to load class: ["
+            + getPbServiceImplClassName(protocol) + "]", e);
+      }
+      try {
+        constructor = pbServiceImplClazz.getConstructor(protocol);
+        constructor.setAccessible(true);
+        serviceCache.put(protocol, constructor);
+      } catch (NoSuchMethodException e) {
+        throw new YarnException("Could not find constructor with params: "
+            + Long.TYPE + ", " + InetSocketAddress.class + ", "
+            + Configuration.class, e);
+      }
+    } else {
+      constructor = serviceCache.get(protocol);
+    }
+    
+    Object service = null;
+    try {
+      service = constructor.newInstance(instance);
+    } catch (InvocationTargetException e) {
+      throw new YarnException(e);
+    } catch (IllegalAccessException e) {
+      throw new YarnException(e);
+    } catch (InstantiationException e) {
+      throw new YarnException(e);
+    }
+
+    Method method = null;
+    if (protoCache.get(protocol) == null) {
+      Class<?> protoClazz = null;
+      try {
+        protoClazz = localConf.getClassByName(getProtoClassName(protocol));
+      } catch (ClassNotFoundException e) {
+        throw new YarnException("Failed to load class: ["
+            + getProtoClassName(protocol) + "]", e);
+      }
+      try {
+        method = protoClazz.getMethod("newReflectiveBlockingService", service.getClass().getInterfaces()[0]);
+        method.setAccessible(true);
+        protoCache.put(protocol, method);
+      } catch (NoSuchMethodException e) {
+        throw new YarnException(e);
+      }
+    } else {
+      method = protoCache.get(protocol);
+    }
+    
+    try {
+      return createServer(addr, conf, secretManager, (BlockingService)method.invoke(null, service));
+    } catch (InvocationTargetException e) {
+      throw new YarnException(e);
+    } catch (IllegalAccessException e) {
+      throw new YarnException(e);
+    } catch (IOException e) {
+      throw new YarnException(e);
+    }
+  }
+  
+  private String getProtoClassName(Class<?> clazz) {
+    String srcClassName = getClassName(clazz);
+    return PROTO_GEN_PACKAGE_NAME + "." + srcClassName + "$" + srcClassName + PROTO_GEN_CLASS_SUFFIX;  
+  }
+  
+  private String getPbServiceImplClassName(Class<?> clazz) {
+    String srcPackagePart = getPackageName(clazz);
+    String srcClassName = getClassName(clazz);
+    String destPackagePart = srcPackagePart + "." + PB_IMPL_PACKAGE_SUFFIX;
+    String destClassPart = srcClassName + PB_IMPL_CLASS_SUFFIX;
+    return destPackagePart + "." + destClassPart;
+  }
+  
+  private String getClassName(Class<?> clazz) {
+    String fqName = clazz.getName();
+    return (fqName.substring(fqName.lastIndexOf(".") + 1, fqName.length()));
+  }
+  
+  private String getPackageName(Class<?> clazz) {
+    return clazz.getPackage().getName();
+  }
+
+  private Server createServer(InetSocketAddress addr, Configuration conf, SecretManager<? extends TokenIdentifier> secretManager, BlockingService blockingService) throws IOException {
+    RPC.setProtocolEngine(conf, BlockingService.class, ProtoOverHadoopRpcEngine.class);
+    Server server = RPC.getServer(BlockingService.class, blockingService, addr.getHostName(), addr.getPort(), 1, false, conf, secretManager);
+    return server;
+  }
+}