Hi Uvindra, On Mon, Oct 31, 2016 at 1:54 PM, Uvindra Dias Jayasinha <[email protected]> wrote:
> +architecture > > This initially began as an internal APIM discussion for avoiding hard > coded dependencies within the code we are writing for C5 to make them more > unit testable(Being able to do dependency injection[1]). But as suggested > by Akila I think this is a good thing to talk about publicly as all > products can benefit. > > Akila suggested using something like Google Juice[2] for this purpose. Im > +1 for using this. Would like to here your thoughts on this. > > [1] https://www.youtube.com/watch?v=IKD2-MAkXyQ > [2] https://github.com/google/guice > > > On 31 October 2016 at 13:06, Uvindra Dias Jayasinha <[email protected]> > wrote: > >> >> >>> *The solution* >>>> Pass an instance of the interface to the heavy weight resource as a >>>> constructor parameter to the class that needs to use it. So in this case it >>>> should be, >>>> >>>> public APIConsumerImpl(ApiDAO apiDAO, ApplicationDAO appDAO, >>>> APISubscriptionDAO apiSubscriptionDAO) { >>>> this.apiDAO = apiDAO; >>>> this.appDAO = appDAO; >>>> this.apiSubscriptionDAO = apiSubscriptionDAO; >>>> } >>>> >>>> Passing it this way means we can now provide a mock implementation of >>>> the DOA interfaces when constructing the Consumer and Provider classes >>>> using a library such as mockito[1] and easily write unit tests. >>>> >>> +1 for above constructor to be used in unit tests. But I don't think we can use the same for real use. For that, we can have a default constructor as well, so that clients don't need to worry about injecting DAO dependencies. public APIConsumerImpl() { this.apiDAO = DAOFactory.getApiDAO(); this.appDAO = DAOFactory.getAppDAO(); this.apiSubscriptionDAO = DAOFactory.getSubscriptionDAO(); } Thanks, -- *Bhathiya Jayasekara* *Senior Software Engineer,* *WSO2 inc., http://wso2.com <http://wso2.com>* *Phone: +94715478185 <%2B94715478185>* *LinkedIn: http://www.linkedin.com/in/bhathiyaj <http://www.linkedin.com/in/bhathiyaj>* *Twitter: https://twitter.com/bhathiyax <https://twitter.com/bhathiyax>* *Blog: http://movingaheadblog.blogspot.com <http://movingaheadblog.blogspot.com/>*
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
