On 11/5/2015 4:30 AM, Alessandro Benedetti wrote: > Hi guys, > I was taking a look to the implementation details to understand how > Solr requests are written by SolrJ APIs. > The interesting classes are : > > /org.apache.solr.client.solrj.request.RequestWriter/ > > /org.apache.solr.client.solrj.impl.BinaryRequestWriter/( wrong package ? )
Even though RequestWriter is not written as an actual interface, and is itself an implementation, you can think of it as an interface. BinaryRequestWriter is a very specific implementation, which is why it is in a package that includes "impl." RequestWriter should probably be an interface or an abstract class (like SolrClient), with an XML and a binary implementation. I believe that there is one primary reason that HttpSolrClient is still using the XML request writer and that RequestWriter is still an actual implementation rather than abstract class or an interface: Inertia. The HTTP client has been available for users for a very long time. Even though the chances of causing a problem with existing user programs by switching the default writer is very small, it's much safer and easier to leave it at XML. We had an opportunity with the 5.0 release to make some of these changes, but a new major release has so much activity that it is easy to lose track of desired fixes, especially when the existing version works perfectly. The Cloud client is using binary because it is a newer implementation and did not have years of history with XML to worry about. I think that these changes should be made in trunk, so they will be there in 6.0 when that version is released. Thanks, Shawn --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
