Hi all,

IMHO when we calling the Javascript method directly it does not mean actual
drag and drop.So better we can try @nipuna suggestion as first making the
elements draggable and try simulate function using jquery.simulate.js for
drag and drop action,I have tried simulate earlier but I missed to make
elements draggable.So I am working on this approach :).

On Tue, Nov 3, 2015 at 11:55 AM, Nipuna Chandradasa <nipu...@wso2.com>
wrote:

> HI manu,
>
> I didn't try the 1st alternative that Rajeenthini mentioned ( set timeout
> for ues thumbnails to make them drag-gable to drag and drop action). But
> i tried the 2nd alternative which making  createComponent() and
> findStoreCache() methods public... and it worked.
>
> But isn't it good if we did not change the code to do the tests ... ? Also
> Jquery uses their jquery.simulate.js to test there functionalities. So
> using that to test the drag and drop in our scenario is good isn't it?
>
> On Tue, Nov 3, 2015 at 11:33 AM, Rajeenthini Satkunam <
> rajeenth...@wso2.com> wrote:
>
>> Hi manu,
>>
>> I have tried with the modification done in my local checkout.
>>
>> 1) we have set timeout for ues thumbnails to make them drag-gable to drag
>> and drop action.
>> 2) we have called the javascript function  { createComponent($("#a"),
>> findStoreCache("gadget", "g1")); } to crate gadget using the method
>> JavascriptExecutor
>>
>> By first approach I could not resolve the drag and drop action using
>> selenium But the second approach works fine and we have drawback that we
>> need to make two javascript function at designer.js file as global
>> functions to use the createComponent to do drag and drop Action using
>> selenium.
>>
>> As per discussion with @nipuna the only problem with our UI that only
>> those elements are draggable when mouse over.So IMHO we can make them
>> draggable and after that can do the drag and drop Action.I will go through
>> the nipuna's suggestion as well and will update the mail thread.
>>
>>
>>
>> On Tue, Nov 3, 2015 at 6:35 AM, Manuranga Perera <m...@wso2.com> wrote:
>>
>>> I also noted the on mouseenter event drag-able issue and made a local
>>> change in Rajeenthini's checkout.
>>> Rajeenthini, were you able to test it with that change?
>>>
>>> On Mon, Nov 2, 2015 at 7:16 PM, Nipuna Chandradasa <nipu...@wso2.com>
>>> wrote:
>>>
>>>> Hi Rajeenthini,
>>>>
>>>> I tried one of your references which uses jquery.simulate.js to test
>>>> the jquery UI functionality. It worked.
>>>> Only thing that it didnt work with out product is we only make the
>>>> element draggable when the mouseenter event. I progamatically made it
>>>> draggable. Then using jquery simulator i simulate the drag and drop.
>>>>
>>>> this is the link i refer ( it's 6th reference in your list :D )
>>>>
>>>>
>>>> http://stackoverflow.com/questions/16848165/programmatically-drag-and-drop-element-onto-another-element
>>>>
>>>> Following is what i did:
>>>>
>>>> ((JavascriptExecutor)getDriver()).executeScript(" var draggableElement = 
>>>> $('#ues-store-gadget > div > div.row.ues-thumbnails > div:nth-child(1) > 
>>>> div').draggable({"+
>>>>
>>>>         "cancel: false," +
>>>>
>>>>         "appendTo: 'body'," +                             // These are the 
>>>> options we gave when writing the draggable element.
>>>>
>>>>         "helper: 'clone'," +
>>>>
>>>>         "start: function (event, ui) {" +
>>>>
>>>>         "ui.helper.addClass('ues-store-thumbnail');}," +
>>>>
>>>>         "stop: function (event, ui) {" +
>>>>
>>>>         "ui.helper.removeClass('ues-store-thumbnail');" +
>>>>
>>>>         "}})," +
>>>>
>>>>         "dropableElement=$('#a');"+   // Defining Dropable element
>>>>
>>>>         "var droppableOffset = dropableElement.offset()," +  // Get the 
>>>> Offset from droppable element
>>>>
>>>>         "draggableOffset = draggableElement.offset()," +     // Get the 
>>>> Offset from draggable element
>>>>
>>>>         "dx = droppableOffset.left - draggableOffset.left," +
>>>>
>>>>         "dy = droppableOffset.top - draggableOffset.top;" +
>>>>
>>>>         "draggableElement.simulate('drag', {" + // Call the simulate 
>>>> method provided by jqeury.simulate.js
>>>>
>>>>         "dx: dx," +
>>>>
>>>>         "dy: dy" +
>>>>
>>>>         "});");
>>>>
>>>> Hope you find this helpful.
>>>>
>>>> Regards,
>>>>
>>>>
>>>> On Thu, Oct 22, 2015 at 10:54 AM, Rajeenthini Satkunam <
>>>> rajeenth...@wso2.com> wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> I have resolved the previous issue mentioned above through lasantha's
>>>>> solution which he was mentioned. @lasantha Thank you for your prompt 
>>>>> reply.
>>>>> Even though I could not do this drag and drop Action successfully to
>>>>> selenium UI test case Java.I would like to share what kind of try I have
>>>>> made for get this work out. I am not getting any errors while I am doing
>>>>> the build.Test case has been passed consistently.
>>>>>
>>>>> Using Action come up with selenium Automation frame work
>>>>> ==============================================
>>>>>
>>>>> Selenium Action[1] class used to interactions using selenium.I have
>>>>> tried in 3 ways that has proposed by selenium to do drag and drop Action.
>>>>>
>>>>> 1)  By Selected Action class
>>>>>
>>>>> Actions builder = new Actions(getDriver());
>>>>>         Action dragAndDrop = builder.clickAndHold(gadget)
>>>>>                .moveToElement(targetPane)
>>>>>                .release(targetPane)
>>>>>                .build();
>>>>>        dragAndDrop.perform();
>>>>>        Thread.sleep(2000);
>>>>>
>>>>> here the gadget is draggable, targetPane is droppable target element
>>>>> which are find by selenium web driver using method
>>>>>
>>>>> WebElement gadget = getDriver().findElement(By.id("g1"));
>>>>> WebElement targetPane = getDriver().findElement(By.id("a"));
>>>>>
>>>>>
>>>>> 2) Using x y by dragAndDrop()
>>>>>
>>>>>         Actions dragAndHold = 
>>>>> builder.clickAndHold(gadget).moveToElement(targetPane,-5,-5).release(targetPane);
>>>>>         builder.perform();
>>>>>
>>>>> 3) Using dragAndDropBy method
>>>>>
>>>>> Point pointLast = gadget.getLocation();
>>>>>         int xcordLast = point.getX();
>>>>>         int ycordLast = point.getY();
>>>>>         System.out.println(xcordLast + " " +
>>>>>                 
>>>>> "===============================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.."
>>>>>  + ycordLast);
>>>>>         Dimension d = gadget.getSize();
>>>>>         System.out.println(d.getHeight() + " " +
>>>>>                 
>>>>> "===============================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.."
>>>>>  + d.getWidth());
>>>>>         int obj1MiddleX = (int) (xcord + (d.getWidth() * 0.5));
>>>>>         int obj1MiddleY = (int) (ycord + d.getHeight() * 0.5);
>>>>>
>>>>>         System.out.println(obj1MiddleX + " " +
>>>>>                 
>>>>> "===============================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.."
>>>>>  + obj1MiddleY);
>>>>>
>>>>>         Point point1 = targetPane.getLocation();
>>>>>         int xcordpane = point1.getX();
>>>>>         int ycordpane = point1.getY();
>>>>>         System.out.println(xcordpane + " " +
>>>>>                 
>>>>> "===============================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.."
>>>>>  + ycordpane);
>>>>>         Dimension dPane = gadget.getSize();
>>>>>         System.out.println(dPane.getHeight() + " " +
>>>>>                 
>>>>> "===============================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.."
>>>>>  + dPane
>>>>>  .getWidth());
>>>>>         int obj2MiddleX = (int) (xcordpane + (dPane.getWidth() * 0.5));
>>>>>         int obj2MiddleY = (int) (ycordpane + dPane.getHeight() * 0.5);
>>>>>
>>>>>         System.out.println(obj2MiddleX + " " +
>>>>>                 
>>>>> "===============================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.."
>>>>>  + obj2MiddleY);
>>>>>
>>>>>         int XoffSet = Math.abs(obj1MiddleX - obj2MiddleX);
>>>>>         int YoffSet = Math.abs(obj1MiddleY - obj2MiddleY);
>>>>>
>>>>>         builder.dragAndDropBy(gadget,XoffSet,YoffSet);
>>>>>
>>>>> But none of these methods did not give me any successful drag and drop
>>>>> Action.
>>>>>
>>>>>
>>>>> Using EcecuteScript method
>>>>>
>>>>> ===========================
>>>>>
>>>>> So I have discussed with team and come up with a idea that writing a 
>>>>> script for drag and drop Action on UI and exceute that script using 
>>>>> method of selenium framework executeScript().
>>>>>
>>>>> I have search for the solutions that can be trigger the drag and drop 
>>>>> Action using script.And we are using JQueryUI to do drag and drop.I have 
>>>>> shared those links that I have follwed below.It also does not give any 
>>>>> positive impact to do this task.
>>>>>
>>>>> String filePath = 
>>>>> FrameworkPathUtil.getReportLocation()+"/../src/test/resources/dragAndDropJs/dnd.js";
>>>>> StringBuffer buffer = new StringBuffer();
>>>>> String line;
>>>>> BufferedReader br = new BufferedReader(new FileReader(filePath));
>>>>> while((line = br.readLine())!=null)
>>>>>     buffer.append(line);
>>>>> String javaScript = buffer.toString();
>>>>> String cssSource = "#g1";
>>>>> String cssTarget = "#a";
>>>>>
>>>>> javaScript = javaScript + "$('" + cssSource + "').simulateDragDrop({ 
>>>>> dropTarget: '" + cssTarget + "'});";
>>>>> (getDriver()).executeScript(javaScript);
>>>>>
>>>>>
>>>>> And the javascript file dnd.js
>>>>>
>>>>> (function ($) {
>>>>>     $.fn.simulateDragDrop = function (options) {
>>>>>         return this.each(function () {
>>>>>             new $.simulateDragDrop(this, options);
>>>>>         });
>>>>>     };
>>>>>     $.simulateDragDrop = function (elem, options) {
>>>>>         this.options = options;
>>>>>         this.simulateEvent(elem, options);
>>>>>     };
>>>>>     $.extend($.simulateDragDrop.prototype, {
>>>>>         simulateEvent: function (elem, options) {
>>>>>             /*Simulating drag start*/
>>>>>             var type = 'dragstart';
>>>>>             var event = this.createEvent(type);
>>>>>             this.dispatchEvent(elem, type, event);
>>>>>
>>>>>             /*Simulating drop*/
>>>>>             type = 'drop';
>>>>>             var dropEvent = this.createEvent(type, {});
>>>>>             dropEvent.dataTransfer = event.dataTransfer;
>>>>>             this.dispatchEvent($(options.dropTarget)[0], type, dropEvent);
>>>>>
>>>>>             /*Simulating drag end*/
>>>>>             type = 'dragend';
>>>>>             var dragEndEvent = this.createEvent(type, {});
>>>>>             dragEndEvent.dataTransfer = event.dataTransfer;
>>>>>             this.dispatchEvent(elem, type, dragEndEvent);
>>>>>         },
>>>>>         createEvent: function (type) {
>>>>>             var event = document.createEvent("CustomEvent");
>>>>>             event.initCustomEvent(type, true, true, null);
>>>>>             event.dataTransfer = {
>>>>>                 data: {
>>>>>                 },
>>>>>                 setData: function (type, val) {
>>>>>                     this.data[type] = val;
>>>>>                 },
>>>>>                 getData: function (type) {
>>>>>                     return this.data[type];
>>>>>                 }
>>>>>             };
>>>>>             return event;
>>>>>         },
>>>>>         dispatchEvent: function (elem, type, event) {
>>>>>             if (elem.dispatchEvent) {
>>>>>                 elem.dispatchEvent(event);
>>>>>             } else if (elem.fireEvent) {
>>>>>                 elem.fireEvent("on" + type, event);
>>>>>             }
>>>>>         }
>>>>>     });
>>>>>
>>>>> })(jQuery);
>>>>>
>>>>>
>>>>> above code is not giving any errors like previous one.Tests has been 
>>>>> passed But the Action drag and drop is not happened.
>>>>>
>>>>>
>>>>> [1] - 
>>>>> https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/interactions/Actions.html
>>>>>
>>>>> [2] - 
>>>>> http://www.nishantverma.com/2011/07/using-drag-and-drop-in-webdriver.html
>>>>>
>>>>> [3] - http://elementalselenium.com/tips/39-drag-and-drop
>>>>>
>>>>> [4] - 
>>>>> http://stackoverflow.com/questions/14210051/how-to-automate-drag-drop-functionality-using-selenium-web-driver
>>>>>
>>>>> [5] - 
>>>>> https://github.com/jquery/jquery-ui/blob/1-11-stable/tests/unit/droppable/droppable_events.js#L21-L33
>>>>>
>>>>> [6] - 
>>>>> http://stackoverflow.com/questions/16848165/programmatically-drag-and-drop-element-onto-another-element
>>>>>
>>>>> [7] - 
>>>>> https://github.com/jquery/jquery-ui/blob/9e8e339648901899827a58e5bf919f7dda03b88e/tests/jquery.simulate.js
>>>>>
>>>>> And I have discussed about this at stackoverflow and linkedin as well
>>>>>
>>>>> you can get by these following links
>>>>>
>>>>> stackoverflow - 
>>>>> http://stackoverflow.com/questions/33146808/executing-javascript-for-selenium-ui-integration-test-of-drag-and-drop-java
>>>>>
>>>>> Linkedin - 
>>>>> https://www.linkedin.com/groups/961927/961927-6060654701249060868#commentID_6062515331736305664
>>>>>
>>>>> I did not get any replies for stackoverflow ,But  I got some points on 
>>>>> linkedin selenium group. I have followed all those steps that has 
>>>>> mentioned their replies.
>>>>>
>>>>> So can anyone please tryout this scenario and advice me to do this 
>>>>> task?.Your help is appreciated mostly.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Oct 9, 2015 at 3:25 PM, Lasantha Samarakoon <
>>>>> lasant...@wso2.com> wrote:
>>>>>
>>>>>> Hi Rajeenthini,
>>>>>>
>>>>>> You are getting this exception because you can't cast the
>>>>>> UESWebDriver into HasInputDevices interface. That is because unlike
>>>>>> other drivers such as FirefoxDriver and ChromeDriver the UESWebDriver
>>>>>> only implements the WebDriver interface.
>>>>>>
>>>>>> Therefore you need to implement the HasInputDevices interface in
>>>>>> UESWebDriver in order to use those mouse and keyboard actions.
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> *Lasantha Samarakoon* | Software Engineer
>>>>>> WSO2, Inc.
>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka
>>>>>> Mobile: +94 (71) 214 1576
>>>>>> Email:  lasant...@wso2.com
>>>>>> Web:    www.wso2.com
>>>>>>
>>>>>> lean . enterprise . middleware
>>>>>>
>>>>>> On Thu, Oct 8, 2015 at 4:55 PM, Madusanka Premaratne <
>>>>>> madusan...@wso2.com> wrote:
>>>>>>
>>>>>>> Hi Rajinthini,
>>>>>>> It seems like you have to change the test case. Did you record the
>>>>>>> test case using selenium plugin? The best approach is write is yourself 
>>>>>>> in
>>>>>>> this kind of scenarios. You can refer to the links[1] and [2] to get an
>>>>>>> idea.
>>>>>>> [1] -
>>>>>>> http://stackoverflow.com/questions/14210051/how-to-automate-drag-drop-functionality-using-selenium-web-driver
>>>>>>> [2] - http://www.toolsqa.com/selenium-webdriver/drag-drop/
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Madusanka
>>>>>>>
>>>>>>> On Thu, Oct 8, 2015 at 3:48 PM, Rajeenthini Satkunam <
>>>>>>> rajeenth...@wso2.com> wrote:
>>>>>>>
>>>>>>>> Hi All,
>>>>>>>>
>>>>>>>> I am currently working on writing UI test-cases using selenium for
>>>>>>>> Dashboard Server(DS)/User Engagement Server.I have a test Case which 
>>>>>>>> needs
>>>>>>>> to do a action that drag one element to a place and drop it in that
>>>>>>>> place(drag and drop).So I have tried the below approach to do this 
>>>>>>>> task.
>>>>>>>>
>>>>>>>> public void testAddGadgetToDashboard() throws Exception {
>>>>>>>>     webElement = getDriver().findElement(By.id(dashboardTitle));
>>>>>>>>     webElement.findElement(By.cssSelector("a[href=\"dashboards/" + 
>>>>>>>> dashboardTitle + "?editor=true\"]")).click();
>>>>>>>>     WebElement draggable = getDriver().findElement(By.id("g1"));
>>>>>>>>     WebElement to = getDriver().findElement(By.id("a"));
>>>>>>>>     Actions builder = new Actions(getDriver());
>>>>>>>>     Action dragAndDrop = builder.clickAndHold(draggable)
>>>>>>>>             .moveToElement(to)
>>>>>>>>             .release(to)
>>>>>>>>             .build();
>>>>>>>>     dragAndDrop.perform();
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> But I am getting an exception when running the test-case,
>>>>>>>>
>>>>>>>> FAILED: testAddGadgetToDashboard
>>>>>>>>         Adding gadgets to existing dashboard from dashboard server
>>>>>>>> java.lang.ClassCastException:
>>>>>>>> org.wso2.ues.ui.integration.util.UESWebDriver cannot be cast to
>>>>>>>> org.openqa.selenium.interactions.HasInputDevices
>>>>>>>> at org.openqa.selenium.interactions.Actions.<init>(Actions.java:41)
>>>>>>>> at
>>>>>>>> org.wso2.ues.ui.integration.test.dashboard.AddgadgetToDashboardtest.testAddGadgetToDashboard(AddgadgetToDashboardtest.java:86)
>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>> at
>>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>>>>> at
>>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:601)
>>>>>>>> at
>>>>>>>> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
>>>>>>>> at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
>>>>>>>> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
>>>>>>>> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
>>>>>>>> at
>>>>>>>> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
>>>>>>>> at
>>>>>>>> org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
>>>>>>>> at org.testng.TestRunner.privateRun(TestRunner.java:767)
>>>>>>>> at org.testng.TestRunner.run(TestRunner.java:617)
>>>>>>>> at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
>>>>>>>> at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
>>>>>>>> at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
>>>>>>>> at org.testng.SuiteRunner.run(SuiteRunner.java:240)
>>>>>>>> at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>>>>>>>> at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>>>>>>>> at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
>>>>>>>> at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
>>>>>>>> at org.testng.TestNG.run(TestNG.java:1057)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:177)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:92)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:105)
>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>> at
>>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>>>>> at
>>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:601)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103)
>>>>>>>> at
>>>>>>>> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
>>>>>>>>
>>>>>>>> Can anyone please advice me on how this has gone wrong and Is
>>>>>>>> selenium version or Firefox version are depends on this error thrown?
>>>>>>>>
>>>>>>>> Note: I am using Firefox version 27 and selenium version is
>>>>>>>> automation selenium version.
>>>>>>>> --
>>>>>>>>
>>>>>>>> *Thank You.*
>>>>>>>>
>>>>>>>> *Rajeenthini Satkunam*
>>>>>>>>
>>>>>>>> *Associate Software Engineer | WSO2*
>>>>>>>>
>>>>>>>>
>>>>>>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>>>>>>
>>>>>>>> *M :+94770832823 <%2B94770832823>   *
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Dev mailing list
>>>>>>>> Dev@wso2.org
>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Madusanka Premaratne* | Associate Software Engineer
>>>>>>> WSO2, Inc | lean. enterprise. middleware.
>>>>>>> #20, Palm Grove, Colombo 03, Sri Lanka
>>>>>>> Mobile: +94 71 835 70 73| Work: +94 112 145 345
>>>>>>> Email: madusan...@wso2.com | Web: www.wso2.com
>>>>>>>
>>>>>>> [image: Facebook] <https://www.facebook.com/maduzanka> [image:
>>>>>>> Twitter] <https://twitter.com/rmmpremaratne> [image: Google Plus]
>>>>>>> <https://plus.google.com/u/0/+MadusankaPremaratnemaduz/about/p/pub> 
>>>>>>> [image:
>>>>>>> Linkedin] <http://lk.linkedin.com/in/madusanka/> [image: Instagram]
>>>>>>> <http://instagram.com/madusankapremaratne> [image: Skype]
>>>>>>> <http://@rmmpremaratne>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Dev mailing list
>>>>>>> Dev@wso2.org
>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> *Thank You.*
>>>>>
>>>>> *Rajeenthini Satkunam*
>>>>>
>>>>> *Associate Software Engineer | WSO2*
>>>>>
>>>>>
>>>>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>>>>
>>>>> *M :+94770832823 <%2B94770832823>   *
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Nipuna Marcus
>>>> *Software Engineer*
>>>> WSO2 Inc.
>>>> http://wso2.com/ - "lean . enterprise . middleware"
>>>> Mobile : +94 (0) 713 667906
>>>> nipu...@wso2.com
>>>>
>>>
>>>
>>>
>>> --
>>> With regards,
>>> *Manu*ranga Perera.
>>>
>>> phone : 071 7 70 20 50
>>> mail : m...@wso2.com
>>>
>>
>>
>>
>> --
>>
>> *Thank You.*
>>
>> *Rajeenthini Satkunam*
>>
>> *Associate Software Engineer | WSO2*
>>
>>
>> *E:rajeenth...@wso2.com <rajeenth...@wso2.com>*
>>
>> *M :+94770832823 <%2B94770832823>   *
>>
>>
>
>
> --
> Nipuna Marcus
> *Software Engineer*
> WSO2 Inc.
> http://wso2.com/ - "lean . enterprise . middleware"
> Mobile : +94 (0) 713 667906
> nipu...@wso2.com
>



-- 

*Thank You.*

*Rajeenthini Satkunam*

*Associate Software Engineer | WSO2*


*E:rajeenth...@wso2.com <rajeenth...@wso2.com>*

*M :+94770832823   *
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to