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