<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7951136394914149239</id><updated>2012-02-16T00:33:29.387-08:00</updated><category term='mobile'/><category term='xml'/><category term='midlet'/><category term='rpc'/><category term='sms'/><category term='modem'/><category term='xmlrpc'/><category term='gsm'/><category term='pidgin'/><category term='xslt'/><category term='instant messaging'/><category term='gps'/><category term='jquery'/><category term='j2me'/><category term='cgi'/><category term='jsonrpc'/><category term='plugin'/><category term='browser'/><category term='sms server'/><category term='server'/><category term='multiprotocol'/><category term='gammu'/><category term='image'/><category term='wurfl'/><category term='notification'/><category term='markup'/><category term='json'/><title type='text'>MiniIM</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-4984237777955744534</id><published>2011-12-16T21:50:00.000-08:00</published><updated>2011-12-18T23:44:26.569-08:00</updated><title type='text'>Portfolio</title><content type='html'>&lt;hr/&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://miniim.sourceforge.net/images/miniim_wind.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="124" width="124" src="http://miniim.sourceforge.net/images/miniim_wind.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blog_highlight"&gt;&lt;a href="http://miniim.sf.net"&gt;MiniIM&lt;/a&gt; is messaging client for jabber/xmpp protocol. (Java2mobile edition)&lt;a href="http://miniim.sourceforge.net/webstart/webstart.jnlp"&gt;Try it here at desktop&lt;/a&gt;.&lt;/div&gt;Get source here,&lt;blockquote&gt;svn co https://miniim.svn.sourceforge.net/svnroot/miniim/trunk miniim_trunk&lt;/blockquote&gt;It renders xml(some that is used to minimize gui coding like qml) to gui &lt;a href="http://miniim.blogspot.com/2008/06/miniim-in-action.html"&gt;on fly&lt;/a&gt; .&lt;/div&gt;&lt;hr/&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://miniim.sourceforge.net/images/miniim_wind.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="124" width="124" src="http://miniim.sourceforge.net/images/miniim_wind.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blog_highlight"&gt;MiniIM is messaging client for jabber/xmpp protocol(rewritten in C, Qt).(UNFINISHED)&lt;/div&gt;Get source here,&lt;blockquote&gt;git clone git@github.com:kamanashisroy/miniim.git&lt;/blockquote&gt;The development platform is now debian linux. It uses Qt to render GUI .It includes a small memory manager that I call object pool plus. Thismemory library includes a lock-free &lt;a href="https://github.com/kamanashisroy/miniim/blob/miniim_master/core/src/core/opp_queue.c"&gt;queue&lt;/a&gt; (tested in production) . And It uses the Object Oriented notion in C .&lt;/div&gt;&lt;hr/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-4984237777955744534?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/4984237777955744534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=4984237777955744534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/4984237777955744534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/4984237777955744534'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2011/12/portfolio.html' title='Portfolio'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-1828308621364304505</id><published>2008-12-10T20:39:00.000-08:00</published><updated>2008-12-10T20:39:00.746-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='instant messaging'/><title type='text'>Discussion Group</title><content type='html'>There is a new discussion &lt;a href="http://groups.google.com/group/miniim"&gt;group&lt;/a&gt; open for MiniIM project. Thanks go to google-group-team for such wonderful support. Vision, action and community support mean success.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-1828308621364304505?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/1828308621364304505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=1828308621364304505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/1828308621364304505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/1828308621364304505'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/12/discussion-group.html' title='Discussion Group'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-4925730115591359822</id><published>2008-12-10T02:52:00.000-08:00</published><updated>2008-12-10T03:04:36.442-08:00</updated><title type='text'>Serializable kdom rocks</title><content type='html'>The &lt;a href="http://kxml.sourceforge.net/"&gt;kxml&lt;/a&gt; project means a lot for j2me. I have done some modification to make a document serializable in Recordstore. &lt;a href="http://miniim.svn.sourceforge.net/viewvc/miniim/trunk/src/main/java/org/kxml2/"&gt;Here&lt;/a&gt; is the code. You can follow the usage examples in the code to make it work for you.&lt;br /&gt;&lt;br /&gt;To use this code you just need to get the code from trunk. The obfuscator will skip the classes you do not use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-4925730115591359822?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/4925730115591359822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=4925730115591359822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/4925730115591359822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/4925730115591359822'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/12/serializable-kdom-rocks.html' title='Serializable kdom rocks'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-5708143126139319984</id><published>2008-12-10T01:17:00.000-08:00</published><updated>2008-12-10T01:52:53.033-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Browser features explained</title><content type='html'>Earlier I talked about my &lt;a href="http://miniim.blogspot.com/2008/06/j2me-browser.html"&gt;vision&lt;/a&gt;. In that application there are pages like "More", "About" they are rendered from markup files(more.xml, about.xml, ..) found &lt;a href="http://miniim.svn.sourceforge.net/viewvc/miniim/branches/miniim-with-classical-structure/res/"&gt;here&lt;/a&gt;. They are following markup.dtd rules. Surely you can create documents on fly and work on DOM.&lt;br /&gt;&lt;br /&gt;Note that it is svn-branch, the &lt;a href="http://miniim.svn.sourceforge.net/viewvc/miniim/trunk/"&gt;trunk&lt;/a&gt; is always containing the updated features. &lt;br /&gt;&lt;br /&gt;And there are application-switches making it possible to interact with user. &lt;a href="http://miniim.svn.sourceforge.net/viewvc/miniim/trunk/src/main/java/net/ayaslive/miniim/ui/markup/extended/"&gt;Here&lt;/a&gt; are the responsible code doing the magic.&lt;br /&gt;&lt;br /&gt;The markup is not rich in features. It was good to follow an existing markup rule. I am hoping to do that in future. And I am keeping eye on w3.org for that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-5708143126139319984?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/5708143126139319984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=5708143126139319984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/5708143126139319984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/5708143126139319984'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/12/browser-features-explained.html' title='Browser features explained'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-6924697128266528163</id><published>2008-12-09T21:46:00.000-08:00</published><updated>2009-01-28T22:48:24.471-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='markup'/><category scheme='http://www.blogger.com/atom/ns#' term='midlet'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='instant messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>XMPP client with browser-like features</title><content type='html'>I am back to j2me again. In my &lt;a href="http://miniim.blogspot.com/2007/12/j2me-lcdui-wml-text-rendering.html"&gt;earlier&lt;/a&gt; attempt I was trying to render a WML content. Now I am here with a little advanced browser like feature to show web content. Note that I have dropped the idea of writing WML renderer. I have added a markup renderer. To be specific it can render a list of markup items. &lt;a href="http://miniim.blogspot.com/2008/06/miniim-in-action.html"&gt;Here&lt;/a&gt; we can show on line content. It is stylable on compile-time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;When I want to add some feature to my sweet &lt;a href="http://miniim.sf.net"&gt;application&lt;/a&gt;, it just gets bigger in size. And bigger size prevent it to work in low end mobile phones. So the idea is to write little j2me code and add most of the features in the servers. And here I am sharing the implementation of the idea in a hope that it gets richer and useful to you. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Similar efforts&lt;/b&gt;&lt;br /&gt;There is something similar available in &lt;a href="http://www.zkoss.org/"&gt;ZK project&lt;/a&gt;. And there is also a browser feature in &lt;a href="http://www.j2mepolish.org/"&gt;j2mepolish project&lt;/a&gt;. I prefer mine, because I believe that it has very small footprint, it is light-weight(reuses objects) and I am willing to process any feature request that will suite this. &lt;a href="https://meapplicationdevelopers.dev.java.net/mobileajax.html"&gt;Mobile Ajax&lt;/a&gt; is another interesting project.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Input fields&lt;/b&gt;&lt;br /&gt;It has textbox, selection(multiple) box, checkbox, radio input ideas implemented. I am hoping to add some multimedia feature as well. Like an input box for image, sound etc and also playback of the media content. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Benchmark&lt;/b&gt;&lt;br /&gt;It is tested on WTk monitor output that shows low object instantiation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Caveats&lt;/b&gt;&lt;br /&gt;It is using document parser from kxml project. The document and elements there uses vectors and it makes the parsing little slower. I am looking for some alternative to this.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thinking forward&lt;/b&gt;&lt;br /&gt;I think this is a step forward to social features. The next thing to do is to write web application to represent information from social sites. I am now looking for any kind of reusable component for this. I mean I am not trying to reinvent. And it is hard to maintain too. If you think you have nice idea or have something to say please feel free post comment or email me directly.&lt;br /&gt;&lt;br /&gt;Additionally it has a IM framework to develop end to end application too.&lt;br /&gt;&lt;br /&gt;Please consider testing &lt;a href="http://miniim.sf.net"&gt;MiniIM&lt;/a&gt; in your mobile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-6924697128266528163?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/6924697128266528163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=6924697128266528163' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/6924697128266528163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/6924697128266528163'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/06/j2me-browser.html' title='XMPP client with browser-like features'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-3035769123715144191</id><published>2008-08-06T03:23:00.000-07:00</published><updated>2008-08-06T04:41:47.889-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='notification'/><category scheme='http://www.blogger.com/atom/ns#' term='pidgin'/><category scheme='http://www.blogger.com/atom/ns#' term='multiprotocol'/><category scheme='http://www.blogger.com/atom/ns#' term='instant messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='cgi'/><title type='text'>Pidgin as instant messaging gateway</title><content type='html'>Pidgin is the most powerful IM client I have ever seen . This is because of the big community support and also because I am big fan of Mark Spencer :-P .. The libpurple (Pidgin/Finch core) library can be used as IM gateway . I implemented such gateway for event notification . Something like a bot . &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MbskO3ofcQ4/SJmAXAwswAI/AAAAAAAAABQ/tyaUwR6hNJw/s1600-h/pidgin_send_im.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_MbskO3ofcQ4/SJmAXAwswAI/AAAAAAAAABQ/tyaUwR6hNJw/s200/pidgin_send_im.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5231353574997147650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It keeps libpurple connected to the IM servers of different protocol and takes message request from UNIX socket . For example the following code will send a message to Chitrangoda ..&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use Socket;&lt;br /&gt;&lt;br /&gt;my $sock_file = $ARGV[1] || "./im_socket_file";&lt;br /&gt;my $msg;&lt;br /&gt;die "provide a socket file address" unless $sock_file;&lt;br /&gt;&lt;br /&gt;socket(SOCK, PF_UNIX, SOCK_STREAM, 0) || die "socket: $!";&lt;br /&gt;print "connecting ..\n";&lt;br /&gt;connect(SOCK, sockaddr_un($sock_file)) || die "connect: $!";&lt;br /&gt;&lt;br /&gt;print "writing ..\n";&lt;br /&gt;$msg = "chitrangoda\@example.com MSN This is sent to Chitrangoda via MSN server.".chr(0x1A);&lt;br /&gt;send(SOCK,$msg,0);&lt;br /&gt;recv(SOCK,$msg,100,0);&lt;br /&gt;print "done\n";&lt;br /&gt;close SOCK;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And here is the code with examples &lt;a href="http://ayaslive.net/fs/pidgin_send_im-0.0.6_stable.tgz"&gt;pidgin_send_im&lt;/a&gt; (please let me know if the link is broken).It works with Pidgin version 2.4.2 and upper (I am not sure about the lower version) ..&lt;br /&gt;&lt;br /&gt;Again, there are more than one way to do it. You can use the perl/php bindings or plugins .. I expect you show those howtos in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-3035769123715144191?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/3035769123715144191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=3035769123715144191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/3035769123715144191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/3035769123715144191'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/08/pidgin-as-instant-messaging-gateway.html' title='Pidgin as instant messaging gateway'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_MbskO3ofcQ4/SJmAXAwswAI/AAAAAAAAABQ/tyaUwR6hNJw/s72-c/pidgin_send_im.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-1729028735653953479</id><published>2008-06-19T02:10:00.000-07:00</published><updated>2008-06-19T21:20:23.072-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='markup'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='instant messaging'/><title type='text'>MiniIM in Action</title><content type='html'>&lt;img src="http://miniim.sourceforge.net/images/miniim_in_action.gif" alt=""/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am really enjoying the development, Here is how it looks currently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-1729028735653953479?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/1729028735653953479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=1729028735653953479' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/1729028735653953479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/1729028735653953479'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/06/miniim-in-action.html' title='MiniIM in Action'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-8614146257585843851</id><published>2008-06-19T00:57:00.000-07:00</published><updated>2008-06-19T01:48:03.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='markup'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='instant messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>KXML skip SubTree skip Depth</title><content type='html'>&lt;a href="http://kxml.sourceforge.net/kxml2/"&gt;KXML&lt;/a&gt; is just the name of XML parsing in J2ME. As I am using it in &lt;a href="http://miniim.sourceforge.net"&gt;MiniIM&lt;/a&gt;, parsing XMPP and even &lt;a href="http://kxml.sourceforge.net/kxml2/javadoc/org/kxml2/io/KXmlParser.html#skipSubTree()"&gt;special markup&lt;/a&gt;, I found it useful to skip upto a specific depth of XML tree. Note, the &lt;a href="http://kxml.sourceforge.net/kxml2/javadoc/org/kxml2/io/KXmlParser.html#skipSubTree()"&gt;skipSubTree() &lt;/a&gt; method in &lt;a href="http://kxml.sourceforge.net/kxml2/javadoc/org/kxml2/io/KXmlParser.html"&gt;KXMLParser&lt;/a&gt; / &lt;a href="http://www.xmlpull.org/v1/doc/api/org/xmlpull/v1/XmlPullParser.html"&gt;XMLPullParser&lt;/a&gt; API is useful. But it needs that you call it at tag start otherwise it will throw exception. So I introduce skipDepth(depth) idea. You just set your depth upto which you want to skip. It will just eat data upto that.&lt;br /&gt;&lt;br /&gt;For example here is a small part of stream,&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid rgb(204, 204, 153); background-color: rgb(255, 255, 204);"&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;?&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;xml&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;version&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/single_string/start" style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span title="php/php/single_string" style="color: rgb(255, 0, 0);"&gt;1.0&lt;/span&gt;&lt;span title="php/php/single_string/end" style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;?&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;stream&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;:&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;stream&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;jabber:client&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;:&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;stream&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;http://etherx.jabber.org/streams&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;id&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;1523376107&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;from&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;jabber.org&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;version&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;1.0&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;xml&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;:&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;lang&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;en&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;br /&gt; &lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;stream&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;:&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;features&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;mechanisms&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;urn:ietf:params:xml:ns:xmpp-sasl&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;mechanism&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;DIGEST&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;-&lt;/span&gt;&lt;a href="http://www.php.net/MD5"&gt;&lt;span title="php/php/function" style="color: rgb(0, 0, 102);"&gt;MD5&lt;/span&gt;&lt;/a&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;/&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;mechanism&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;mechanism&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;PLAIN&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;/&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;mechanism&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;/&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;mechanisms&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;register&lt;/span&gt; &lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="php/php/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/double_string" style="color: rgb(255, 0, 0);"&gt;http://jabber.org/features/iq-register&lt;/span&gt;&lt;span title="php/php/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;/&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt; &lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;/&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;stream&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;:&lt;/span&gt;&lt;span title="php/php" style="color: rgb(0, 0, 0);"&gt;features&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="php/php/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Here is the simple code to parse the "stream:features",&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid rgb(204, 204, 153); background-color: rgb(255, 255, 204);"&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;final&lt;/span&gt; &lt;span title="java/java/dtype" style="color: rgb(153, 51, 51);"&gt;void&lt;/span&gt; &lt;span title="java/java/method" style="color: gold;"&gt;readFeatures&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;throws&lt;/span&gt; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html"&gt;&lt;span title="java/java/java/io" style="color: rgb(153, 187, 221); font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"&gt;&lt;span title="java/java/java/lang" style="color: rgb(153, 187, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"&gt;&lt;span title="java/java/java/lang" style="color: rgb(153, 187, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;text&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;nextTag&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;require&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/static_class" style="color: tan;"&gt;KXmlParser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/ootoken" style="color: rgb(153, 51, 51);"&gt;START_TAG&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;PREFIX_FEATURES&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;for&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;nextTag&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;!&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;KXmlParser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/ootoken" style="color: rgb(153, 51, 51);"&gt;END_TAG&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;skipDepth&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/num/int" style="color: rgb(17, 17, 238);"&gt;3&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt; &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; The features tag is placed at depth 1 &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; we are parsing things inside this feature tag &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;getName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;throw&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;new&lt;/span&gt; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html"&gt;&lt;span title="java/java/java/lang" style="color: rgb(153, 187, 221); font-weight: bold;"&gt;IllegalStateException&lt;/span&gt;&lt;/a&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;feature is null&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;STARTTLS&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; set a starttls read command &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;debug&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;STARTTLS&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/variable" style="color: gray;"&gt;featuresTLS&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;MECHANISMS&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; traverse the mechanisms inside &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;info&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;readFeatures()&lt;/span&gt;&lt;span title="java/java/double_string/esc" style="color: rgb(0, 0, 102); font-weight: bold;"&gt;\t&lt;/span&gt;&lt;span title="java/java/double_string/esc" style="color: rgb(0, 0, 102); font-weight: bold;"&gt;\t&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;parsing mechanisms&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; so while inside the mechanisms &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;for&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;nextTag&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;!&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;KXmlParser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/ootoken" style="color: rgb(153, 51, 51);"&gt;END_TAG&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;skipDepth&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/num/int" style="color: rgb(17, 17, 238);"&gt;5&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;getName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;MECHANISM&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; see if the mechanism is PLAIN &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/variable" style="color: gray;"&gt;text&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/method" style="color: gold;"&gt;expectText&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;text&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;br /&gt;      &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;text&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;PLAIN&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; say that plain mechanism is found &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;       &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;info&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;PLAIN&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span title="java/java/variable" style="color: gray;"&gt;featuresPlain&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;text&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;DIGEST_MD5&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;info&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;DIGEST_MD5&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span title="java/java/variable" style="color: gray;"&gt;featuresDigestMd5&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; do not break, go on parsing mechanisms &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;BIND&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;debug&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;&lt;&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;BIND&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/variable" style="color: gray;"&gt;featuresBind&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;COMPRESSION&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/single_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;//&lt;/span&gt;&lt;span title="java/java/single_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; QUOTE "the ZLIB compression algorithm is mandatory-to-implement"&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/variable" style="color: gray;"&gt;featuresZLIB&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; traverse the mechanisms inside &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;info&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;readFeatures()&lt;/span&gt;&lt;span title="java/java/double_string/esc" style="color: rgb(0, 0, 102); font-weight: bold;"&gt;\t&lt;/span&gt;&lt;span title="java/java/double_string/esc" style="color: rgb(0, 0, 102); font-weight: bold;"&gt;\t&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;parsing compression&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;for&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;nextTag&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;!&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;KXmlParser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/ootoken" style="color: rgb(153, 51, 51);"&gt;END_TAG&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;skipDepth&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/num/int" style="color: rgb(17, 17, 238);"&gt;5&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;getName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;METHOD&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"&gt;&lt;span title="java/java/java/lang" style="color: rgb(153, 187, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;compressionMethod&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/method" style="color: gold;"&gt;expectText&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;compressionMethod&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;!&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;null&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;&amp;&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;&amp;&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;compressionMethod&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;equals&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/class_name" style="color: red;"&gt;ZLIB&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span title="java/java/variable" style="color: gray;"&gt;featuresZLIB&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/const" style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;debug&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;&amp;lt;!&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;tagName&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span title="java/java/multi_comment/start" style="color: rgb(136, 136, 136); font-style: italic;"&gt;/*&lt;/span&gt;&lt;span title="java/java/multi_comment" style="color: rgb(136, 136, 136); font-style: italic;"&gt; whatever it is just finish the tag &lt;/span&gt;&lt;span title="java/java/multi_comment/end" style="color: rgb(136, 136, 136); font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span title="java/java/static_class" style="color: tan;"&gt;SimpleLogger&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;debug&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;this&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt; &lt;span title="java/java/double_string/start" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/double_string" style="color: rgb(255, 0, 0);"&gt;&lt; next&lt;/span&gt;&lt;span title="java/java/double_string/end" style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/static_class" style="color: tan;"&gt;parser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/method" style="color: gold;"&gt;skipDepth&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/num/int" style="color: rgb(17, 17, 238);"&gt;2&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;  &lt;br /&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And here is the small method I have added in KXMLParser.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid rgb(204, 204, 153); background-color: rgb(255, 255, 204);"&gt;&lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;public&lt;/span&gt; &lt;span title="java/java/dtype" style="color: rgb(153, 51, 51);"&gt;void&lt;/span&gt; &lt;span title="java/java/method" style="color: gold;"&gt;skipDepth&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/dtype" style="color: rgb(153, 51, 51);"&gt;int&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;dep&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;throws&lt;/span&gt; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html"&gt;&lt;span title="java/java/java/io" style="color: rgb(153, 187, 221); font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;,&lt;/span&gt;&lt;span title="java/java/exception" style="color: violet;"&gt;XmlPullParserException&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span title="java/java/dtype" style="color: rgb(153, 51, 51);"&gt;int&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;level&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/method" style="color: gold;"&gt;getDepth&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;-&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;dep&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span title="java/java/dtype" style="color: rgb(153, 51, 51);"&gt;int&lt;/span&gt; &lt;span title="java/java/variable" style="color: gray;"&gt;eventType&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/method" style="color: gold;"&gt;getEventType&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;eventType&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;!&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;KXmlParser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/ootoken" style="color: rgb(153, 51, 51);"&gt;END_TAG&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/variable" style="color: gray;"&gt;level&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;while&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;level&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;&gt;&lt;/span&gt; &lt;span title="java/java/num/int" style="color: rgb(17, 17, 238);"&gt;0&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/variable" style="color: gray;"&gt;eventType&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/method" style="color: gold;"&gt;next&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;eventType&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;KXmlParser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/ootoken" style="color: rgb(153, 51, 51);"&gt;END_TAG&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;-&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;-&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;level&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;else&lt;/span&gt; &lt;span title="java/java/keyword" style="color: rgb(166, 166, 0);"&gt;if&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;(&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;eventType&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;=&lt;/span&gt; &lt;span title="java/java/static_class" style="color: tan;"&gt;KXmlParser&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;.&lt;/span&gt;&lt;span title="java/java/ootoken" style="color: rgb(153, 51, 51);"&gt;START_TAG&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;)&lt;/span&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;+&lt;/span&gt;&lt;span title="java/java/variable" style="color: gray;"&gt;level&lt;/span&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span title="java/java/symbol" style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I hope it helps :) ..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-8614146257585843851?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/8614146257585843851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=8614146257585843851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/8614146257585843851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/8614146257585843851'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/06/kxml-skip-subtree-skip-depth.html' title='KXML skip SubTree skip Depth'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-2951395992826295585</id><published>2008-06-18T05:36:00.000-07:00</published><updated>2008-06-18T06:22:36.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='wurfl'/><category scheme='http://www.blogger.com/atom/ns#' term='xslt'/><title type='text'>Shrink wurfl mobile database</title><content type='html'>WURFL is nice mobile database. The &lt;a href="http://devices.j2mepolish.org/interactivedb/welcome.faces"&gt;j2mepolish database&lt;/a&gt; is good too. Anyway I was trying to use wurfl.xml file(you can download it from &lt;a href="http://wurfl.sf.net"&gt;wurfl homepage&lt;/a&gt;) while releasing my j2me application. But as the wurfl.xml file is too big(4.3M), I have removed some unused attributes and tags from it. And still I am able to use the parsers (I tested only the perl parser :-P ). Finally the size is reduced to (1.4M) .&lt;br /&gt;&lt;br /&gt;  My primary goal is to resize some of my background images appropriate to the the screen resolution for a specific mobile. So I filtered the resolution_width and resolution_height information.&lt;br /&gt;&lt;br /&gt;  Here is the small &lt;a href="http://en.wikipedia.org/wiki/XSLT"&gt;xslt&lt;/a&gt; code used to shrink the wurfl.xml .&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#ffc;border:1px solid #cc9;"&gt;&lt;span style="color:#000;" title="html/html"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment/start"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment"&gt;&lt;br /&gt;&lt;br /&gt;This file part of MiniIM.&lt;br /&gt;&lt;br /&gt;Copyright (C) 2007  Kamanashis Roy&lt;br /&gt;&lt;br /&gt;MiniIM is free software: you can redistribute it and/or modify&lt;br /&gt;it under the terms of the GNU General Public License as published by&lt;br /&gt;the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;(at your option) any later version.&lt;br /&gt;&lt;br /&gt;MiniIM is distributed in the hope that it will be useful,&lt;br /&gt;but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;GNU General Public License for more details.&lt;br /&gt;&lt;br /&gt;You should have received a copy of the GNU General Public License&lt;br /&gt;along with MiniIM.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment/end"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:stylesheet xmlns:xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;http://www.w3.org/1999/XSL/Transform&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#006;" title="html/html/tag/attribute"&gt;version&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;1.0&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:output &lt;/span&gt;&lt;span style="color:#006;" title="html/html/tag/attribute"&gt;method&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;xml&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt; indent&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;yes&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;/&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color:#888;" title="html/html/comment/start"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment"&gt; select the device tag &lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment/end"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template match&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;/wurfl&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;wurfl&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:copy-of select&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;version&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;/&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;devices&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:apply-templates select&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;devices/device&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;/&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/devices&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/wurfl&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#888;" title="html/html/comment/start"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment"&gt; process devices &lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment/end"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template match&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;device&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;device&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt; fall_back&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;{@fall_back}&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#006;" title="html/html/tag/attribute"&gt;id&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;{@id}&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt; user_agent&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;{@user_agent}&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#888;" title="html/html/comment/start"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment"&gt; keep only display group &lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment/end"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:apply-templates select&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;group[@id='display']&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;/&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/device&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template match&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;group&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color:#888;" title="html/html/comment/start"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment"&gt; render non empty group &lt;/span&gt;&lt;span style="color:#888;" title="html/html/comment/end"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:if test&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;count(capability[@name='resolution_width'])=1&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;group&lt;/span&gt; &lt;span style="color:#006;" title="html/html/tag/attribute"&gt;id&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;{@id}&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:apply-templates select&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;capability[@name='resolution_width']&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;/&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:apply-templates select&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;capability[@name='resolution_height']&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;/&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/group&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:if&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template match&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;capability&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;capability&lt;/span&gt; &lt;span style="color:#006;" title="html/html/tag/attribute"&gt;name&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;{@name}&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#006;" title="html/html/tag/attribute"&gt;value&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;=&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/start"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string"&gt;{@value}&lt;/span&gt;&lt;span style="color:#933;" title="html/html/string/end"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag/symbol"&gt;/&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:template&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/start"&gt;&amp;lt;/xsl&lt;/span&gt;&lt;span style="color:#008000;" title="html/html/tag"&gt;:stylesheet&lt;/span&gt;&lt;span style="font-weight:bold;color:#000;" title="html/html/tag/end"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   Now let us do the transform, I have used xsltproc for the transform here, you may want to get xsltproc binary for your os or get source &lt;a href="http://xmlsoft.org/XSLT/downloads.html"&gt;here&lt;/a&gt;. And you can apply transform like this,&lt;br /&gt;&lt;br /&gt;   shell&gt; xsltproc your_shrinker.xslt wurfl.xml &gt; wurfl_shrinked.xml&lt;br /&gt;&lt;br /&gt;   You can do some appropriate modifications to this code to keep some other attributes too. I prefer to write separate xsl code for each application. Note there are other alternatives, like database&lt;br /&gt;usage available in &lt;a href="http://wurfl.sourceforge.net"&gt;wurfl site&lt;/a&gt;. So please read those docs before trying this :)  .&lt;br /&gt;&lt;br /&gt;   Finally I used the cool perl module form &lt;a href="http://www.imagemagick.org"&gt;imagemagick&lt;/a&gt; to resize my images :) .&lt;br /&gt;&lt;br /&gt;   Enjoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-2951395992826295585?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/2951395992826295585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=2951395992826295585' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/2951395992826295585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/2951395992826295585'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/06/shrink-wurfl-mobile-database.html' title='Shrink wurfl mobile database'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-5319111673686884784</id><published>2008-05-02T23:27:00.000-07:00</published><updated>2008-12-08T01:14:28.945-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='midlet'/><category scheme='http://www.blogger.com/atom/ns#' term='gps'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><title type='text'>GPS device emulation how to</title><content type='html'>I do not have a GPS device. Though I dare to write applications for it. Somehow I have managed a way to emulate a GPS device.&lt;br /&gt;&lt;br /&gt;    So, what is the source of sample GPS data ? I use public gpsd servers as NMEA data source ..&lt;br /&gt;You can do google to find a gpsd server.&lt;br /&gt;&lt;br /&gt;    How can we emulate ? I use &lt;a href="http://anil.recoil.org/projects/blueproxy.html"&gt;blueproxy&lt;/a&gt; to proxy the gpsd server connection over bluetooth. So you just need to download and install blueproxy.&lt;br /&gt;&lt;br /&gt;    Finally it is simple, start your server with the following command,&lt;br /&gt;&lt;br /&gt;shell #&gt; blueproxy -v -c 11 -h gpsd_server.address -p gpsd_port&lt;br /&gt;&lt;br /&gt;    Please replace the "gpsd_server.address" and "gpsd_port" with something appropriate. Note that gpsd servers needs to receive R before it can start to broadcast NMEA messages. So just send 'R\r\n'  before you wait for data.&lt;br /&gt;&lt;br /&gt;    As I am midlet developer, I tried the idea of proxy in midlet too .. Finally I was able to test the whole thing in WTK emulator.  &lt;br /&gt;&lt;br /&gt;    Here is the code,(HTML generated by highlight 2.6.9, http://www.andre-simon.de/)&lt;br /&gt;&lt;br /&gt;&lt;pre class="hl"&gt;&lt;span class="hl kwa"&gt;package&lt;/span&gt; blueProxy&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; java&lt;span class="hl sym"&gt;.&lt;/span&gt;io&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwc"&gt;IOException&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;io&lt;span class="hl sym"&gt;.&lt;/span&gt;Connector&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;io&lt;span class="hl sym"&gt;.&lt;/span&gt;StreamConnection&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;io&lt;span class="hl sym"&gt;.&lt;/span&gt;StreamConnectionNotifier&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;lcdui&lt;span class="hl sym"&gt;.&lt;/span&gt;Command&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;lcdui&lt;span class="hl sym"&gt;.&lt;/span&gt;CommandListener&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;lcdui&lt;span class="hl sym"&gt;.&lt;/span&gt;Display&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;lcdui&lt;span class="hl sym"&gt;.&lt;/span&gt;Displayable&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;lcdui&lt;span class="hl sym"&gt;.&lt;/span&gt;Form&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;lcdui&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwc"&gt;TextField&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;lcdui&lt;span class="hl sym"&gt;.&lt;/span&gt;StringItem&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;microedition&lt;span class="hl sym"&gt;.&lt;/span&gt;midlet&lt;span class="hl sym"&gt;.&lt;/span&gt;MIDlet&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; java&lt;span class="hl sym"&gt;.&lt;/span&gt;io&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwc"&gt;OutputStream&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; java&lt;span class="hl sym"&gt;.&lt;/span&gt;io&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwc"&gt;InputStream&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;bluetooth&lt;span class="hl sym"&gt;.&lt;/span&gt;BluetoothStateException&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;bluetooth&lt;span class="hl sym"&gt;.&lt;/span&gt;LocalDevice&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;import&lt;/span&gt; javax&lt;span class="hl sym"&gt;.&lt;/span&gt;bluetooth&lt;span class="hl sym"&gt;.&lt;/span&gt;DiscoveryAgent&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;public class&lt;/span&gt; BlueProxy &lt;span class="hl kwa"&gt;extends&lt;/span&gt; MIDlet &lt;span class="hl kwa"&gt;implements&lt;/span&gt; CommandListener &lt;span class="hl sym"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl slc"&gt;// UI Specific&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;private final&lt;/span&gt; &lt;span class="hl kwc"&gt;TextField&lt;/span&gt; url &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwc"&gt;TextField&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;URL&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;socket://gpsd.mainframe.cx:2947&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;200&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwc"&gt;TextField&lt;/span&gt;&lt;span class="hl sym"&gt;.&lt;/span&gt;ANY&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;private final&lt;/span&gt; StringItem log &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwd"&gt;StringItem&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Log&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;no clients are connected ..&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;private final&lt;/span&gt; Command quit &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwd"&gt;Command&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Quit&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; Command&lt;span class="hl sym"&gt;.&lt;/span&gt;EXIT&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;private final&lt;/span&gt; Command start &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwd"&gt;Command&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Start&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; Command&lt;span class="hl sym"&gt;.&lt;/span&gt;OK&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;public&lt;/span&gt; &lt;span class="hl kwb"&gt;void&lt;/span&gt; &lt;span class="hl kwd"&gt;startApp&lt;/span&gt;&lt;span class="hl sym"&gt;() {&lt;/span&gt;&lt;br /&gt;                &lt;span class="hl slc"&gt;// test ui&lt;/span&gt;&lt;br /&gt;                Form myForm &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwd"&gt;Form&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Blue Proxy&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                myForm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;append&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;url&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                myForm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;append&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;log&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                myForm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;addCommand&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;quit&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                myForm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;addCommand&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;start&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                myForm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;setCommandListener&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;this&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                Display&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getDisplay&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;this&lt;/span&gt;&lt;span class="hl sym"&gt;).&lt;/span&gt;&lt;span class="hl kwd"&gt;setCurrent&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;myForm&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;public&lt;/span&gt; &lt;span class="hl kwb"&gt;void&lt;/span&gt; &lt;span class="hl kwd"&gt;pauseApp&lt;/span&gt;&lt;span class="hl sym"&gt;() {&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="hl com"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;    * Destroy must cleanup everything. The thread is signaled to stop and no&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;    * result is produced.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;    */&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;public&lt;/span&gt; &lt;span class="hl kwb"&gt;void&lt;/span&gt; &lt;span class="hl kwd"&gt;destroyApp&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwb"&gt;boolean&lt;/span&gt; unconditional&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                &lt;span class="hl kwd"&gt;notifyDestroyed&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;        &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="hl kwa"&gt;public&lt;/span&gt; &lt;span class="hl kwb"&gt;void&lt;/span&gt; &lt;span class="hl kwd"&gt;commandAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;Command cmd&lt;span class="hl sym"&gt;,&lt;/span&gt; Displayable arg1&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;cmd &lt;span class="hl sym"&gt;==&lt;/span&gt; start&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                        &lt;span class="hl sym"&gt;((&lt;/span&gt;Form&lt;span class="hl sym"&gt;)&lt;/span&gt;arg1&lt;span class="hl sym"&gt;).&lt;/span&gt;&lt;span class="hl kwd"&gt;removeCommand&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;start&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                        &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwc"&gt;Thread&lt;/span&gt;&lt;span class="hl sym"&gt;() {&lt;/span&gt;&lt;br /&gt;                                        &lt;span class="hl kwa"&gt;public&lt;/span&gt; &lt;span class="hl kwb"&gt;void&lt;/span&gt; &lt;span class="hl kwd"&gt;run&lt;/span&gt;&lt;span class="hl sym"&gt;() {&lt;/span&gt;&lt;br /&gt;                                                &lt;span class="hl kwc"&gt;System&lt;/span&gt;&lt;span class="hl sym"&gt;.&lt;/span&gt;out&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;println&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Started thread#1&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                LocalDevice ld &lt;span class="hl sym"&gt;=&lt;/span&gt; null&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;                                                &lt;span class="hl kwa"&gt;try&lt;/span&gt; &lt;span class="hl sym"&gt;{&lt;/span&gt;&lt;br /&gt;                                                        ld &lt;span class="hl sym"&gt;=&lt;/span&gt; LocalDevice&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getLocalDevice&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                        ld&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;setDiscoverable&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;DiscoveryAgent&lt;span class="hl sym"&gt;.&lt;/span&gt;GIAC&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;catch&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt; BluetoothStateException e&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                                                        e&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;printStackTrace&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                        &lt;span class="hl kwa"&gt;return&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;                                                &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                                &lt;span class="hl kwa"&gt;try&lt;/span&gt; &lt;span class="hl sym"&gt;{&lt;/span&gt;&lt;br /&gt;                                                        &lt;span class="hl slc"&gt;// open server socket ..&lt;/span&gt;&lt;br /&gt;                                                        log&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;setText&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;opening connection notifier ..&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                        StreamConnectionNotifier connn &lt;span class="hl sym"&gt;= (&lt;/span&gt;StreamConnectionNotifier&lt;span class="hl sym"&gt;)&lt;/span&gt; Connector&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;open&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;btspp://localhost:1;encrypt=false;authorize=false;authenticate=false&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                        &lt;span class="hl kwa"&gt;while&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;true&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                                                                log&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;setText&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;waiting for a new client ..&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                                &lt;span class="hl kwa"&gt;try&lt;/span&gt; &lt;span class="hl sym"&gt;{&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwa"&gt;final&lt;/span&gt; StreamConnection conn &lt;span class="hl sym"&gt;= (&lt;/span&gt;StreamConnection&lt;span class="hl sym"&gt;)&lt;/span&gt;connn&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;acceptAndOpen&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl slc"&gt;// open client socket ..&lt;/span&gt;&lt;br /&gt;                                                                        log&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;setText&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;opening socket to &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;+&lt;/span&gt; url&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getString&lt;/span&gt;&lt;span class="hl sym"&gt;());&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwa"&gt;final&lt;/span&gt; StreamConnection client &lt;span class="hl sym"&gt;= (&lt;/span&gt;StreamConnection&lt;span class="hl sym"&gt;)&lt;/span&gt; Connector&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;open&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;url&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getString&lt;/span&gt;&lt;span class="hl sym"&gt;());&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl slc"&gt;// peering ..&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwc"&gt;Thread&lt;/span&gt;&lt;span class="hl sym"&gt;() {&lt;/span&gt;&lt;br /&gt;                                                                                &lt;span class="hl kwa"&gt;public&lt;/span&gt; &lt;span class="hl kwb"&gt;void&lt;/span&gt; &lt;span class="hl kwd"&gt;run&lt;/span&gt;&lt;span class="hl sym"&gt;() {&lt;/span&gt;&lt;br /&gt;                                                                                        &lt;span class="hl kwc"&gt;System&lt;/span&gt;&lt;span class="hl sym"&gt;.&lt;/span&gt;out&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;println&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Started thread#2&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                                                        &lt;span class="hl kwa"&gt;try&lt;/span&gt; &lt;span class="hl sym"&gt;{&lt;/span&gt;&lt;br /&gt;                                                                                                &lt;span class="hl kwc"&gt;InputStream&lt;/span&gt; is &lt;span class="hl sym"&gt;=&lt;/span&gt; conn&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;openInputStream&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                                                &lt;span class="hl kwc"&gt;OutputStream&lt;/span&gt; os &lt;span class="hl sym"&gt;=&lt;/span&gt; client&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;openOutputStream&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                                                &lt;span class="hl kwb"&gt;byte&lt;/span&gt; data&lt;span class="hl sym"&gt;[] =&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwb"&gt;byte&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;&lt;span class="hl num"&gt;200&lt;/span&gt;&lt;span class="hl sym"&gt;];&lt;/span&gt;&lt;br /&gt;                                                                                                &lt;span class="hl kwb"&gt;int&lt;/span&gt; res &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;                                                                                                &lt;span class="hl kwa"&gt;while&lt;/span&gt;&lt;span class="hl sym"&gt;((&lt;/span&gt;res &lt;span class="hl sym"&gt;=&lt;/span&gt; is&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;read&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;data&lt;span class="hl sym"&gt;)) !=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                                                                                                        &lt;span class="hl kwc"&gt;System&lt;/span&gt;&lt;span class="hl sym"&gt;.&lt;/span&gt;out&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;println&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;bt &amp;gt; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwc"&gt;String&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;data&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; res&lt;span class="hl sym"&gt;));&lt;/span&gt;&lt;br /&gt;                                                                                                        os&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;write&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;data&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; res&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                                                                &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                                                                        &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;catch&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwc"&gt;IOException&lt;/span&gt; e&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                                                                                                e&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;printStackTrace&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                                        &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                                                                &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl sym"&gt;}.&lt;/span&gt;&lt;span class="hl kwd"&gt;start&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwc"&gt;InputStream&lt;/span&gt; is &lt;span class="hl sym"&gt;=&lt;/span&gt; client&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;openInputStream&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwc"&gt;OutputStream&lt;/span&gt; os &lt;span class="hl sym"&gt;=&lt;/span&gt; conn&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;openOutputStream&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwb"&gt;byte&lt;/span&gt; data&lt;span class="hl sym"&gt;[] =&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwb"&gt;byte&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;&lt;span class="hl num"&gt;200&lt;/span&gt;&lt;span class="hl sym"&gt;];&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwb"&gt;int&lt;/span&gt; res &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl kwa"&gt;while&lt;/span&gt;&lt;span class="hl sym"&gt;((&lt;/span&gt;res &lt;span class="hl sym"&gt;=&lt;/span&gt; is&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;read&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;data&lt;span class="hl sym"&gt;)) !=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                                                                                &lt;span class="hl kwc"&gt;System&lt;/span&gt;&lt;span class="hl sym"&gt;.&lt;/span&gt;out&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;println&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;bt &amp;lt; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwc"&gt;String&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;data&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; res&lt;span class="hl sym"&gt;));&lt;/span&gt;&lt;br /&gt;                                                                                os&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;write&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;data&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; res&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                                                                        &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                                                &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;catch&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwc"&gt;IOException&lt;/span&gt; e&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                                                                        e&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;printStackTrace&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                                &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                                        &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                                &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;catch&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwc"&gt;IOException&lt;/span&gt; e&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;                                                        e&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;printStackTrace&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                                                &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                                &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;                        &lt;span class="hl sym"&gt;}.&lt;/span&gt;&lt;span class="hl kwd"&gt;start&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;                &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;else&lt;/span&gt; &lt;span class="hl sym"&gt;{&lt;/span&gt;&lt;br /&gt;                        &lt;span class="hl kwd"&gt;destroyApp&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;true&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;                &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-5319111673686884784?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/5319111673686884784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=5319111673686884784' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/5319111673686884784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/5319111673686884784'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/05/gps-device-emulation-how-to.html' title='GPS device emulation how to'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-2500402516889760326</id><published>2008-05-01T21:41:00.000-07:00</published><updated>2008-05-02T00:55:40.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><title type='text'>Image thumbnail in an optimized way for J2Me platform</title><content type='html'>Trying to show thumbnail view after taking a big snapshot ? Trying to show a list view of images ? Or in any other case you try to resize or scale an image ?&lt;br /&gt;&lt;br /&gt; I was searching for an optimized code for thumbnail creation. The main issues here are&lt;br /&gt;&lt;br /&gt;  - You need to be careful about the memory you use. After taking a big image in memory you may have a little left for allocation.&lt;br /&gt;  - You do not have floating point in most of the mobiles. So your image may not keep the image ratio right after scaling.&lt;br /&gt;  - Your need very time efficient code , you can keep the image quality apart ..&lt;br /&gt;&lt;br /&gt; I did some google. And found the following discussions useful.&lt;br /&gt;&lt;br /&gt;  &lt;a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;amp;f=41&amp;amp;t=002988"&gt;http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;amp;f=41&amp;amp;t=002988&lt;/a&gt;&lt;br /&gt;  &lt;a href="http://developer.sonyericsson.com/thread/27493"&gt;http://developer.sonyericsson.com/thread/27493&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; I tested some of those examples. Some of them cause OutOfMemory Exception. Some take a long time to resize image. But I thought I could do better. Finally I wrote the following code.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    &lt;span class="hl com"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * Gets the thumbnail that fit with given screen width, height and padding ..&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     *&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * &amp;#64;param image The source image&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * &amp;#64;param padding padding to the screen&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * &amp;#64;return scaled image&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span class="hl kwa"&gt;private final&lt;/span&gt; &lt;span class="hl kwc"&gt;Image&lt;/span&gt; &lt;span class="hl kwd"&gt;getThumbnailWrapper&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwc"&gt;Image&lt;/span&gt; image&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; expectedWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; expectedHeight&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; padding&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;     &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; sourceWidth &lt;span class="hl sym"&gt;=&lt;/span&gt; image&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getWidth&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; sourceHeight &lt;span class="hl sym"&gt;=&lt;/span&gt; image&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getHeight&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;     &lt;span class="hl kwb"&gt;int&lt;/span&gt; thumbWidth &lt;span class="hl sym"&gt;= -&lt;/span&gt;&lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwb"&gt;int&lt;/span&gt; thumbHeight &lt;span class="hl sym"&gt;= -&lt;/span&gt;&lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// big width&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;sourceWidth &lt;span class="hl sym"&gt;&amp;gt;=&lt;/span&gt; sourceHeight&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;   thumbWidth &lt;span class="hl sym"&gt;=&lt;/span&gt; expectedWidth &lt;span class="hl sym"&gt;-&lt;/span&gt; padding&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   thumbHeight &lt;span class="hl sym"&gt;=&lt;/span&gt; thumbWidth &lt;span class="hl sym"&gt;*&lt;/span&gt; sourceHeight &lt;span class="hl sym"&gt;/&lt;/span&gt; sourceWidth&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl slc"&gt;// fits to height ?&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;thumbHeight &lt;span class="hl sym"&gt;&amp;gt; (&lt;/span&gt;expectedHeight &lt;span class="hl sym"&gt;-&lt;/span&gt; padding&lt;span class="hl sym"&gt;)) {&lt;/span&gt;&lt;br /&gt;    thumbHeight &lt;span class="hl sym"&gt;=&lt;/span&gt; expectedHeight &lt;span class="hl sym"&gt;-&lt;/span&gt; padding&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;    thumbWidth &lt;span class="hl sym"&gt;=&lt;/span&gt; thumbHeight &lt;span class="hl sym"&gt;*&lt;/span&gt; sourceWidth &lt;span class="hl sym"&gt;/&lt;/span&gt; sourceHeight&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;else&lt;/span&gt; &lt;span class="hl sym"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl slc"&gt;// big height&lt;/span&gt;&lt;br /&gt;   thumbHeight &lt;span class="hl sym"&gt;=&lt;/span&gt; expectedHeight &lt;span class="hl sym"&gt;-&lt;/span&gt; padding&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   thumbWidth &lt;span class="hl sym"&gt;=&lt;/span&gt; thumbHeight &lt;span class="hl sym"&gt;*&lt;/span&gt; sourceWidth &lt;span class="hl sym"&gt;/&lt;/span&gt; sourceHeight&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl slc"&gt;// fits to width ?&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;thumbWidth &lt;span class="hl sym"&gt;&amp;gt; (&lt;/span&gt;expectedWidth &lt;span class="hl sym"&gt;-&lt;/span&gt; padding&lt;span class="hl sym"&gt;)) {&lt;/span&gt;&lt;br /&gt;    thumbWidth &lt;span class="hl sym"&gt;=&lt;/span&gt; expectedWidth &lt;span class="hl sym"&gt;-&lt;/span&gt; padding&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;    thumbHeight &lt;span class="hl sym"&gt;=&lt;/span&gt; thumbWidth &lt;span class="hl sym"&gt;*&lt;/span&gt; sourceHeight &lt;span class="hl sym"&gt;/&lt;/span&gt; sourceWidth&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// XXX As we do not have floating point, sometimes the thumbnail resolution gets bigger ...&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// we are trying hard to avoid that ..&lt;/span&gt;&lt;br /&gt;  thumbHeight &lt;span class="hl sym"&gt;= (&lt;/span&gt;sourceHeight &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt; thumbHeight&lt;span class="hl sym"&gt;)&lt;/span&gt; ? sourceHeight &lt;span class="hl sym"&gt;:&lt;/span&gt; thumbHeight&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;  thumbWidth &lt;span class="hl sym"&gt;= (&lt;/span&gt;sourceWidth &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;)&lt;/span&gt; ? sourceWidth &lt;span class="hl sym"&gt;:&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;return&lt;/span&gt; &lt;span class="hl kwd"&gt;getThumbnail&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;image&lt;span class="hl sym"&gt;,&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; thumbHeight&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="hl com"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * Gets thumbnail with a height and width specified ..&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * &amp;#64;param image&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * &amp;#64;param thumbWidth&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * &amp;#64;param thumbHeight&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     * &amp;#64;return scaled image&lt;/span&gt;&lt;br /&gt;&lt;span class="hl com"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span class="hl kwa"&gt;private final&lt;/span&gt; &lt;span class="hl kwc"&gt;Image&lt;/span&gt; &lt;span class="hl kwd"&gt;getThumbnail&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwc"&gt;Image&lt;/span&gt; image&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; thumbHeight&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwb"&gt;int&lt;/span&gt; x&lt;span class="hl sym"&gt;,&lt;/span&gt; y&lt;span class="hl sym"&gt;,&lt;/span&gt; pos&lt;span class="hl sym"&gt;,&lt;/span&gt; tmp&lt;span class="hl sym"&gt;,&lt;/span&gt; z &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; sourceWidth &lt;span class="hl sym"&gt;=&lt;/span&gt; image&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getWidth&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; sourceHeight &lt;span class="hl sym"&gt;=&lt;/span&gt; image&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getHeight&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// integer ratio ..&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt; ratio &lt;span class="hl sym"&gt;=&lt;/span&gt; sourceWidth &lt;span class="hl sym"&gt;/&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// buffer where we read in data from image source&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt;&lt;span class="hl sym"&gt;[]&lt;/span&gt; in &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;sourceWidth&lt;span class="hl sym"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// buffer of output thumbnail image&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt;&lt;span class="hl sym"&gt;[]&lt;/span&gt; out &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;thumbWidth&lt;span class="hl sym"&gt;*&lt;/span&gt;thumbHeight&lt;span class="hl sym"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;final&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt;&lt;span class="hl sym"&gt;[]&lt;/span&gt; cols &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;new&lt;/span&gt; &lt;span class="hl kwb"&gt;int&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;thumbWidth&lt;span class="hl sym"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// pre-calculate columns we need to access from source image&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;for&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;x &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt;pos &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt; x &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;;&lt;/span&gt; x&lt;span class="hl sym"&gt;++) {&lt;/span&gt;&lt;br /&gt;   cols&lt;span class="hl sym"&gt;[&lt;/span&gt;x&lt;span class="hl sym"&gt;] =&lt;/span&gt; pos&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span class="hl slc"&gt;// increase the value without fraction calculation&lt;/span&gt;&lt;br /&gt;   pos &lt;span class="hl sym"&gt;+=&lt;/span&gt; ratio&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   tmp &lt;span class="hl sym"&gt;=&lt;/span&gt; pos &lt;span class="hl sym"&gt;+ (&lt;/span&gt;thumbWidth &lt;span class="hl sym"&gt;-&lt;/span&gt; x&lt;span class="hl sym"&gt;) *&lt;/span&gt; ratio&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;tmp &lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt; sourceWidth&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;    pos&lt;span class="hl sym"&gt;--;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;else if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;tmp &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt; sourceWidth &lt;span class="hl sym"&gt;-&lt;/span&gt; ratio&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;    pos&lt;span class="hl sym"&gt;++;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;// read through the rows ..&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;for&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;y &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; pos &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; z &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt; y &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt; thumbHeight&lt;span class="hl sym"&gt;;&lt;/span&gt; y&lt;span class="hl sym"&gt;++) {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span class="hl slc"&gt;// read a single row ..&lt;/span&gt;&lt;br /&gt;   image&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;getRGB&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;in&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; sourceWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; pos&lt;span class="hl sym"&gt;,&lt;/span&gt; sourceWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span class="hl kwa"&gt;for&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;x &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt; x &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;;&lt;/span&gt; x&lt;span class="hl sym"&gt;++,&lt;/span&gt; z&lt;span class="hl sym"&gt;++) {&lt;/span&gt;&lt;br /&gt;    &lt;span class="hl slc"&gt;// write this row to thumbnail&lt;/span&gt;&lt;br /&gt;    out&lt;span class="hl sym"&gt;[&lt;/span&gt;z&lt;span class="hl sym"&gt;] =&lt;/span&gt; in&lt;span class="hl sym"&gt;[&lt;/span&gt;cols&lt;span class="hl sym"&gt;[&lt;/span&gt;x&lt;span class="hl sym"&gt;]];&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   pos &lt;span class="hl sym"&gt;+=&lt;/span&gt; ratio&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   tmp &lt;span class="hl sym"&gt;=&lt;/span&gt; pos &lt;span class="hl sym"&gt;+ (&lt;/span&gt;thumbHeight &lt;span class="hl sym"&gt;-&lt;/span&gt; y&lt;span class="hl sym"&gt;) *&lt;/span&gt; ratio&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;tmp &lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt; sourceHeight&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;    pos&lt;span class="hl sym"&gt;--;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl sym"&gt;}&lt;/span&gt; &lt;span class="hl kwa"&gt;else if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;tmp &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt; sourceHeight &lt;span class="hl sym"&gt;-&lt;/span&gt; ratio&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;    pos&lt;span class="hl sym"&gt;++;&lt;/span&gt;&lt;br /&gt;   &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwa"&gt;return&lt;/span&gt; &lt;span class="hl kwc"&gt;Image&lt;/span&gt;&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;createRGBImage&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;out&lt;span class="hl sym"&gt;,&lt;/span&gt; thumbWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; thumbHeight&lt;span class="hl sym"&gt;,&lt;/span&gt; false&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt; This code has low memory need as it only reads one row from the source image each time. And it is super fast (I mean unbelievable). If anyone argue at this point or think there is a way to make it more optimized then welcome :) ..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-2500402516889760326?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/2500402516889760326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=2500402516889760326' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/2500402516889760326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/2500402516889760326'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/05/image-thumbnail-in-optimized-way-for.html' title='Image thumbnail in an optimized way for J2Me platform'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-7656055179851010070</id><published>2008-04-13T11:06:00.001-07:00</published><updated>2008-04-13T11:15:40.230-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xmlrpc'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='rpc'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='jsonrpc'/><title type='text'>jquery plugin featuring json xml rpc client</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;  Let me declare a new &lt;a href='http://plugins.jquery.com/project/rpc'&gt;rpc plugin&lt;/a&gt; for JQuery. It is all about JSON-RPC and XML-RPC support in jquery. I hope you use it and let me know the &lt;a href='http://plugins.jquery.com/project/issues/rpc?categories=bug'&gt;issues&lt;/a&gt;. I hope to discuss more about this when I manage to write a demo and do some digging on the data types support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-7656055179851010070?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/7656055179851010070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=7656055179851010070' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/7656055179851010070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/7656055179851010070'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/04/jquery-plugin-featuring-json-xml-rpc.html' title='jquery plugin featuring json xml rpc client'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-3729546023269088509</id><published>2008-04-01T06:43:00.000-07:00</published><updated>2008-11-13T04:30:37.529-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='gsm'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='modem'/><category scheme='http://www.blogger.com/atom/ns#' term='sms'/><category scheme='http://www.blogger.com/atom/ns#' term='gammu'/><category scheme='http://www.blogger.com/atom/ns#' term='sms server'/><category scheme='http://www.blogger.com/atom/ns#' term='cgi'/><title type='text'>gammu sms cgi daemon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MbskO3ofcQ4/R_JML9792ZI/AAAAAAAAAAY/1EyKyh7BHEk/s1600-h/overview.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_MbskO3ofcQ4/R_JML9792ZI/AAAAAAAAAAY/1EyKyh7BHEk/s320/overview.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5184289889545214354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Did anyone try to process sms request and send a response upon that ? I believe the gammu library + cgi idea is the way to freedom of sms processing. I have written a small code to implement the idea. &lt;a href="http://share.ayaslive.net/smscgi-0.1.tbz2"&gt;Here&lt;/a&gt; you can grab the source(let me know if it goes broken). You can get the svn version at svn://svn.cihar.com/gammu/trunk/other/ (thanks to Michal Čihař).&lt;br /&gt;&lt;br /&gt; Here is the work-flow to install and use,&lt;br /&gt;&lt;br /&gt; 1. Attach an appropriate phone to your system where you want to execute the server application.&lt;br /&gt; 2. Install gammu-1.17 or upper(Not sure if lower version may work too, I did not try with lower versions :-P ). &lt;br /&gt; 3. Get the smscgi from the link above, uncompress and make.&lt;br /&gt;This will create "smscgi" executable file.&lt;br /&gt;&lt;br /&gt; 4. To make it work please edit the gammu config file&lt;br /&gt;and add a config like,&lt;br /&gt;&lt;br /&gt;cgi-bin = /your/script/path&lt;br /&gt;&lt;br /&gt; 5. Now write a script and keep it in the cgi-bin directory, Here is an example script,&lt;br /&gt;&lt;br /&gt;&lt;pre class="hl"&gt;&lt;br /&gt;&lt;span class="hl slc"&gt;#!/usr/bin/php&lt;/span&gt;&lt;br /&gt;&lt;span class="hl slc"&gt;# filename echo&lt;/span&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;&lt;span class="hl kwb"&gt;$_HEADER&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;array&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;while&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwb"&gt;$data&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;fgets&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;STDIN&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;4096&lt;/span&gt;&lt;span class="hl sym"&gt;)) {&lt;/span&gt;&lt;br /&gt; &lt;span class="hl kwb"&gt;$data&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;trim&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwb"&gt;$data&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwb"&gt;$data&lt;/span&gt; &lt;span class="hl sym"&gt;==&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;) {&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl slc"&gt;# empty line means from next line we shall get the sms body&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwd"&gt;break&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span class="hl kwb"&gt;$matches&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;array&lt;/span&gt;&lt;span class="hl sym"&gt;();&lt;/span&gt;&lt;br /&gt; &lt;span class="hl kwa"&gt;if&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwd"&gt;preg_match&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/^(.*)\:(.*)/&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwb"&gt;$data&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwb"&gt;$matches&lt;/span&gt;&lt;span class="hl sym"&gt;)) {&lt;/span&gt;&lt;br /&gt;  &lt;span class="hl kwb"&gt;$_HEADER&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;&lt;span class="hl kwb"&gt;$matches&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;&lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;]] =&lt;/span&gt; &lt;span class="hl kwb"&gt;$matches&lt;/span&gt;&lt;span class="hl sym"&gt;[&lt;/span&gt;&lt;span class="hl num"&gt;2&lt;/span&gt;&lt;span class="hl sym"&gt;];&lt;/span&gt;&lt;br /&gt; &lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwb"&gt;$_REQUEST&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwa"&gt;while&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwb"&gt;$data&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;fgets&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;STDIN&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;4096&lt;/span&gt;&lt;span class="hl sym"&gt;)) {&lt;/span&gt;&lt;br /&gt; &lt;span class="hl kwb"&gt;$_REQUEST&lt;/span&gt; &lt;span class="hl sym"&gt;.=&lt;/span&gt; &lt;span class="hl kwb"&gt;$data&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl sym"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hl slc"&gt;# So,&lt;/span&gt;&lt;br /&gt;&lt;span class="hl slc"&gt;# $_REQUEST is the sms data.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl slc"&gt;# $_HEADER is the header array. For example $_HEADER[&amp;quot;SMS_FROM&amp;quot;] is the sender number.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hl kwd"&gt;unset&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwb"&gt;$data&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span class="hl kwd"&gt;unset&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwb"&gt;$matches&lt;/span&gt;&lt;span class="hl sym"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hl slc"&gt;# Now echo the message ..&lt;/span&gt;&lt;br /&gt;echo &lt;span class="hl kwb"&gt;$_REQUEST&lt;/span&gt;&lt;span class="hl sym"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt; Note, you can use the above script as include file to your new script . Be sure to remove the&lt;br /&gt;echo() in that case.&lt;br /&gt;&lt;br /&gt; 6. You can test your script running it in shell like,&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;shell#&gt; ./echo&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt; It will wait for your input. You can write the headers like,&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SMS_FROM: +1234567&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt; The headers are key value pairs. Currently it gives the number from, and date of receiving the message.&lt;br /&gt;&lt;br /&gt; The you put two new lines(or one blank line), this will indicate that there is no more headers. It will then treat the further data as sms message. Finally you can press EOF( in unix systems it is Ctrl-D).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SMS_FROM: +1234567&lt;br /&gt;(note blank line here)&lt;br /&gt;I am fine&lt;br /&gt;&lt;/code&gt;&lt;br /&gt; &lt;br /&gt; The above input will output "I am fine" and exit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; 6. Now run the server. When the user sends sms like,&lt;br /&gt;&lt;code&gt;&lt;br /&gt;echo I am fine&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The server will find executable file named "echo" at&lt;br /&gt;cgi-bin path. If "echo" does not exist then the it will&lt;br /&gt;execute "default" script.&lt;br /&gt;&lt;br /&gt;  7. If your script has any error or if you do any output to stderr&lt;br /&gt;it will be logged to cgi-bin/yourfilename.err . This may help you debug your&lt;br /&gt;script.&lt;br /&gt;&lt;br /&gt;  8. Now write your own scripts and enjoy !&lt;br /&gt;&lt;br /&gt;You can get more information on mobile setup for gammu at http://www.gammu.org/ .&lt;br /&gt;Finally all we are using is opensource .. it is under GPL-3 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-3729546023269088509?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/3729546023269088509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=3729546023269088509' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/3729546023269088509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/3729546023269088509'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2008/04/smscgi.html' title='gammu sms cgi daemon'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MbskO3ofcQ4/R_JML9792ZI/AAAAAAAAAAY/1EyKyh7BHEk/s72-c/overview.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7951136394914149239.post-6962234017800633356</id><published>2007-12-19T02:54:00.000-08:00</published><updated>2008-05-22T11:44:36.607-07:00</updated><title type='text'>J2ME lcdui WML text rendering</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;!--&lt;br /&gt;google_ad_client = "pub-7900841491101041";&lt;br /&gt;/* 120x240, created 5/2/08 */&lt;br /&gt;google_ad_slot = "9274716537";&lt;br /&gt;google_ad_width = 120;&lt;br /&gt;google_ad_height = 240;&lt;br /&gt;google_cpa_choice = ""; // on file&lt;br /&gt;//--&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script &lt;br /&gt;src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Ever tried to write an about page or help documents for midlets? They does not look like as we want them. Or it is cumbersome job to write Canvas/Forms to display those. I have an idea to display a page containing wml text formatting tags. Yes I did it for the about page of &lt;a href="http://www.blogger.com/http//miniim.sourceforge.net/miniim/applet"&gt; MiniIM&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;img src="http://sourceforge.net/dbimage.php?id=152502" /&gt;&lt;br /&gt;&lt;p&gt;It is the &lt;a href="http://miniim.svn.sourceforge.net/viewvc/miniim/trunk/src/miniim/ui/core/WMLWindow.java?view=log"&gt;WMLWindow.java&lt;/a&gt; that did the trick. MiniIM contains it's own windowing or GUI library upon lcdui GameCanvas. And WMLWindow is an addition to this library. &lt;a href="http://miniim.svn.sourceforge.net/viewvc/miniim/trunk/res/about.wml?view=log"&gt;Here&lt;/a&gt; is the wml file working behind the screen. I think you will enjoy writing advanced text formatting of wml document.&lt;/p&gt;&lt;p&gt;Are you interested about HTML rendering in J2ME or midlet ? Are you interested in showing full featured WML in J2ME or midlet ? I think we can start from here. Though it cannot render HTML forms nor navigate to links. But you can add the features if you badly need that. I can work with you in this point. I have already made the miniim.ui.core package independent. You can edit the source and contribute. And you can keep in contact with me of course.&lt;/p&gt;&lt;p&gt;After all these may be we cannot create full featured interface. But we can use tools to keep away the unsupported fats of HTML that we cannot effort here.&lt;/p&gt;&lt;p&gt;Now the new idea to implement is advanced text rendering support in list items, title .. everywhere :). Unfortunately the coloring is missing in WML standard.&lt;/p&gt;&lt;p&gt;Again if you have support for SVG library, the idea of WML may not be the right effort .. :(&lt;/p&gt;&lt;br /&gt;&lt;img alt="Powered By Sourceforge" src="http://sflogo.sourceforge.net/sflogo.php?group_id=164096&amp;type=1"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7951136394914149239-6962234017800633356?l=miniim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://miniim.blogspot.com/feeds/6962234017800633356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7951136394914149239&amp;postID=6962234017800633356' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/6962234017800633356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7951136394914149239/posts/default/6962234017800633356'/><link rel='alternate' type='text/html' href='http://miniim.blogspot.com/2007/12/j2me-lcdui-wml-text-rendering.html' title='J2ME lcdui WML text rendering'/><author><name>Kamanashis Roy</name><uri>https://profiles.google.com/115645545478560876832</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-4jR7BPBtVG4/AAAAAAAAAAI/AAAAAAAAAHw/5PlnvmuYjUY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry></feed>
