Hi all,
After a massive 100+ comments, I've decided to merge the Android Core SDK Proposal
* Android Core SDK is available from Maven:
* Example Android App that uses the core SDK:
The amount of comments, calls and back&forth on irc has reached a reasonable level of agreement, with some remaining points of contention.
The contention is mainly around the level of complexity that a developer has to undertake to use the SDK.
After listening to the 3 main voices on this (Summers, Wojciech, Passos), I can see both points of view.
(WARNING: A lot of paraphrasing below :) )
From Passos & Wojciech's point of view, ease of use of the SDK is what's most important. There should be practically no setup/init required other than having a mobile-config.json file in the right place, and call a static method to get an instance of a service (similar to Firebase).
From Summers point of view, ease of use is also important, but something we can improve on iteratively. For example, the default use of a Service will be fine & possible to automate the setup for for 95% of cases. However, the other 5% is what we need to take into account from the beginning.
So, based on this, I would like if the following 2 things were follow up goals for the Core SDK.
I believe these changes will take whats currently there (and working), and move it towards something that is easier to use for developers.
Goal 1:
Remove the need for static block initialisation/registration of service classes & their dependencies. i.e. this:
static {
ServiceModuleRegistry.registerServiceModule("keycloak", KeyCloakService.class, "http");
}
Goal 2:
Allow a simpler way of getting an instance of a Service class other than below.
keycloakService = core.getService("keycloak", KeyCloakService.class);
If there are multiple instances registered for a particular Class, it may still be necessary to use the above to get a 'named' instance (much like in dependency injection libs like spring that use annotations).
However, in most cases, the below should be possible:
keycloakService = core.getService(KeyCloakService.class);
Thanks
--
David Martin
Red Hat Mobile
Twitter: @irldavem
IRC: @irldavem (#aerogear)