Greetings,
About a week ago, I opened a new JIRA ticket [HBASE-19207] - Create a Minimal HBase REST Client. As I started to study the feasibility of this task, I determined the project dependencies were a hornets nest. There is no clear separation of client and server components. For example the VersionModel class relies upon the javax.servlet.ServletContext class for construction on the server. There are many other examples of blurred boundaries. I initially tried to break out the client specific files plus protocol buffer related files in the hbase-rest project. This lead me to believe we could create a clear separation of client and server components. The trouble started on how to provide access to classes such as Cell or Scan from the hbase-client. Using the hbase-shaded-client seems to be a solution but far from ideal. This failed as well because of complications with shading. The protocol buffer related stuff was generated twice. Once in my project and already in the hbase-shaded-client. So as an interim solution, I would like to suggest the introduction of a Apache Maven Bill-of-Materials (BOM) for access to the HBase REST Client. I have created a BOM for 2.0.0-alpha4 on Github for comment: https://github.com/rmkellogg/hbase-rest-client-ex Using the BOM feature, I was able to reduce the number of dependencies from 146 to 21. I think we could allow some flexibility for upgrade to common libraries (Guava, Apache HttpComponents, etc) using this technique. Thoughts and comments appreciated. Rick Kellogg