Hi all,

While implementing  service deployment functionality for super tenant, I
found bit hard to plug a new subscription tenancy behaviour for a
CartidgeSubscription.

Please correct me if I'm wrong, I wanted to add a new tenancy behaviour for
a FrameworkCartirdgeSubscription, but subscriptionTenancyBehaviour is
initialized to the relevant concrete class inside CartidgeSubscription,
which I think is not good, because that will lose the extension capability
without modifying the base class, for eg, if I want to add a new
subscriptionTenancyBehaviour, I will have to modify CartidgeSubscription
class, which is not correct. It would have been better if
the constructor of CartidgeSubscription accepts a type of
subscriptionTenancyBehaviour, and do the assignment inside the
CartidgeSubscription class, so that when instantiating a
CartidgeSubscription, the relevant subscriptionTenancyBehaviour would also
need to pass in.

But then another problem comes, that is, subscriptionTenancyBehaviour "has
a" CartidgeSubscription,  therefore when instantiating a
subscriptionTenancyBehaviour, cartridgeSubscription has to be passed in
constructor, therefore there is no way
to create a  subscriptionTenancyBehaviour outside of a
cartridgeSubscription.

However it seems that we can move cartridgeSubscription to the method
signatures of SubscriptionTenancyBehaviour, and also by
invoking subscriptionTenancyBehaviour's relevant operations from
"CartridgeSubscription" abstract class ( which should be the correct design
approach IMO, rather than to invoke it from the concrete class ) this can
be sorted out.

Otherwise, for every addition of subscription tenant behaviours (which is
possible in the future) CartidgeSubscription need to be changed, also some
more parameters need to be passed to identify which class to be
instantiated.

WDYT ?


-- 
*Sajith Kariyawasam*
*Senior Software Engineer; WSO2, Inc.*
*AMIE (SL)*
*Blog: http://sajithblogs.blogspot.com/ <http://sajithblogs.blogspot.com/>*
*Mobile: +94772269575*

Reply via email to