<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Uduwage's Blog &#187; Java Ruled</title>
	<atom:link href="http://anublog.colombounplug.com/category/java-ruled/feed/" rel="self" type="application/rss+xml" />
	<link>http://anublog.colombounplug.com</link>
	<description>I write my mind out</description>
	<lastBuildDate>Sun, 09 Oct 2011 05:15:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Running Selenium Automation on Multiple Browsers</title>
		<link>http://anublog.colombounplug.com/2010/12/running-selenium-automation-on-multiple-browsers/</link>
		<comments>http://anublog.colombounplug.com/2010/12/running-selenium-automation-on-multiple-browsers/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 15:28:35 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Selenium]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=655</guid>
		<description><![CDATA[The current customized selenium framework I build for my employer has multiple features running on reporting, run using Hudson build process, execute tests in multiple browsers, high re-usability and ability to develop tests in a rapid pace. But according to the way I build it originally prior to execution selenium.default.properties file needed to be edited [...]]]></description>
			<content:encoded><![CDATA[<p>The current customized selenium framework I build for my employer has multiple features running on reporting, run using Hudson build process, execute tests in multiple browsers, high re-usability and ability to develop tests in a rapid pace. But according to the way I build it originally prior to execution selenium.default.properties file needed to be edited to execute the test in a different browser but I wanted to take out that manual intervention and make the entire process automated. The framework I build supported by ant build process, and .properties files are used to store default values for selenium server and application settings. Such as timing, browser, etc. To automate the multiple browser process, I decided to pass a system variable to JVM via ant and access that in my class where I setup selenium server settings to execute the test framework. Based on the user input it will tally that with the properties file and execute the test on the browser that user has asked the selenium server to run the test on. </p>
<p>Following screen shots will show the my approach to automate the multiple test execution in multiple browser plat forms.<br />
<div id="attachment_662" class="wp-caption aligncenter" style="width: 160px"><a href="http://anublog.colombounplug.com/wp-content/uploads/2010/12/ant.jpg"><img src="http://anublog.colombounplug.com/wp-content/uploads/2010/12/ant-150x150.jpg" alt="" title="Ant target to execute all Selenium Tests" width="150" height="150" class="size-thumbnail wp-image-662" /></a><p class="wp-caption-text">Ant target to execute all Selenium Tests</p></div></p>
<p>setting up values in selenium.default.properties file.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">default.firefox.command=*firefox<br />
default.ie.command=*iexplore<br />
default.browser.command=*firefox</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2010/12/running-selenium-automation-on-multiple-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handle Ajax with Selenium RC</title>
		<link>http://anublog.colombounplug.com/2009/12/handle-ajax-with-selenium-rc/</link>
		<comments>http://anublog.colombounplug.com/2009/12/handle-ajax-with-selenium-rc/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 16:04:47 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=526</guid>
		<description><![CDATA[Lately I have been adding improvements to the framework that I have build using selenium rc, JUnit, Java, and Xpath. While adding more functions I wanted to add a method to handle ajax. The idea was to wait until all the ajax action complete in a page. Selenium api has a waitForCondition method. Method accept [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I have been adding improvements to the framework that I have build using selenium rc, JUnit, Java, and Xpath. While adding more functions I wanted to add a method to handle ajax. The idea was to wait until all the ajax action complete in a page. Selenium api has a <a href="http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/">waitForCondition</a> method.  Method accept a script, and time out.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public void waitForCondition(java.lang.String script,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;java.lang.String timeout)</div></td></tr></tbody></table></div>
<p>Our application uses <a href="http://www.prototypejs.org/api/ajax/responders">Prototype </a>ajax library. so I used</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">waitForCondition()</div></td></tr></tbody></table></div>
<p>from selenium api, and implement the following method.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; public void waitForAjax() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; super.waitForCondition(&quot;selenium.browserbot.getCurrentWindow().Ajax.activeRequestCount == 0;&quot;, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SeleniumDefaultProperties.getResourceAsStream(&quot;default.pageload.timeout&quot;));<br />
&nbsp; &nbsp; }</div></td></tr></tbody></table></div>
<p>I have added</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;.properties</div></td></tr></tbody></table></div>
<p>file to handle all the server settings and timings related to our test automation framework. In above method timing is invoked from that properties file.</p>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/12/handle-ajax-with-selenium-rc/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Java File System Api getting a make over</title>
		<link>http://anublog.colombounplug.com/2009/11/java-file-system-getting-a-make-over/</link>
		<comments>http://anublog.colombounplug.com/2009/11/java-file-system-getting-a-make-over/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 05:27:30 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=519</guid>
		<description><![CDATA[I was just reading upcoming changes in Java 7, and I was very excited. One thing I found out that java.io.File getting a make over. Here are the things that going to be added to the Java 7 release, FileRef &#8211; represents file object in system Path &#8211; extends FileRef, binds a file to a [...]]]></description>
			<content:encoded><![CDATA[<p>I was just reading upcoming changes in Java 7, and I was very excited. One thing I found out that java.io.File getting a make over. </p>
<p>Here are the things that going to be added to the Java 7 release, </p>
<ul>
<li>FileRef &#8211; represents file object in system</li>
<li>Path &#8211; extends FileRef, binds a file to a system-dependent location</li>
<li>FileSystem &#8211; interface to file system FileStore &#8211; underlying storage system</li>
</ul>
<p>I am planning to put a post once I find an example using the new api.</p>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/11/java-file-system-getting-a-make-over/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZFS now has built-in deduplication, &amp; ZFS available on Snow Leopard</title>
		<link>http://anublog.colombounplug.com/2009/11/zfs-now-has-built-in-deduplication-zfs-available-on-snow-leopard/</link>
		<comments>http://anublog.colombounplug.com/2009/11/zfs-now-has-built-in-deduplication-zfs-available-on-snow-leopard/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 17:32:17 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[My MacBook Pro]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MacBook Pro]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=515</guid>
		<description><![CDATA[I was doing my regular daily doze of technical reading and stumble upon Jeff Bonwick&#8217;s blog. Sounds like deduplication is a great concept. I think this might be very helpful reducing the size of the repositories. But more than any thing I was thrilled about his previous post. ZFS is available on Snow Leopard. Wow!!!, [...]]]></description>
			<content:encoded><![CDATA[<p>I was doing my regular daily doze of technical reading and stumble upon <a href="http://blogs.sun.com/bonwick/entry/zfs_dedup">Jeff Bonwick&#8217;s blog</a>. Sounds like deduplication is a great concept. I think this might be very helpful reducing the size of the repositories. But more than any thing I was thrilled about his previous post. <a href="http://blogs.sun.com/bonwick/en_US/entry/zfs_in_macos_x_snow">ZFS is available on Snow Leopard</a>. Wow!!!, as you may know from my previous posts, I switch to mac just about a month ago. And I must say somehow my mac book pro able fascinate me in daily basis. And this was another example.</p>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/11/zfs-now-has-built-in-deduplication-zfs-available-on-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best use of ThreadLocal class to handle Selenium Session</title>
		<link>http://anublog.colombounplug.com/2009/08/best-use-of-threadlocal-class-to-handle-selenium-session/</link>
		<comments>http://anublog.colombounplug.com/2009/08/best-use-of-threadlocal-class-to-handle-selenium-session/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 16:13:30 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=432</guid>
		<description><![CDATA[Dealing with threads in Java is not the easiest but I was in the process of implementing a custom Java Selenium Framework and I decided &#8220;Why not use the help of the ThreadLocal class to ease my pain&#8221;. So, this is my attempt to take stab at ThreadLocal class. Why Did I need to use [...]]]></description>
			<content:encoded><![CDATA[<p>Dealing with threads in <a href="http://java.sun.com/">Java </a>is not the easiest but I was in the process of implementing a custom Java <a href="http://seleniumhq.org/">Selenium </a>Framework and I decided &#8220;Why not use the help of the <a href="http://java.sun.com/javase/6/docs/api/java/lang/ThreadLocal.html">ThreadLocal </a>class to ease my pain&#8221;. So, this is my attempt to take stab at ThreadLocal class.</p>
<ol>
<blockquote><p>Why Did I need to use the ThreadLocal class?</p></blockquote>
</ol>
<li>In nutshell, The <a href="http://seleniumhq.org/">Selenium </a>Framework I was building designed based upon pages of the web application. ex: Lets say we have login page and then once we login, use get navigated to about page. The framework I built have two separate <a href="http://java.sun.com/">Java </a>classes to handle function in login page and about page. Since both these classes live from selenium session, I wanted to save the selenium session where each class can freely access the session without session getting passed around back and forth between those class.</li>
<p>Only thing you need to know about my implementation.<br />
As I mentioned, I have created class that extends <a href="http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/DefaultSelenium.html">DefualtSelenium.java</a> (lets call it OurDefaultSelenium.java, this class has method that start the selenium session)</p>
<ol>
<blockquote><p>So, just because I think I should use the <a href="http://java.sun.com/javase/6/docs/api/java/lang/ThreadLocal.html">ThreadLocal </a>class does it mean is it the best mechanism to use..?</p></blockquote>
</ol>
<p>Most typical scenario of using ThreadLocal would be as an alternative to an object or resource pool, when we don&#8217;t mind creating one object per thread.</p>
<h2>So <strong>When should I really use</strong> the Thread Local</h2>
<li>The objects are <strong>non-trivial</strong> to <strong>construct</strong>;</li>
<li>An instance of the object is <strong>frequently </strong>needed by a given thread;</li>
<li>The <strong>application pools threads</strong>, such as in a typical server (if every time the thread-local is used it is from a new thread, then a new object will still be created on each call!);</li>
<p>Ok enough of lecturing, lets get to the bottom of it, shall we.</p>
<li>I am a big fan of Java generics so this example uses Java 5, Java generics.</li>
<ol>Lets call our Class, SeleniumSession make sense right we are dealing with selenium session.</ol>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public class SeleniumSession {<br />
&nbsp; &nbsp; private static final Logger log = Logger.getLogger(SeleniumSession.class.getName());<br />
<br />
&nbsp; &nbsp; private static ThreadLocal&lt;HashMap&lt;String, OurDefaultSelenium&gt;&gt; session= <br />
&nbsp; &nbsp; &nbsp; &nbsp; new ThreadLocal&lt;HashMap&lt;String, OurDefaultSelenium &gt;&gt;() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; protected synchronized HashMap&lt;String, OurDefaultSelenium &gt; initialvalue() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return new HashMap&lt;String, OurDefaultSelenium &gt;();<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; };<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; private static ThreadLocal&lt; OurDefaultSelenium &nbsp;&gt; selenium = new ThreadLocal&lt; OurDefaultSelenium&gt;();<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp;* Get the current selenium session.<br />
&nbsp; &nbsp; &nbsp;* @return<br />
&nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; public static OurDefaultSelenium get() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return selenium.get();<br />
&nbsp; &nbsp; }</div></td></tr></tbody></table></div>
<ol>
Note that there is still a single, static instance of SeleniumSession shared by all threads. But that single instance uses the ThreadLocal variable session, which has a per-thread value. Inside get(), the call to selenium.get()  will always operate on our thread-private &#8220;instance&#8221; of the variable, with synchronization.</ol>
<p>Since we are using Java generics, subsequent get() method doesn&#8217;t need an explicit cast. (That is, the cast is inserted automatically by the compiler.)</p>
<p>But lets focus our eyes on to</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;strong&gt;initialValue &lt;/strong&gt;</div></td></tr></tbody></table></div>
<p>method. We actually subclass ThreadLocal and override</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">initialValue()</div></td></tr></tbody></table></div>
<p>to provide an appropriate object each time a new one is required (i.e. when</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">get()</div></td></tr></tbody></table></div>
<p>is called for the first time on a particular thread). I know what  you thinking, You could add a logic to check the null inside the</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">get()</div></td></tr></tbody></table></div>
<p>method. Like this,</p>
<p><pre><pre>
&nbsp;&nbsp;&nbsp;&nbsp;OurDefaultSelenium ourSelenium = session.get();
&nbsp;&nbsp;&nbsp;&nbsp;if (ourSelenium == null) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.set(cal = new DefaultSelenium());
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return ourSelenium;
</pre></pre></p>
<li>But You don&#8217;t need to do this since we are overriding
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ThreadLocal.initialValue()</div></td></tr></tbody></table></div>
<p>automatically handles this logic and makes our code a bit neater– especially if we&#8217;re calling</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">get()</div></td></tr></tbody></table></div>
<p>in multiple places.</li>
<ol>In this implementation I also have methods to set the session and end the selenium session.</ol>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp;* Set the current selenium session.<br />
&nbsp; &nbsp; &nbsp;* @param classInstance<br />
&nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; public static void set(OurDefaultSelenium classInstance) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; selenium.set(classInstance);<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp;* Method to end the session, should use after the test.<br />
&nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; public static void endSession() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; selenium.get().stop();<br />
&nbsp; &nbsp; }</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/08/best-use-of-threadlocal-class-to-handle-selenium-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Driven Selenium Test</title>
		<link>http://anublog.colombounplug.com/2009/07/data-driven-selenium-test/</link>
		<comments>http://anublog.colombounplug.com/2009/07/data-driven-selenium-test/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 20:19:12 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Data Driven]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=263</guid>
		<description><![CDATA[Over the past year or two Selenium has taken over many developers hearts. Let me put it in this way, It won most of the Java developers hearts simply because if you are a java developer using Selenium now you can write a test without learning a new language nor using another stupid application developed [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past year or two Selenium has taken over many developers hearts. Let me put it in this way, It won most of the Java developers hearts simply because if you are a java developer using Selenium now you can write a test without learning a new language nor using another stupid application developed by HP or any other 3rd party software company.</p>
<p>But some criticize saying that Selenium can not do Data Driven testing. I think its a  bogus statement. Prior to this implementation I have used Selenium but I never had the oppertunitity to explore how I can used Dynamic data from csv file to execute in a selenium test.</p>
<p>In my development I decided to use csv file as the input but it doesn&#8217;t have to be csv file, I am more comfortable on dealing CSV Files with Java than any other file type so I picked CSV. My target is to create a Selenium Test that takes Username and Password from CSV file and login to web application. Its better you separate Selenium Test to one class and reading data from csv to another class. If you building as a framework I recommend to package is separate. Lets say we have a class call ReadInData.java and my file looks like this,</p>
<div id="attachment_266" class="wp-caption aligncenter" style="width: 171px"><a rel="attachment wp-att-266" href="http://anublog.colombounplug.com/?attachment_id=266"><img class="size-full wp-image-266" title="CSVFile" src="http://anublog.colombounplug.com/wp-content/uploads/2009/07/CSVFile.jpg" alt="CSV File with Username &amp; Password" width="161" height="174" /></a><p class="wp-caption-text">CSV File with Username &amp; Password</p></div>
<p>lets write few methods to parse this data. Keep in mind that we need to use this data in the test and any method that does the manipulation should return an Array, a Map, or List with user name and password.I decided to use a HashMap implementation and return a HashMap with username and password.</p>
<p style="text-align: center;"><a rel="attachment wp-att-297" href="http://anublog.colombounplug.com/?attachment_id=297"><img class="aligncenter size-full wp-image-297" title="HashMap" src="http://anublog.colombounplug.com/wp-content/uploads/2009/07/HashMap1.jpg" alt="HashMap" width="650" height="300" /></a></p>
<p><pre></pre><br />
<pre></pre><br />
Next thing is to create two methods, one is that take a single username and password and click the login button to login and other to extract username and password from HashMap and put them in to our previous method.</p>
<p>Use XPath to get respective text boxes and create a simple method as shown below, keep in mind that I am returning an instance of the class. Developers have mix feelings about the chain effect. But here I have used simply because I was planning on developing a framework and who ever use this framework to generate selenium test will have a very easy time on putting a test together with the help of the chain effect.<br />
<pre><pre>&lt;a rel=&quot;attachment wp-att-304&quot; href=&quot;http://anublog.colombounplug.com/?attachment_id=304&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-304&quot; title=&quot;MultiUser&quot; src=&quot;http://anublog.colombounplug.com/wp-content/uploads/2009/07/MultiUser.jpg&quot; alt=&quot;MultiUser&quot; width=&quot;1114&quot; height=&quot;398&quot; /&gt;&lt;/a&gt;
&lt;a rel=&quot;attachment wp-att-305&quot; href=&quot;http://anublog.colombounplug.com/?attachment_id=305&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-305&quot; title=&quot;SingleUser&quot; src=&quot;http://anublog.colombounplug.com/wp-content/uploads/2009/07/SingleUser.jpg&quot; alt=&quot;SingleUser&quot; width=&quot;788&quot; height=&quot;286&quot; /&gt;&lt;/a&gt;</pre></pre><br />
Now lets talk about creating a Selenium Test using above class and its methods. You should extend the class that has above methods to create the Junit Base selenium test cases,</p>
<p><a rel="attachment wp-att-306" href="http://anublog.colombounplug.com/?attachment_id=306"><img class="aligncenter size-full wp-image-306" title="testMultiUser" src="http://anublog.colombounplug.com/wp-content/uploads/2009/07/testMultiUser.jpg" alt="testMultiUser" width="979" height="305" /></a></p>
<p>So, This clearly shows that Selenium Test can be data driven and its all in the person&#8217;s hand who is writing the test. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/07/data-driven-selenium-test/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Pivoting 3Million user records with respect to FB User and Type, Subtype</title>
		<link>http://anublog.colombounplug.com/2009/05/pivoting-3million-user-records-with-respect-to-fb-user-and-type-subtype/</link>
		<comments>http://anublog.colombounplug.com/2009/05/pivoting-3million-user-records-with-respect-to-fb-user-and-type-subtype/#comments</comments>
		<pubDate>Fri, 01 May 2009 16:05:28 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Data Mining]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=218</guid>
		<description><![CDATA[So far the Our Data Mining Implementation for Facebook Data is going really good,  I am currently working on an algorithm to identify 1 and n items sets out of our raw data set using the extraction I build earlier. But I just finished writing a sweet little code to pivot 3 million user records. [...]]]></description>
			<content:encoded><![CDATA[<p>So far the Our Data Mining Implementation for Facebook Data is going really good,  I am currently working on an algorithm to identify 1 and n items sets out of our raw data set using the extraction I build earlier. But I just finished writing a sweet little code to pivot 3 million user records.</p>
<p>Our implementation has a DB.java file that handles all our DB call and direct sql stuff, I know what you thinking we could have use some fancy hibernate but this is fast paced development so we dont have time to work with hibernate stuff.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">// connect to the database, any database connection changes should take<br />
// place in DB.java<br />
DB db = new DB();<br />
DB db2 = new DB();<br />
db.init();<br />
db2.init();</div></td></tr></tbody></table></div>
<p>Call a DB.java to get disntinct type sub type facebook groups, and dump them in <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html">Java String Vector</a>.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get the type and sub type<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Vector&lt;Vector&lt;String&gt;&gt; grpTypeSubType = new Vector&lt;Vector&lt;String&gt;&gt;(<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db.getTypeSubType());<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // printing all the type sub type pairs as column headers<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //System.out.print(&quot;UserId, &quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.print(&quot;UserId, &quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (Object object : grpTypeSubType) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!object.toString().equals(null)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(object.toString() + &quot;,&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.print(object.toString() + &quot;,&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div></td></tr></tbody></table></div>
<p>Here we go fun begins, this loop ran 38 hours and finished the pivoting for 3m records.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get user id vector and find type and subtype for each userid.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Vector&lt;Long&gt; users = new Vector&lt;Long&gt;(db.getDistinctUID()); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ResultSet fbUsers = db.getUsers();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.println();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;Start Pivot..&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (fbUsers.next()) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Long userId = fbUsers.getLong(1);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //System.out.print(userId + &quot;,&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.print(userId + &quot;,&quot;);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String groupType = null;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String typeSubtype = null;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int count = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (Vector&lt;String&gt; vs : grpTypeSubType) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; groupType = vs.get(0);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typeSubtype = vs.get(1);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(groupType != null &amp;&amp; typeSubtype != null) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; count = db2.getTypeSubTypeCount(userId, groupType, typeSubtype);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (count &gt; 0) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //System.out.print(&quot;Y, &quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.print(&quot;Y, &quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //System.out.print(&quot;N, &quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.print(&quot;N, &quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //System.out.println();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.println();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fbUsers.close();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ps1.close();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;Done pivot, check the file&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div></td></tr></tbody></table></div>
<p>You can get more information on our Data Extraction and FB Data Mining implementation at Google Code under GNU General Public License v3. Also you are more than welcome to use multiple Preprocessed data sets that I formatted to fit in applications like Weka etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/05/pivoting-3million-user-records-with-respect-to-fb-user-and-type-subtype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Android Dev Phone &#8211; Googler Version</title>
		<link>http://anublog.colombounplug.com/2009/01/google-android-dev-phone-googler-version/</link>
		<comments>http://anublog.colombounplug.com/2009/01/google-android-dev-phone-googler-version/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 04:44:56 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=124</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>Thanks to my friend Nayana who is a Googler, I got a new <a href="http://www.android.com">Android </a>Dev Phone. He put a request to send the <a title="Android" href="http://code.google.com/android/">Android </a>phone that he got as a X&#8217;Mass present from <a title="Google" href="http://www.google.com">Google</a>. Phone directly came from Mountain View. It looks great I love the Graphics and the Android sign at the back of the phone. This is not the T-Mobile version, and I don&#8217;t think those graphics are in T-Mobile version of the Android Phone. During Android Developer Challenge I developed few applications but they were not sophisticated enough to be on front line. Hopefully I can use this along with the emulator to build better Android Application. I do have an idea, so let see if I can deliver it this time, but sorry guys I just have to keep it for myself, at least for now&#8230;
</p>
<p>Here are some pictures, Once again big ups for my boy Nana&#8230;&nbsp;<br />

</p>
<p><a href="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1217.jpg"> </a></p>
<table width="432" border="0" cellpadding="0" cellspacing="1" height="351">
<tbody>
<tr>
<td style="width: 25%;">&nbsp;<a href="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1216.jpg"><img alt="IMG_1216.jpg" src="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1216-thumb.jpg" width="200" height="150" /></a></td>
<td style="width: 25%;">&nbsp;<a href="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1217.jpg"><img alt="IMG_1217.jpg" src="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1217-thumb.jpg" width="200" height="150" /></a></td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;<a href="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1221.jpg"><img alt="IMG_1221.jpg" src="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1221-thumb.jpg" width="200" height="150" /></a></td>
<td style="width: 25%;">&nbsp;<a href="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1225.jpg"><img alt="IMG_1225.jpg" src="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1225-thumb.jpg" width="200" height="150" /></a></td>
</tr>
<tr>
<td style="width: 25%;">&nbsp;<a href="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1220.jpg"><img alt="IMG_1220.jpg" src="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1220-thumb.jpg" width="200" height="150" /></a></td>
<td style="width: 25%;">&nbsp;<a href="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1224.jpg"><img alt="IMG_1224.jpg" src="http://blog.lib.umn.edu/uduw0001/anublog/images/IMG_1224-thumb.jpg" width="200" height="150" /></a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/01/google-android-dev-phone-googler-version/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Microsoft Interview &#8211; All set for the take off to Seattle</title>
		<link>http://anublog.colombounplug.com/2009/01/microsoft-interview-all-set-for-the-take-off-to-seattle/</link>
		<comments>http://anublog.colombounplug.com/2009/01/microsoft-interview-all-set-for-the-take-off-to-seattle/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 17:40:17 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=121</guid>
		<description><![CDATA[Sometime in November I saw email which I never expected. Recruiting Organizer from Microsoft email me to find out possible dates for me to fly to Seattle for the Microsoft onsite interview. Her name was Tejpreet and I must say that she was really helpful. When I contacted her, she said that she will be [...]]]></description>
			<content:encoded><![CDATA[<p>Sometime in November I saw email which I never expected. Recruiting Organizer from Microsoft email me to find out possible dates for me to fly to Seattle for the Microsoft onsite interview. Her name was Tejpreet and I must say that she was really helpful. When I contacted her, she said that she will be the person who is scheduling my interview dates and other arrangements during my trip to Seattle.</p>
<p>Over the past month or so, we had to over come few confusions related the position that I was planning to apply interms of Internship or full-time position. Only because Microsoft wanted to setup appropriate interview. Once we clear that out, we had to clear out few scheduling conflicts. But Thanks to Tejpreet, all those conflicts were solved and changes were made to satisfy both the parties.</p>
<p>So Yesterday, I got the ticket and hotel details and its final that I will be flying to Seattle Microsoft Office to get interviewed by the Giant in Software World.</p>
<p>One more thing, My recruiter told that I will be getting interviewed by two teams within MSSQL team.</p>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/01/microsoft-interview-all-set-for-the-take-off-to-seattle/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>GWT complains on @override</title>
		<link>http://anublog.colombounplug.com/2009/01/gwt-complains-on-override/</link>
		<comments>http://anublog.colombounplug.com/2009/01/gwt-complains-on-override/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 20:18:36 +0000</pubDate>
		<dc:creator>Anuradha Uduwage</dc:creator>
				<category><![CDATA[Java Ruled]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://anublog.colombounplug.com/?p=118</guid>
		<description><![CDATA[I recently update my java version to build 11 and first thing I found out that GWT SDK doesn&#8217;t have the latest addition from java build to reflect @override. If you are like me who use eclipse, when you create a method like this. 123456789101112131415public class Ex1 implements EntryPoint { @override &#160; &#160; public void [...]]]></description>
			<content:encoded><![CDATA[<p>I recently update my java version to build 11 and first thing I found out that GWT SDK doesn&#8217;t have the latest addition from java build to reflect @override.</p>
<p>If you are like me who use eclipse, when you create a method like this.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public class Ex1 implements EntryPoint {<br />
<br />
@override<br />
<br />
&nbsp; &nbsp; public void onModuleLoad() {<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; GWT.log(&quot;Out Put&quot;, null);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; final Label myLabel = new Label(&quot;Hello World&quot;);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; RootPanel.get().add(myLabel);<br />
<br />
&nbsp; &nbsp; }<br />
<br />
}</div></td></tr></tbody></table></div>
<p>Eclipse will automatically will add @override which help the compiler to understand the behavior of the method. This is a addition in java 1.6 build 11, But GWT SDK doesn&#8217;t have this update so your compiler will cough on you.</p>
]]></content:encoded>
			<wfw:commentRss>http://anublog.colombounplug.com/2009/01/gwt-complains-on-override/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

