intercom / intercom-java

Java bindings for the Intercom API
https://developers.intercom.io/reference
Apache License 2.0
64 stars 68 forks source link

Extract Iterator implementation into TypedDataCollection #247

Closed catacraciun closed 6 years ago

catacraciun commented 6 years ago

Why?

I am using ConversationPartCollection and it does not implement Iterator, as most of the Collections (in this SDK) do. Because of that, the code was looking pretty bad, as I couldn't use the TypedDataCollectionIterator either, as it is package-level. The solution to this is to make TypedDataCollection implement Iterator directly, and all its subclasses will benefit from it.

How?

First thing, TypedDataCollection now implements Iterator, it is delegating the hasNext(), next() and remove() methods to a TypedDataCollectionIterator instance. Second, I have removed all specific implementations of Iterator from all Collection classes, which were just copy-paste.

thewheat commented 6 years ago

Wow @catacraciun that's great and thanks for the contribution! 😄
It looks all good to me and I'll run this by the team for a full review 👍

Thanks again!