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]

Reply via email to