Generated services Iface/Client inner classes do not derive from base classes
-----------------------------------------------------------------------------

                 Key: THRIFT-746
                 URL: https://issues.apache.org/jira/browse/THRIFT-746
             Project: Thrift
          Issue Type: Improvement
          Components: Compiler (Java)
    Affects Versions: 0.2
         Environment: All
            Reporter: Mathias Herberts


When defining a service in Thrift, the generated code looks like

public class Service {
  public interface Iface {
   ...
  }

  public static class Client {
    ...
  }
}

This makes it quite hard to create generic classes which accept any kind of 
Client or Iface as a parameter. One such use case is the pooling of Client 
objects.

One way to circumvent this is to create a top level thrift service and have all 
other services extend it, but then there will be no coherency across the thrift 
community.
 
What about introducing a TService class:

public class TService {
  public interface Iface {}
  public static class Client {
       public Client(TProtocol prot) { this(prot,prot); }
       public Client(TProtocol iprot, TProtocol oprot)   {}
    }
}

and have generated services inherit from it:

public class Service {
  public interface Iface extends TService.Iface {
  }
  public static class Client extends TService.Client {
  }
}

As a bonus I'll contribute the pooling mechanism I've created for Bibale (based 
on GenericObjectPool).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to