Hi Harsha, Yes I understand. Either you have to check whether the Identity Store is null in the User object or we should change each method in the User class which uses Identity Store to throw custom checked exception when the Identity Store is null and handle it accordingly when using User object. Personally I am +1 for the second approach. Please advice if there are any better approaches.
Thanks! *Jayanga Kaushalya* Software Engineer Mobile: +94777860160 <+94%2077%20786%200160> WSO2 Inc. | http://wso2.com lean.enterprise.middleware On Sat, Mar 11, 2017 at 9:27 PM, Harsha Thirimanna <[email protected]> wrote: > Hi Jayanga, > > Yes, that is possible to do and I felt it as a workaround to instead of > calling getClaim API in user object. > But at once i didn't feel that i can't call getClaim API because i don't > know whether that User object is coming from Cache or not. It can be > cached by different component even. > Is that make sense to provide such API in user object if it not possible > to give the result all the time in sameway. We have to make it consistent. > Because , the developer has to know whether this User object came from > Cache or not. If it is from cache, then developer has to get the claims by > using RealmService again. > > *Harsha Thirimanna* > *Associate Tech Lead | WSO2* > > Email: [email protected] > Mob: +94715186770 <+94%2071%20518%206770> > Blog: http://harshathirimanna.blogspot.com/ > Twitter: http://twitter.com/harshathirimann > Linked-In: linked-in: http://www.linkedin.com/pub/ha > rsha-thirimanna/10/ab8/122 > <http://wso2.com/signature> > > On Sat, Mar 11, 2017 at 8:49 PM, Hasintha Indrajee <[email protected]> > wrote: > >> Hi Jayanga, >> >> So what happens if we want to store user objects and then later if we >> want to retrieve user objects and try to access claims ? . Here we are >> storing user objects in authentication context, not in the identity store. >> And how are we storing user objects in the cache when the instance of >> identity store is neither serializable nor transient ? >> >> On Sat, Mar 11, 2017 at 8:34 PM, Jayanga Kaushalya <[email protected]> >> wrote: >> >>> Hi Harsha, >>> >>> It was designed to be like that. User object will be cached in the >>> IdentityStore. So when you retrieving the user object from IdentityStore >>> again, it will be most probably from cache instead of connector. >>> >>> Thanks! >>> >>> *Jayanga Kaushalya* >>> Software Engineer >>> Mobile: +94777860160 <+94%2077%20786%200160> >>> WSO2 Inc. | http://wso2.com >>> lean.enterprise.middleware >>> >>> On Sat, Mar 11, 2017 at 7:41 PM, Harsha Thirimanna <[email protected]> >>> wrote: >>> >>>> Hi All, >>>> >>>> In identity gateway, we have to cache the User object that is retrieved >>>> from user core within the authentication context and session context. After >>>> some times we have to get that user object and want to get the claims since >>>> it has the claim API within user object itself. But because of the >>>> IdentityStore is non Serializable and make it transient, it will not >>>> stored with the User object when it cached, so we can't call the getCalim >>>> method in User object now. >>>> >>>> What I did is, get the user unique id from the user object that is >>>> stored in the cache and call the RealmService and get the User object again >>>> from the user core when it required. Is that the right behaviour that we >>>> expect in the new user core design or did I missed something ? >>>> >>>> >>>> public class User implements Serializable { >>>> private static final long serialVersionUID = 21578845544565554L; >>>> private String uniqueUserId; >>>> private String domainName; >>>> private String state; >>>> private transient IdentityStore identityStore; >>>> >>>> thanks >>>> >>>> *Harsha Thirimanna* >>>> *Associate Tech Lead | WSO2* >>>> >>>> Email: [email protected] >>>> Mob: +94715186770 <+94%2071%20518%206770> >>>> Blog: http://harshathirimanna.blogspot.com/ >>>> Twitter: http://twitter.com/harshathirimann >>>> Linked-In: linked-in: http://www.linkedin.com/pub/ha >>>> rsha-thirimanna/10/ab8/122 >>>> <http://wso2.com/signature> >>>> >>> >>> >>> _______________________________________________ >>> Architecture mailing list >>> [email protected] >>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>> >>> >> >> >> -- >> Hasintha Indrajee >> WSO2, Inc. >> Mobile:+94 771892453 <+94%2077%20189%202453> >> >> > > *Harsha Thirimanna* > *Associate Tech Lead | WSO2* > > Email: [email protected] > Mob: +94715186770 <+94%2071%20518%206770> > Blog: http://harshathirimanna.blogspot.com/ > Twitter: http://twitter.com/harshathirimann > Linked-In: linked-in: http://www.linkedin.com/pub/ha > rsha-thirimanna/10/ab8/122 > <http://wso2.com/signature> > > On Sat, Mar 11, 2017 at 8:49 PM, Hasintha Indrajee <[email protected]> > wrote: > >> Hi Jayanga, >> >> So what happens if we want to store user objects and then later if we >> want to retrieve user objects and try to access claims ? . Here we are >> storing user objects in authentication context, not in the identity store. >> And how are we storing user objects in the cache when the instance of >> identity store is neither serializable nor transient ? >> >> On Sat, Mar 11, 2017 at 8:34 PM, Jayanga Kaushalya <[email protected]> >> wrote: >> >>> Hi Harsha, >>> >>> It was designed to be like that. User object will be cached in the >>> IdentityStore. So when you retrieving the user object from IdentityStore >>> again, it will be most probably from cache instead of connector. >>> >>> Thanks! >>> >>> *Jayanga Kaushalya* >>> Software Engineer >>> Mobile: +94777860160 <+94%2077%20786%200160> >>> WSO2 Inc. | http://wso2.com >>> lean.enterprise.middleware >>> >>> On Sat, Mar 11, 2017 at 7:41 PM, Harsha Thirimanna <[email protected]> >>> wrote: >>> >>>> Hi All, >>>> >>>> In identity gateway, we have to cache the User object that is retrieved >>>> from user core within the authentication context and session context. After >>>> some times we have to get that user object and want to get the claims since >>>> it has the claim API within user object itself. But because of the >>>> IdentityStore is non Serializable and make it transient, it will not >>>> stored with the User object when it cached, so we can't call the getCalim >>>> method in User object now. >>>> >>>> What I did is, get the user unique id from the user object that is >>>> stored in the cache and call the RealmService and get the User object again >>>> from the user core when it required. Is that the right behaviour that we >>>> expect in the new user core design or did I missed something ? >>>> >>>> >>>> public class User implements Serializable { >>>> private static final long serialVersionUID = 21578845544565554L; >>>> private String uniqueUserId; >>>> private String domainName; >>>> private String state; >>>> private transient IdentityStore identityStore; >>>> >>>> thanks >>>> >>>> *Harsha Thirimanna* >>>> *Associate Tech Lead | WSO2* >>>> >>>> Email: [email protected] >>>> Mob: +94715186770 <+94%2071%20518%206770> >>>> Blog: http://harshathirimanna.blogspot.com/ >>>> Twitter: http://twitter.com/harshathirimann >>>> Linked-In: linked-in: http://www.linkedin.com/pub/ha >>>> rsha-thirimanna/10/ab8/122 >>>> <http://wso2.com/signature> >>>> >>> >>> >>> _______________________________________________ >>> Architecture mailing list >>> [email protected] >>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>> >>> >> >> >> -- >> Hasintha Indrajee >> WSO2, Inc. >> Mobile:+94 771892453 <+94%2077%20189%202453> >> >> >
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
