Hi Kavith,

How about Thursday evening, for the meeting? I am free after 1 pm.

Thank you for the examples. I was going to refactor the code by introducing
the interfaces as you suggested during the mid evaluation. But I was not
sure how to do that. I will try to change the code as given in the examples
before the next meeting.

I think it is good to start converting the project to a maven project as
only a few weeks remaining to finalize the project. We can discuss about
that during the meeting.

Thanks and regards

Nathiesha

On Mon, Jul 25, 2016 at 3:10 PM, Kavith Lokuhewage <kav...@wso2.com> wrote:

> Hi Nathiesha,
>
> I noticed that there are some more pending tasks to restructure the code
> base as per the discussion we had during last code review. Just putting
> them down here again, so that you are able to go through again and complete
> any missing parts.
>
> *Introduce interfaces for the each sub component  to decouple main
> controller logic from implementation specific things*
>
> For example, right now, the controller class (ErrorReporter) is hardly
> coupled with EmailSender and RemoteJiraConnector. We can think latter two
> as error report publishers and introduce an interface called ErrorPublisher
> as below.
>
> public interface ErrorPublisher{
>     void publish(ReportGenerator reportGen) throws IOException;
> }
>
> And then EmailSender and RemoreJiraConnector classes can be refactored
> like below.
>
> public class EmailPublisher implements ErrorPublisher{
>
>      void init () throws IOException{
>        //init : read preferences for SMTP connection params
>      }
>
>     // implement publish method
>     void publish(ReportGenerator reportGen) throws IOException{
>         init();
>        //send mail
>     }
> }
>
> public class JiraPublisher implements ErrorPublisher{
>
>      void init () throws IOException{
>           //init : read preferences for JIRA resp API connection params
>      }
>
>    // implement publish method
>    void publish(ReportGenerator reportGen) throws IOException{
>        init();
>       //post to JIRA api and create issue
>    }
> }
>
> Finally refactor ErrorReporter class to use only ErrorPublisher interface.
> Further more, introduce methods to bind/unbind error publishers.
>
> public class ErrorReporter {
>     Map<String, ErrorPublisher> registeredPublishers;
>
>     public void addPublisher (String id, ErrorPublisher publisher){
>        registeredPublishers.put(id,publisher);
>    }
>
>   public void reportError(){
>          //iterate over all publishers
>          // and call  publish() method
>   }
> }
>
> (We can further ErrorReporter class by using OSGI services to let other
> devstudio plugins to contribute publishers as needed - we can do that later
> as time permits)
>
> For another example, currently you have used a class
> called ReportGenerator to generate the report in plain text and directly
> used that generator inside main controller. Instead, you can introduce an
> interface called ReportGenerator and create a class called
> TextReportGenerator and move the code there - and decouple main controller
> and let other people add report generators later (say an HTML report
> generator) as needed. It can be done in same manner as above example I have
> provided .
>
> Once you do above restructuring, we can further improve the code to use
> OSGI services to decouple these components even further.
>
> Finally, I think it is time for us to convert the project to a maven
> project and use tycho maven plugins for building it. I can assist you with
> this task - let's discuss this furthermore during the call. The main
> requirement here is to make this project directly mergable to developer
> studio repository. Since we are now reaching to the final weeks of GSOC
> coding period, I think we should concentrate a little more on this task.
>
> Please a suggest a time for the meeting so we are able to discuss
> these in-detail.
>
> Thanks,
>
> *Kavith Lokuhewage*
> Senior Software Engineer
> WSO2 Inc. - http://wso2.com
> lean . enterprise . middleware
> Mobile - +94779145123
> Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419>
> Twitter <https://twitter.com/KavithThiranga>
>
> On Mon, Jul 25, 2016 at 2:11 PM, Kavith Lokuhewage <kav...@wso2.com>
> wrote:
>
>> Hi Nathiesha,
>>
>> There were some changes done to preference API since Eclipse Mars. I
>> suspect that the root cause for the issue should be it. I will go through
>> the changes we did in Developer Studio to fix issues with new pref API and
>> confirm you whether it is the root cause or not.
>>
>> Meanwhile, please suggest a time for another meeting this week - probably
>> on Thursday or Friday. We will go through the complete implementation to
>> verify that everything is in order.
>> I went through the code and have some comments too. I will put them in
>> github it self.
>>
>> Thanks,
>>
>> *Kavith Lokuhewage*
>> Senior Software Engineer
>> WSO2 Inc. - http://wso2.com
>> lean . enterprise . middleware
>> Mobile - +94779145123
>> Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419>
>> Twitter <https://twitter.com/KavithThiranga>
>>
>> On Wed, Jul 20, 2016 at 10:20 AM, Nathiesha Maddage <
>> nathieshamadd...@gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> I started unit testing with InfoCollector and Startup Classes, and
>>> created a few unit tests using JUnit.
>>>
>>> Regarding the progress of the project, I am currently working on the
>>> ReportArchive module. The ReportArchive module currently displays all the
>>> sent error reports to the user in a window, and I am  working on adding a
>>> context menu option for each error report to inquire the current status of
>>> the issue.
>>>
>>> Regarding the Preference page, I tried creating a Input Dialog, that
>>> would open up for the very first time the plugin  reports an error to the
>>> user. This dialog would ask the user to fill  values to compulsory fields
>>> like Jira Username and Password, and it would store these values in the
>>> preference page as well, for future use.
>>>
>>> I tried to save the user entered values in Input dialog, to the
>>> preference page
>>> using Activator.getDefault().getPreferenceStore().setValue() method. This
>>> method would set the user entered values in respective fields of the
>>> preference page, but that is just temporary. These values disappear from
>>> the preference page the next time I run it. Only the default set values by
>>> the code and the values that I enter in the preference page there itself
>>> would retain permanently. I tried to fix this for a couple of days and
>>> tried almost every solution I could find in the internet regarding this.
>>>
>>> Have you encountered a situation like this where you have to set the
>>> values in preference page through code? Any idea whether this is possible
>>> and if so how to do it would be of big help!
>>>
>>> Best regards
>>>
>>> Nathiesha
>>>
>>>
>>> On Thu, Jul 7, 2016 at 6:31 AM, Nathiesha Maddage <
>>> nathieshamadd...@gmail.com> wrote:
>>>
>>>> Hi all,
>>>>
>>>> Regarding the current status of the project, I am working on the
>>>> development of the report Archive module, where the user can view the
>>>> previously sent error reports and also the current status of those issues.
>>>> Meanwhile I thought to look into the testing part of the project as well.
>>>> Is their any special testing framework used in Developer Studio testing,
>>>> that I need to adopt? I though to use JUnit. Is it OK?
>>>>
>>>> Regards
>>>>
>>>> Nathiesha
>>>>
>>>> On Tue, Jun 28, 2016 at 9:34 AM, Nathiesha Maddage <
>>>> nathieshamadd...@gmail.com> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I downloaded and tried running the Data Analytics Server . Currently I
>>>>> am going through the DAS documentation and the REST API. Is it possible to
>>>>> post data using the REST API? As I noticed, it only allows to retrieve 
>>>>> data
>>>>> from the DAS.
>>>>>
>>>>> Thanks and regards
>>>>>
>>>>> Nathiesha
>>>>>
>>>>
>>>>
>>>
>>
>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to