Hi Indika On Tue, May 4, 2010 at 5:22 PM, indika kumara <indika.k...@gmail.com> wrote:
> I too agree with supun ... > > The usability may depend on the answer for 'Why does a user like in-lined > configurations? '. That is why I really needed a good answer from real > users... > > The correctness is come first and the most important quality attribute than > other quality attributes. > What makes you think the current approach for endpoints is 'incorrect'? If it is not correct then that indeed is a problem we should get fixed. Thanks, Hiranya > Irrespective of the criticality of the operation that depends on the name > of the endpoint, the operation should be worked correctly. At least, if any > operation that needs the name of the endpoint is enabled, then we should > validate the uniqueness of the endpoint name. > > Thanks > Indika > > On Tue, May 4, 2010 at 12:06 PM, Supun Kamburugamuva <supu...@gmail.com> > wrote: > >> >> >> On Sun, May 2, 2010 at 5:44 PM, Ruwan Linton <ruwan.lin...@gmail.com> >> wrote: >> >>> >>> >>> On Sun, May 2, 2010 at 11:24 AM, Hiranya Jayathilaka < >>> hiranya...@gmail.com> wrote: >>> >>>> >>>> >>>> On Sat, May 1, 2010 at 11:23 PM, Supun Kamburugamuva <supu...@gmail.com >>>> > wrote: >>>> >>>>> >>>>> >>>>> On Fri, Apr 30, 2010 at 10:08 AM, Hiranya Jayathilaka < >>>>> hiranya...@gmail.com> wrote: >>>>> >>>>>> Hi Supun, >>>>>> >>>>>> On Fri, Apr 30, 2010 at 9:02 PM, Supun Kamburugamuva < >>>>>> supu...@gmail.com> wrote: >>>>>> >>>>>>> Sorry I'm bit late to the conversation. I think the proper solution >>>>>>> would be to force the user to have a name for each and every endpoint. >>>>>> >>>>>> >>>>>> I think we should be a little more flexible here. Most users will >>>>>> appreciate the ability to define in-line endpoints anonymously. It's a >>>>>> usability thing. >>>>>> >>>>>> >>>>> Here I'm not suggesting to remove the support for anonymous endpoints. >>>>> My suggestion was to force a name to every endpoint regardless of weather >>>>> they are defined in-line or separately. >>>>> >>>> >>>> Supun, this is exactly what I think we shouldn't be doing. If we are >>>> forcing the user to define names for each and every endpoint, then we are >>>> actually getting rid of the support for anonymous endpoints. >>>> >>> >>> +1 >>> >>> We should try our best to keep the simple case as simple. Anonymous >>> endpoints are very usable from the users point of view, and at least 70-80% >>> of the users are not enabling clustering, if we are to enforce a name for >>> every endpoint regardless whether it is inlined or not, we are making the >>> simple case hard from the user point of view. >>> >>> My belief is doing the correct thing is important than the usability at >> least when the usability degradation is minimal. I think that is the exact >> reason why we are trying to make the synapse language schema compliant now. >> >> Also forcing a name for an inline endpoint is not that user un-friendly. >> To define an endpoint user has to do many things. So I think just including >> the name attribute is not a big user un-friendly thing compared to all the >> things user has to do already. >> >> My concerns about name generation are not only with clustering. Lets say >> an anonymous endpoint got suspended or received a time-out error. How can >> the user know which endpoint got suspended or received the error? >> >> Also lets say user wants to do JMX monitoring. How can he distinguish the >> different endpoints? >> >> I think synapse language should always force the production best practices >> and I think having a meaningful name to an endpoint is a production best >> practice that every deployment should do. >> >> Thanks, >> Supun.. >> >> >>> Thanks, >>> Ruwan >>> >>> >>>> >>>> Thanks, >>>> Hiranya >>>> >>>> >>>>> >>>>> Even now user can do this. But system doesn't enforce this, and we have >>>>> to generate a name. So my suggestion was to make the name attribute of >>>>> the endpoint mandatory. >>>>> >>>>> Thanks, >>>>> Supun.. >>>>> >>>>> >>>>> >>>>>> This is a best practice in a production deployment. The name helps to >>>>>>> understand endpoint behavior. For example when an endpoint is suspended >>>>>>> user >>>>>>> cannot identify it easily if it doesn't have a name. >>>>>> >>>>>> >>>>>> +1... But it should only be a best practice. If the user does not want >>>>>> to bother with endpoint management stuff then forcing him to set names >>>>>> for >>>>>> each and every endpoint is not necessary (Needless to say, a large config >>>>>> would have dozens and dozens of endpoints - so it's not an easy job >>>>>> either). >>>>>> Also other than these management capabilities, names of the in-line >>>>>> endpoints don't have any other usage either. You cannot refer to them >>>>>> from >>>>>> other sequences etc using the specified name. >>>>>> >>>>>> If the problem is with clustering scenarios, they will work just fine, >>>>>> since we are generating names for unnamed, in-line endpoints. >>>>>> >>>>>> Thanks, >>>>>> Hiranya >>>>>> >>>>>> >>>>>>> So it is good if we can enforce this at the synapse level. >>>>>>> >>>>>>> Thanks, >>>>>>> Supun... >>>>>>> >>>>>>> >>>>>>> On Tue, Apr 27, 2010 at 2:44 PM, Ruwan Linton < >>>>>>> ruwan.lin...@gmail.com> wrote: >>>>>>> >>>>>>>> +1 >>>>>>>> >>>>>>>> Ruwan >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Apr 27, 2010 at 10:55 AM, Hiranya Jayathilaka < >>>>>>>> hiranya...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Here's a little progress update. I have realized that it is >>>>>>>>> difficult to generate descriptive and context sensitive names for >>>>>>>>> endpoints >>>>>>>>> on the fly. Reason is given an endpoint we cannot determine it's >>>>>>>>> parent. We >>>>>>>>> can do that for proxy services, but for sequences it is almost >>>>>>>>> impossible. >>>>>>>>> Therefore we will have to stick to the UUIDs at least for the moment. >>>>>>>>> >>>>>>>>> However I was able to get the concept of endpoint anonymity >>>>>>>>> implemented without changing the top level Endpoint interface. All the >>>>>>>>> endpoint serializers work with the AbstractEndpoint level, so I added >>>>>>>>> the >>>>>>>>> necessary methods there. If the user hasn't explicitly specified a >>>>>>>>> name for >>>>>>>>> an endpoint it is considered anonymous. The system will generate >>>>>>>>> names for >>>>>>>>> such endpoints but they will not be displayed in the serialization. >>>>>>>>> >>>>>>>>> I have raised SYNAPSE-627 to keep track of this. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Hiranya >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Apr 26, 2010 at 5:34 PM, Ruwan Linton < >>>>>>>>> ruwan.lin...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> +1 >>>>>>>>>> >>>>>>>>>> Ruwan >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Mon, Apr 26, 2010 at 5:28 PM, Hiranya Jayathilaka < >>>>>>>>>> hiranya...@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Apr 26, 2010 at 5:04 PM, Ruwan Linton < >>>>>>>>>>> ruwan.lin...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hiranya, >>>>>>>>>>>> >>>>>>>>>>>> Lets introduce an internal flag to the endpoint so that the >>>>>>>>>>>> builder and the serializer pair sets and checks respectively to >>>>>>>>>>>> make the >>>>>>>>>>>> generated name transparent from the users configuration. >>>>>>>>>>>> >>>>>>>>>>>> To address the issue of having different, UUID's on different >>>>>>>>>>>> server start sessions, we could compute the endpoint name by >>>>>>>>>>>> looking at the >>>>>>>>>>>> parent sequence name, for example like "main_ep_1" and so forth. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> That makes sense. Shall we add following two methods to the >>>>>>>>>>> Endpoint interface then? >>>>>>>>>>> >>>>>>>>>>> public boolean isAnonymous(); >>>>>>>>>>> public void setAnonymous(); >>>>>>>>>>> >>>>>>>>>>> Anonymous endpoints will also get a generated name but that will >>>>>>>>>>> not be shown to the user in the serialization. >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Hiranya >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Ruwan >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Apr 26, 2010 at 4:52 PM, Hiranya Jayathilaka < >>>>>>>>>>>> hiranya...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Devs, >>>>>>>>>>>>> >>>>>>>>>>>>> Currently Synapse generates names for anonymous endpoints. For >>>>>>>>>>>>> an example take the following sequence: >>>>>>>>>>>>> >>>>>>>>>>>>> <sequence name="foo"> >>>>>>>>>>>>> <send> >>>>>>>>>>>>> <endpoint> >>>>>>>>>>>>> <address uri="some address"/> >>>>>>>>>>>>> </endpoint> >>>>>>>>>>>>> </send> >>>>>>>>>>>>> </sequence> >>>>>>>>>>>>> >>>>>>>>>>>>> Synapse will generate a UUID and set that as the name of the >>>>>>>>>>>>> endpoint. This is required since all endpoints must have names in >>>>>>>>>>>>> clustered >>>>>>>>>>>>> deployments. However generating names causes the serialization to >>>>>>>>>>>>> be >>>>>>>>>>>>> different from the original input XML. As a result we currently >>>>>>>>>>>>> have a bunch >>>>>>>>>>>>> of test failures in the trunk. Any idea how to resolve this >>>>>>>>>>>>> problem? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks >>>>>>>>>>>>> -- >>>>>>>>>>>>> Hiranya Jayathilaka >>>>>>>>>>>>> Software Engineer; >>>>>>>>>>>>> WSO2 Inc.; http://wso2.org >>>>>>>>>>>>> E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 >>>>>>>>>>>>> Blog: http://techfeast-hiranya.blogspot.com >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Ruwan Linton >>>>>>>>>>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb >>>>>>>>>>>> >>>>>>>>>>>> WSO2 Inc.; http://wso2.org >>>>>>>>>>>> email: ru...@wso2.com; cell: +94 77 341 3097 >>>>>>>>>>>> blog: http://ruwansblog.blogspot.com >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Hiranya Jayathilaka >>>>>>>>>>> Software Engineer; >>>>>>>>>>> WSO2 Inc.; http://wso2.org >>>>>>>>>>> E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 >>>>>>>>>>> Blog: http://techfeast-hiranya.blogspot.com >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Ruwan Linton >>>>>>>>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb >>>>>>>>>> WSO2 Inc.; http://wso2.org >>>>>>>>>> email: ru...@wso2.com; cell: +94 77 341 3097 >>>>>>>>>> blog: http://ruwansblog.blogspot.com >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Hiranya Jayathilaka >>>>>>>>> Software Engineer; >>>>>>>>> WSO2 Inc.; http://wso2.org >>>>>>>>> E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 >>>>>>>>> Blog: http://techfeast-hiranya.blogspot.com >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Ruwan Linton >>>>>>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb >>>>>>>> WSO2 Inc.; http://wso2.org >>>>>>>> email: ru...@wso2.com; cell: +94 77 341 3097 >>>>>>>> blog: http://ruwansblog.blogspot.com >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Software Engineer, WSO2 Inc >>>>>>> http://wso2.org >>>>>>> supunk.blogspot.com >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Hiranya Jayathilaka >>>>>> Software Engineer; >>>>>> WSO2 Inc.; http://wso2.org >>>>>> E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 >>>>>> Blog: http://techfeast-hiranya.blogspot.com >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Software Engineer, WSO2 Inc >>>>> http://wso2.org >>>>> supunk.blogspot.com >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Hiranya Jayathilaka >>>> Software Engineer; >>>> WSO2 Inc.; http://wso2.org >>>> E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 >>>> Blog: http://techfeast-hiranya.blogspot.com >>>> >>> >>> >>> >>> -- >>> Ruwan Linton >>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb >>> WSO2 Inc.; http://wso2.org >>> email: ru...@wso2.com; cell: +94 77 341 3097 >>> blog: http://ruwansblog.blogspot.com >>> >> >> >> >> -- >> Software Engineer, WSO2 Inc >> http://wso2.org >> supunk.blogspot.com >> >> >> > -- Hiranya Jayathilaka Software Engineer; WSO2 Inc.; http://wso2.org E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 Blog: http://techfeast-hiranya.blogspot.com On Tue, May 4, 2010 at 5:53 PM, Hiranya Jayathilaka <hiranya...@gmail.com>wrote: > Sending as a separate mail since my responses to the previous thread are > getting bounced off :( > > Hi Indika, > > On Mon, May 3, 2010 at 8:10 PM, indika kumara <indika.k...@gmail.com> > wrote: > >> As the synapse configuration is the API for end-users to program their >> solutions using synapse, the usability for the end user is important. >> >> Why does a user like in-lined configurations? >> > > I feel that sequences/proxies with in-line endpoints are more readable and > easier to understand. If the endpoint was defined separately then we have to > scroll around quite a bit to get to the endpoint definition from the > sequence/proxy definition. For an example: > > <sequence name="foo"> > <log level="full"/> > <send> > <endpoint> > <address uri="http://some.address"/> > </endpoint> > </send> > </sequence> > > <sequence name="bar"> > <log level="full"/> > <send> > <endpoint key="my.endpoint"/> > </send> > </sequence> > > As you can see sequence 'foo' is self contained and easier to understand > from one glimpse compared to 'bar'. Sequence 'bar' configuration does not > really tell us anything since the endpoint itself may have quite a bit of > logic in it. It could be a load balance endpoint, a secure endpoint and so > on... > > Is it really difficult to give a meaningful yet unique name? >> > > If you have dozens of sequences and proxies, yes. And most of the time the > user does not really gain anything from specifying names for all endpoints > either. > > Or ..because there is no reuse for an endpoint configuration as currently >> the endpoints are stateful and most endpoint configurations are static. >> ? >> > > That could be one reason too. > > Thanks, > Hiranya > -- Hiranya Jayathilaka Software Engineer; WSO2 Inc.; http://wso2.org E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 Blog: http://techfeast-hiranya.blogspot.com