I will... tomorrow or at the weekend.

Thursday, September 3, 2015, 8:27:15 PM, Pradeep Murugesan wrote:

> Hi Daniel,
> Kindly review when ever you find time.
> https://github.com/pradeepmurugesan/freemarker-online/commit/4445f45997c1eaf76c6b4e13e8c2054ee163e034https://github.com/pradeepmurugesan/freemarker-online/commit/d8e25be864a25596d29f875fa845695d02168e26
> Pradeep.
>> From: [email protected]
>> Subject: Re: Rest Service for FreeMarkerOnline
>> Date: Tue, 1 Sep 2015 23:40:38 +0530
>> To: [email protected]
>> 
>> Yup.. Finishing the current task is the priority. 
>> 
>> Pradeep.
>> 
>> > On 01-Sep-2015, at 10:09 pm, "Daniel Dekany" <[email protected]> wrote:
>> > 
>> > Tuesday, September 1, 2015, 10:01:31 AM, Pradeep Murugesan wrote:
>> > 
>> >> Sure Daniel,
>> >> I will change the initialization @ method level.
>> >> I have a couple of questions. Please reply when you find time. Sorry If 
>> >> its too naive.
>> >> 1. I tried to check whether jersey's resource methods are singleton
>> >> but found in the doc that they spawn a thread for each request. And
>> >> we may turn on the singleton thing if required through some explicit
>> >> settings.
>> > 
>> > It's Spring bean (@Component), and those are singletons by default.
>> > Even if wasn't a singleton, I see no reason for a response object to
>> > be recycled between requests. It can be the source for hideous bugs,
>> > as you start with a dirty object, etc.
>> > 
>> >> I browsed our code to see if we have some setting but
>> >> couldn't find anything.
>> > 
>> > The easiest is just trying it with some log messages.
>> > 
>> >> In 3.4 of
>> >> https://jersey.java.net/nonav/documentation/latest/user-guide.html#d0e2586
>> >> we can see they mentioning the above.
>> >> 2. In the mean time I am trying to get hold of how freemarker
>> >> template engine works by trying to fix some low hanging bugs so that
>> >> I can understand the architecture better. I am browsing for issues
>> >> here http://sourceforge.net/p/freemarker/bugs/. Kindly let me know a
>> >> good place or a minor bug to start with.
>> > 
>> > Most bugs will be stuff that isn't fixed because it's tricky to fix
>> > them, often because of backward compatibility requirements... But for
>> > example here's this new one:
>> > http://sourceforge.net/p/freemarker/bugs/434/ Could be checked if it's
>> > true, and why it happens. But of course deal what we feel like with.
>> > 
>> > (It's also a good idea to polishing what you have started, like
>> > writing the JUnit tests, etc.)
>> > 
>> >> Pradeep.
>> >> 
>> >>> Date: Mon, 31 Aug 2015 20:49:34 +0200
>> >>> From: [email protected]
>> >>> To: [email protected]
>> >>> Subject: Re: Rest Service for FreeMarkerOnline
>> >>> 
>> >>> OK, thanks! I will be rather busy for a few days, so it might will
>> >>> take a while until I check this out in detail. But I assume you know
>> >>> of things that you wanted to finish/polish anyway.
>> >>> 
>> >>> Something I have spotted with this quick look now is that
>> >>> executeResponse shouldn't be a field in
>> >>> FreeMarkerOnlineExecuteResource, as I suppose the resource object is a
>> >>> singleton used by multiple threads.
>> >>> 
>> >>> 
>> >>> Monday, August 31, 2015, 3:21:09 PM, Pradeep Murugesan wrote:
>> >>> 
>> >>>> Hi Daniel,
>> >>>> 
>> >>>> https://github.com/pradeepmurugesan/freemarker-online/commit/71e70d6caf9bead735ca0f2b6eb4f81c708a1922
>> >>>> I have fixed the code review comments and integrated the same with UI.
>> >>>> Please let me know your reviews.
>> >>>> 
>> >>>> Pradeep.
>> >>>> 
>> >>>>> Date: Mon, 31 Aug 2015 12:22:17 +0200
>> >>>>> From: [email protected]
>> >>>>> To: [email protected]
>> >>>>> Subject: Re: Rest Service for FreeMarkerOnline
>> >>>>> 
>> >>>>> Certainly it's good enough to go ahead with the UI.
>> >>>>> 
>> >>>>> Some random stuff I have noticed:
>> >>>>> 
>> >>>>> - In "problems", the field names by convention should start with lower
>> >>>>>  case, and they will have to be extracted to enums (or to static
>> >>>>>  final String-s).
>> >>>>> 
>> >>>>> - Class names will need some cleanup. Like FreeMarkerPayload and
>> >>>>>  FreeMarkerResponse are in fact for the "execute" resource only, not
>> >>>>>  for FM-Online in general, so I guess they should be ExecutreRequest
>> >>>>>  and ExecuteResponse. FreeMarkerErrorReponse is for the FM *online*
>> >>>>>  service, but that's already told by the package so... maybe just
>> >>>>>  ErrorResponse. Anyway, these are just Alt+Shift+R things.
>> >>>>> 
>> >>>>> -- 
>> >>>>> Thanks,
>> >>>>> Daniel Dekany
>> >>>>> 
>> >>>>> 
>> >>>>> Sunday, August 30, 2015, 4:47:55 PM, Pradeep Murugesan wrote:
>> >>>>> 
>> >>>>>> Hi Daniel,
>> >>>>>> https://github.com/pradeepmurugesan/freemarker-online/commit/80c984af1e810d69db2894146d67b52e2449a584
>> >>>>>> 
>> >>>>>> I have made the changes as per your comments below. Please review
>> >>>>>> and let me know if any corrections.
>> >>>>>> Still I didn't do the UI for this new Response structure. Thought
>> >>>>>> we will finalize the API Responses then we will get into the UI.
>> >>>>>> Pradeep.
>> >>>>>> 
>> >>>>>>> Date: Sat, 29 Aug 2015 18:30:33 +0200
>> >>>>>>> From: [email protected]
>> >>>>>>> To: [email protected]
>> >>>>>>> Subject: Re: Rest Service for FreeMarkerOnline
>> >>>>>>> 
>> >>>>>>> Saturday, August 29, 2015, 4:12:16 PM, Pradeep Murugesan wrote:
>> >>>>>>> 
>> >>>>>>>> okay..
>> >>>>>>>> So almost all the errors we handle should go under Success right.
>> >>>>>>>> Having a structure like this would help I believe.
>> >>>>>>>> {  error: true/false,  outputTruncated: true/false,  failureReason: 
>> >>>>>>>> String  output: String}
>> >>>>>>> 
>> >>>>>>> That's for the HTTP 200 answers only, I assume. We miss the
>> >>>>>>> information about which field the failureReason applies to. So, I
>> >>>>>>> think, the cleanest and most flexible would be if we remove "error"
>> >>>>>>> (it's confusing and redundant anyway) and "failureReason", and 
>> >>>>>>> instead
>> >>>>>>> add a "problems" JSON Object, in which the keys are the field names,
>> >>>>>>> and the value are the error descriptions. It's like some simple form
>> >>>>>>> processing answer.
>> >>>>>>> 
>> >>>>>>> And then there are the HTTP 5xx errors. There I think we can get away
>> >>>>>>> with an "errorCode" and an "errorDescription" for now.
>> >>>>>>> 
>> >>>>>>> -- 
>> >>>>>>> Thanks,
>> >>>>>>> Daniel Dekany
>> >>>>>>> 
>> >>>>>>>> Based on the error flag we can decide what to display. Sorry If I
>> >>>>>>>> am taking a longer time to get hold of things.
>> >>>>>>>> Pradeep.
>> >>>>>>>>> Date: Sat, 29 Aug 2015 14:34:58 +0200
>> >>>>>>>>> From: [email protected]
>> >>>>>>>>> To: [email protected]
>> >>>>>>>>> Subject: Re: Rest Service for FreeMarkerOnline
>> >>>>>>>>> 
>> >>>>>>>>> There are some cases whose distinction can be interesting for a UI
>> >>>>>>>>> (without much research, so it might not be accurate):
>> >>>>>>>>> - Successful Web service call results:
>> >>>>>>>>>  - Template output, no template or data-model errors
>> >>>>>>>>>  - Template output that's cut at a point as it was too long
>> >>>>>>>>>  - Failed data model building
>> >>>>>>>>>  - Failed template execution (position can be interesting here on 
>> >>>>>>>>> the
>> >>>>>>>>>    long run)
>> >>>>>>>>> - Service errors: I guess we just need the error message here.
>> >>>>>>>>> - A bit of both: Long running template timeout. Usually it's the
>> >>>>>>>>>  user's mistake... usually.
>> >>>>>>>>> 
>> >>>>>>>>> The *template* used by the current UI doesn't care about such 
>> >>>>>>>>> details,
>> >>>>>>>>> but what it displays was already assembled by code that also 
>> >>>>>>>>> belongs
>> >>>>>>>>> to the UI (i.e., to the JavaScript that processes the JSON 
>> >>>>>>>>> response).
>> >>>>>>>>> That logic is certainly simplistic currently, but then, UI-s can
>> >>>>>>>>> change any time (and multiple different UI-s can co-exist), while 
>> >>>>>>>>> Web
>> >>>>>>>>> service API-s less so.
>> >>>>>>>>> 
>> >>>>>>>>> 
>> >>>>>>>>> Saturday, August 29, 2015, 1:19:41 PM, Pradeep Murugesan wrote:
>> >>>>>>>>> 
>> >>>>>>>>>> Hi Daniel,
>> >>>>>>>>>> The thing I am trying to understand here is the need for all the 3
>> >>>>>>>>>> fields of FreeMarkerServiceResponse for the UI.
>> >>>>>>>>>> FreeMarkerOnline view while rendering the template just uses the 
>> >>>>>>>>>> 2 parameters.
>> >>>>>>>>>> 1. Is there an error in the result 2. what is the error message
>> >>>>>>>>>> <#if hasResult> <div class="resultContainer">           <label
>> >>>>>>>>>> for="result">Result</label>              <textarea id="result"
>> >>>>>>>>>> class="pure-input-1 source-code <#if errorResult> error</#if>"
>> >>>>>>>>>> readonly>${result}</textarea>      </div></#if>
>> >>>>>>>>>> 
>> >>>>>>>>>> So assuming we too need the same from Ajax requests
>> >>>>>>>>>> I am returning the result & the error is found based on the 
>> >>>>>>>>>> status code of the response.
>> >>>>>>>>>> Kindly let me know your thoughts.
>> >>>>>>>>>> Pradeep.
>> >>>>>>>>>> 
>> >>>>>>>>>> 
>> >>>>>>>>>> 
>> >>>>>>>>>> 
>> >>>>>>>>>>> Date: Fri, 28 Aug 2015 22:51:52 +0200
>> >>>>>>>>>>> From: [email protected]
>> >>>>>>>>>>> To: [email protected]
>> >>>>>>>>>>> Subject: Re: Rest Service for FreeMarkerOnline
>> >>>>>>>>>>> 
>> >>>>>>>>>>> The response should be JSON because we will need a few separate 
>> >>>>>>>>>>> fields
>> >>>>>>>>>>> there. If you look at FreeMarkerServiceResponse, you will see 3
>> >>>>>>>>>>> candidates, but then you will find more, as the thrown 
>> >>>>>>>>>>> exceptions also
>> >>>>>>>>>>> carries information that's needed for the UI, as you can see in
>> >>>>>>>>>>> FreeMarkerService.calculateTemplateOutput.
>> >>>>>>>>>>> 
>> >>>>>>>>>>> -- 
>> >>>>>>>>>>> Thanks,
>> >>>>>>>>>>> Daniel Dekany
>> >>>>>>>>>>> 
>> >>>>>>>>>>> 
>> >>>>>>>>>>> Friday, August 28, 2015, 9:57:58 PM, Pradeep Murugesan wrote:
>> >>>>>>>>>>> 
>> >>>>>>>>>>>> Sure Daniel,
>> >>>>>>>>>>>>    I will change as per your comments.
>> >>>>>>>>>>>> A quick clarification regarding the json response can be like 
>> >>>>>>>>>>>> following ?
>> >>>>>>>>>>>> { result: <output> }
>> >>>>>>>>>>>> Pradeep.
>> >>>>>>>>>>>> 
>> >>>>>>>>>>>>> Date: Fri, 28 Aug 2015 21:26:58 +0200
>> >>>>>>>>>>>>> From: [email protected]
>> >>>>>>>>>>>>> To: [email protected]
>> >>>>>>>>>>>>> Subject: Re: Rest Service for FreeMarkerOnline
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>> Friday, August 28, 2015, 7:53:45 PM, Pradeep Murugesan wrote:
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>>> Hi Daniel,
>> >>>>>>>>>>>>>>  I have made the rest service up @ a new path /compile
>> >>>>>>>>>>>>>> The service takes the following json as input
>> >>>>>>>>>>>>>> {    "template": "Hello ${user}",    "dataModel": 
>> >>>>>>>>>>>>>> "user=pradeep"}
>> >>>>>>>>>>>>>> and then compiles the template and dataModel and returns the 
>> >>>>>>>>>>>>>> output.
>> >>>>>>>>>>>>>> https://github.com/pradeepmurugesan/freemarker-online/commit/10de59ac0db0bf0f79ab28214f50c851a5610e20
>> >>>>>>>>>>>>>> 
>> >>>>>>>>>>>>>> Please review the above commit and let me know if its ok.
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>> The response will have to be JSON as well (not TEXT_PLAIN), 
>> >>>>>>>>>>>>> but I
>> >>>>>>>>>>>>> guess that was planned later.
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>> The usage of the "compile" term is confusing here, as you 
>> >>>>>>>>>>>>> actually
>> >>>>>>>>>>>>> parse (aka. compile) and then "process" (aka. execute) here. 
>> >>>>>>>>>>>>> The last
>> >>>>>>>>>>>>> naturally implies the first. So I guess it should be, like, 
>> >>>>>>>>>>>>> "run" or
>> >>>>>>>>>>>>> "execute".
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>> Also, all the web service operations should go under /api/, 
>> >>>>>>>>>>>>> and the UI
>> >>>>>>>>>>>>> outside it.
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>>> Will
>> >>>>>>>>>>>>>> Integrate with the UI. I have a questions though
>> >>>>>>>>>>>>>> 1. Should I modify  in the same path as  "/" or keeping it in 
>> >>>>>>>>>>>>>> a
>> >>>>>>>>>>>>>> separate path like "/compile" is fine ?
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>> The UI addresses should remain /, and the current web service 
>> >>>>>>>>>>>>> should
>> >>>>>>>>>>>>> be under /api/run or something, I think.
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>>> Also I will write unit tests once we finalize the path.
>> >>>>>>>>>>>>>> Pradeep.                                          
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>>> -- 
>> >>>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>>> Daniel Dekany
>> >>>>>>>>>>>>> 
>> >>>>>>>>>>>> 
>> >>>>>>>>>>> 
>> >>>>>>>>>> 
>> >>>>>>>>> 
>> >>>>>>>>> -- 
>> >>>>>>>>> Thanks,
>> >>>>>>>>> Daniel Dekany
>> >>>>> 
>> >>>> 
>> >>> 
>> >>> -- 
>> >>> Thanks,
>> >>> Daniel Dekany
>> >>> 
>> >> 
>> > 
>> > -- 
>> > Thanks,
>> > Daniel Dekany
>> > 
>                                           

-- 
Thanks,
 Daniel Dekany

Reply via email to