<?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-2525462180566728820</id><updated>2012-01-26T05:56:55.965+05:30</updated><category term='Google Gadget'/><category term='Python'/><category term='Checkstyle'/><category term='Glassbox'/><category term='Modem'/><category term='App'/><category term='How To'/><category term='Troubleshoot'/><category term='Review'/><category term='WinXP'/><category term='Duplicate Email'/><category term='GoogleApp'/><category term='Windows'/><category term='Security'/><category term='Oracle'/><category term='Java'/><category term='Tolven'/><category term='JConsole'/><category term='Forever Updated'/><category term='Sun One Server'/><category term='Kubuntu'/><category term='JMX'/><category term='ntlm'/><category term='Artifact'/><category term='Proxy'/><category term='Antisamy'/><category term='Links'/><category term='Tools'/><category term='Excel Macro'/><category term='Android'/><title type='text'>Sachin's Tech Place</title><subtitle type='html'>This is basically an all-in-one repository for techie developer-related things I've experienced / come-across and from where I can easily look-up later.
From small useful tidbits, code / key shortcuts, tips, to articles /guides on how to do certain complicated tasks, all the way to full mini-programs for daily use. 
If it helps anyone else out too great!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-3154932971943879961</id><published>2011-12-01T19:38:00.004+05:30</published><updated>2011-12-01T20:18:16.274+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='WinXP'/><title type='text'>Solution for View Source menu opening Desktop</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Out IT team had do downgrade Internet Explorer on one of the system from IE8 to IE6.&lt;br /&gt;&lt;br /&gt;Strange things began to happen after that. One frustrating issue was with clicking on the View -&amp;gt; Source menu in Internet Explorer 6. Instead of opening the page source in notepad, it was opening a new explorer view and showing the Desktop!!!&lt;br /&gt;&lt;br /&gt;Googling didn't help - there were plenty of people with the same problem but no solution.&lt;br /&gt;&lt;br /&gt;Thankfully, I knew it was a registry corruption issue and was able to identify the fix indirectly from some sites.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actual Fix&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open regedit.&lt;/li&gt;&lt;li&gt;Navigate to HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer.&lt;/li&gt;&lt;li&gt;Here, there should be a key called "View Source". Simply delete this key (if you feel unsafe, you can backup just this key before deletion).&lt;/li&gt;&lt;li&gt;Restart your internet explorer and the problem is solved!&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actual Cause&lt;/span&gt;&lt;br /&gt;In HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer, IE 7 and 8 has a key called "View Source". This  contents of this key is used to define which Editor will open when you select View Source from the menu. Unfortunately, when IE 7 or IE 8 gets rolled back to IE6, the contents of the "View Source" key is deleted from registry but not the key itself.&lt;br /&gt;So when IE6 starts, it finds the key and incorrectly expects the editor settings there.&lt;br /&gt;Deleting the "View Source" registry key causes IE to use notepad.exe to display the source by default!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-3154932971943879961?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/3154932971943879961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2011/12/solution-for-view-source-menu-opening.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3154932971943879961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3154932971943879961'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2011/12/solution-for-view-source-menu-opening.html' title='Solution for View Source menu opening Desktop'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-8840269133364097306</id><published>2010-11-20T23:41:00.004+05:30</published><updated>2010-11-21T00:39:45.769+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='App'/><category scheme='http://www.blogger.com/atom/ns#' term='Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Google Sky Map Review</title><content type='html'>I finally found the ultimate app out there for Android - no surprise its from Google!&lt;br /&gt;You just point the phone at the sky and it shows you the names of the heavenly objects on screen!!! Stars, planets, constellations, galaxies even! Also, in case you cant find it, you can type the name, eg: moon, and voila, it guides you to which part of the sky that object currently is.&lt;br /&gt;&lt;br /&gt;And there is a new feature called time travel, whereby you can view the sky forward or backward in time - so u can see historic eclipses or plan your future ones.&lt;br /&gt;&lt;br /&gt;Another nice thing is that, though it uses GPS to automatically find your current position, in case your GPS is slow, or you dont have GPS, or you simply want the sky details of another point on the planet, you have an option to directly enter the coordinates (latitude and longitude - which you can find out from wikimapia). Combine this with the cool Time Travel feature, and you can plan when to take your girlfriend to the beach so u wont miss the sunset next week for super brownie points ;)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-8840269133364097306?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/8840269133364097306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/11/google-sky-map-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8840269133364097306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8840269133364097306'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/11/google-sky-map-review.html' title='Google Sky Map Review'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-8275853632810573596</id><published>2010-11-11T23:23:00.016+05:30</published><updated>2010-11-21T00:40:50.886+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forever Updated'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Favourite must-have Android Offline Apps</title><content type='html'>&lt;i&gt;work in progress!&lt;/i&gt;&lt;br /&gt;In this must have list, I will be focusing on apps that do their work without net connectivity.&lt;br /&gt;&lt;b&gt;Utils&lt;/b&gt;&lt;br /&gt;&lt;u&gt;Swype &lt;a href=""&gt;apk&lt;/a&gt;&lt;/u&gt;: This is basically an alternative to the basic keyboard Input in Android. Swype greatly reduces ur typing speed by allowing u to drag ur finger over the letters of a keyboard instead of typing each letter one by one. It then guesses smartly the correct word or gives you options if more than 1 word is eligible! On some Android phones, this comes default installed, but on others you have to install it. Make sure you dont install this if you already have it installed. You wont get this on Market but you can install it from the apk link I've given.&lt;br /&gt;&lt;u&gt;Flashlight by Devesh Parekh &lt;a href="http://www.freewarelovers.com/android/app/flashlight-by-devesh-parekh"&gt;apk&lt;/a&gt;&lt;/u&gt;: One touch app that turns your phone into a white full bright screen. Very useful especially if you usually keep your phone on lowest light and you one day find yourself needing some light in the dark...&lt;br /&gt;&lt;u&gt;Advanced Task Killer&lt;a href=""&gt;apk&lt;/a&gt;&lt;/u&gt;: EXCELLENT APP. Using this to kill unnecessary apps that run in the background, I was able to extend my Android battery by 6-8 hours (I can get max 48 hours with mild usage and no 3G).&lt;br /&gt;&lt;u&gt;App Monster &lt;a href="http://www.freewarelovers.com/hotlinkmenot/temp/0a5a12/1284429899_AppMonster_0.7.2.apk"&gt;apk&lt;/a&gt;&lt;/u&gt;: A good application manager - shows u all user apps that are installed, gives you an option to back up the apps onto your sd card (useful if you installed the app via Market and dont have apk file to install later once you uninstalled).&lt;br /&gt;&lt;u&gt;Cardiometer &lt;a href="http://www.freewarelovers.com/hotlinkmenot/temp/c4c8e4/1267097308_CardioTrainer_2.1.0.apk"&gt;apk&lt;/a&gt;&lt;/u&gt;: Inspires you to start losing weight with all its cool features!!! Shows you your calories burnt, distance travelled, even running route on a map if GPS is enabled and so much more...&lt;br /&gt;&lt;u&gt;J2ME Runner &lt;a href="http://netmite.com"&gt;Home&lt;/a&gt;&lt;/u&gt;: Run almost any Mobile Java application on your android with this.&lt;br /&gt;&lt;u&gt;Vignette &lt;a href="http://download782.mediafire.com/i7q30ykrgy7g/wua1v21p3lk8w0b/Vignette_v2010-07-16.apk"&gt;apk&lt;/a&gt;&lt;/u&gt;: A great replacement for the default Android Camera&lt;br /&gt;&lt;u&gt;Chomp SMS &lt;a href="http://www.freewarelovers.com/hotlinkmenot/temp/e16e51/1288963296_chompSMS_5.1.apk"&gt;apk&lt;/a&gt;&lt;/u&gt;: Alternative to the default Android SMS app. Has a slightly better threaded view and customizable colors.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fun&lt;/b&gt;&lt;br /&gt;&lt;u&gt;Google Sky Map &lt;a href="http://www.google.com/mobile/skymap/"&gt;Home&lt;/a&gt;&lt;/u&gt;: THE BEST APP EVER! Detailed review at my other post &lt;a href="http://devsac.blogspot.com/2010/11/google-sky-map-review.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Games&lt;/b&gt;&lt;br /&gt;&lt;u&gt;Angry Birds &lt;a href="http://download.getjar.com/downloads/web/ppd-102-d873v111s6yi300-7449848bcab1ab115cc691a422e1a23b/107604/AngryBirds_1.3.5.apk"&gt;apk&lt;/a&gt;&lt;/u&gt;: Amazing addictive game&lt;br /&gt;&lt;u&gt;Abduction &lt;a href="http://www.freewarelovers.com/hotlinkmenot/temp/ad4b74/1282826180_Abduction_1.47.apk"&gt;apk&lt;/a&gt;&lt;/u&gt;: First bestseller on Android - a fun motion sensor game&lt;br /&gt;&lt;u&gt;Fish food &lt;a href="http://www.freewarelovers.com/hotlinkmenot/temp/3d911e/1270839302_FishFood1.04.apk"&gt;apk&lt;/a&gt;&lt;/u&gt;: Interesting game with a new take on the old matching colours game.&lt;br /&gt;&lt;br /&gt;For offline installation and best places to download apk files, check my previous post, &lt;a href="http://devsac.blogspot.com/2010/10/apps-for-android.html#links"&gt;Applications for Android - Online vs Offline Installation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-8275853632810573596?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/8275853632810573596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/11/favourite-must-have-android-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8275853632810573596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8275853632810573596'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/11/favourite-must-have-android-apps.html' title='Favourite must-have Android Offline Apps'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-6656519639390356875</id><published>2010-11-08T13:26:00.008+05:30</published><updated>2011-04-30T21:19:29.650+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Offline installation of Anrdoid SDK (Platforms and addons)</title><content type='html'>I installed Android SDK the other day to explore the apps platform for 2.1 (now that I have an Android phone!)…&lt;br /&gt;&lt;br /&gt;Things you need:&lt;br /&gt;&lt;br /&gt;A. SDK Starter package which just needs to be unzipped into a location (no installation as such):&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Platform&lt;/td&gt;&lt;td&gt;Package&lt;/td&gt;&lt;td&gt;Size&lt;/td&gt;&lt;td&gt;MD5 Checksum&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Windows&lt;/td&gt;&lt;td&gt;android-sdk_r07-windows.zip&lt;/td&gt;&lt;td&gt;23669664 bytes&lt;/td&gt;&lt;td&gt;69c40c2d2e408b623156934f9ae574f0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mac OS X (intel)&lt;/td&gt;&lt;td&gt;android-sdk_r07-mac_x86.zip&lt;/td&gt;&lt;td&gt;19229546 bytes&lt;/td&gt;&lt;td&gt;0f330ed3ebb36786faf6dc72b8acf819&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Linux (i386)&lt;/td&gt;&lt;td&gt;android-sdk_r07-linux_x86.tgz&lt;/td&gt;&lt;td&gt;17114517 bytes&lt;/td&gt;&lt;td&gt;e10c75da3d1aa147ddd4a5c58bfc3646&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;B. Platform package which is one or more of the various android versions for which you will be coding. Eg: 2.2, 2.1, 1.6, 1.5, etc.&lt;br /&gt;&lt;br /&gt;This has to be selected and downloaded from within  the Android SDK.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But Google was forcing me to download the platform package only through the SDK. Why can’t I have a set of zips I can reuse on my laptop, desltop1, desktop2 as needed instead of having to download the Android platform repeatedly from the net for each machine?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The answer was simple after a little investigation but apparently undocumented. See below steps for full offline installation:&lt;br /&gt;&lt;br /&gt;1) First you need to download repository.xml file. To find out the download link for this file, launch Android AVD Manager (after unzipping the sdk, manually from %AndroidSDKDir%\tools\Android.bat or from the Eclipse plugin). Here, when you select available Packages, you will see the default target: http://dl.google.com/android/repository/repository.xml (maybe slightly different for you). Download this respository.xml file from the net (and close the AVD manager).&lt;br /&gt;&lt;br /&gt;2) Open the repository.xml file and search for &amp;lt;sdk:platform&amp;gt;. You will see around 5 entries for each Android platform/version.&lt;br /&gt;&lt;br /&gt;Identify the version you want and look for the platform filename inside the &amp;lt;sdk:url&amp;gt; tag. In my case, I wanted the 2.1 platform:&lt;br /&gt;&lt;pre&gt;…&lt;br /&gt;&amp;lt;sdk:platform&amp;gt;&lt;br /&gt;     &amp;lt;sdk:version&amp;gt;2.1&amp;lt;/sdk:version&amp;gt;&lt;br /&gt;     &amp;lt;sdk:api-level&amp;gt;7&amp;lt;/sdk:api-level&amp;gt;&lt;br /&gt;     &amp;lt;sdk:codename/&amp;gt;&lt;br /&gt;     &amp;lt;sdk:revision&amp;gt;02&amp;lt;/sdk:revision&amp;gt;&lt;br /&gt;     &amp;lt;sdk:min-tools-rev&amp;gt;6&amp;lt;/sdk:min-tools-rev&amp;gt;&lt;br /&gt;     &amp;lt;sdk:description&amp;gt;Android SDK Platform 2.1_r2&amp;lt;/sdk:description&amp;gt;&lt;br /&gt;     &amp;lt;sdk:desc-url&amp;gt;http://developer.android.com/sdk/&amp;lt;/sdk:desc-url&amp;gt;&lt;br /&gt;     &amp;lt;sdk:archives&amp;gt;&lt;br /&gt;         &amp;lt;sdk:archive os="linux" arch="any"&amp;gt;&lt;br /&gt;             &amp;lt;sdk:size&amp;gt;72356359&amp;lt;/sdk:size&amp;gt;&lt;br /&gt;             &amp;lt;sdk:checksum type="sha1"&amp;gt;a89d32ddf9d8629f15e682bdf220a88ca2392349&amp;lt;/sdk:checksum&amp;gt;&lt;br /&gt;             &amp;lt;sdk:url&amp;gt;android-2.1_r02-linux.zip&amp;lt;/sdk:url&amp;gt;&lt;br /&gt;         &amp;lt;/sdk:archive&amp;gt;&lt;br /&gt;         &amp;lt;sdk:archive os="macosx" arch="any"&amp;gt;&lt;br /&gt;             &amp;lt;sdk:size&amp;gt;71054909&amp;lt;/sdk:size&amp;gt;&lt;br /&gt;             &amp;lt;sdk:checksum type="sha1"&amp;gt;8492e2f0b61819c4ca2e16601fc3260b341a3f06&amp;lt;/sdk:checksum&amp;gt;&lt;br /&gt;             &amp;lt;sdk:url&amp;gt;android-2.1_r02-macosx.zip&amp;lt;/sdk:url&amp;gt;&lt;br /&gt;         &amp;lt;/sdk:archive&amp;gt;&lt;br /&gt;         &amp;lt;sdk:archive os="windows" arch="any"&amp;gt;&lt;br /&gt;             &amp;lt;sdk:size&amp;gt;72950641&amp;lt;/sdk:size&amp;gt;&lt;br /&gt;             &amp;lt;sdk:checksum type="sha1"&amp;gt;00cfb0bbbf24fc56c493990186deb0bfd44630e5&amp;lt;/sdk:checksum&amp;gt;&lt;br /&gt;             &amp;lt;sdk:url&amp;gt;android-2.1_r02-windows.zip&amp;lt;/sdk:url&amp;gt;&lt;br /&gt;         &amp;lt;/sdk:archive&amp;gt;&lt;br /&gt;     &amp;lt;/sdk:archives&amp;gt;&lt;br /&gt; &amp;lt;/sdk:platform&amp;gt;&lt;br /&gt;…&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3) In the url obtained from step 1 (http://dl.google.com/android/repository/repository.xml), replace repository.xml with the identified filename to get the actual url of the platform file. So in this example, the url would be: http://dl.google.com/android/repository/android-2.1_r02-windows.zip&lt;br /&gt;&lt;br /&gt;Download this file (by typing into your browser url for eg).&lt;br /&gt;&lt;br /&gt;4) Once the file is downloaded, extract this file into the &amp;lt;Androidsdk&amp;gt;\platforms directory. So you would end up with a new directory here as %AndroidSDKDir%\platforms\android-2.1_r02-windows.&lt;br /&gt;&lt;br /&gt;That’s it!&lt;br /&gt;&lt;br /&gt;If you now open the AVD manager again and click on Installed Packages, the extracted platform will show up as “SDK Platform Android a.b-update c, API d, revision e”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use similar steps to download any Addons like Google APIs, but extract the Add-ons into %AndroidSDKDir%\add-ons directory. Just make sure that before you install the Addons, you have the corresponding platform already unzipped into the platforms directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To summarise, now I don’t need a net connection when to install the full android SDK – I just have to keep the following files handy:&lt;br /&gt;&lt;br /&gt;·         android-sdk_r07-windows.zip (unzip into a location where you want to install Android SDK, %AndroidSDKDir%)&lt;br /&gt;&lt;br /&gt;·         android-2.1_r02-windows.zip (unzip into %AndroidSDKDir%\platforms)&lt;br /&gt;&lt;br /&gt;·         google_apis-7_r01.zip (unzip into %AndroidSDKDir%\add-ons)&lt;br /&gt;&lt;br /&gt;·         ADT-0.9.9.zip (optional but useful Eclipse plugin – see &lt;a href="http://developer.android.com/sdk/eclipse-adt.html#troubleshooting"&gt;here&lt;/a&gt; how to install this offline into Eclipse)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Happy droiding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-6656519639390356875?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/6656519639390356875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/11/offline-installation-of-anrdoid-sdk.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/6656519639390356875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/6656519639390356875'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/11/offline-installation-of-anrdoid-sdk.html' title='Offline installation of Anrdoid SDK (Platforms and addons)'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-3358091474820706398</id><published>2010-10-31T00:48:00.023+05:30</published><updated>2010-11-12T22:26:07.265+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Applications for Android - Online vs Offline Installation</title><content type='html'>Here's a first hand report of everything you need to know about applications for your Android 2.1 - basically a newbies perspective!&lt;br /&gt;&lt;br /&gt;I am going to skip a complete background of Android as it is already perfectly written over &lt;a href="http://en.wikipedia.org/wiki/Android_%28operating_system%29"&gt;here&lt;/a&gt; at Wikipedia.&lt;br /&gt;&lt;br /&gt;Applications like on any other platform can be Paid or free. But the great thing is Android has the highest paid to free ratio for any OS (mobile or PC) of 65%!!!&lt;br /&gt;&lt;br /&gt;Ok. Whether free or paid, to get a new app on the phone, step no 1 is finding the apps.&lt;br /&gt;Android Market is the official Google source with 150,000 apps and you typically find the majority listed here. Apps are also hosted on other places as listed &lt;a href="http://en.wikipedia.org/wiki/List_of_digital_distribution_platforms_for_mobile_devices"&gt;here&lt;/a&gt; but I have not checked them out yet - I like to get my reviews for Android Apps from &lt;a href="http://www.appbrain.com"&gt;http://www.appbrain.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once you've found your App, there are 2 ways to install them on your Android phone:&lt;br /&gt;1) Online, i.e., directly from your Android phone by browsing Android Market. This is the best way especially if you have a cheap/affordable GPRS/3G plan on your Android phone. You can just open the MarketPlace app, browse through or search, and select to install (if its not free, you have to purchase the app first of course). Your selected app will be downloaded and installed in 1 step! You never actually have to run an exe or script or anything else to install the app.&lt;br /&gt;&lt;br /&gt;2) Offline: If your mobile's data plan is expensive (like mine), then the only real option is to download the apps onto your PC using your affordable net connections. &lt;br /&gt;For the Android OS, installation files ends with an .apk extension. Once you've downloaded the apk file your selected app, copy the apk file to your Android Phone (via wifi/usb/memorycard). Then simply use the File Browser app (present on all Android OS by default), select the apk file you copied and open it - you would then be prompted to install. Its not that complicated right?&lt;br /&gt;Unfortunately, you'll find that there are very few applications being distributed officially via apk. I don't know why - especially because its not that complicated to extract an apk once you have installed it directly from Android Market.&lt;br /&gt;There are some sites where popular apks are posted but you have to be cautious as it is not official (meaning it might be a tampered app or a completely different app you find after u install it - but this hasn't happened to me yet with the 25 and counting apps I installed):&lt;br /&gt;&lt;a href="http://getandroidstuff.com"&gt;http://getandroidstuff.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.freewarelovers.com/android"&gt;http://www.freewarelovers.com/android&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.getjar.com"&gt;http://www.getjar.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One major thorny issue I want to mention about Apps on your Android before you go downloading all those free apps. Android OS has a severe flaw that forces all apps to be installed only in the phones Memory and not in the Memory Card!!! Unbelievable but true!!!!! WHY DIDN'T ANYONE TELL ME THIS BEFORE I GOT AN ANDROID &lt;B&gt;DUMB&lt;/B&gt; PHONE? What a major setback for a someone rooting for Android from the word go?&lt;br /&gt;What this means is that although my Motorola Quench HT3 supports upto 32GB Memory card, I am stuck with installing only upto 100MB of apps supported on the Internal memory storage limit on my particular phone THANKS TO GOOGLE ##@@^%$%@@!!!!!!!!!!!!!!!!!!&lt;br /&gt;This issue is &lt;B&gt;finally&lt;/B&gt; being &lt;i&gt;touched upon&lt;/i&gt; in the latest Android 2.2 where app developers can give the option to the user to choose where to install the apps. Unfortunately, the default is still the phone memory. And unless older apps are updated and reinstalled, it will continue to be in the phone memory. I guess I just have to finally accept that Google is becoming another money-hungry monopoly like Yahoo and Microsoft...&lt;br /&gt;For me with my Android 2.1 Eclair, I have no choice but to limit my applications installations but I have not yet hit the limit mind you. But that's because I was being extra careful by keeping only apps that I use regularly. Currently, there are 20 apps I have installed on my Android.&lt;br /&gt;&lt;br /&gt;For top must have apps for Android, check my other post, &lt;A href="http://devsac.blogspot.com/2010/11/favourite-must-have-android-apps.html"&gt;Favourite must-have Android Apps&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-3358091474820706398?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/3358091474820706398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/10/apps-for-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3358091474820706398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3358091474820706398'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/10/apps-for-android.html' title='Applications for Android - Online vs Offline Installation'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-4835121629304543607</id><published>2010-10-26T15:43:00.041+05:30</published><updated>2010-11-12T00:18:24.980+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Motorola Quench XT3 XT502 - Day 1 Review</title><content type='html'>Finally got myself an entry level Android phone yesterday - the Motorola Quench XT3 XT502. So here's a series of quick reviews on it from an Owners point of view.&lt;br /&gt;&lt;br /&gt;It's still not available for display in most shops but I was able to check it out the Tata Croma store at Vashi Centre Mall. They received their first HTC Quench XT3 just that morning but they agreed to let me switch it on and have a look even though it was in a brand new sealed-pack.&lt;br /&gt;&lt;br /&gt;I was pleasantly surprised to find that unlike what is advertised on Motorola's own &lt;a href="http://www.motorola.com/Consumers/XP-EN/Consumer-Products-and-Services/Mobile-Phones/ci.MOTOROLA-QUENCH-with-MOTOBLUR-XP-EN.alt"&gt;site&lt;/a&gt;, this phone came pre-installed with Android 2.1 instead of 1.6! I decided to get it right away for Rs 13691 (this includes the additional Rs700 I paid to Croma to get 2 additional years of warranty).&lt;br /&gt;Also, I was able to bargain for a free 2GB Memory card.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summary of Quench XT3 XT502&lt;/b&gt;&lt;br /&gt;&lt;u&gt;Pros&lt;/u&gt;&lt;br /&gt;HVGA screen with 2.2 inch&lt;br /&gt;Has lots of extra hardware buttons (volume +/-, camera, Dial, Cancel Call, trackball)&lt;br /&gt;&lt;u&gt;Cons&lt;/u&gt;&lt;br /&gt;No FM&lt;br /&gt;No Data cable&lt;br /&gt;Only 262k colors&lt;br /&gt;Compared to other phones, slightly lower capacity battery&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Whats in the box?&lt;/b&gt;&lt;br /&gt;It came with charger, battery, earphones. That's it.&lt;br /&gt;It does not have any memory card or even data cable. Its very strange that it did not come with memory card as most of the android features including camera need SD card! But as mentioned before, after insisting on a memory card, the Croma store people gave a Sandisk 2GB microSD free.&lt;br /&gt;What's worse is that the lack of data cable means it will be very frustrating for those with expensive GPRS plans and no wifi - they cannot share the internet connection being used on their PC.&lt;br /&gt;The phone has only default android apps with not even a single game. The good news there are EXCELLENT free apps available. Will cover this in a later article.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Comparison with other competing phones&lt;/b&gt;&lt;br /&gt;When I was shopping, the only real phones I could compare in this range were&lt;br /&gt;Samsung Galaxy I5801 (also known as )&lt;br /&gt;Song Ericsson Xperia X8&lt;br /&gt;Wildfire&lt;br /&gt;LG Optimus One seems to be taking forever to reach any shops here, so I couldn't consider it.&lt;br /&gt;&lt;br /&gt;The screen size is important because most of 1000s of coolest (mostly free) Android apps out there work on the HVGA dimension of 320 x 480 pixels. There is a chance that if your Android phone has a different dimension, apps may run incorrectly if not at all. So this was my biggest priority.&lt;br /&gt;Out of the available phones, no other phone provides HVGA and with 2.2 inch at this price range:&lt;br /&gt;I5801: Only WQVGA although it has 2.2inch size.&lt;br /&gt;Xperia X8: It has HVGA but with very small 2 inch size.&lt;br /&gt;&lt;br /&gt;Here is a detailed comparison with some more competing phones:&lt;br /&gt;&lt;div style="overflow: auto; height: 556px; width: 100%;"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Model&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;b&gt;Sony Ericsson Xperia X8&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;b&gt;Sony Ericsson Xperia X10 Mini&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;b&gt;Samsung Galaxy 3&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;b&gt;HTC Wildfire&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="100"&gt;&lt;b&gt;HTC Tattoo A3232&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;b&gt;Motorola Quench XT3 XT502&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;b&gt;LG Optimus One&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Cost@Flipkart.com&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;Rs.13950.00&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;Rs.12899.00&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;&lt;p align="right"&gt;Rs.11899.00&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;Rs.15079.00&lt;/td&gt;&lt;td valign="top" width="100"&gt;&lt;p align="right"&gt;Rs.12999.00&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;Rs.12449.00&lt;/td&gt;&lt;td valign="top" width="101"&gt;NA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Specialoffers&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;None&lt;/td&gt;&lt;td valign="top" width="101"&gt;None&lt;/td&gt;&lt;td valign="top" width="101"&gt;Free Reebok Watch worth Rs2599&lt;/td&gt;&lt;td valign="top" width="101"&gt;Free HTC Leather Pouch  worth Rs.349&lt;/td&gt;&lt;td valign="top" width="100"&gt;None&lt;/td&gt;&lt;td valign="top" width="101"&gt;Free Adidas Jacket &amp;amp; 4 Movie Tickets of across multiplexes worth  Rs.3599&lt;/td&gt;&lt;td valign="top" width="101"&gt;NA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;CPU&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;600Mhz&lt;/td&gt;&lt;td valign="top" width="101"&gt;QualcommMSM 7227 600MHz&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;Qualcomm(QSC6270), 667 MHz&lt;/td&gt;&lt;td valign="top" width="101"&gt;QualcommMSM 7225 528 MHz&lt;/td&gt;&lt;td valign="top" width="100"&gt;QualcommMSM 7225 528 MHz&lt;/td&gt;&lt;td valign="top" width="101"&gt;QualcommMSM 7227 600MHz&lt;/td&gt;&lt;td valign="top" width="101"&gt;600MHz processor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;128MB?&lt;/td&gt;&lt;td valign="top" width="101"&gt;128MB?&lt;/td&gt;&lt;td valign="top" width="101"&gt;130MB?&lt;/td&gt;&lt;td valign="top" width="101"&gt;384 MBRAM; 512 MB ROM&lt;/td&gt;&lt;td valign="top" width="100"&gt;256 MB RAM, 512 MB ROM&lt;/td&gt;&lt;td valign="top" width="101"&gt;100 MB storage, 256 MB RAM; 512 MB ROM&lt;/td&gt;&lt;td valign="top" width="101"&gt;170 MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;A-GPS&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="100"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Wifi&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="100"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Camera&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;3.15MP&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;5MPAuto-focus?&lt;/td&gt;&lt;td valign="top" width="101"&gt;3.2MP?Auto-focus?&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;5MPAuto-focus?&lt;/td&gt;&lt;td valign="top" width="100"&gt;3.15MPFixed-focus?&lt;/td&gt;&lt;td valign="top" width="101"&gt;3.15MP fixed focus + Flash&lt;/td&gt;&lt;td valign="top" width="101"&gt;3.15MP  Auto-focus?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Resolution&lt;/b&gt;&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;320 x480 pixels (HVGA)&lt;/td&gt;&lt;td valign="top" width="101"&gt;240 x320 pixels (QVGA)&lt;/td&gt;&lt;td valign="top" width="101"&gt;240 x400 (WQVGA) TFT&lt;/td&gt;&lt;td valign="top" width="101"&gt;240 x320 (QVGA) TFT&lt;/td&gt;&lt;td valign="top" width="100"&gt;240 x320 (QVGA) TFT&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;320 x480 pixels (HVGA)&lt;/td&gt;&lt;td valign="top" width="101"&gt;320 x480 pixels (HVGA) TFT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Size"&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;3&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;2.55&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;&lt;p align="right"&gt;3.2&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;&lt;p align="right"&gt;3.2&lt;/td&gt;&lt;td valign="top" width="100"&gt;&lt;p align="right"&gt;2.8&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;&lt;p align="right"&gt;3.2&lt;/td&gt;&lt;td valign="top" width="101"&gt;&lt;p align="right"&gt;3.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Colors&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;16M&lt;/td&gt;&lt;td valign="top" width="101"&gt;16M&lt;/td&gt;&lt;td valign="top" width="101"&gt;16M&lt;/td&gt;&lt;td valign="top" width="101"&gt;16M&lt;/td&gt;&lt;td valign="top" width="100"&gt;65k&lt;/td&gt;&lt;td valign="top" width="101"&gt;256k&lt;/td&gt;&lt;td valign="top" width="101"&gt;256k&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Touch&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Capacitative&lt;/td&gt;&lt;td valign="top" width="101"&gt;Capacitative&lt;/td&gt;&lt;td valign="top" width="101"&gt;Capacitative&lt;/td&gt;&lt;td valign="top" width="101"&gt;Capacitative&lt;/td&gt;&lt;td valign="top" width="100"&gt;Resistive&lt;/td&gt;&lt;td valign="top" width="101"&gt;Capacitative&lt;/td&gt;&lt;td valign="top" width="101"&gt;Capacitative&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Dimensions&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;99.0 x54.0 x 15.0 mm&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;83.0 x50.0 x 16.0mm&lt;/td&gt;&lt;td valign="top" width="101"&gt;113.5x 55 x 12.55 mm&lt;/td&gt;&lt;td valign="top" width="101"&gt;106.8x 60.4 x 12 mm&lt;/td&gt;&lt;td valign="top" width="100"&gt;106 x55.2 x 14 mm&lt;/td&gt;&lt;td valign="top" width="101"&gt;114.9x 56.8 x 12.6 mm&lt;/td&gt;&lt;td valign="top" width="101"&gt;113.5x 59 x 13.3 mm&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Weight&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;104g&lt;/td&gt;&lt;td valign="top" width="101"&gt;88g&lt;/td&gt;&lt;td valign="top" width="101"&gt;?&lt;/td&gt;&lt;td valign="top" width="101"&gt;118 g&lt;/td&gt;&lt;td valign="top" width="100"&gt;113 g&lt;/td&gt;&lt;td valign="top" width="101"&gt;114 g&lt;/td&gt;&lt;td valign="top" width="101"&gt;129 g&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;OS&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Android1.6&lt;/td&gt;&lt;td valign="top" width="101"&gt;Android1.6&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;Android2.1&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;Android2.1&lt;/td&gt;&lt;td valign="top" width="100"&gt;Android1.6?&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;Android2.1&lt;/td&gt;&lt;td valign="top" width="101"&gt;Android2.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;ExtMemory&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;MicroSDupto 16MB, 2GB included&lt;/td&gt;&lt;td valign="top" width="101"&gt;MicroSDupto 16MB, 2 GB included&lt;/td&gt;&lt;td valign="top" width="101"&gt;MicroSDupto 32MB, 2 GB included&lt;/td&gt;&lt;td valign="top" width="101"&gt;MicroSDupto 32MB, 2 GB included&lt;/td&gt;&lt;td valign="top" width="100"&gt;MicroSD&lt;/td&gt;&lt;td valign="top" width="101"&gt;microSD,up to 32GB. &lt;b&gt;None included&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;microSD,up to 32GB, 2GB included&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;Battery&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Li-Po1200 mAh&lt;/td&gt;&lt;td valign="top" width="101"&gt; Li-Po950 mAh&lt;/td&gt;&lt;td style="background: none repeat scroll 0% 0% rgb(153, 255, 102);" valign="top" width="101"&gt;Li-ion,1,500 mAh&lt;/td&gt;&lt;td valign="top" width="101"&gt;Li-Ion,1300mAh&lt;/td&gt;&lt;td valign="top" width="100"&gt;1100mAh?&lt;/td&gt;&lt;td valign="top" width="101"&gt;Li-Po1270 mAh&lt;/td&gt;&lt;td valign="top" width="101"&gt;Li-Ion1500 mAh&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;FMRadio&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;?&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="100"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;N?&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;3.5mmaudio&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="100"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;b&gt;3G&lt;/b&gt;&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="100"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;td valign="top" width="101"&gt;Y&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;First time Android user&lt;/b&gt;&lt;br /&gt;Since I haven't used Android before, I decided to follow the manual exactly:&lt;br /&gt;Open the cover and remove battery (not really necessary to remove battery for inserting sim and memory, but I just wanted to follow the instructions!).&lt;br /&gt;Insert Sim and my 8GB Memory card from my Samsung star phone (which died last week after a water attack!)&lt;br /&gt;Replace battery.&lt;br /&gt;Charge for 3 hours!&lt;br /&gt;&lt;br /&gt;Finally switched on the phone at 12am. First thing I did was a factory reset.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WARNING: Factory Reset will clear all the data on the phone like Contacts, Call logs, installed applications and their data, etc.&lt;/b&gt;&lt;br /&gt;But don't worry if you are doing this on a new phone - factory Reset does not affect any of your data on the memory card nor the data on the Sim.&lt;br /&gt;&lt;br /&gt;Performing a Factory Reset makes sure that I got a fresh Android OS with no overheads.&lt;br /&gt;For Factory Reset, go to&lt;br /&gt;&lt;br /&gt;After doing the Factory Reset, the phone restarts. After a few minutes, it displays the Welcome message with a Tour which you can skip. Then, it prompts you to enter your Google account details or create a Google account. But I skipped this step as it needs net connectivity and my GPRS plan is very expensive. This step will be prompted when you click on any of the Google apps on the phone like GMail, Lattitude, etc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pre-installed Apps&lt;/b&gt;&lt;br /&gt;The &lt;b&gt;Gallery&lt;/b&gt; app is where all your media is displayed. When I opened this app for the first time, it showed as busy with a message "Loading". I guess it was finding all the 3Gb of pics and videos on my old Memory Card. I switched to another app and when I came after 2 mins, it allowed me to view whatever media was loaded while it continued finding more.&lt;br /&gt;But it was REALLY SMOOTH after that! The images are beautifully stacked in the folders. And when clicking on the images loaded them instantly -scrolling to the next pics was just as smooth with instant loading. It think it buffers the next few pics because when I started scrolling through the pics in full screen very fast, my 3MP resolution pics was pixellated and it takes another 1 second for the image to become fully clear.&lt;br /&gt;&lt;br /&gt;Anyway, the good part is that it is extremley smooth and fast after that first search. I was interesting that it found each and every single image in my memory card from all scattered locations.&lt;br /&gt;&lt;br /&gt;Maybe it's because I have never owned a multi-touch phone before - but I was downright AMAZED by the pinch and unpinch to Zoom and unzoom pics. I mean not only is it very intuituve but it was SUPER FAST and SMOOTH!!!&lt;br /&gt;&lt;br /&gt;Another thing is that it showed as busy for about 2 minutes while loading the 2GB pics/videos in my old 8GB Memory Card data before it allowed to start looking at to load all the 3GB of pics n videos in the memory card.&lt;br /&gt;&lt;br /&gt;The usual Address Book feature is provided via the &lt;b&gt;Contacts&lt;/b&gt; app. However, none of the Phone numbers in the Sim are available automatically in the Contacts . Thankfully, there is an option to Import the phone numbers from your Sim - you can select Import All or just choose the numbers you want to import. To import all the 100 odd contacts in my sim, it took about 3 minutes. Like with the one-time slow processes, I simply switched to another task as the Android can Multitask unlike the iPhone you know :)!&lt;br /&gt;&lt;br /&gt;&lt;B&gt;Battery&lt;/B&gt;&lt;br /&gt;Battery lasts for 1 day with average gaming and calls with no wifi/bluetooth. This was disappointing for me coming from my Samsung Star S5233A which could last me 2 days easily and sometimes even 4. But then this was expected because Android of course supports multi tasking. So you can have your music player runnng, taking cam pics, use your browser, and create a document without closing any of the apps. But since these apps have no close option, they would continue to run in the background for a while before being closed costing precious processor cycles which in turn means more battery usage.&lt;br /&gt;To resolve this, there is an app called Advanced Task Killer - this shows all running apps and u can kill the apps from here too. Also, there is a 1 click shortcut which remembers the apps u selected and killed earlier and automatically kills them! So what I do is just click on this shortcut when I am done using the phone. I was able to get 1.5 to 2 days of battery life once I started doing this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-4835121629304543607?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4835121629304543607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4835121629304543607'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/10/motorola-quench-xt3-xt502-day-1-review.html' title='Motorola Quench XT3 XT502 - Day 1 Review'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-8075763994407420941</id><published>2010-10-26T15:43:00.004+05:30</published><updated>2010-10-26T15:44:05.889+05:30</updated><title type='text'>Tips while building your own computer</title><content type='html'>&lt;div class=WordSection1&gt;  &lt;p class=MsoNormal&gt;Was doing some research for building a computer &amp;#8211; was real rusty with the latest info. Summarised my learnings below:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;SMPS&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;An SMPS cannot give the complete power that it is rated for. The actual power provided varies with temperature, load on the system, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph&gt;So Corsair VX450W (which is an excellent SMPS) can only give 382.5W at 50% load (that is 85% efficiency. Refer &lt;a href="http://www.anandtech.com/show/2697/39"&gt;here&lt;/a&gt;). &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph&gt;So always buy an SMPS higher than your need.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Calculate your expected power need of your computer using &lt;a href="http://extreme.outervision.com/psucalculator.jsp"&gt;this&lt;/a&gt; online calculator.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph&gt;So always buy an SMPS higher than your need.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;Hard Disks&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;For faster speeds, go for a 7200rpm HDD instead of 5400rpm.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;A HDD with higher cache (32MB is really good) improves real-life file copy speeds dramatically (especially when going for a slower rpm HDD).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Theoretical Interface Speeds:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in'&gt;SATA 3.0 (6Gbps/600Mbps) &amp;gt; USB 3.0 (5Gbps) &amp;gt; SATA 2.0 (3.0Gbps) &amp;gt; SATA 1.0 (1.5Gbps/150 MBps) &amp;gt; USB 2.0 (60MBps)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;eSATA and eSATAP have the same speeds as the respective SATA versions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;eSATA devices need additional power via a separate power cable. USB and eSATAP have built in power through the cable&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Unlike USB 2, USB 3.0 is bidirectional like all the SATA versions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;All USB interfaces (including 3.0) need some bridging to communicate to the HDD ports on the MB which definitely slows down actual data throughput (refer &lt;a href="http://www.itworld.com/hardware/98987/usb-30-vs-esata-is-faster-better?page=0,1"&gt;here&lt;/a&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;For current magnetic HDD transfer rate of 240Mbit/s (average), the latest SATA3.0 or USB 3 interface is overkill. But the latest solidstate drives push the boundary to 355 (refer &lt;a href="http://www.micron.com/products/solid_state_storage/"&gt;here&lt;/a&gt;) and can benefit from SATA III&amp;#8230;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;&amp;middot;&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;If you have 2 drives, try to setup a Raid 1+0 configuration. This gives you much faster speeds and also disk failure tolerance. But the cost is that less space will be available. See how here&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-8075763994407420941?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/8075763994407420941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/10/tips-while-building-your-own-computer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8075763994407420941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8075763994407420941'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/10/tips-while-building-your-own-computer.html' title='Tips while building your own computer'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-5103791065969714339</id><published>2010-10-11T00:07:00.005+05:30</published><updated>2010-11-12T00:20:48.810+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>Dangerous scripts - safety tips</title><content type='html'>Hadn't checked Orkut for a while - and was shocked to yesterday to see a virulent script-worm spreading across it... even some of my very net-savvy friends were victims too.&lt;br /&gt;&lt;br /&gt;If you clicked on this script link while logged in to Orkut, it steals your password, enrolls u automatically in strange communities, and makes auto-spam posts onto all your friends testimonials, communities, etc. Read details here: &lt;a href="http://www.google.co.in/support/forum/p/orkut/thread?tid=0cbd83ba084be690&amp;hl=en"&gt;http://www.google.co.in/support/forum/p/orkut/thread?tid=0cbd83ba084be690&amp;hl=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bottlomline - don't get on the net if you can't learn these simple safety tips:&lt;br /&gt;1) Don't blindly click on Yes when getting browser prompts to run suspicious scripts.&lt;br /&gt;2) Don't ever click on suspicious links or emails even if it's from someone you know well.&lt;br /&gt;3) Don't ever ever click on suspicious links or emails while you are logged on into an online account (specially popular ones like Yahoo, gmail, orkut, facebook, etc)&lt;br /&gt;&lt;br /&gt;Also, have at least one good Firewall software running (even though XP onwards have one built-in). Even a free one like Commodo if you are advanced enough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-5103791065969714339?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/5103791065969714339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/10/dangerous-scripts-safety-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5103791065969714339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5103791065969714339'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/10/dangerous-scripts-safety-tips.html' title='Dangerous scripts - safety tips'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-2955847376616494388</id><published>2010-09-20T16:03:00.002+05:30</published><updated>2011-07-18T00:27:20.698+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>UK Postcode regular expression</title><content type='html'>&lt;div class="WordSection1"&gt;  &lt;p class="MsoNormal"&gt;A friend of mine asked for a regular expression for UK Post codes… got so many confusing results on the net that I decided to make it myself.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;First had to find the rules for UK Postcode. A quick search got me a UK government site, (old site was: http://www.cabinetoffice.gov.uk/govtalk/schemasstandards/e-gif/datastandards/address/postcode.aspx as of October 2009. Updated to new site) &lt;a href="http://interim.cabinetoffice.gov.uk/govtalk/schemasstandards/e-gif/datastandards/address/postcode.aspx"&gt;http://interim.cabinetoffice.gov.uk/govtalk/schemasstandards/e-gif/datastandards/address/postcode.aspx&lt;/a&gt;, as of July 2011, which shows the rules as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="margin-left: 13.1pt; border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="border: 1pt solid windowtext; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 5.45pt;"&gt;&lt;b&gt;Permitted Format&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 11.6pt;"&gt;&lt;b&gt;Example Postcode&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 5.45pt;"&gt;AN NAA&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 11.6pt;"&gt;M1 1AA&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 5.45pt;"&gt;ANN NAA&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 11.6pt;"&gt;M60 1NW&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 5.45pt;"&gt;AAN NAA&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 11.6pt;"&gt;CR2 6XH&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 5.45pt;"&gt;AANN NAA&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 11.6pt;"&gt;DN55 1PT&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 5.45pt;"&gt;ANA NAA&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 11.6pt;"&gt;W1A 1HQ&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 5.45pt;"&gt;AANA NAA&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;" valign="top"&gt;   &lt;p class="MsoNormal" style="margin-left: 11.6pt;"&gt;EC1A 1BB&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;Also&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;    * The letters Q, V and X are not used in the first position.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;    * The letters I, J and Z are not used in the second position.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;    * The only letters to appear in the third position are A, B, C, D, E, F, G, H, J, K, S, T, U and W.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;    * The only letters to appear in the fourth position are A, B, E, H, M, N, P, R, V, W, X and Y.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;    * The second half of the Postcode is always consistent numeric, alpha, alpha format and the letters C, I, K, M, O and V are never used.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;    * GIR 0AA is a Postcode that was issued historically and does not confirm to current rules on valid Postcode formats, It is however, still in use.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Was able to come up with this basic Regular expression that does UK Postcode validation:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;^([A-PR-UWYZ](([0-9](([0-9]|[A-HJKSTUW])?)?)|([A-HK-Y][0-9]([0-9]|[ABEHMNPRVWXY])?)) [0-9][ABD-HJLNP-UW-Z]{2})|GIR 0AA$&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;This will validate 100% as per the assumed rules above.&lt;br /&gt;Note however that it is certainly &lt;b&gt;not&lt;/b&gt; optimized… I couldn't find any online regular expression optimizer and I’ll have to become a regex expert to do anything about it. Maybe I can take automatic regex optmizer thing as a mini-project. But for now, the unoptimized version will have to do...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here is the regular expression in action inside Java code:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt;"&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;      &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt; &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt; &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt; &lt;span style="background: none repeat scroll 0% 0% silver;"&gt;validate&lt;/span&gt;(String code) {&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;            String regexp=&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;"^([A-PR-UWYZ](([0-9](([0-9]|[A-HJKSTUW])?)?)|([A-HK-Y][0-9]([0-9]|[ABEHMNPRVWXY])?)) [0-9][ABD-HJLNP-UW-Z]{2})|GIR 0AA$"&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;            Pattern pattern = Pattern.&lt;i&gt;compile&lt;/i&gt;(regexp);&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;            Matcher matcher = pattern.matcher(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;code.toUpperCase());&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;            &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt; (matcher.matches()) {&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;                  System.&lt;/span&gt;&lt;i&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;.println(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;"This is a valid UK Postcode."&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;);&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;            } &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;else&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt; {&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;                  System.&lt;/span&gt;&lt;i&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;.println(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;"This is not a valid UK Postcode."&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;);&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;            }&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none; padding: 0in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;      }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In a real life scenario, you may need to convert the received code into upper case before calling validate to be safe. Or better yet, have upper and lower case validation inside the regular expression itself! Plus of course the optimization…&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-2955847376616494388?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/2955847376616494388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/10/uk-postcode-regular-expression.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/2955847376616494388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/2955847376616494388'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/10/uk-postcode-regular-expression.html' title='UK Postcode regular expression'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-483973416214111515</id><published>2010-05-12T22:37:00.004+05:30</published><updated>2010-11-17T20:59:51.229+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Proxy'/><category scheme='http://www.blogger.com/atom/ns#' term='ntlm'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>Support for NTLMv2 with Apache HttpClient using JCIFS</title><content type='html'>&lt;div class="gmail_quote"&gt;         &lt;div link="blue" vlink="purple" lang="EN-US"&gt;  &lt;div&gt;  &lt;p &gt;Here, I'll explain how to get NTLMv2 support in HttpClient 3.x using JCIFS by using 1 addditional class and inserting 1 new line into your existing calls to HttpClient.&lt;br /&gt;&lt;i&gt;Of course you can use JCIFS NTLM authentication directly in Java even if you don't have Apache HttpClient - I'm not looking at that but you can refer to &lt;a href="http://jcifs.samba.org/src/docs/httpclient.html"&gt;this&lt;/a&gt; guide on JCIFS home page.&lt;/i&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;HttpClient&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Apache's HttpClient provides some useful encapsulation for fetching/posting data over HTTP through Java code. The common version is &lt;a href="http://hc.apache.org/httpclient-3.x" target="_blank"&gt;HttpClient 3.x&lt;/a&gt; whereas the latest version is &lt;a href="http://hc.apache.org/httpcomponents-client-ga/index.html" target="_blank"&gt;HttpClient 4.x&lt;/a&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;NTLM&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;One of HttpClient's advantages is that it has built in support to manage communications over an NTLM proxy.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;NTLM is a very closely guarded Proxy protocol used by Microsoft but still popularly used.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;JCIFS&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Unfortunately, HttpClient does not have built in support for NTLM v2. The good news is, it allows you to integrate NTLMv2 support in another library called JCIFS.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;JCIFS is an Open Source  client library that implements the CIFS/SMB networking protocol in 100% Java. See more details/download from &lt;a href="http://jcifs.samba.org/" target="_blank"&gt;here&lt;/a&gt;. But since JCIFS started NTLMv2 support only from 1.3.0, make sure you have the latest JCIFS jar (I tested with JCIFS 1.3.14).&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;JCIFS in HttpClient&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Thankfully, HttpClient 4.x home site has a &lt;a href="http://hc.apache.org/httpcomponents-client-ga/ntlm.html" target="_blank"&gt;page&lt;/a&gt; containing unofficial steps for integrating JCIFS into HTTPClient. However, these steps will only work for 4.x and not for for 3.x. This is because HttpClient 4.x is not backward compatible with 3.x. There are major changes like package structures, new Engines instead of States, etc.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Since I was using HttpClient 3.x, I started thinking of upgrading to 4.x – but it was obvious upgrading to 4.x from 3.x was a nightmare just to get NTLMv2 support.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Steps and source-code&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Thankfully, it was just a matter of understanding HttpClient 3.x internal calls from the source. I was able to create 1 simple class that will do the integration in 1 smooth move.&lt;/p&gt;  &lt;p&gt;&lt;span&gt;1)&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;I created a new class, JCIFS_NTLMScheme.java that would be used in place of HTTPClient's NTLMScheme.&lt;/p&gt;  &lt;p&gt;This new class simply makes calls to JCIFS internally to generate NTLMv2's Type1, 2 and 3 messages- just reimplemented the methods with slight logic changes to generate the messages:&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt; margin-left: 0.5in; margin-right: 0in;"&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;package&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.xyz;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; java.io.IOException;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.Credentials;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.HttpMethod;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.NTCredentials;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.auth.AuthChallengeParser;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.auth.AuthScheme;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.auth.AuthenticationException;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.auth.InvalidCredentialsException;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.apache.commons.httpclient.auth.MalformedChallengeException;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.sac.crosspather.common.util.AppLogger;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; org.sac.crosspather.common.util.HTTPHelper;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;This&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;is&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;a&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;reimplementation&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;of&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;HTTPClient&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;3.x&amp;#39;s&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;org&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;.&lt;u&gt;apache&lt;/u&gt;.commons.&lt;u&gt;httpclient&lt;/u&gt;.&lt;u&gt;auth&lt;/u&gt;.NTLMScheme.&amp;lt;BR/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;It&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;will&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;basically&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;use&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;JCIFS&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;(v1.3.15)&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;in&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;order&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;to&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;provide&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;added&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;support&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;for&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLMv2&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;(instead&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;of&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;trying&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;to&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;create&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;its&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;own&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Type,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;2&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;and&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;3&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;messages).&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;&amp;lt;BR/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;This&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;class&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;has&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;to&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;be&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;registered&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;manually&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;with&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;HTTPClient&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;before&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;setting&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTCredentials:&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;AuthPolicy.registerAuthScheme(AuthPolicy.NTLM,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;JCIFS_NTLMScheme.class);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;&amp;lt;BR/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Will&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;B&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;not&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/B&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;work&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;with&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;HttpClient&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;4.x&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;which&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;requires&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;AuthEngine&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;to&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;be&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;overriden&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;instead&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;of&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;AuthScheme.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@author&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Sachin M&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; JCIFS_NTLMScheme &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;implements&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; AuthScheme {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; AppLogger &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;logger&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; AppLogger(HTTPHelper.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.getName());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;challenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;string.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;ntlmchallenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;UNINITIATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = 0;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;INITIATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = 1;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;TYPE1_MSG_GENERATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = 2;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;TYPE2_MSG_RECEIVED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = 3;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;TYPE3_MSG_GENERATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = 4;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;FAILED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = Integer.&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;MAX_VALUE&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;process&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; JCIFS_NTLMScheme() &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; AuthenticationException {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 95);"&gt;// Check if JCIFS is present. If not present, do not proceed.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     Class.&lt;i&gt;forName&lt;/i&gt;(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;jcifs.ntlmssp.NtlmMessage&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;,&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;false&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;,&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.getClass().getClassLoader());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              } &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (ClassNotFoundException e) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; AuthenticationException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Unable to proceed as JCIFS library is not found.&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String authenticate(Credentials credentials, HttpMethod method)&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; AuthenticationException {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;logger&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.doLog(AppLogger.&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;FINEST&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Enter JCIFS_NTLMScheme.authenticate(Credentials, HttpMethod)&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; == &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;UNINITIATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; IllegalStateException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;NTLM authentication process has not been initiated&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              NTCredentials ntcredentials = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     ntcredentials = (NTCredentials) credentials;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              } &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (ClassCastException e) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; InvalidCredentialsException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Credentials cannot be used for NTLM authentication: &amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                                + credentials.getClass().getName());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              NTLM ntlm = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; NTLM();&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              ntlm.setCredentialCharset(method.getParams().getCredentialCharset());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              String response = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; == &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;INITIATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; || &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; == &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;FAILED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     response = ntlm.generateType1Msg(ntcredentials.getHost(),&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  ntcredentials.getDomain());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;TYPE1_MSG_GENERATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              } &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;else&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     response = ntlm.generateType3Msg(ntcredentials.getUserName(),&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  ntcredentials.getPassword(), ntcredentials.getHost(),&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  ntcredentials.getDomain(), &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;ntlmchallenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;TYPE3_MSG_GENERATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;NTLM &amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; + response;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String authenticate(Credentials credentials, String method,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     String uri) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; AuthenticationException {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; RuntimeException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Not implemented as it is deprecated anyway in Httpclient 3.x&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String getID() {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; RuntimeException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Not implemented as it is deprecated anyway in Httpclient 3.x&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Returns&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;parameter&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;with&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;given&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;name,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;if&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;available.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;There&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;are&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;no&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;valid&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;parameters&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;for&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;so&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;this&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;method&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;always&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;returns&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;null&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@param&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;name&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;            &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;The&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;name&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;of&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;parameter&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;to&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;be&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;returned&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;parameter&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;with&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;given&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;name&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String getParameter(String name) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (name == &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; IllegalArgumentException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Parameter name may not be null&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;The&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;concept&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;of&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;an&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;realm&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;is&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;not&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;supported&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;by&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;scheme.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Always&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;returns&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;code&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;null&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/code&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;code&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;null&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/code&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String getRealm() {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Returns&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;textual&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;designation&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;of&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;scheme.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;code&amp;gt;&lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;ntlm&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/code&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String getSchemeName() {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;ntlm&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Tests&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;if&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;process&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;has&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;been&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;completed.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;true&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;if&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Basic&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authorization&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;has&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;been&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;processed,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;         &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;false&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;otherwise.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@since&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;3.0&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;boolean&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; isComplete() {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; == &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;TYPE3_MSG_GENERATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; || &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; == &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;FAILED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Returns&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;true&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;scheme&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;is&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;connection&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;based.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;true&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 127, 159);"&gt;&amp;lt;/tt&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@since&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;3.0&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;boolean&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; isConnectionBased() {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;true&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Processes&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;challenge.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@param&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;challenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;            &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;challenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;string&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@throws&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;MalformedChallengeException&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;             &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;is&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;thrown&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;if&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;authentication&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;challenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;is&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;malformed&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 159, 191);"&gt;@since&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;3.0&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;        &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; processChallenge(&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String challenge)&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; MalformedChallengeException {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              String s = AuthChallengeParser.&lt;i&gt;extractScheme&lt;/i&gt;(challenge);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (!s.equalsIgnoreCase(getSchemeName())) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; MalformedChallengeException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Invalid NTLM challenge: &amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  + challenge);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; i = challenge.indexOf(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (i != -1) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     s = challenge.substring(i, challenge.length());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;ntlmchallenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = s.trim();&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;TYPE2_MSG_RECEIVED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              } &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;else&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;ntlmchallenge&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; == &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;UNINITIATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;INITIATED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     } &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;else&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;state&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;FAILED&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; NTLM {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;           &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Character&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;encoding&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;           &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;DEFAULT_CHARSET&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;ASCII&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;           &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;           &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;               &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;The&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;character&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;was&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;used&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;by&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;3.x&amp;#39;s&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTLM&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;to&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;encode&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;username&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;and&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;               &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;password.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;Apparently,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;this&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;is&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;not&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;needed&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;in&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;when&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;passing&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;username&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;               &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;password&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;from&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;NTCredentials&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;to&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;the&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;JCIFS&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;library&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;               &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;           &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;credentialCharset&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;DEFAULT_CHARSET&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;           &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; setCredentialCharset(String credentialCharset) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;credentialCharset&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; = credentialCharset;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String generateType1Msg(String host, String domain) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     jcifs.ntlmssp.Type1Message t1m = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; jcifs.ntlmssp.Type1Message(jcifs.ntlmssp.Type1Message.getDefaultFlags(),&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  domain, host);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; jcifs.util.Base64.encode(t1m.toByteArray());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; String generateType3Msg(String username, String password, String host,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           String domain, String challenge) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     jcifs.ntlmssp.Type2Message t2m;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           t2m = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; jcifs.ntlmssp.Type2Message(jcifs.util.Base64.decode(challenge));&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     } &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (IOException e) {&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                           &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; RuntimeException(&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;&amp;quot;Invalid Type2 message&amp;quot;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;, e);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     jcifs.ntlmssp.Type3Message t3m = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; jcifs.ntlmssp.Type3Message(t2m, password, domain,&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                                  username, host, 0);&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;                     &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; jcifs.util.Base64.encode(t3m.toByteArray());&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;              }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;       }&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="border: medium none ; padding: 0in;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;}&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;span&gt;2)&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;Then it was Register the new JCIFS_NTLMScheme class as the replacement for NTLMScheme by using the following command:&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; margin-left: 0.5in; margin-right: 0in;"&gt;  &lt;p style="border: medium none ; padding: 0in; margin-left: 0in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;AuthPolicy.&lt;i&gt;registerAuthScheme&lt;/i&gt;(AuthPolicy.&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(0, 0, 192);"&gt;NTLM&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;, org.xyz.JCIFS_NTLMScheme.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;  &lt;p&gt; (&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;AuthPolicy&lt;/span&gt; is a class in HTTPClient 3.x jar)&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;That's it! Use your HTTPClient as normal but just make sure you call the above register command before you create and bind the HttpClient's NTCredentials class&lt;/p&gt;  &lt;/div&gt;   &lt;/div&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-483973416214111515?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/483973416214111515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2010/10/supoprt-for-ntlmv2-with-apache.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/483973416214111515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/483973416214111515'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2010/10/supoprt-for-ntlmv2-with-apache.html' title='Support for NTLMv2 with Apache HttpClient using JCIFS'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-3426262423525968529</id><published>2009-10-22T18:39:00.015+05:30</published><updated>2010-11-12T00:19:39.086+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Forever Updated'/><title type='text'>Best Software Utilities (Non-IT) List</title><content type='html'>Here's a list of my favourite, eternally useful list of extremely useful Software Utilities / Tools.&lt;br /&gt;&lt;br /&gt;It will be a Forever Updated post, with new additions regularly for Windows - obviously with a slight preference to Java + Open-source versions if competing apps are similar.&lt;br /&gt;For Best Developer Utilities, see this earlier post, &lt;a href="http://devsac.blogspot.com/2008/10/must-have-tools-for-every-smart-java.html"&gt;Must have tools for the Smart Java Professional&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;If an app replaces an existing one, or if there are close seconds, the losing app will move to the Best Software Utilities (non-IT) Honour List.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Find out whats eating your Hard Disk space&lt;/span&gt;&lt;br /&gt;&lt;a href="http://windirstat.sourceforge.net/"&gt;WinDirStat&lt;/a&gt;: Gives a very unique visual categorization of which files and folders contain what. &lt;span style="font-weight: bold;font-size:85%;" &gt;OpenSource, Windows&lt;/span&gt;&lt;br /&gt;&lt;a href="http://foldersize.codeplex.com/"&gt;FolderSize&lt;/a&gt;: A quick way to analyse your usage but without advanced features. &lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Freeware, Windows&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://jgoodies.com/freeware/jdiskreport"&gt;JDiskReport&lt;/a&gt;: A Java-based disk analyser. &lt;span style="font-weight: bold;font-size:85%;" &gt;Freeware, Java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Recover Lost Files&lt;/span&gt;&lt;br /&gt;&lt;a href="http://ntfsundelete.com/"&gt;NTFS Undelete&lt;/a&gt;: Free software ported from the open-source Unix version of ntfs undelete utility. EXCELLENT! &lt;span style="font-weight: bold;font-size:85%;" &gt;OpenSource, Windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Watch any video format without installing codecs&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.videolan.org/vlc/"&gt;VLC media player&lt;/a&gt;: Free all-in-one media player that plays every video format out there without additional codecs &lt;span style="font-weight: bold;font-size:85%;" &gt;OpenSource, Windows&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-3426262423525968529?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/3426262423525968529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/10/best-software-utilities-non-it-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3426262423525968529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3426262423525968529'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/10/best-software-utilities-non-it-list.html' title='Best Software Utilities (Non-IT) List'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-1792872696038881288</id><published>2009-07-14T17:13:00.019+05:30</published><updated>2009-07-31T00:39:12.260+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Tolven'/><title type='text'>Error in Tolven RC1 configPhase3 - ORA-00932</title><content type='html'>Running configPhase3.bat of Tolven RC1 (with Windows-OpenLdap/Oracle10g/Jboss) was causing errors.&lt;br /&gt;&lt;br /&gt;The command prompt showed:&lt;br /&gt;&lt;span class="code-large"&gt;C:\tolven\tolven-RC1\bin&gt;configPhase3.bat&lt;br /&gt;0 [main] INFO root  - Start log4j - Configuration: file:/C:/tolven/tolven-RC1/bi&lt;br /&gt;n/tolven-log4j.xml, logFileName: C:\tolven\tolven-RC1\log\tolven.log&lt;br /&gt;18:29:07,570 INFO  [TPFBoot] Loaded configDir C:\tolven\tolven-config&lt;br /&gt;18:29:07,695 INFO  [TPFBoot] Generated boot.properties: C:\DOCUME~1\sachingm\LOC&lt;br /&gt;ALS~1\Temp\tpf_7376485784350116145_boot.properties&lt;br /&gt;18:29:07,757 INFO  [TolvenApplicationInitializer] logging system initialized&lt;br /&gt;18:29:07,757 INFO  [TolvenApplicationInitializer] application root is C:\tolven\&lt;br /&gt;tolven-RC1\bin&lt;br /&gt;18:29:08,023 INFO  [PluginRegistryImpl] configured, stopOnError=true, isValidati&lt;br /&gt;ng=false&lt;br /&gt;18:29:08,132 INFO  [ShadingPathResolver] configured, shadow folder is C:\tolven\&lt;br /&gt;tolven-config\build\temp\.jpf-shadow&lt;br /&gt;18:29:08,757 INFO  [PluginRegistryImpl] plug-in and fragment descriptors registe&lt;br /&gt;red - 117&lt;br /&gt;18:29:08,804 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.library.jasperreports-0.0.1.zip has&lt;br /&gt;been replaced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/o&lt;br /&gt;rg.tolven.library.jasperreports-0.0.1.zip for {PluginFragment: uid=org.tolven.li&lt;br /&gt;brary.jasperreports@0.0.1} with key org.tolven.library.jasperreports&lt;br /&gt;18:29:08,804 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.assembler.jboss.oracle-0.0.1.zip has&lt;br /&gt;been replaced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/&lt;br /&gt;org.tolven.assembler.jboss.oracle-0.0.1.zip for {PluginFragment: uid=org.tolven.&lt;br /&gt;assembler.jboss.oracle@0.0.1} with key org.tolven.assembler.jboss.oracle&lt;br /&gt;18:29:08,804 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.library.jboss-0.0.1.zip has been rep&lt;br /&gt;laced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/org.tolve&lt;br /&gt;n.library.jboss-0.0.1.zip for {PluginFragment: uid=org.tolven.library.jboss@0.0.&lt;br /&gt;1} with key org.tolven.library.jboss&lt;br /&gt;18:29:08,804 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.assembler.jboss-0.0.2.zip has been r&lt;br /&gt;eplaced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/org.tol&lt;br /&gt;ven.assembler.jboss-0.0.2.zip for {PluginFragment: uid=org.tolven.assembler.jbos&lt;br /&gt;s@0.0.1} with key org.tolven.assembler.jboss&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.deploy.source-0.0.2.zip has been rep&lt;br /&gt;laced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/org.tolve&lt;br /&gt;n.deploy.source-0.0.2.zip for {PluginFragment: uid=org.tolven.deploy.source@0.0.&lt;br /&gt;1} with key org.tolven.deploy.source&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.assembler.oracle.persistencexml-0.0.&lt;br /&gt;1.zip has been replaced with new file:/C:/tolven/tolven-config/repositoryRuntime&lt;br /&gt;/plugins/org.tolven.assembler.oracle.persistencexml-0.0.1.zip for {PluginFragmen&lt;br /&gt;t: uid=org.tolven.assembler.oracle.persistencexml@0.0.1} with key org.tolven.ass&lt;br /&gt;embler.oracle.persistencexml&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.component.oracle.init-0.0.1.zip has&lt;br /&gt;been replaced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/o&lt;br /&gt;rg.tolven.component.oracle.init-0.0.1.zip for {PluginFragment: uid=org.tolven.co&lt;br /&gt;mponent.oracle.init@0.0.1} with key org.tolven.component.oracle.init&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.deploy.jboss-0.0.3.zip has been repl&lt;br /&gt;aced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/org.tolven&lt;br /&gt;.deploy.jboss-0.0.3.zip for {PluginFragment: uid=org.tolven.deploy.jboss@0.0.1}&lt;br /&gt;with key org.tolven.deploy.jboss&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.component.application.oracle.indexes&lt;br /&gt;-0.0.1.zip has been replaced with new file:/C:/tolven/tolven-config/repositoryRu&lt;br /&gt;ntime/plugins/org.tolven.component.application.oracle.indexes-0.0.1.zip for {Plu&lt;br /&gt;ginFragment: uid=org.tolven.component.application.oracle.indexes@0.0.1} with key&lt;br /&gt;org.tolven.component.application.oracle.indexes&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.assembler.oracle.orm-0.0.1.zip has b&lt;br /&gt;een replaced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/or&lt;br /&gt;g.tolven.assembler.oracle.orm-0.0.1.zip for {PluginFragment: uid=org.tolven.asse&lt;br /&gt;mbler.oracle.orm@0.0.1} with key org.tolven.assembler.oracle.orm&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.component.application.jboss-0.0.1.zi&lt;br /&gt;p has been replaced with new file:/C:/tolven/tolven-config/repositoryRuntime/plu&lt;br /&gt;gins/org.tolven.component.application.jboss-0.0.1.zip for {PluginFragment: uid=o&lt;br /&gt;rg.tolven.component.application.jboss@0.0.1} with key org.tolven.component.appli&lt;br /&gt;cation.jboss&lt;br /&gt;18:29:08,820 WARN  [ShadingPathResolver] old context URL file:/C:/tolven/tolven-&lt;br /&gt;config/repositoryRuntime/plugins/org.tolven.deploy.pluginframework-0.0.1.zip has&lt;br /&gt;been replaced with new file:/C:/tolven/tolven-config/repositoryRuntime/plugins/&lt;br /&gt;org.tolven.deploy.pluginframework-0.0.1.zip for {PluginFragment: uid=org.tolven.&lt;br /&gt;deploy.pluginframework@0.0.1} with key org.tolven.deploy.pluginframework&lt;br /&gt;18:29:08,929 INFO  [TolvenApplicationInitializer] integrity check done: errors -&lt;br /&gt;0, warnings - 0&lt;br /&gt;18:29:08,929 INFO  [TolvenApplicationInitializer] application plug-in is org.tol&lt;br /&gt;ven.command&lt;br /&gt;18:29:08,929 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;pluginframework@0.0.1 (active/total: 1 of 105)&lt;br /&gt;18:29:08,929 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;serverconfig@0.0.2 (active/total: 2 of 105)&lt;br /&gt;18:29:08,945 INFO  [StandardPluginManager] plug-in started - org.tolven.command@&lt;br /&gt;0.0.3 (active/total: 3 of 105)&lt;br /&gt;18:29:08,945 INFO  [StandardPluginManager] plug-in started - org.tolven.config.d&lt;br /&gt;atabase@0.0.1 (active/total: 4 of 105)&lt;br /&gt;18:29:08,960 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;bouncy-castle@0.0.1 (active/total: 5 of 105)&lt;br /&gt;18:29:08,960 INFO  [StandardPluginManager] plug-in started - org.tolven.config.l&lt;br /&gt;dap@0.0.1 (active/total: 6 of 105)&lt;br /&gt;18:29:08,976 INFO  [AdminAssembler] *** start ***&lt;br /&gt;18:29:09,179 INFO  [AdminAssembler] tmpDir - c:\tolven\tolven-config\build\repos&lt;br /&gt;itoryTmp&lt;br /&gt;18:29:09,179 INFO  [AdminAssembler] stageDir - c:\tolven\tolven-config\build\rep&lt;br /&gt;ositoryStage&lt;br /&gt;18:29:09,179 INFO  [AdminAssembler] devLib - c:\tolven\tolven-config\devLib&lt;br /&gt;18:29:09,195 INFO  [AdminAssembler] Admin keystore: c:\tolven\tolven-config\cred&lt;br /&gt;entials\admin\tolvendev-admin.jks&lt;br /&gt;18:29:09,195 INFO  [AdminAssembler] Admin truststore: c:\tolven\tolven-config\cr&lt;br /&gt;edentials\admin\tolvendev-admin-cacerts.jks&lt;br /&gt;18:29:09,210 INFO  [AdminAssembler] Admin secretkey: c:\tolven\tolven-config\cre&lt;br /&gt;dentials\admin\admin-encryptedSecretKey&lt;br /&gt;18:29:09,210 INFO  [AdminAssembler] Admin password store: c:\tolven\tolven-confi&lt;br /&gt;g\credentials\admin\admin-password.cfg&lt;br /&gt;18:29:09,804 INFO  [AdminAssembler] LDAP key: c:\tolven\tolven-config\credential&lt;br /&gt;s\ldap\tolvendev-ldap-key.pem&lt;br /&gt;18:29:09,804 INFO  [AdminAssembler] LDAP certificate: c:\tolven\tolven-config\cr&lt;br /&gt;edentials\ldap\tolvendev-ldap-cert.pem&lt;br /&gt;18:29:09,804 INFO  [AdminAssembler] LDAP truststore: c:\tolven\tolven-config\cre&lt;br /&gt;dentials\ldap\tolvendev-ldap-cacerts.pem&lt;br /&gt;18:29:09,804 INFO  [AdminAssembler] LDAPClient key: c:\tolven\tolven-config\cred&lt;br /&gt;entials\ldapclient\tolvendev-ldapclient-key.pem&lt;br /&gt;18:29:09,820 INFO  [AdminAssembler] Database keystore: c:\tolven\tolven-config\c&lt;br /&gt;redentials\oracle\tolvendev-oracle.jks&lt;br /&gt;18:29:09,820 INFO  [AdminAssembler] Database truststore: c:\tolven\tolven-config&lt;br /&gt;\credentials\oracle\root.crt&lt;br /&gt;18:29:09,835 INFO  [AdminAssembler] DatabaseClient key: c:\tolven\tolven-config\&lt;br /&gt;credentials\pgadmin\postgresql.key&lt;br /&gt;18:29:09,835 INFO  [AdminAssembler] DatabaseClient certificate: c:\tolven\tolven&lt;br /&gt;-config\credentials\pgadmin\postgresql.crt&lt;br /&gt;18:29:09,851 INFO  [AdminAssembler] AppServer keystore: c:\tolven\tolven-config\&lt;br /&gt;credentials\jboss\tolvendev-jboss.jks&lt;br /&gt;18:29:09,851 INFO  [AdminAssembler] AppServer truststore: c:\tolven\tolven-confi&lt;br /&gt;g\credentials\jboss\tolvendev-jboss-cacerts.jks&lt;br /&gt;18:29:09,851 INFO  [AdminAssembler] MDBUser key: c:\tolven\tolven-config\credent&lt;br /&gt;ials\mdbuser\tolvendev-mdbuser-key.pem&lt;br /&gt;18:29:09,867 INFO  [AdminAssembler] MDBUser certificate: c:\tolven\tolven-config&lt;br /&gt;\credentials\mdbuser\tolvendev-mdbuser-cert.pem&lt;br /&gt;18:29:09,867 INFO  [AdminAssembler] MDBUser keystore: c:\tolven\tolven-config\cr&lt;br /&gt;edentials\mdbuser\tolvendev-mdbuser.p12&lt;br /&gt;18:29:10,164 INFO  [TolvenConfigWrapper] Load JSSE keystore for admin&lt;br /&gt;18:29:10,164 INFO  [TolvenConfigWrapper] Load JSSE truststore for admin&lt;br /&gt;18:29:10,164 INFO  [AdminAssembler] *** end ***&lt;br /&gt;18:29:10,164 INFO  [StandardPluginManager] plug-in started - org.tolven.assemble&lt;br /&gt;r.admin@0.0.4 (active/total: 7 of 105)&lt;br /&gt;18:29:10,179 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;jasperreports@0.0.1 (active/total: 8 of 105)&lt;br /&gt;18:29:10,179 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;remoteclient@0.0.1 (active/total: 9 of 105)&lt;br /&gt;18:29:10,179 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;jboss@0.0.1 (active/total: 10 of 105)&lt;br /&gt;18:29:10,179 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;tolvenclient@0.0.2 (active/total: 11 of 105)&lt;br /&gt;18:29:10,179 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;javaee@0.0.1 (active/total: 12 of 105)&lt;br /&gt;18:29:10,179 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;jdbcdriver@0.0.1 (active/total: 13 of 105)&lt;br /&gt;18:29:10,179 INFO  [StandardPluginManager] plug-in started - org.tolven.componen&lt;br /&gt;t.application.jboss@0.0.1 (active/total: 14 of 105)&lt;br /&gt;18:29:10,195 INFO  [StandardPluginManager] plug-in started - org.tolven.library.&lt;br /&gt;application@0.0.1 (active/total: 15 of 105)&lt;br /&gt;18:29:10,257 INFO  [Application] *** start ***&lt;br /&gt;18:29:10,273 INFO  [Application] Starting for user: admin to jnp://localhost:109&lt;br /&gt;9&lt;br /&gt;18:29:10,429 INFO  [Application] Update MDBUser mdbuser&lt;br /&gt;18:29:10,429 INFO  [TolvenClient] jndi: java.naming.provider.url=jnp://localhost&lt;br /&gt;:1099&lt;br /&gt;18:29:10,429 INFO  [TolvenClient] jndi: java.naming.factory.initial=org.jboss.na&lt;br /&gt;ming.NamingContextFactory&lt;br /&gt;18:29:10,429 INFO  [TolvenClient] jndi: java.naming.factory.url.pkgs=org.jboss.n&lt;br /&gt;aming:org.jnp.interfaces&lt;br /&gt;&lt;b&gt;18:29:11,523 INFO  [LoadMDBUsers] Rolling back transaction : load mdbuser for: a&lt;br /&gt;dmin&lt;br /&gt;Application start failed.&lt;br /&gt;org.java.plugin.PluginLifecycleException: can't start plug-in org.tolven.compone&lt;br /&gt;nt.application@0.0.1&lt;br /&gt;at org.java.plugin.standard.StandardPluginManager.activatePlugin(Standar&lt;br /&gt;dPluginManager.java:415)&lt;br /&gt;at org.java.plugin.standard.StandardPluginManager.activatePlugin(Standar&lt;br /&gt;dPluginManager.java:245)&lt;br /&gt;at org.tolven.command.TolvenApplication.startRequiredPlugins(TolvenAppli&lt;br /&gt;cation.java:87)&lt;br /&gt;at org.tolven.command.TolvenApplication.startApplication(TolvenApplicati&lt;br /&gt;on.java:56)&lt;br /&gt;at org.java.plugin.boot.Boot.boot(Boot.java:346)&lt;br /&gt;at org.java.plugin.boot.Boot.main(Boot.java:243)&lt;br /&gt;at org.tolven.plugin.boot.TPFBoot.main(TPFBoot.java:102)&lt;br /&gt;Caused by: java.lang.RuntimeException: Could not load mdbuser for: admin&lt;br /&gt;at org.tolven.client.load.LoadMDBUsers.updateMDBUser(LoadMDBUsers.java:3&lt;br /&gt;0)&lt;br /&gt;at org.tolven.component.application.Application.updateMDBUser(Applicatio&lt;br /&gt;n.java:152)&lt;br /&gt;at org.tolven.component.application.Application.doStart(Application.java&lt;br /&gt;:123)&lt;br /&gt;at org.java.plugin.Plugin.start(Plugin.java:82)&lt;br /&gt;at org.java.plugin.PluginManager.startPlugin(PluginManager.java:325)&lt;br /&gt;at org.java.plugin.standard.StandardPluginManager.activatePlugin(Standar&lt;br /&gt;dPluginManager.java:407)&lt;br /&gt;... 6 more&lt;br /&gt;Caused by: javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.&lt;br /&gt;SQLGrammarException: could not execute query&lt;br /&gt;at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:87)&lt;br /&gt;&lt;br /&gt;at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)&lt;br /&gt;at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java&lt;br /&gt;:195)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInt&lt;br /&gt;erceptor.java:86)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(Stateles&lt;br /&gt;sInstanceInterceptor.java:62)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.RoleBasedAuthorizationInterceptor.invoke(R&lt;br /&gt;oleBasedAuthorizationInterceptor.java:166)&lt;br /&gt;at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptor.invoke(Role&lt;br /&gt;BasedAuthorizationInterceptor.java:115)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.AuthenticationInterceptor.invoke(Authentic&lt;br /&gt;ationInterceptor.java:77)&lt;br /&gt;at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3Auth&lt;br /&gt;enticationInterceptor.java:110)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterce&lt;br /&gt;ptor.java:46)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(Asynchrono&lt;br /&gt;usInterceptor.java:106)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessCo&lt;br /&gt;ntainer.java:304)&lt;br /&gt;at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)&lt;br /&gt;at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRem&lt;br /&gt;otingInvocationHandler.java:82)&lt;br /&gt;at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.processInvocation(Se&lt;br /&gt;rverThread.java:573)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.j&lt;br /&gt;ava:373)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.jav&lt;br /&gt;a:166)&lt;br /&gt;Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGr&lt;br /&gt;ammarException: could not execute query&lt;br /&gt;at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException&lt;br /&gt;(AbstractEntityManagerImpl.java:629)&lt;br /&gt;at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:73)&lt;br /&gt;at org.tolven.security.bean.LoginBean.findUser(LoginBean.java:73)&lt;br /&gt;at org.tolven.security.bean.LoginBean.createOrUpdateUser(LoginBean.java:&lt;br /&gt;314)&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.&lt;br /&gt;java:39)&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces&lt;br /&gt;sorImpl.java:25)&lt;br /&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:112)&lt;br /&gt;at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationCo&lt;br /&gt;ntextImpl.java:166)&lt;br /&gt;at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3Int&lt;br /&gt;erceptorsInterceptor.java:63)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invok&lt;br /&gt;e(TransactionScopedEntityManagerInterceptor.java:54)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsI&lt;br /&gt;nterceptor.java:47)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)&lt;br /&gt;at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java&lt;br /&gt;:195)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInt&lt;br /&gt;erceptor.java:86)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(Stateles&lt;br /&gt;sInstanceInterceptor.java:62)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.RoleBasedAuthorizationInterceptor.invoke(R&lt;br /&gt;oleBasedAuthorizationInterceptor.java:166)&lt;br /&gt;at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptor.invoke(Role&lt;br /&gt;BasedAuthorizationInterceptor.java:115)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.AuthenticationInterceptor.invoke(Authentic&lt;br /&gt;ationInterceptor.java:77)&lt;br /&gt;at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3Auth&lt;br /&gt;enticationInterceptor.java:110)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterce&lt;br /&gt;ptor.java:46)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(Asynchrono&lt;br /&gt;usInterceptor.java:106)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessCo&lt;br /&gt;ntainer.java:304)&lt;br /&gt;at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)&lt;br /&gt;at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRem&lt;br /&gt;otingInvocationHandler.java:82)&lt;br /&gt;at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.processInvocation(Se&lt;br /&gt;rverThread.java:573)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.j&lt;br /&gt;ava:373)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.jav&lt;br /&gt;a:166)&lt;br /&gt;at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientI&lt;br /&gt;nvoker.java:163)&lt;br /&gt;at org.jboss.remoting.Client.invoke(Client.java:1634)&lt;br /&gt;at org.jboss.remoting.Client.invoke(Client.java:548)&lt;br /&gt;at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemot&lt;br /&gt;eInterceptor.java:62)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPr&lt;br /&gt;opagationInterceptor.java:67)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityC&lt;br /&gt;lientInterceptor.java:53)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.&lt;br /&gt;java:74)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteP&lt;br /&gt;roxy.java:107)&lt;br /&gt;at $Proxy19.createOrUpdateUser(Unknown Source)&lt;br /&gt;at org.tolven.client.load.LoadMDBUsers.updateMDBUser(LoadMDBUsers.java:2&lt;br /&gt;5)&lt;br /&gt;at org.tolven.component.application.Application.updateMDBUser(Applicatio&lt;br /&gt;n.java:152)&lt;br /&gt;at org.tolven.component.application.Application.doStart(Application.java&lt;br /&gt;:123)&lt;br /&gt;at org.java.plugin.Plugin.start(Plugin.java:82)&lt;br /&gt;at org.java.plugin.PluginManager.startPlugin(PluginManager.java:325)&lt;br /&gt;at org.java.plugin.standard.StandardPluginManager.activatePlugin(Standar&lt;br /&gt;dPluginManager.java:407)&lt;br /&gt;at org.java.plugin.standard.StandardPluginManager.activatePlugin(Standar&lt;br /&gt;dPluginManager.java:245)&lt;br /&gt;at org.tolven.command.TolvenApplication.startRequiredPlugins(TolvenAppli&lt;br /&gt;cation.java:87)&lt;br /&gt;at org.tolven.command.TolvenApplication.startApplication(TolvenApplicati&lt;br /&gt;on.java:56)&lt;br /&gt;at org.java.plugin.boot.Boot.boot(Boot.java:346)&lt;br /&gt;at org.java.plugin.boot.Boot.main(Boot.java:243)&lt;br /&gt;at org.tolven.plugin.boot.TPFBoot.main(TPFBoot.java:102)&lt;br /&gt;at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemot&lt;br /&gt;eInterceptor.java:74)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPr&lt;br /&gt;opagationInterceptor.java:67)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityC&lt;br /&gt;lientInterceptor.java:53)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.&lt;br /&gt;java:74)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteP&lt;br /&gt;roxy.java:107)&lt;br /&gt;at $Proxy19.createOrUpdateUser(Unknown Source)&lt;br /&gt;at org.tolven.client.load.LoadMDBUsers.updateMDBUser(LoadMDBUsers.java:2&lt;br /&gt;5)&lt;br /&gt;at org.tolven.component.application.Application.updateMDBUser(Applicatio&lt;br /&gt;n.java:152)&lt;br /&gt;at org.tolven.component.application.Application.doStart(Application.java&lt;br /&gt;:123)&lt;br /&gt;at org.java.plugin.Plugin.start(Plugin.java:82)&lt;br /&gt;at org.java.plugin.PluginManager.startPlugin(PluginManager.java:325)&lt;br /&gt;at org.java.plugin.standard.StandardPluginManager.activatePlugin(Standar&lt;br /&gt;dPluginManager.java:407)&lt;br /&gt;at org.java.plugin.standard.StandardPluginManager.activatePlugin(Standar&lt;br /&gt;dPluginManager.java:245)&lt;br /&gt;at org.tolven.command.TolvenApplication.startRequiredPlugins(TolvenAppli&lt;br /&gt;cation.java:87)&lt;br /&gt;at org.tolven.command.TolvenApplication.startApplication(TolvenApplicati&lt;br /&gt;on.java:56)&lt;br /&gt;at org.java.plugin.boot.Boot.boot(Boot.java:346)&lt;br /&gt;at org.java.plugin.boot.Boot.main(Boot.java:243)&lt;br /&gt;at org.tolven.plugin.boot.TPFBoot.main(TPFBoot.java:102)&lt;br /&gt;Caused by: org.hibernate.exception.SQLGrammarException: could not execute query&lt;br /&gt;at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.j&lt;br /&gt;ava:67)&lt;br /&gt;at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelp&lt;br /&gt;er.java:43)&lt;br /&gt;at org.hibernate.loader.Loader.doList(Loader.java:2223)&lt;br /&gt;at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)&lt;br /&gt;at org.hibernate.loader.Loader.list(Loader.java:2099)&lt;br /&gt;at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)&lt;br /&gt;at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.ja&lt;br /&gt;va:338)&lt;br /&gt;at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java&lt;br /&gt;:172)&lt;br /&gt;at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)&lt;br /&gt;at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)&lt;br /&gt;at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)&lt;br /&gt;at org.tolven.security.bean.LoginBean.findUser(LoginBean.java:73)&lt;br /&gt;at org.tolven.security.bean.LoginBean.createOrUpdateUser(LoginBean.java:&lt;br /&gt;314)&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.&lt;br /&gt;java:39)&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces&lt;br /&gt;sorImpl.java:25)&lt;br /&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:112)&lt;br /&gt;at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationCo&lt;br /&gt;ntextImpl.java:166)&lt;br /&gt;at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3Int&lt;br /&gt;erceptorsInterceptor.java:63)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invok&lt;br /&gt;e(TransactionScopedEntityManagerInterceptor.java:54)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsI&lt;br /&gt;nterceptor.java:47)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)&lt;br /&gt;at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java&lt;br /&gt;:195)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInt&lt;br /&gt;erceptor.java:86)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(Stateles&lt;br /&gt;sInstanceInterceptor.java:62)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.RoleBasedAuthorizationInterceptor.invoke(R&lt;br /&gt;oleBasedAuthorizationInterceptor.java:166)&lt;br /&gt;at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptor.invoke(Role&lt;br /&gt;BasedAuthorizationInterceptor.java:115)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.aspects.security.AuthenticationInterceptor.invoke(Authentic&lt;br /&gt;ationInterceptor.java:77)&lt;br /&gt;at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3Auth&lt;br /&gt;enticationInterceptor.java:110)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterce&lt;br /&gt;ptor.java:46)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(Asynchrono&lt;br /&gt;usInterceptor.java:106)&lt;br /&gt;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.&lt;br /&gt;java:101)&lt;br /&gt;at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessCo&lt;br /&gt;ntainer.java:304)&lt;br /&gt;at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)&lt;br /&gt;at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRem&lt;br /&gt;otingInvocationHandler.java:82)&lt;br /&gt;at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.processInvocation(Se&lt;br /&gt;rverThread.java:573)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.j&lt;br /&gt;ava:373)&lt;br /&gt;at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.jav&lt;br /&gt;a:166)&lt;br /&gt;Caused by: java.sql.SQLException: ORA-00932: inconsistent datatypes: expected -&lt;br /&gt;got BLOB&lt;br /&gt;&lt;br /&gt;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java&lt;br /&gt;:112)&lt;br /&gt;at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)&lt;br /&gt;at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)&lt;br /&gt;at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)&lt;br /&gt;at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.&lt;br /&gt;java:216)&lt;br /&gt;at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPrepare&lt;br /&gt;dStatement.java:810)&lt;br /&gt;at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStateme&lt;br /&gt;nt.java:1039)&lt;br /&gt;at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPrepa&lt;br /&gt;redStatement.java:850)&lt;br /&gt;at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme&lt;br /&gt;nt.java:1134)&lt;br /&gt;at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrep&lt;br /&gt;aredStatement.java:3339)&lt;br /&gt;at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePrepare&lt;br /&gt;dStatement.java:3384)&lt;br /&gt;at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery&lt;br /&gt;(WrappedPreparedStatement.java:236)&lt;br /&gt;at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:&lt;br /&gt;186)&lt;br /&gt;at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)&lt;br /&gt;at org.hibernate.loader.Loader.doQuery(Loader.java:674)&lt;br /&gt;at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Lo&lt;br /&gt;ader.java:236)&lt;br /&gt;at org.hibernate.loader.Loader.doList(Loader.java:2220)&lt;br /&gt;... 46 more&lt;br /&gt;Press any key to continue . . .&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the JBoss Server logs showed:&lt;br /&gt;&lt;span class="code"&gt;2009-07-07 18:29:11,398 WARN  [org.hibernate.util.JDBCExceptionReporter] SQL Error: 932, SQLState: 42000&lt;br /&gt;2009-07-07 18:29:11,398 ERROR [org.hibernate.util.JDBCExceptionReporter] ORA-00932: inconsistent datatypes: expected - got BLOB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After enabling full DEBUG logging for JBoss server AND Hibernate, the problem was identified as an incorrect SQL Query (see &lt;a href="http://devsac.blogspot.com/2009/07/ora-00932-inconsistent-datatypes.html"&gt;ORA-00932: inconsistent datatypes: expected - got BLOB&lt;/a&gt;)!&lt;br /&gt;&lt;br /&gt;The basic problem was a wrong SQL query formed by Hibernate - the TOLVENUSER table has 3 columns of type BLOB and the query in question was "SELECT DISTINCT...". Whereas "DISTINCT" does not work with blob columns (in Oracle 10g anyway) and hence the oracle error: ORA_00932.&lt;br /&gt;&lt;br /&gt;The approach I had was to customise the offending query to simply remove "DISTINCT", especially since TOLVENUSER table already has a primary key on ID column anyway - the "DISTINCT" was hence redundant in the first place.&lt;br /&gt;This was done by updating a single Java file, org.tolven.security.bean.LoginBean (under TolvenEJB module). In the findUser( String principal) method, find the following line and remove "DISTINCT":&lt;br /&gt;String select = "SELECT DISTINCT u FROM TolvenUser u WHERE u.ldapUID = :principal " +&lt;br /&gt;&lt;br /&gt;I then updated this compiled class file direclty into the tolvenEJB.jar file in JBoss's tolven ear file (at "...tolven-jboss-4.2.2.GA\server\tolven\deploy\tolven.ear/tolvenEJB.jar") and restarted Jboss.&lt;br /&gt;&lt;br /&gt;And it was smooth running all the way after that (configPhase3 and so on). I'm accessing all Tolven web app pages perfectly now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-1792872696038881288?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/1792872696038881288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/07/error-in-tolven-rc1-configphase3-ora.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/1792872696038881288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/1792872696038881288'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/07/error-in-tolven-rc1-configphase3-ora.html' title='Error in Tolven RC1 configPhase3 - ORA-00932'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-6587186597435648312</id><published>2009-07-14T16:57:00.010+05:30</published><updated>2009-07-31T00:38:47.559+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>ORA-00932: inconsistent datatypes: expected - got BLOB</title><content type='html'>"ORA-00932: inconsistent datatypes: expected - got BLOB"&lt;br /&gt;This weird single-line error in JBoss's console/log made no sense at all until I added the following snippet in the server's log4j.xml to enable Hibernate logging (thanks to Joe at the &lt;a href="http://sourceforge.net/forum/forum.php?thread_id=3256807&amp;amp;forum_id=585637"&gt;Tolven Forum&lt;/a&gt;):&lt;br /&gt;&amp;lt;category name="org.hibernate.SQL"&amp;gt;&lt;br /&gt;&amp;lt;priority value="DEBUG"/&amp;gt;&lt;br /&gt;&amp;lt;/category&amp;gt;&lt;br /&gt;&lt;br /&gt;(Also of course modified the server logging threshold to DEBUG)&lt;br /&gt;&lt;br /&gt;And then came this stacktrace:&lt;br /&gt;&lt;br /&gt;&lt;span class="code-large"&gt;2009-07-13 18:27:47,322 DEBUG [org.hibernate.util.JDBCExceptionReporter] could not execute query [&lt;span style="font-weight: bold; " &gt;select distinct tolvenuser0_.id as id27_, tolvenuser0_.ldapUID as ldapUID27_, tolvenuser0_.lastLogin as lastLogin27_, tolvenuser0_.creation as creation27_, tolvenuser0_.status as status27_, tolvenuser0_.sponsorship_id as sponsor19_27_, tolvenuser0_.timeZone as timeZone27_, tolvenuser0_.locale as locale27_, tolvenuser0_.emailFormat as emailFor8_27_, tolvenuser0_.demoUser as demoUser27_, tolvenuser0_.likeness_id as likeness18_27_, tolvenuser0_.pbeKeyAlgorithm as pbeKeyA10_27_, tolvenuser0_.salt as salt27_, tolvenuser0_.iterationCount as iterati12_27_, tolvenuser0_.encodedEncryptedPrivateKeyInfo as encoded13_27_, tolvenuser0_.PRIVATE_KEY_SIZE as PRIVATE14_27_, tolvenuser0_.PRIVATE_KEY_ALGORITHM as PRIVATE15_27_, tolvenuser0_.x509EncodedKeySpec as x16_27_, tolvenuser0_.PUBLIC_KEY_ALGORITHM as PUBLIC17_27_ from tolven.TolvenUser tolvenuser0_ where tolvenuser0_.ldapUID=? and (tolvenuser0_.status='ACTIVE' or tolvenuser0_.status='active' or tolvenuser0_.status='new' or tolvenuser0_.status='ACTIVATING' or tolvenuser0_.status='')&lt;/span&gt;]&lt;br /&gt;java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected - got BLOB&lt;br /&gt;&lt;br /&gt; at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91)&lt;br /&gt; at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)&lt;br /&gt; at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)&lt;br /&gt; at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)&lt;br /&gt; at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)&lt;br /&gt; at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)&lt;br /&gt; at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)&lt;br /&gt; at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)&lt;br /&gt; at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)&lt;br /&gt; at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)&lt;br /&gt; at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387)&lt;br /&gt; at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3431)&lt;br /&gt; at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)&lt;br /&gt; at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:236)&lt;br /&gt; at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)&lt;br /&gt; at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)&lt;br /&gt; at org.hibernate.loader.Loader.doQuery(Loader.java:674)&lt;br /&gt; at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)&lt;br /&gt; at org.hibernate.loader.Loader.doList(Loader.java:2220)&lt;br /&gt; at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)&lt;br /&gt; at org.hibernate.loader.Loader.list(Loader.java:2099)&lt;br /&gt; at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)&lt;br /&gt; at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)&lt;br /&gt; at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)&lt;br /&gt; at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)&lt;br /&gt; at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)&lt;br /&gt; at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)&lt;br /&gt; at org.tolven.security.bean.LoginBean.findUser(LoginBean.java:73)&lt;br /&gt; at org.tolven.security.bean.LoginBean.createOrUpdateUser(LoginBean.java:314)&lt;br /&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;br /&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;br /&gt; at java.lang.reflect.Method.invoke(Method.java:597)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)&lt;br /&gt; at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)&lt;br /&gt; at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)&lt;br /&gt; at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:86)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.aspects.security.RoleBasedAuthorizationInterceptor.invoke(RoleBasedAuthorizationInterceptor.java:166)&lt;br /&gt; at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptor.invoke(RoleBasedAuthorizationInterceptor.java:115)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)&lt;br /&gt; at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)&lt;br /&gt; at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)&lt;br /&gt; at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)&lt;br /&gt; at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)&lt;br /&gt; at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)&lt;br /&gt; at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)&lt;br /&gt; at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:573)&lt;br /&gt; at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:373)&lt;br /&gt; at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166)&lt;br /&gt;2009-07-13 18:27:47,338 WARN  [org.hibernate.util.JDBCExceptionReporter] SQL Error: 932, SQLState: 42000&lt;br /&gt;2009-07-13 18:27:47,338 ERROR [org.hibernate.util.JDBCExceptionReporter] ORA-00932: inconsistent datatypes: expected - got BLOB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once the erring query was out in the open (in bold above), I tried executing it in an SQL window and identified that the error was being thrown on those columns of this table that were of type BLOB.&lt;br /&gt;And Google quickly told me that Oracle doesn't like using "SELECT DISTINCT..." on any BLOB columns of a table. Voila!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-6587186597435648312?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/6587186597435648312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/07/ora-00932-inconsistent-datatypes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/6587186597435648312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/6587186597435648312'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/07/ora-00932-inconsistent-datatypes.html' title='ORA-00932: inconsistent datatypes: expected - got BLOB'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-5900685999754601736</id><published>2009-06-24T20:59:00.020+05:30</published><updated>2011-02-08T14:13:34.800+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Excel Macro'/><category scheme='http://www.blogger.com/atom/ns#' term='Duplicate Email'/><category scheme='http://www.blogger.com/atom/ns#' term='Artifact'/><title type='text'>VB Macro for deleting or detecting duplicate Outlook Mails</title><content type='html'>There are so many times that one cant help but wonder at how in spite of all the advances in comfort etc etc, life seems a lot harder than ever... sighhh.&lt;br /&gt;&lt;br /&gt;For example, all the haphazard shifting around at office over the last 3 years has resulted in me accumulating a mountain of disorganised backups. Most notable are the outlook backups in PST formats (what are .pst files? They are Outlooks default backup file format extension). I was getting fed-up of helplessly grinding my teeth because of all the duplicate emails in different folders and different PSTs...&lt;br /&gt;..especially when the solution was right in front of my eyes - A simple VB macro!&lt;br /&gt;&lt;br /&gt;Finally I took time out to get it done and with a very polished form too as can be seen below screnshots.&lt;br /&gt;To make it easy to carry around, I've stored it as an Excel file.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/attachments4myblog/web/DuplicateMailsMarker.xls"&gt;Download&lt;/a&gt; my file or scroll down further to see code to customize.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IcDDSGLLnc/SkJI9q9CxpI/AAAAAAAAAz0/kY2f4X1T9-Y/s1600-h/ExcelLauncher.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 301px;" src="http://1.bp.blogspot.com/_2IcDDSGLLnc/SkJI9q9CxpI/AAAAAAAAAz0/kY2f4X1T9-Y/s320/ExcelLauncher.jpg" alt="" id="BLOGGER_PHOTO_ID_5350919531609114258" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Excel file containing the macro.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2IcDDSGLLnc/SkJI9ZgycpI/AAAAAAAAAzs/7RWTMqxxjtk/s1600-h/ActualAppForm.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 301px;" src="http://4.bp.blogspot.com/_2IcDDSGLLnc/SkJI9ZgycpI/AAAAAAAAAzs/7RWTMqxxjtk/s320/ActualAppForm.jpg" alt="" id="BLOGGER_PHOTO_ID_5350919526927200914" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;The launched macro!&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2IcDDSGLLnc/SkJOkd8SkOI/AAAAAAAAAz8/q_KvRPSQPRg/s1600-h/AppInAction.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 294px; height: 303px;" src="http://4.bp.blogspot.com/_2IcDDSGLLnc/SkJOkd8SkOI/AAAAAAAAAz8/q_KvRPSQPRg/s320/AppInAction.jpg" alt="" id="BLOGGER_PHOTO_ID_5350925695689330914" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;App in action!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Functionality&lt;/span&gt;&lt;br /&gt;The Macro identifies any duplicate items in 2 outlook folders (even those in different PST files) and optionally marks those items.&lt;br /&gt;&lt;br /&gt;It does this by simply comparing all the mails (or any Outlook item) in the 2 locations specified and marks the duplicate mails (in both the folders) with a tag of your choice on the Categories attribute of that email. So it only &lt;span style="font-weight: bold;"&gt;marks &lt;/span&gt;duplicate mails and does not do the actual deleting (those who want to automate this step can easily add an extra line in the code to delete instead of mark, but I found it too risky). An option is available to disable even the marking so that you only get the duplicate count in the summary.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Inputs&lt;/span&gt;&lt;br /&gt;The actual program inputs are the names of the Outlook PST file and the mail folder of the 2 locations. Of course, if you want to compare 2 folders in the same PST, just provide the same PST name in both sets and choose the different folders.&lt;br /&gt;The other input is the name of the label you want to apply against the Categories attribute for duplicate e-mails.&lt;br /&gt;Finally, there is an option to enable marking of duplicate items.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Steps&lt;/span&gt;&lt;br /&gt;Ensure Outlook is running before launching the macro or it will not be able to get the PSTs files loaded in Outlook.&lt;br /&gt;1) Start the Macro.&lt;br /&gt;2) The macro fetches the PST files loaded in your Outlook application and displays the form.&lt;br /&gt;3) Select the PST file in set1. The set1 list gets updated with the folders in this PST file. Select the first folder you need to compare.&lt;br /&gt;4) Similarly, select the PST file in set2. The set2 folder list gets updated with the selected PST file contents. Select the second folder you need to compare here.&lt;br /&gt;5) Next choose whether to Mark the Duplicates or simply show a summary of duplicate sets.&lt;br /&gt;6) Ok Button gets enabled when all the right options are selected.&lt;br /&gt;7) Click on the OK button to start the process! This indexing step of the process may take time for large number of items... a progress bar displays the progress as well as a status bar with basic updates. When the process is done, the status shows the Completed message (and other statistics if you scroll up).&lt;br /&gt;8) Manual step of actual deleting duplicate mails: After running the program, you have to open the Outlook folder that you want to clean up and sort by the Categories column to see those marked in Duplicate like below (the Categories column is hidden by default - this has to be added from the Field Chooser dialog box):&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IcDDSGLLnc/SkJP4GO4YOI/AAAAAAAAA0E/H88giD2gFR8/s1600-h/MarkedMailsResults.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 224px;" src="http://1.bp.blogspot.com/_2IcDDSGLLnc/SkJP4GO4YOI/AAAAAAAAA0E/H88giD2gFR8/s320/MarkedMailsResults.jpg" alt="" id="BLOGGER_PHOTO_ID_5350927132433866978" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Results showing marked mails under attribute, "Categories"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You can give a quick look to make sure they are really duplicates. Then you simply shift-select those mails and delete! :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Performance&lt;/span&gt;&lt;br /&gt;Efficiency was increased by indexing the 2 folders before identifying duplicates- for 3000 + 1000 emails in the 2 folders, without indexing it took a few hours and still didnt finish (because there would be 3000 * 1000 reading of outlook items)! Now it runs in 5 mins.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Customisation&lt;/span&gt;&lt;br /&gt;The current macro only compares the Subject and Creation Date of 2 emails to identify if they are the same (which is actually fairly safe). If you want, you can have more precision by editing the code to check more mail attributes.&lt;br /&gt;Also as mentioned before it is simple to change the code to delete duplicate mails instead of just marking them.&lt;br /&gt;&lt;br /&gt;I made the macro portable by embedding it in an Excel document with a launcher button (what you see in the background of the first 2 screens above). The Excel document containing all the code is available &lt;a href="http://groups.google.com/group/attachments4myblog/web/DuplicateMailsMarker.xls"&gt;here&lt;/a&gt;. Of course, you can also create the macro right into your Outlook client itself (you'll have to copy the code manually from the Excel-macro code page to your Outlook-macro code page).&lt;br /&gt;&lt;br /&gt;Below is the core code which is called from the form:&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;span style=";font-family:courier new;font-size:78%;"  &gt;--&gt;&lt;br /&gt;&lt;span class="code-large" style="heigha30em"&gt;Const PST1_NAME = "NewBackup"&lt;br /&gt;Const PST2_NAME = "NewBackup"&lt;br /&gt;Const FOLDER1_NAME = "Inbox"&lt;br /&gt;Const FOLDER2_NAME = "OldInbox"&lt;br /&gt;Const CATEGORY_SEPERATOR = ","&lt;br /&gt;Const FINAL_PROGRESS_ALLOCATED = 20 ' between 1 and 100&lt;br /&gt;&lt;br /&gt;Public progressValue 'this holds the percentage completed.&lt;br /&gt;Public progressStatus 'this holds the current status.&lt;br /&gt;&lt;br /&gt;' sample with hardcoded psts &amp;amp; folders&lt;br /&gt;Private Sub markDuplicateEmails()&lt;br /&gt;markDuplicates PST1_NAME &amp;amp; SEPERATOR &amp;amp; FOLDER1_NAME, PST2_NAME &amp;amp; SEPERATOR &amp;amp; FOLDER2_NAME, DEFAULT_CATEGORY&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;' actual method which takes dynamic pst\folder source and destination&lt;br /&gt;Public Sub markDuplicates(source, destination, category)&lt;br /&gt;Dim myOlApp, myNameSpace&lt;br /&gt;Set myOlApp = CreateObject("Outlook.Application")&lt;br /&gt;Set myNameSpace = myOlApp.GetNamespace("MAPI")&lt;br /&gt;&lt;br /&gt;Dim tmpArray, pst1Name, pst2Name, folder1Name, folder2Name&lt;br /&gt;tmpArray = Split(source, SEPERATOR)&lt;br /&gt;pst1Name = tmpArray(0)&lt;br /&gt;folder1Name = tmpArray(1)&lt;br /&gt;tmpArray = Split(destination, SEPERATOR)&lt;br /&gt;pst2Name = tmpArray(0)&lt;br /&gt;folder2Name = tmpArray(1)&lt;br /&gt;&lt;br /&gt;Dim folder1Size, folder2Size&lt;br /&gt;folder1Size = myNameSpace.Folders(pst1Name).Folders(folder1Name).Items.Count&lt;br /&gt;folder2Size = myNameSpace.Folders(pst2Name).Folders(folder2Name).Items.Count&lt;br /&gt;&lt;br /&gt;Dim array1() As cstData, array2() As cstData&lt;br /&gt;ReDim array1(folder1Size)&lt;br /&gt;ReDim array2(folder2Size)&lt;br /&gt;&lt;br /&gt;Dim outlookItem1, outlookItem2, i, j&lt;br /&gt;Dim theCstmData As Module1.cstData&lt;br /&gt;Dim startTime, endTime&lt;br /&gt;&lt;br /&gt;'populate array1&lt;br /&gt;i = -1&lt;br /&gt;startTime = Now&lt;br /&gt;progressStatus = "Indexing set1..."&lt;br /&gt;For Each outlookItem1 In myNameSpace.Folders(pst1Name).Folders(folder1Name).Items&lt;br /&gt;i = i + 1&lt;br /&gt;Set theCstmData.item = outlookItem1&lt;br /&gt;theCstmData.subject = outlookItem1.subject&lt;br /&gt;theCstmData.creationTime = outlookItem1.creationTime&lt;br /&gt;array1(i) = theCstmData&lt;br /&gt;progressValue = 100 * (i / (folder1Size + folder2Size + (folder1Size + folder2Size) * (FINAL_PROGRESS_ALLOCATED / 100)))&lt;br /&gt;DoEvents&lt;br /&gt;Next outlookItem1&lt;br /&gt;progressStatus = "Indexing set1 Complete."&lt;br /&gt;' populate array2&lt;br /&gt;i = -1&lt;br /&gt;progressStatus = "Indexing set2..."&lt;br /&gt;For Each outlookItem2 In myNameSpace.Folders(pst2Name).Folders(folder2Name).Items&lt;br /&gt;i = i + 1&lt;br /&gt;Set theCstmData.item = outlookItem2&lt;br /&gt;theCstmData.subject = outlookItem2.subject&lt;br /&gt;theCstmData.creationTime = outlookItem2.creationTime&lt;br /&gt;array2(i) = theCstmData&lt;br /&gt;progressValue = 100 * ((folder1Size + i) / (folder1Size + folder2Size + (folder1Size + folder2Size) * (FINAL_PROGRESS_ALLOCATED / 100)))&lt;br /&gt;DoEvents&lt;br /&gt;Next outlookItem2&lt;br /&gt;progressStatus = "Indexing set2 Complete."&lt;br /&gt;progressStatus = "Indexing time: " &amp;amp; (Now - startTime) * 60 * 60 * 24&lt;br /&gt;&lt;br /&gt;'loop through each item in array1&lt;br /&gt;progressStatus = "Applying Category labels on duplicates..."&lt;br /&gt;For i = 0 To folder1Size - 1&lt;br /&gt;'loop through each item in array 2 comparing each array2Item with current array1item&lt;br /&gt;For j = 0 To folder2Size - 1&lt;br /&gt;'  if it is a match mark the item in array2 as duplicate&lt;br /&gt;If array1(i).subject = array2(j).subject And _&lt;br /&gt;array1(i).creationTime = array2(j).creationTime Then&lt;br /&gt;If array1(i).item.Categories = "" Then&lt;br /&gt;array1(i).item.Categories = category&lt;br /&gt;Else&lt;br /&gt;array1(i).item.Categories = array2(j).item.Categories &amp;amp; CATEGORY_SEPERATOR &amp;amp; category&lt;br /&gt;End If&lt;br /&gt;array1(i).item.Save&lt;br /&gt;&lt;br /&gt;If array2(j).item.Categories = "" Then&lt;br /&gt;array2(j).item.Categories = category&lt;br /&gt;Else&lt;br /&gt;array2(j).item.Categories = array2(j).item.Categories &amp;amp; CATEGORY_SEPERATOR &amp;amp; category&lt;br /&gt;End If&lt;br /&gt;array2(j).item.Categories = category&lt;br /&gt;array2(j).item.Save&lt;br /&gt;End If&lt;br /&gt;DoEvents&lt;br /&gt;Next j&lt;br /&gt;progressValue = (100 - FINAL_PROGRESS_ALLOCATED) + (FINAL_PROGRESS_ALLOCATED * (i / folder1Size))&lt;br /&gt;Next i&lt;br /&gt;progressStatus = "Total Time: " &amp;amp; (Now - startTime) * 60 * 60 * 24&lt;br /&gt;progressStatus = "All done."&lt;br /&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update [25-Jun-09]:&lt;br /&gt;New features&lt;br /&gt;- Option to only count duplicates instead of Marking.&lt;br /&gt;- Now displays even sub-folders recursively&lt;br /&gt;- 2 new status views available to display number of items in selected folder.&lt;br /&gt;- Other performance enhancements&lt;br /&gt;See screenshot below:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2IcDDSGLLnc/SkN5gpLIcGI/AAAAAAAAA0k/Lvh6BMgedyk/s1600-h/NewVersion.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 269px; height: 320px;" src="http://4.bp.blogspot.com/_2IcDDSGLLnc/SkN5gpLIcGI/AAAAAAAAA0k/Lvh6BMgedyk/s320/NewVersion.jpg" alt="" id="BLOGGER_PHOTO_ID_5351254383961600098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2IcDDSGLLnc/SkN6mWgQD2I/AAAAAAAAA0s/7Ps7KMvm_j4/s1600-h/NewVersionb.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 269px; height: 320px;" src="http://3.bp.blogspot.com/_2IcDDSGLLnc/SkN6mWgQD2I/AAAAAAAAA0s/7Ps7KMvm_j4/s320/NewVersionb.jpg" alt="" id="BLOGGER_PHOTO_ID_5351255581540749154" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Update [03-Jul-09]:&lt;br /&gt;New features&lt;br /&gt;-support for choosing same folder in set1 and set2. This will mark/count duplicate sets of mails in the same folder.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Note: This was tested on Outlook 2003 but should work on any outlook...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-5900685999754601736?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/5900685999754601736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/06/vb-macro-for-deleting-duplicate-outlook.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5900685999754601736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5900685999754601736'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/06/vb-macro-for-deleting-duplicate-outlook.html' title='VB Macro for deleting or detecting duplicate Outlook Mails'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2IcDDSGLLnc/SkJI9q9CxpI/AAAAAAAAAz0/kY2f4X1T9-Y/s72-c/ExcelLauncher.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-7141772685118526249</id><published>2009-06-18T15:34:00.011+05:30</published><updated>2010-10-31T02:10:48.971+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forever Updated'/><title type='text'>The Little Guide of IT Jargons and Acronyms</title><content type='html'>Here's an age-old problem perhaps much before the time Pythogaras stated to a non-mathematical audence: "The square of the hypotinuse..."&lt;br /&gt;&lt;br /&gt;See most of us techies are really proud of the way we can rattle of so many tech terms and especially acronyms. Unfortunately, a sentence like that would just go right over a non-techie client or a new team member. What makes things worse is that requirement and document acronyms often vary from company to company.&lt;br /&gt;&lt;br /&gt;Of course there are people who use them a lot to show off... and its the general opinion of the other crows that lots of jargon/acronyms implies you are loud-mouthed and/or not really knowledgeable. I absolutely agree when I hear Sales people at Mutual Funds talking about CAMS (of course I do catch them red handed if its a computer shop salesperson!).&lt;br /&gt;&lt;br /&gt;Unfortunately a lot of the times, we techies are simply unaware when we're doing it! Perhaps what we could do is distribute a common acronym list before a client meeting? Something like below... of course the list would grow (or shrink?) based on client feedback after every meeting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;I would keep updating as the list would be obviously too large to put up at one go!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Little Guide of IT Acronyms&lt;/span&gt;:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tech Acronyms&lt;/span&gt;&lt;br /&gt;BPM - Business Process Mangement&lt;br /&gt;EDI - Electronic Data Interchange&lt;br /&gt;ETL - Extract, Transform, Load&lt;br /&gt;JSeam - JBoss Seam&lt;br /&gt;RIA - Rich Internet Application&lt;br /&gt;SaaS - Software as a Service&lt;br /&gt;SOA - Service Oriented Archiecture&lt;br /&gt;SOBA - Service Oriented Business Application&lt;br /&gt;XSD - Xml Schema Definition&lt;br /&gt;WSDL - Web Service Definition Language&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Doc acronyms&lt;/span&gt;&lt;br /&gt;CDS/FDS/TDS - Component/Functional/Technical Design Specification&lt;br /&gt;Specs - Requirement Specifications&lt;br /&gt;SSRS - Sub-System Requirements Specification&lt;br /&gt;UTP - Unit Test Plan&lt;br /&gt;UTR - Unit Test Results&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other&lt;/span&gt;&lt;br /&gt;UIT/UAT - User Integration/Acceptance Testing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-7141772685118526249?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/7141772685118526249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/06/little-guide-of-it-acronyms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/7141772685118526249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/7141772685118526249'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/06/little-guide-of-it-acronyms.html' title='The Little Guide of IT Jargons and Acronyms'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-765320554621584751</id><published>2009-05-23T17:31:00.002+05:30</published><updated>2009-10-23T15:22:03.074+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Forever Updated'/><category scheme='http://www.blogger.com/atom/ns#' term='Kubuntu'/><title type='text'>Must have tools for Kubuntu</title><content type='html'>CCD2ISO&lt;br /&gt;Converts most CloneCD image file (.ccd) to standard ISO image. Only iso images can be mounted in linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-765320554621584751?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/765320554621584751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/05/must-have-tools-for-kubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/765320554621584751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/765320554621584751'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/05/must-have-tools-for-kubuntu.html' title='Must have tools for Kubuntu'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-8365483928997581149</id><published>2009-05-23T17:30:00.002+05:30</published><updated>2009-10-23T15:20:45.744+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forever Updated'/><category scheme='http://www.blogger.com/atom/ns#' term='Kubuntu'/><title type='text'>Some useful one-off commands in Kubuntu</title><content type='html'>This post will be regularly updated with commands as I come across them...&lt;br /&gt;&lt;br /&gt;Mounting an iso image&lt;br /&gt;1) First create the location where you want the mount to be made:&lt;br /&gt;mkdir /MyISOMount1&lt;br /&gt;&lt;br /&gt;2) Mount the iso:&lt;br /&gt;sudo mount -t iso9660 CoolStuff.iso /MyISOMount1 -o loop&lt;br /&gt;where CoolStuff.iso is the image and /MyISOMount1 is the location where the image is to be mounted.&lt;br /&gt;&lt;br /&gt;3) When you're all done, simpy unmount:&lt;br /&gt;sudo umount /MyISOMount1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-8365483928997581149?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/8365483928997581149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/05/some-useful-one-off-commands-in-kubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8365483928997581149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8365483928997581149'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/05/some-useful-one-off-commands-in-kubuntu.html' title='Some useful one-off commands in Kubuntu'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-5055340063157727292</id><published>2009-05-11T00:52:00.003+05:30</published><updated>2009-05-19T14:10:04.470+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Kubuntu'/><title type='text'>Hardware Monitor for Kubuntu</title><content type='html'>One thing I missed in my "new" old linux system is a hardware monitor tool to pick up the temperature, fan speed and any other statistics available directly from my hardware... in windows, there were so many to pick from and plenty of reviews and articles. I was surprised such a tool was not bundled with the Kubuntu Installation and nor did any turn up in the Add/Remove App.&lt;br /&gt;&lt;br /&gt;The good news is that it is available for linux but is not as simple as install and run as in most stuff in linux. In fact, the hardware monitoring is actually present in the default installation of Kubuntu 8.04 through the &lt;span style="font-weight: bold;"&gt;lm-sensors&lt;/span&gt; package (verify this is already installed from Adept or Synaptic manager and install this if not present).&lt;br /&gt;&lt;br /&gt;However lm-sensors has no UI. Presenting a choice of 2 UI tools, &lt;span style="font-weight: bold;"&gt;K-Sensors&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Kima&lt;/span&gt;, to fill in this gap.&lt;br /&gt;&lt;br /&gt;Note: lm-sensors is not a driver package - it will simply use drivers already installed by Kububtu. This works fine for most desktops but in the case of laptops, chances are slim that kubuntu drivers will be present for hardware monitoring. So lm-sensors wont help.&lt;br /&gt;&lt;br /&gt;But before you use these UI tools, you need to setup your system by doing the following:&lt;br /&gt;1) Open a terminal (simply open Konsole in Kubuntu).&lt;br /&gt;&lt;br /&gt;2) Next, you need to run a program from lm-sensors package to detect and list all your hardware that has sensors.&lt;br /&gt;Run the following command and hit Enter (yes) to all the subsequent prompts except the last one, &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;"Do you want to add these lines automatically?"&lt;/span&gt;&lt;/span&gt; (unless you really want to)&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;sudo sensors-detect&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This program will show at the end a summary of all the hardware modules that needs to be added for monitoring&lt;br /&gt;Something like:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#----cut here----&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# Chip drivers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;it87&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;coretemp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#----cut here----&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note: If you get a message like "no sensors detected", this most probably means none of your hardware have sensors or your kubuntu drivers are not able to detect them&lt;br /&gt;&lt;br /&gt;3) Next you need to include the linux kernel modules detected by running the modprobe command for each of the modules between "cut here"&lt;br /&gt;So for the example above, type and run each of the following (normally you need to prepend with "sudo" to run in admin mode):&lt;br /&gt;sudo modprobe it87&lt;br /&gt;sudo modprobe coretemp&lt;br /&gt;&lt;br /&gt;That's it. Now you can install (do it from Adept or Synaptic of course) and run your selected UI tool.&lt;br /&gt;&lt;br /&gt;Ksensors can be started normally from the KDE start menu. You'll need to go to it's options menu and add the neccessary sensors you want to monitor.&lt;br /&gt;&lt;br /&gt;Kima will not be present in the start menu as it is actually a Kicker applet. To start Kima, right click your bottom panel, select add Applet to panel and select Kima from the list. Kima will run as an applet in Kicker. Again you would need to go to it's conigure menu and add the sensors you want to monitor.&lt;br /&gt;&lt;br /&gt;Finally, verify that the values you see in the sensor are accurate as they may be garbled by a factor or 2 sometimes (actual Sensor readings are usually accessible in your system bios).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-5055340063157727292?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/5055340063157727292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/05/hardware-monitor-for-kubuntu.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5055340063157727292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5055340063157727292'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/05/hardware-monitor-for-kubuntu.html' title='Hardware Monitor for Kubuntu'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-8761521295968862902</id><published>2009-04-27T19:47:00.011+05:30</published><updated>2009-10-23T15:18:32.251+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='Checkstyle'/><title type='text'>Checkstyle Bug - "Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag 'DUSException'".(?) and Solution</title><content type='html'>Was in the code review phase last week... time for checkstyle, findbugs n PMD to come out!&lt;br /&gt;&lt;br /&gt;Since it was a new project, with a little tinkering of a half-working Hudson ant script someone was working on, I could generate my Review reports. My checkstyle task was like below:&lt;br /&gt;&lt;span class="code"&gt;&amp;lt;target name = "checkstyle"&amp;gt;&lt;br /&gt;&amp;lt;mkdir dir="${checkstyle.report}"/&amp;gt;&lt;br /&gt;&amp;lt;taskdef resource="checkstyletask.properties" classpath ="${checkstyle.home}/checkstyle-all-4.4.jar;${checkstyle.home}/checkstyle-optional-4.4.jar" /&amp;gt;&lt;br /&gt;&amp;lt;checkstyle config="${basedir}\..\settings\CheckstyleSettings.xml" failonviolation="false"&amp;gt;&lt;br /&gt; &amp;lt;fileset dir="${src.java.dir}" includes="**/*.java"/&amp;gt;&lt;br /&gt; &amp;lt;formatter type="xml" toFile="${checkstyle.report}\checkstyle_errors.xml"/&amp;gt;&lt;br /&gt;&amp;lt;/checkstyle&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;style in="${checkstyle.report}\checkstyle_errors.xml" out="${checkstyle.report}\checkstyle_report.html"&lt;br /&gt;style="${basedir}\..\settings\checkstyle.xsl"/&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Unfortunately, the Checkstyle Reports kept giving a strange Error in some classes:&lt;br /&gt;&lt;span class="code"&gt;"Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag 'DUSException'." at Line 0.&lt;/span&gt;&lt;br /&gt;Classes which had this error would have no other Errors although the Warnings were not affected.&lt;br /&gt;&lt;br /&gt;However, in my Eclipse editor with Checksyle Plugin and the same Checkstyle settings, I would get normal Checkstyle Errors and Warnings without thie Error.&lt;br /&gt;&lt;br /&gt;Clearly, this was some Checkstyle runtime error and not an error in my class which resulted in Checkstyle failing to process that class for Errors.&lt;br /&gt;&lt;br /&gt;Searched the net and came up with lots of explanations / bug accusations that made a lot of sense but no easy solution... Checkstyle was somehow missing out the DUSException class when it was encountered in a throws tag of a methods Javadoc.&lt;br /&gt;&lt;br /&gt;So i decided to manually add my source class files to the classpath... and it worked!&lt;br /&gt;&lt;span class="code"&gt;&amp;lt;checkstyle config="${basedir}\..\settings\CheckstyleSettings.xml" failonviolation="false"&amp;gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                &amp;lt;classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                    &amp;lt;path location="${classes.dir}" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                    &amp;lt;path refid="code-lib-classpath" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                &amp;lt;/classpath&amp;gt;&lt;/span&gt;&lt;br /&gt;            &amp;lt;fileset dir="${src.java.dir}" includes="**/*.java"/&amp;gt;&lt;br /&gt;            &amp;lt;formatter type="xml" toFile="${checkstyle.report}\checkstyle_errors.xml"/&amp;gt;&lt;br /&gt;        &amp;lt;/checkstyle&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Unfortunately, the Checkstyle report started showing the real CS Errors and they doubled! :) But the team could finally tackle 'em bugs before they slipped to the next phase...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Strange thing was that most of the (new) team was also getting the same Checkstyle Bug in Eclipse... which was what made me assume that it really was a CS Bug.&lt;br /&gt;Until I had a look at their CS preferences and found that they were applying CS on .java files only. Once it was changed to apply to all files, the issue was resolved in their Eclipse as well&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-8761521295968862902?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/8761521295968862902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/04/checkstyle-bug-got-exception.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8761521295968862902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8761521295968862902'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/04/checkstyle-bug-got-exception.html' title='Checkstyle Bug - &quot;Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag &apos;DUSException&apos;&quot;.(?) and Solution'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-4885771885298292679</id><published>2009-02-26T13:26:00.005+05:30</published><updated>2010-10-12T23:43:45.041+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxy'/><category scheme='http://www.blogger.com/atom/ns#' term='ntlm'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleApp'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Uploading apps onto GoogleAppEngine behind a proxy</title><content type='html'>Was stuck for a while trying to upload my google app from the latest Google App Engine 1.1.9 - what should have been an instant upload turned out to be an all-day adventure because of the complication of behind a proxy that required user/password authentication...&lt;br /&gt;&lt;br /&gt;But finally got it to work with the following steps (from a Win XP machine using Python v2.6.1)!&lt;br /&gt;&lt;br /&gt;1) Install the Python patch 1424152 from http://bugs.python.org/issue1424152. They only have diff files there - so for those who don't know how to apply diff patches, I have attached the 2 PATCHED files (urllib2.py &amp;amp; httplib.py) for Python 2.6.1.  Just replace your corresponding files in your Python26\Lib folder with these (&lt;span style="font-weight: bold;"&gt;WARNING&lt;/span&gt; - these files were patched specifically for Python 2.6.1. For any other Python version, you have to patch your appropriate file from the patch link above).&lt;br /&gt;&lt;br /&gt;2) Download the latest ntlmaps proxy (v0.9.9?) from http://ntlmaps.sourceforge.net/&lt;br /&gt;(its only 71kb!).&lt;br /&gt;Change the following attributes in server.cfg: PARENT_PROXY, NT_DOMAIN, USER, PASSWORD.&lt;br /&gt;You can leave the password empty and it will prompt you when you start ntlmaps.&lt;br /&gt;&lt;br /&gt;3) Set the following environment values:&lt;br /&gt;set HTTP_PROXY=localhost:5865&lt;br /&gt;set HTTPS_PROXY=localhost:5865&lt;br /&gt;(5685 is the default port used by ntlsmaps which can be changed in server.cfg)&lt;br /&gt;&lt;br /&gt;4) Start up the ntlsmaps proxy by running runserver.bat (you might have to edit the&lt;br /&gt;bat file to point to your actual python executable).&lt;br /&gt;&lt;br /&gt;5) Test whether ntlsmaps is working by changing your browser proxy to point to&lt;br /&gt;localhost:5865, and try to access some sites. If this fails, your proxy is probably&lt;br /&gt;not understood by ntlsmaps or vice versa - try to finetune ntlsmaps some more.&lt;br /&gt;&lt;br /&gt;6) Finally run your upload command:&lt;br /&gt;appcfg.py update xyz/&lt;br /&gt;Hopefully you should get something like this:&lt;br /&gt;...\appcfg.py:40: DeprecationWarning: the sha&lt;br /&gt;module is deprecated; use the hashlib module instead&lt;br /&gt;DIR_PATH,&lt;br /&gt;Scanning files on local disk.&lt;br /&gt;Initiating update.&lt;br /&gt;Email: xyz@gmail.com&lt;br /&gt;Password for xyz@gmail.com:&lt;br /&gt;Cloning 2 static files.&lt;br /&gt;Cloning 5 application files.&lt;br /&gt;Deploying new version.&lt;br /&gt;Checking if new version is ready to serve.&lt;br /&gt;Will check again in 1 seconds.&lt;br /&gt;Checking if new version is ready to serve.&lt;br /&gt;Closing update: new version is ready to start serving.&lt;br /&gt;Uploading index definitions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-4885771885298292679?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/4885771885298292679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/02/uploading-apps-onto-googleappengine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4885771885298292679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4885771885298292679'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/02/uploading-apps-onto-googleappengine.html' title='Uploading apps onto GoogleAppEngine behind a proxy'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-4313233370396967883</id><published>2009-02-24T13:22:00.014+05:30</published><updated>2010-10-10T23:36:57.081+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='WinXP'/><title type='text'>Error reading from file ... .msi Verify that the file exists and that you can access it</title><content type='html'>Got a confounding error that occurred when trying to install an msi file on windows XP:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaOxODi5mWI/AAAAAAAAAp8/GobgkUNUuzQ/s1600-h/ErrorReadingFromFile.jpg"&gt;&lt;img alt="Error reading from file D:\GoogleAppEngine_1.1.9.msi. Verify that the file exists and that you can access it." style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 366px; height: 165px;" src="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaOxODi5mWI/AAAAAAAAAp8/GobgkUNUuzQ/s400/ErrorReadingFromFile.jpg" alt="" id="BLOGGER_PHOTO_ID_5306279641000548706" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;(Error reading from file ... .msi&lt;br /&gt;Verify that the file exists and that you can access it.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After quite a bit of hair-pulling, I realised this was happening because I had removed Security rights to all users except myself for this folder... including the System group!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IcDDSGLLnc/SaOzPj_OSDI/AAAAAAAAAqI/Ebr3cR_CT_0/s1600-h/Security1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 310px; height: 400px;" src="http://2.bp.blogspot.com/_2IcDDSGLLnc/SaOzPj_OSDI/AAAAAAAAAqI/Ebr3cR_CT_0/s400/Security1.jpg" alt="" id="BLOGGER_PHOTO_ID_5306281865912404018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I suppose since the System is what performs actions on msi to unpack it, etc, it needs rights here.&lt;br /&gt;So all I had to do was to put the msi file in a folder that has System rights.&lt;br /&gt;&lt;br /&gt;In this case, I simply enabled access for System group to the directory and the problem was solved.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IcDDSGLLnc/SaOz_BA4tfI/AAAAAAAAAqY/m_nbp5AVJhA/s1600-h/Security2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 213px;" src="http://2.bp.blogspot.com/_2IcDDSGLLnc/SaOz_BA4tfI/AAAAAAAAAqY/m_nbp5AVJhA/s400/Security2.jpg" alt="" id="BLOGGER_PHOTO_ID_5306282681157858802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaOrjQpgwyI/AAAAAAAAApI/A4HvWp-3e7Y/s1600-h/Security3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 239px;" src="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaOrjQpgwyI/AAAAAAAAApI/A4HvWp-3e7Y/s400/Security3.jpg" alt="" id="BLOGGER_PHOTO_ID_5306273408225428258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaOz_G1dvPI/AAAAAAAAAqg/TFhoq7Au4b0/s1600-h/Security4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 213px;" src="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaOz_G1dvPI/AAAAAAAAAqg/TFhoq7Au4b0/s400/Security4.jpg" alt="" id="BLOGGER_PHOTO_ID_5306282682720566514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IcDDSGLLnc/SaOubHXsWpI/AAAAAAAAApo/xwGysWpzbY4/s1600-h/Security5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 310px; height: 400px;" src="http://2.bp.blogspot.com/_2IcDDSGLLnc/SaOubHXsWpI/AAAAAAAAApo/xwGysWpzbY4/s400/Security5.jpg" alt="" id="BLOGGER_PHOTO_ID_5306276566830701202" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-4313233370396967883?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/4313233370396967883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/02/error-reading-from-file-msi-verify-that.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4313233370396967883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4313233370396967883'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/02/error-reading-from-file-msi-verify-that.html' title='Error reading from file ... .msi Verify that the file exists and that you can access it'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2IcDDSGLLnc/SaOxODi5mWI/AAAAAAAAAp8/GobgkUNUuzQ/s72-c/ErrorReadingFromFile.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-6261022073993126654</id><published>2009-02-20T20:08:00.019+05:30</published><updated>2009-05-25T01:23:59.733+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Artifact'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Gadget'/><title type='text'>Dynamic Label Cloud Gadget</title><content type='html'>Was looking for a label cloud widget for the blog but was surprised to see no one had come up with any dynamic cloud generator... was a matter of merging a little unused math with simple javascript and the Dynamic Cloud Generator gadget was born.&lt;br /&gt;&lt;br /&gt;If you're happy with the gadget (or even particularly upset!), for any feedback, queries or bugs do make a post in Google's gadget directory for this gadget &lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=hosting.gmodules.com/ig/gadgets/file/103680291001692068835/SG_CloudFormer.xml"&gt;here&lt;/a&gt;.&lt;br /&gt;When posting problems, provide as much information like the Gadget properties, what browser the problem is seen, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Gadget Properties:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cloud Label Max Font Size&lt;/span&gt;&lt;br /&gt;eg: 25&lt;br /&gt;Provide the font size for the biggest (most occurring) label.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cloud Label Min Font Size&lt;/span&gt;&lt;br /&gt;eg: 8&lt;br /&gt;Provide the font size for the smallest (least occurring) label.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cloud Background Colour&lt;/span&gt;&lt;br /&gt;eg: red, #aabbdd&lt;br /&gt;Change this from the default value of '#FFFFFF' (white) if you want another background colour.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cloud Link Colour&lt;/span&gt;&lt;br /&gt;This is for choosing the colour of the cloud links.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Base Url For Label link&lt;/span&gt; (change this)&lt;br /&gt;eg: http://devsac.blogspot.com/search/label&lt;br /&gt;This is the URL for creating the links that appear on each of the labels in the label cloud - the URL is simply prepended to the Label tag. If the user clicks on the tag "Cool", the URL in this case would be http://devsac.blogspot.com/search/label/Cool&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Feed URL to retrieve Labels from&lt;/span&gt; (change this)&lt;br /&gt;eg: http://devsac.blogspot.com/feeds/posts/default&lt;br /&gt;You can simply give your blog's Blogger RSS Atom feed (in this case, you can skip the below Label Element and Attribute properties). If you don't have a Blogger atom feed or have a non-standard xml file containing your labels, then provide that URL.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Name of Label Element in Feed URL&lt;/span&gt;&lt;br /&gt;eg: category&lt;br /&gt;Leave this with default value as "category", if you provided a Blogger Atom RSS feed for above Feed URL property.&lt;br /&gt;Otherwise, provide the name of the element that contains the labels in your xml.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Name of Label Attribute in Feed URL&lt;/span&gt;&lt;br /&gt;eg: term&lt;br /&gt;Leave this with default value as "term", if you provided a Blogger Atom feed for above Feed URL property.&lt;br /&gt;Otherwise, provide the name of the attribute containing the labels in your xml.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ignore Label Attribute in Feed URL&lt;/span&gt;&lt;br /&gt;Leave this as default unchecked if you provided a Blogger RSS Atom feed for above Feed URL property.&lt;br /&gt;Enable this if you are provided a Feed URL that stores the the Label as a value in the Label Element and not in an attribute (such as the RSS feed from Feedster).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Minimum Label Occurences&lt;/span&gt;&lt;br /&gt;This is an optional property which will be skipped if it has default value of 0.&lt;br /&gt;This can be used when only those labels that occur more than a minimum count need to be displayed in the cloud.&lt;br /&gt;For e.g.:, if you want to consider only labels that have occurred more than once, then give 2 for this property.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Maximum Label Occurences&lt;/span&gt;&lt;br /&gt;This is an optional property which will be skipped if it has default value of 0.&lt;br /&gt;This can be used when only those labels that occur less than a maximum count need to be displayed in the cloud.&lt;br /&gt;For e.g.:, if you want to consider only labels that have occurred less than 100 times, then give 99 for this property.&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaKnlXY5XEI/AAAAAAAAAoo/NAfpjeZhk-0/s1600-h/TagCloud.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 280px; height: 176px;" src="http://3.bp.blogspot.com/_2IcDDSGLLnc/SaKnlXY5XEI/AAAAAAAAAoo/NAfpjeZhk-0/s400/TagCloud.JPG" alt="" id="BLOGGER_PHOTO_ID_5305987571371301954" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;Updates:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;v0.008 [25-May-09]:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Added new properties, min and max label occurrences for &lt;/span&gt;&lt;span style="font-size:85%;"&gt;feature request from Randi Helene Tillung.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;v0.007&lt;/span&gt;&lt;br /&gt;Fixed bug that left out border of gadget when setting background colour, Raised by Eemil.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;v0.006&lt;/span&gt;&lt;br /&gt;Fix for bug in "Ignore Label Attribute" option.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;v0.005&lt;/span&gt;&lt;br /&gt;Added &lt;/span&gt;&lt;span style="font-size:85%;"&gt;"Ignore Label Attribute" option for those who have non-Blogger rss feeds like Feedster RSS.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Properties, etc can be viewed at &lt;a href="http://www.gmodules.com/ig/creator?url=http://hosting.gmodules.com/ig/gadgets/file/103680291001692068835/SG_CloudFormer.xml&amp;amp;up_MAX_CLOUD_TAG_SIZE=25&amp;amp;up_MIN_CLOUD_TAG_SIZE=8&amp;amp;up_LABEL_BASE_URL=http%3A%2F%2Fdevsac.blogspot.com%2Fsearch%2Flabel&amp;amp;up_FEED_URL=http%3A%2F%2Fdevsac.blogspot.com%2Ffeeds%2Fposts%2Fdefault&amp;amp;synd=open&amp;amp;w=320&amp;amp;h=200&amp;amp;title=SG+Dynamic+Label+Cloud+Former&amp;amp;border=%23ffffff%7C3px%2C1px+solid+%23999999"&gt;this Google page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-6261022073993126654?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/6261022073993126654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2009/02/dynamic-label-cloud-gadget.html#comment-form' title='29 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/6261022073993126654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/6261022073993126654'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2009/02/dynamic-label-cloud-gadget.html' title='Dynamic Label Cloud Gadget'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2IcDDSGLLnc/SaKnlXY5XEI/AAAAAAAAAoo/NAfpjeZhk-0/s72-c/TagCloud.JPG' height='72' width='72'/><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-5247902064950415106</id><published>2008-12-16T00:58:00.003+05:30</published><updated>2009-10-23T15:06:42.834+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Kubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Modem'/><title type='text'>Connecting to the Internet with Reliance NetConnect USB Modem in Kubuntu Hardy 8.04</title><content type='html'>These steps are for Huawei EC325 CDMA modem on Kubuntu Hardy but the same steps could work to install any modem on any linux system (provided the generic driver matches)...&lt;br /&gt;&lt;br /&gt;1) Hardware setup&lt;br /&gt;Plug-in your reliance modem into any usb port and start up your computer (or reboot into Kubuntu if it was running when you plugged it in).&lt;br /&gt;Ensure that you see the flashing light on the reliance modem which indicates that the modem at least the usb port you selected is not disabled and that it has range.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2) Identifying modem device&lt;br /&gt;The default installation of Kubuntu Hardy already has the neccessary drivers for Reliance Netconnect EC325. All that needs to be done is to find out the device name that the OS uses to refer to the modem. Usually this is something like ttyUSB0.&lt;br /&gt;A simple way to find out is to look in the OS bootup logs Use the following command at the command prompt which filters out to only the few lines mentioning modem / USB:&lt;br /&gt;dmesg | grep modem | grep USB&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IcDDSGLLnc/SVfUNzehUdI/AAAAAAAAAmM/Cq0TGFO_FdY/s1600-h/dmesg.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 276px;" src="http://2.bp.blogspot.com/_2IcDDSGLLnc/SVfUNzehUdI/AAAAAAAAAmM/Cq0TGFO_FdY/s400/dmesg.jpg" alt="" id="BLOGGER_PHOTO_ID_5284926021364175314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) KPP Setup&lt;br /&gt;To connect to the net, use the standard software, KPPP, to connect to the Internet. Start up this program from Internet-&gt;KPPP.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfUN6vogTI/AAAAAAAAAmU/lUl0yOmWlzo/s1600-h/kppp1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 178px;" src="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfUN6vogTI/AAAAAAAAAmU/lUl0yOmWlzo/s400/kppp1.jpg" alt="" id="BLOGGER_PHOTO_ID_5284926023314997554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on configure to launch the KPPP Configuration window.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2IcDDSGLLnc/SVfUN2xO6cI/AAAAAAAAAmc/VarEh9sFfSU/s1600-h/kppp2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 323px; height: 400px;" src="http://3.bp.blogspot.com/_2IcDDSGLLnc/SVfUN2xO6cI/AAAAAAAAAmc/VarEh9sFfSU/s400/kppp2.jpg" alt="" id="BLOGGER_PHOTO_ID_5284926022247967170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the Accounts tab of the KPPP Configuration window, click on New... -&gt; Manual Setup.&lt;br /&gt;Give the connection a name, like Reliance.&lt;br /&gt;Add the phone number to dial as #777 .&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2IcDDSGLLnc/SVfUOavlwwI/AAAAAAAAAmk/8kDKluN9TyE/s1600-h/kppp3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 397px;" src="http://4.bp.blogspot.com/_2IcDDSGLLnc/SVfUOavlwwI/AAAAAAAAAmk/8kDKluN9TyE/s400/kppp3.jpg" alt="" id="BLOGGER_PHOTO_ID_5284926031904752386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Leave everything else as default values and press Ok.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IcDDSGLLnc/SVfUOsUyvOI/AAAAAAAAAms/WAMleko0aP4/s1600-h/kppp4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 323px; height: 400px;" src="http://2.bp.blogspot.com/_2IcDDSGLLnc/SVfUOsUyvOI/AAAAAAAAAms/WAMleko0aP4/s400/kppp4.jpg" alt="" id="BLOGGER_PHOTO_ID_5284926036624194786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now in the Modems tab of the KPPP Configuration window, click on New...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfW11KY3dI/AAAAAAAAAm0/hLnk2WKNQeI/s1600-h/kppp5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 323px; height: 400px;" src="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfW11KY3dI/AAAAAAAAAm0/hLnk2WKNQeI/s400/kppp5.jpg" alt="" id="BLOGGER_PHOTO_ID_5284928908034629074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Give your modem a name like HuaweiEC325.&lt;br /&gt;For Modem device, using the value identified in step2, look through the drop-down list and select the entry /dev/xxxx (eg: /dev/ttyUSB0).&lt;br /&gt;Leave everything else as default values and press Ok.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IcDDSGLLnc/SVfW2BSUZYI/AAAAAAAAAm8/k4tr4HP88_4/s1600-h/kppp6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 348px;" src="http://2.bp.blogspot.com/_2IcDDSGLLnc/SVfW2BSUZYI/AAAAAAAAAm8/k4tr4HP88_4/s400/kppp6.jpg" alt="" id="BLOGGER_PHOTO_ID_5284928911289116034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfW2M3DE-I/AAAAAAAAAnE/gnzH8RqxP8M/s1600-h/kppp7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 348px;" src="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfW2M3DE-I/AAAAAAAAAnE/gnzH8RqxP8M/s400/kppp7.jpg" alt="" id="BLOGGER_PHOTO_ID_5284928914395960290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfW2yskK_I/AAAAAAAAAnM/vRbpfrlRne4/s1600-h/kppp8.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 366px; height: 148px;" src="http://1.bp.blogspot.com/_2IcDDSGLLnc/SVfW2yskK_I/AAAAAAAAAnM/vRbpfrlRne4/s400/kppp8.jpg" alt="" id="BLOGGER_PHOTO_ID_5284928924552539122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Press Ok again to leave the KPPP Configuration window.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2IcDDSGLLnc/SVfW23qfw_I/AAAAAAAAAnU/ytU0wsuD_8E/s1600-h/kppp9.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 316px; height: 400px;" src="http://4.bp.blogspot.com/_2IcDDSGLLnc/SVfW23qfw_I/AAAAAAAAAnU/ytU0wsuD_8E/s400/kppp9.jpg" alt="" id="BLOGGER_PHOTO_ID_5284928925886039026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, back in the KPPP main window, select the newly created Account from the Connect to drop-down list. Enter your netconnect mobile number in the Login ID and Password fields.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2IcDDSGLLnc/SVfW_4PbwlI/AAAAAAAAAnc/-Edk6TBU0y4/s1600-h/kppp10.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 166px;" src="http://4.bp.blogspot.com/_2IcDDSGLLnc/SVfW_4PbwlI/AAAAAAAAAnc/-Edk6TBU0y4/s400/kppp10.jpg" alt="" id="BLOGGER_PHOTO_ID_5284929080659788370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click Connect!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-5247902064950415106?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/5247902064950415106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/12/connecting-to-internet-with-reliance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5247902064950415106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5247902064950415106'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/12/connecting-to-internet-with-reliance.html' title='Connecting to the Internet with Reliance NetConnect USB Modem in Kubuntu Hardy 8.04'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2IcDDSGLLnc/SVfUNzehUdI/AAAAAAAAAmM/Cq0TGFO_FdY/s72-c/dmesg.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-8795485798030508251</id><published>2008-12-01T20:35:00.001+05:30</published><updated>2009-02-27T15:08:35.398+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Glassbox'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>Extending Glassbox</title><content type='html'>Glassbox provides method-level diagnosis but the details are limited:&lt;br /&gt;in the Glassbox UI, only the summarized listing of operations is shown.&lt;br /&gt;&lt;br /&gt;However using JMX, break-up of each operation into it’s monitored nested operations and resource access if any, are displayed with average, max time and count, using Glassbox’s built-in monitors for important frameworks (includes servlets/jsp, struts, ejb calls with method name, jdbc calls with details of each prepared statement &amp;amp; more). So Glassbox by default would log your EJB calls, your database calls, your JSP calls, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In spite of this, other details (like parameters for a request, method name in actual class used, etc) for the response to each monitored operation are recorded only if it fails some SLA. In addition, this does not anyway capture names of low-level classes or their methods.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But what if you wanted a customized Glassbox monitoring - what if you were not satisfied with just a high-level EJB call and wanted to see the actual classes and methods called?&lt;br /&gt;&lt;br /&gt;There are 2 ways to do this:&lt;br /&gt;1) Using a simple run-time configuration in an xml file, and with NO CODING&lt;br /&gt;2) Much more powerful customization if you were willing to define custom Aspects and pointcuts.&lt;br /&gt;&lt;br /&gt;This post will stick to the simple way using the xml file.&lt;br /&gt;But I do want to highlight before you proceed that adding more detailed logging means more bloating of PermGen memory-usage (see here on how to increase PermGen). For example, even in Glassbox's built-in jsp monitor’s load-weaving, 1 loader is needed per Jsp, and each loader takes up 1MB.&lt;br /&gt;Also, read this post about Glassbox setup first - see &lt;a href="http://devsac.blogspot.com/2008/11/steps-to-configure-glassbox-for-sun-app.html"&gt;Steps to configure Glassbox for Sun App Server &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ok let's see how to provide a detailed method level monitorining for all the classes in a package you specify.&lt;br /&gt;&lt;br /&gt;First, create a file aop.xml with the following content:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;aspectj&amp;gt;&lt;br /&gt;&amp;lt;weaver&amp;gt;&lt;br /&gt;&amp;lt;exclude within="org.springframework.jmx..*"/&amp;gt;&lt;br /&gt;&amp;lt;!--  don't reweave --&amp;gt;&lt;br /&gt;&amp;lt;exclude within="glassbox.inspector..*"/&amp;gt;&lt;br /&gt;&amp;lt;/weaver&amp;gt;&lt;br /&gt;&amp;lt;aspects&amp;gt;&lt;br /&gt;&amp;lt;concrete-aspect name="YourMonitor2"&lt;br /&gt;extends="glassbox.monitor.ui.TemplateOperationMonitor"&amp;gt;&lt;br /&gt;&amp;lt;pointcut name="methodSignatureControllerExecTarget"&lt;br /&gt;expression="within(com.package.to.monitor..*)"/&amp;gt;&lt;br /&gt;&amp;lt;/concrete-aspect&amp;gt;&lt;br /&gt;&amp;lt;/aspects&amp;gt;&lt;br /&gt;&amp;lt;/aspectj&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next place this in a META-INF folder in any of the directories existing in your classpath.&lt;br /&gt;&lt;br /&gt;That's it!&lt;br /&gt;Next time you start up your server, Glassbox will monitor all the methods of all classes in the package, com.package.to.monitor!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-8795485798030508251?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/8795485798030508251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/12/extending-glassbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8795485798030508251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/8795485798030508251'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/12/extending-glassbox.html' title='Extending Glassbox'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-3538151090805949862</id><published>2008-11-22T21:00:00.001+05:30</published><updated>2009-02-27T15:08:49.358+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Glassbox'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JConsole'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>Connecting to Glassbox using JMX</title><content type='html'>The Glassbox UI is a wonderful way for anyone to quickly identify major bottlenecks. It quickly lists out most of the potential problems and even common solutions if any call exceeds the SLA.&lt;br /&gt;&lt;br /&gt;But if you want to delve into even more details, you would need to use the excellent set of MBeans provided by Glassbox. If you have a default JMX configuration for your Glassbox installation, the following is the connection string:&lt;br /&gt;&lt;div&gt;service:jmx:rmi:///jndi/rmi://localhost:7232/GlassboxTroubleshooter&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;To connect using JConsole, provide this without username and password.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Navigate to Tree-&gt;Glassbox-&gt;stats in the left pane and click on your application for operations monitored by Glassbox - you may have to perform some activity on your application for the monitors to log anything of course.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5275167737512735746" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 291px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_2IcDDSGLLnc/STUpG7UMNAI/AAAAAAAAAlg/kBDluczGFzY/s400/JConsole.JPG" border="0" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-3538151090805949862?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/3538151090805949862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/11/connecting-to-glassbox-using-jmx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3538151090805949862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3538151090805949862'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/11/connecting-to-glassbox-using-jmx.html' title='Connecting to Glassbox using JMX'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2IcDDSGLLnc/STUpG7UMNAI/AAAAAAAAAlg/kBDluczGFzY/s72-c/JConsole.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-2261894032557481889</id><published>2008-11-20T12:43:00.006+05:30</published><updated>2009-10-23T15:30:44.201+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Glassbox'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun One Server'/><title type='text'>Additional Steps if encountering frequent “java.lang.OutOfMemoryError: PermGen space” exception.</title><content type='html'>Glassbox does take up some additional memory slowing the startup. Also, it tends to place additional load in the PermGen (Permanent Generation) memory space - this would result in the Server crashing out with "java.lang.OutOfMemoryError: PermGen space" exception (see &lt;a href="http://blogs.sun.com/fkieviet/entry/classloader_leaks_the_dreaded_java"&gt;http://blogs.sun.com/fkieviet/entry/classloader_leaks_the_dreaded_java&lt;/a&gt; for details).&lt;br /&gt;&lt;br /&gt;The fix is a simple matter of increasing your max PermGen size (default is 64MB in Sun Servers). Use the following options when starting the JVM:&lt;br /&gt;&lt;span class="code"&gt;-XX:+CMSClassUnloadingEnabled&lt;br /&gt;-XX:+CMSPermGenSweepingEnabled&lt;br /&gt;-XX:MaxPermSize=128m&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This actually works for any genuine PermGen error. But note that in most cases, PermGen running out of space is because of inefficient or incorrect cleaning up for Garbage collection - that is, some where in your code, you are unnecessarily keeping references even after use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-2261894032557481889?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/2261894032557481889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/12/additional-steps-if-encountering.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/2261894032557481889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/2261894032557481889'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/12/additional-steps-if-encountering.html' title='Additional Steps if encountering frequent “java.lang.OutOfMemoryError: PermGen space” exception.'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-678602647675811940</id><published>2008-11-13T18:42:00.029+05:30</published><updated>2009-02-25T17:28:41.466+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Glassbox'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun One Server'/><title type='text'>Steps to configure Glassbox for Sun App Server</title><content type='html'>&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br /&gt;Ensure that the steps are being carried out by the same user who created / installed the Sun App Server to avoid read / access issues.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;br /&gt;Sun App Server 8.1&lt;br /&gt;glassbox.war (latest file is available from &lt;a href="http://www.glassbox.com/"&gt;Glassbox&lt;/a&gt; website)&lt;br /&gt;Java 1.4 or above&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Configuration steps:&lt;/strong&gt;&lt;br /&gt;1) Create a new base directory for Glassbox (eg: D:\Sun\glassbox). This should contain the configuration details &amp;amp; library files. I have gathered the neccessary files into &lt;a href="http://groups.google.co.in/group/attachments4myblog/web/glassbox_config.zip?hl=en"&gt;glassbox_config.zip &lt;/a&gt;to make it simple - simply unzip the contents into this directory. See below on how to do this the hard way...&lt;br /&gt;Additional key properties like elapsed time threshold, minimum slow threshold &amp;amp; thread-monitor interval can be specified in glassbox.properties in this directory.&lt;br /&gt;&lt;br /&gt;2) Go to Sun One Admin Console and select Configuration-&gt;JVM Settings. Select the Profiler tab.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://attachments4myblog.googlegroups.com/web/SunOneProfiler.JPG?gda=MD8O2UQAAAA4QBSv5GugYvsJuY_LdKgGieHIFB5i0Cm8Ub-hl4WZRBKVQnvKrQkdIXM6gugLJd1V6u9SiETdg0Q2ffAyHU-dzc4BZkLnSFWX59nr5BxGqA&amp;amp;hl=en"&gt;&lt;img id="BLOGGER_PHOTO_ID_5268142141555411986" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: block; MARGIN: 0px auto; BORDER-LEFT: 0px; WIDTH: 400px; CURSOR: hand; BORDER-BOTTOM: 0px; HEIGHT: 291px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_2IcDDSGLLnc/SRwzXa2tDBI/AAAAAAAAAkk/l1hiU6gWhPY/s400/SunOneProfiler.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Name the profiler, Glassbox, and enable profiler adding the following details :&lt;br /&gt;&lt;em&gt;Classpath:&lt;/em&gt; D:\Sun\glassbox\lib\aspectjweaver.jar${path.separator}D:\Sun\glassbox\lib\glassboxMonitor.jar&lt;br /&gt;&lt;em&gt;JVM Option1&lt;/em&gt;: -Dglassbox.install.dir=D:\Sun\glassbox&lt;br /&gt;&lt;em&gt;JVM Option2:&lt;/em&gt; -javaagent:D:\Sun\glassbox\lib\aspectjweaver.jar&lt;br /&gt;&lt;em&gt;In the above settings, use whatever location chosen as base directory for Glassbox in step 1, if different from D:\Sun\glassbox.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;By doing it this way, you can easily decide when you need Glassbox by coming here and turning on or off the Enable Profiler option.&lt;br /&gt;&lt;br /&gt;3) Deploy glassbox.war on the server. Also modify server.policy to have the following additional entry:&lt;br /&gt;// Following grant block is added for glassbox&lt;br /&gt;grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-modules/glassbox/-" {&lt;br /&gt;permission java.lang.RuntimePermission "setContextClassLoader";&lt;br /&gt;permission java.lang.RuntimePermission "getClassLoader";&lt;br /&gt;permission java.lang.RuntimePermission "createClassLoader";&lt;br /&gt;permission java.security.AllPermission;&lt;br /&gt;};&lt;br /&gt;&lt;em&gt;The Glassbox Web Client would be available at &amp;lt;server-app-url&amp;gt;/glassbox after restart.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;4) Restart the Sun App server. If the agent was installed successfully, the following should be present in the server.log:&lt;br /&gt;“Glassbox Agent has started successfully.”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Obtaining Configuration files from latest glassbox.war&lt;/strong&gt;&lt;br /&gt;Extract all the files from glassbox.war located in the install/glassbox14 directory and copy the files to the target configuration directory.&lt;br /&gt;Move the 2 copied jars into a lib sub-directory.&lt;br /&gt;&lt;br /&gt;The final structure should be as below:&lt;br /&gt;\--------&lt;br /&gt;glassbox.properties&lt;br /&gt;readme.txt&lt;br /&gt;runtime.properties&lt;br /&gt;\lib-----&lt;br /&gt;aspectjweaver.jar&lt;br /&gt;glassboxMonitor.jar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Additional steps for using Glassbox with JVM 1.4&lt;br /&gt;&lt;/strong&gt;If the Sun App Server uses a Sun / IBM 1.4 JVM, the createJavaAdapter has to be updated and added to the JVM start options –Xbootclasspath along with the unmodified file, java14Adapter.jar.&lt;br /&gt;&lt;br /&gt;Extract aspectj14Adapter.jar and createJavaAdapter.jar from the glassbox.war located in install/glassbox14&lt;br /&gt;Run java -jar createJavaAdapter.jar using the Java version you will use to run the server.&lt;br /&gt;Copy the aspectj14Adapter.jar and updated createJavaAdapter.jar to the Glassfish base configuration directory.&lt;br /&gt;Add the following additional JVM options in the Profiler section of Sun App Server:&lt;br /&gt;-Xbootclasspath/p:&lt;config_dir&gt;\java14Adapter.jar&lt;br /&gt;-Xbootclasspath/a:&lt;config_dir&gt;\createJavaAdapter.jar&lt;br /&gt;Restart the Sun App server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Additional steps for allowing Sun App Servers to give remote RMI access in Unix&lt;/strong&gt;&lt;br /&gt;If there are errors when accessing JMX on a different server than the one on which Glassbox is installed, ensure that the target remote server has the given permissions by adding the following in the server.policy file:&lt;br /&gt;grant {&lt;br /&gt;permission java.net.SocketPermission "*:1024-65535", "connect,accept";&lt;br /&gt;};&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-678602647675811940?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/678602647675811940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/11/steps-to-configure-glassbox-for-sun-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/678602647675811940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/678602647675811940'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/11/steps-to-configure-glassbox-for-sun-app.html' title='Steps to configure Glassbox for Sun App Server'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2IcDDSGLLnc/SRwzXa2tDBI/AAAAAAAAAkk/l1hiU6gWhPY/s72-c/SunOneProfiler.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-3407758818261139864</id><published>2008-10-28T20:20:00.030+05:30</published><updated>2010-11-12T00:20:32.839+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Antisamy'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>Cross-site scripting and a simple solution</title><content type='html'>Most of us hardly give security vulnerabilities any consideration when creating a web-application. It's something that takes care of itself right? Mostly we get away with it because our applications may not be affected the moment it goes live. So it becomes a habit to ignore taking care of it.&lt;br /&gt;&lt;br /&gt;But its a ticking time-bomb. Its strange because the cost associated with additional security considerations are negligible compared to the losses that can arise when the application is actually comprised!&lt;br /&gt;&lt;br /&gt;One such vulnerability is XSS or Cross-site scripting. It comes out at number 1 for the second time running in the &lt;a href="http://www.owasp.org/index.php/Top_10_2007"&gt;OWASP Top 10 2007&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;XSS accounts for 80% of today's Internet security vulnerabilities says one source.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;First, let's learn about our adversary. XSS vulnerabilities can be categorized into three distinct types. Each of these can be exposed in a variety of ways - this is only limited by the imagination of the attacker.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DOM-based XSS vulnerability is when the problem exists in the page's client script itself. This shouldn't happen unless your web-application itself is hijacked by a malicious attacker who then adds script that attack "safe" standard local HTML pages (that are usually installed with most applications, including IE). What can be done about it falls more into the scope of a system administrator. The other 2 are our responsibility...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Non-Persistent or Reflected vulnerability is the most common type of XSS. This is seen easily when there are inputs by the client into a web-page and this is displayed on a page returned by the server. Basically, this would mean that only the user who makes the inputs are affected.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then there's Persistent or Second-order or Stored XSS. This is when the impacted data is stored on the server (file/database/LDAP/etc) - it is the most dangerous kind as it can affect any user to whom the compromised data gets displayed to.&lt;/li&gt;&lt;/ul&gt;How does all that sound to those of us who copy/paste a few snippets to address XSS (add code to ensure that no &amp;lt; or &amp;gt; make it through our inout fields, etc.) - although the solution seems to be a matter of restricting user input (or our output), we are all not exactly security experts to know about the dangers (never mind that the experts themselves are having a tought time).&lt;br /&gt;&lt;br /&gt;This is where we can use library/frameworks developed by those who know the range of attacks out there.&lt;br /&gt;&lt;br /&gt;One such tool is &lt;a href="http://www.owasp.org/index.php/Antisamy"&gt;Antisamy&lt;/a&gt;, an open-source free library from OWASP.&lt;br /&gt;Antisamy can be used to verify that provided input (submitted by the user for example) does not contain any XSS vulnerability. It's highly configurable using XML files so that you can decide the amount of security you need for your inputs.&lt;br /&gt;And the best part is that it generates user-friendly responses pointing out the vulnerability which can be shown to the user.&lt;br /&gt;&lt;br /&gt;See below code showing how easy it is to use:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(127, 159, 191);"&gt;@throws &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;PolicyException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(127, 159, 191);"&gt;@throws &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;ScanException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(127, 159, 191);"&gt;@throws &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;IOException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public static &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;void &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;testAntiSamy&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;() &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;throws &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PolicyException, ScanException, IOException &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// Create a sample input, inputString, that can have malicious code as well safe parts.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;String inputString = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;StringBuffer buf = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;StringBuffer&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"This is all normal text.\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"But suddenly out of the blue...\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"An eveil laughter crackles in the cold night...\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"&amp;lt;SCRIPT&amp;gt;alert('HAHAHA');&amp;lt;/SCRIPT&amp;gt;\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"Did you hear that??!!\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"No?\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"How about this twisted one: &amp;lt;SCRIPT&amp;gt;alert(\"HAHAHA\");&amp;lt;/SCRIPT&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(\"HAHAHA\");&amp;lt;/SCRIPT&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(\"HAHAHA\");&amp;lt;/SCRIPT&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(\"HAHAHA\");&amp;lt;/SCRIPT&amp;gt;\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"Or this eveil smile!!! &amp;lt;IMG SRC=\"javascript:alert('XSS');\" /&amp;gt;\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"Its actually worse than the laugh right? Right?\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"ok ok. Heres a normal smile &amp;lt;IMG SRC='javascript' /&amp;gt;\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buf.append&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"Hows that!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;inputString = buf.toString&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;  &lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;//  //readFile1("Antisamy/Other/SampleInput.htm");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.out.println&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"Original input:"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.out.println&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;inputString&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// Use the predefined Antisamy policy file and apply this on the inputString&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Policy policy = Policy.getInstance&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"Antisamy/Sample_policies/antisamy-anythinggoes-1.2.xml"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;AntiSamy as = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;AntiSamy&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;policy&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;CleanResults cr = as.scan&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;inputString&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;    &lt;/span&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// Display cleaned input using getCleanHTML() of CleanResults.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.out.println&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"\nCorrected output:"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.out.println&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cr.getCleanHTML&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;())&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;//Display the errors encountered in the input using getErrorMessages()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.out.println&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"\nError Messages:"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.out.println&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cr.getErrorMessages&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.toString&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.replaceAll&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;".,"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;",.\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;))&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(153, 153, 153);font-size:78%;" &gt;Java Sourcecode to HTML automatically converted code (Java2Html Converter 5.0 [2006-03-04])&lt;br /&gt;by Markus Gebhard markus@jave.de&lt;br /&gt;Further information: &lt;a href="http://www.java2html.de/" target="_blank"&gt;http://www.java2html.de/&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So it's just a matter of taking the input and validating it based on the rules specified in the xml file through the CleanResults class. There are so many useful methods in this class - get all the details by downloading javadocs (get the source too) alongwith the library (make sure you have not just the main Antisamy library but also the supporting libraries) and sample application configuration files from the Antisamy page.&lt;br /&gt;&lt;br /&gt;Practically speaking though, Antisamy is best suited for you when you already have a server-side trip - so its easily used for type 3 XSS. For type 2, if you have a client-side only thing going on, then you have to consider the consequence of having a server round trip just for the validation...&lt;br /&gt;&lt;br /&gt;Have a safer day at work (do share any inputs you may have).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-3407758818261139864?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/3407758818261139864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/10/cross-site-scripting-and-how-to-address.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3407758818261139864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3407758818261139864'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/10/cross-site-scripting-and-how-to-address.html' title='Cross-site scripting and a simple solution'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-7503979747364133596</id><published>2008-10-24T19:40:00.002+05:30</published><updated>2008-11-12T20:14:28.862+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JConsole'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><title type='text'>Using JConsole to connect to an MBeanServer (JMX agent)</title><content type='html'>Here's some insights and tips on accessing the JMX Agent using JConsole.&lt;br /&gt;&lt;br /&gt;JConsole is the most handy way to connect and test your JMX services since it comes with every JDK from Java 5 onwards. If you have your jdk/bin directory included in your path, it's just a matter of running it from a command prompt by typing:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jconsole&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Its usage is pretty straightforward too. Once it's loaded, you can choose to connect from one of 3 options: Local, Remote and Advanced - there's one tab for each of these.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Local - If you had registered your MBeans with the default JVM's MBean Server, select the Local tab. Here, the MBeans will be automatically displayed and all that needs to be done is to click on Connect.&lt;/li&gt;&lt;li&gt;Remote - I find Advanced is actually simpler than this tab - so skipping this...&lt;/li&gt;&lt;li&gt;Advanced - If you had registered your MBean from an application that you deployed on a J2EE server (like Sun One), then there are a few more steps as you have to use the Advanced tab. &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Obtain your JMX connection URL either from the admin console or the server.log (it appears right after the server start-up entry - something like service:jmx:rmi:///jndi/rmi://localhost:8686/management/rmi-jmx-connector). &lt;/li&gt;&lt;li&gt;Type this into the JMX URL field.&lt;/li&gt;&lt;li&gt;Enter your server's username and password into those respective fields as well and click connect.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;p&gt;That's it! You're connected. You'll see a whole array of information - there's a chance you'd get overloaded! Head on over directly to the MBeans tab - here you can view all the MBeans successfully registered on this MBeanServer, in the Tree view on the left. Again, don't worry if you can't find yours at first - there might be lots of internal MBeans that the server registers that are crowding the list. Your MBean should appear in its fully qualified form, i.e. &amp;lt;&amp;lt;packagename&amp;gt;&amp;gt;.&amp;lt;&amp;lt;classname&amp;gt;&amp;gt;. Its pretty straightforward from here on - you can easily find your exposed methods / attributes and invoke / change them too.&lt;br /&gt;&lt;br /&gt;Ok, seemed pretty easy but in real life, you would most probably run intos ome hiccups even before connecting. Most are obvious enough from the error messages. But what if you needed more details than one-line messags to troubleshoot? Unfortunately, the default Jconsole messages are not very helpful.&lt;br /&gt;&lt;br /&gt;This is where you have to override the default values to get full stacktraces and much more.&lt;br /&gt;This is a simple 2 step process: &lt;ol&gt;&lt;li&gt;First download my sample log configuration file &lt;a href="http://groups.google.co.in/group/attachments4myblog/web/logging.properties?hl=en"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;To enable detail messages, start jconsole with an extra argument:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jconsole.exe -J-Djava.util.logging.config.file=&amp;lt;&amp;lt;properties&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;where &amp;lt;&amp;lt;properties&amp;gt;&amp;gt; is the name of the downloaded log configuration file.&lt;/li&gt;&lt;/ol&gt;And you're done. You should get a detailed breakdown of the steps in between and full stacktrace of any errors in the command prompt window from which you launched JConsole.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-7503979747364133596?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/7503979747364133596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/10/using-jconsole-to-connect-to.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/7503979747364133596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/7503979747364133596'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/10/using-jconsole-to-connect-to.html' title='Using JConsole to connect to an MBeanServer (JMX agent)'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-3631305108365256339</id><published>2008-10-23T11:56:00.006+05:30</published><updated>2009-02-27T15:10:24.665+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><title type='text'>Using JMX</title><content type='html'>JMX is an integral part of J2EE but mostly neglected compared to other aspects. Here's some practical learnings.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Understanding&lt;/strong&gt;&lt;br /&gt;JMX is used to manage your application (or even the application server). It's a very simple 3-step process. &lt;ol&gt;&lt;li&gt;You write your Management Beans or MBeans to provide the management functionality.&lt;/li&gt;&lt;li&gt;Then your register your MBean with the MBean Agent (MBean Server).&lt;/li&gt;&lt;li&gt;Now you can manage your application by connecting to the MBean Server and calling the required functionality.&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;When to use&lt;/strong&gt;&lt;br /&gt;The decision of when to forgo the use of configuration files and code to update settings and when to use JMX is not clear-cut. It's definitely a better idea when program management forms a larger part since JMX is very scalable. But I think JMX is an even better idea when you have limited managment requirements and don't want to add a custom user interface module just for the management. In this case, JMX allows you to provide the neccessary interface with just 10 lines of code and use of the ubiquitous JConsole to do the agent connection (see my &lt;a href="http://devsac.blogspot.com/2008/10/using-jconsole-to-connect-to.html"&gt;Using JConsole to connect to an MBeanServer&lt;/a&gt; post on how to use JConsole for this).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-3631305108365256339?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/3631305108365256339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/10/using-jmx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3631305108365256339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3631305108365256339'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/10/using-jmx.html' title='Using JMX'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-5553101341045166893</id><published>2008-10-22T20:22:00.036+05:30</published><updated>2010-10-22T15:16:53.904+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Forever Updated'/><title type='text'>Must have tools for the Smart Java Professional</title><content type='html'>Whether it's planning, design, development, reviewing, testing or tuning, there's a wealth of wonderful free (or nearly!) tools out there for the Java professional. It's not like all of them will be useful all the time... but its one of those things you should be knowing. No one wants to be in the situation of having a flat on a lonely highway and not knowing how to change the tire. It really helps to practice and familiarise with certain necessities even though you may not use them everyday.&lt;br /&gt;&lt;br /&gt;Here's a list of my favourite tools (I'll stick to free / open-source) which I consider every Java professional should have in reaching distance. I will keep updating this post with useful Java tools - may add separate detailed posts for complex tools... would welcome any suggestions to update this list.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IDE&lt;/strong&gt;&lt;br /&gt;There are plenty of excellent Java Editors and this is what most beginners are encouraged to start with. But I think other than the geek-appeal, a more proficient Java professional should use a full-featured Integrated Development Environment (IDE) - don't give excuses like having to use one more program instead of your all-in-one editor is a pain, or that your IDEs hog your system (come on, you shouldn't be coding if your system is that slow!).&lt;br /&gt;My favourite IDE is &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; - it's latest &lt;em&gt;Ganymede&lt;/em&gt; release has different packages based on your usage - Java EE Developer, Java Developer, C/C++ Developer, etc, or just get Eclipse Classic.&lt;br /&gt;Other IDEs (all with J2EE development features):&lt;br /&gt;&lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt; - used to be very slow but I'm seeing a &lt;strong&gt;LOT OF&lt;/strong&gt; good reviews about it now!&lt;br /&gt;&lt;a href="http://otn.oracle.com/products/jdev/content.html"&gt;Oracle JDeveloper&lt;/a&gt; - supposed to be ok&lt;br /&gt;&lt;a href="http://www-306.ibm.com/software/awdtools/studiositedev/"&gt;IBM WebSphere Studio Site Developer&lt;/a&gt; - it's not limited to WebSphere Server btw&lt;br /&gt;&lt;a href="http://www.bea.com/framework.jsp?CNT=index.htm&amp;amp;FP=/content/products/workshop"&gt;WebLogic Workshop&lt;/a&gt; - seems to tie you to the Weblogic Server, although that too comes along in the Free version&lt;br /&gt;In general, the trend is love one and hate the rest! So choose wisely...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;br /&gt;This is a highly neglected area even though it is most fundamental part of any application especially as we go into the future. My one stop site for this is the &lt;a href="http://www.owasp.org/"&gt;Open Web Application Security Project&lt;/a&gt; website - &lt;a href="http://www.owasp.org/index.php/ESAPI"&gt;Enterprise Security API (ESAPI)&lt;/a&gt; &amp;amp; &lt;a href="http://www.owasp.org/index.php/Antisamy"&gt;Antisamy&lt;/a&gt; are available there. Also see my detailed post on &lt;a href="http://devsac.blogspot.com/2008/10/cross-site-scripting-and-how-to-address.html"&gt;Antisamy&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code Review&lt;/strong&gt;&lt;br /&gt;Always ensure any code you touch, whether yours or not, gets time to go through a couple of code review tools. In the heat of reaching a target, developers just can't help taking shortcuts that result in code that can be caught in review tools and some of these mistakes can lead to major headaches at some point or the other.&lt;br /&gt;Some of the common review tools include &lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt;, &lt;a href="http://sourceforge.net/projects/hammurapi"&gt;HammurAPI&lt;/a&gt; &amp;amp; &lt;a href="http://checkstyle.sourceforge.net/"&gt;CheckStyle&lt;/a&gt;. I got some nice feedback for &lt;a href="http://artho.com/jlint/"&gt;JLint&lt;/a&gt; &amp;amp; &lt;a href="http://pmd.sourceforge.net/"&gt;PMD&lt;/a&gt; but I haven't tried them out. Both of these work purely on your source so they are really fast - whereas the other tools actually go through your generated class files and hence would catch logical or even runtime errors.&lt;br /&gt;I should mention that no single review tool does a complete job - when it's upto me, I usually go for a combination of Checkstyle and FindBugs.&lt;br /&gt;&lt;br /&gt;One more useful software is an Eclipse plugin called &lt;a href="http://metrics.sourceforge.net/"&gt;Metrics&lt;/a&gt;. This shows minute details of your code including a very good graphical representation of package dependency.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code Testing&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://junit.org/"&gt;JUnit&lt;/a&gt; is the way to go for me but for J2EE applications, &lt;a href="http://jakarta.apache.org/cactus/"&gt;Cactus&lt;/a&gt; (which extends JUnit) is more suitable if you can stand the complexity. Also, there's &lt;a href="http://webtest.canoo.com/"&gt;Webtest&lt;/a&gt; to test interactions with your Web Application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code Coverage&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://emma.sourceforge.net/"&gt;EMMA&lt;/a&gt; comes to mind as the most comprehensive free tool for this. Emma ensure that there is no unused or poorly used code in use. It can also be used to verify that your Unit Test cases were complete.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;User Interface Development&lt;/strong&gt;&lt;br /&gt;We already know all about the many Frameworks that ultimately give WYSIWYG plugins for our favourite IDE. Here's something different - &lt;a href="http://www.metawidget.org/"&gt;Metawidget&lt;/a&gt; is a 'smart User Interface widget' that populates itself, at runtime, with UI components to match the properties of your business objects - it builds on your underlying framework and so is not competing with it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Version Control&lt;/strong&gt;&lt;br /&gt;This doesn't really come in the category of a developer but just listing it to be complete - CVS and Subversion. See &lt;a href="http://www.developingprogrammers.com/index.php/2005/11/24/cvs-and-subversion-combined-tutorial/"&gt;here&lt;/a&gt; for a good tutorial on how to use these.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;HTTP Analyser&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project"&gt;OpenScarab&lt;/a&gt;: Simple powerful small Java app that inspects all http traffic and shows full request response details - also allows you to tamper inject data... &lt;span style="font-weight: bold;font-size:85%;" &gt;OpenSource, Java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Last Updated: 22-Oct-2010&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-5553101341045166893?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/5553101341045166893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/10/must-have-tools-for-every-smart-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5553101341045166893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/5553101341045166893'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/10/must-have-tools-for-every-smart-java.html' title='Must have tools for the Smart Java Professional'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-7479697157278357563</id><published>2008-10-22T15:38:00.018+05:30</published><updated>2009-02-27T15:42:20.774+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Excel Macro'/><category scheme='http://www.blogger.com/atom/ns#' term='Artifact'/><title type='text'>Macro to fetch email addresses for a list of names from Exchange server</title><content type='html'>I came across an interesting problem the other day... one of my colleagues had left our firm in a hurry. But she wanted to send a farewell mail to all her colleagues - she'd got a list of names by copying the names in the "To" list from a mail opened in her office Outlook. However, these were only names (as they existed in our Exchange Server) and did not contain the actual email address.&lt;br /&gt;&lt;br /&gt;I thought it was a simple thing to give her the email address list corresponding to those names right from my Outlook window... but after a frustrating 60 mins of trying all possible combinations, I had to accept defeat.&lt;br /&gt;&lt;br /&gt;Instead, I made a little macro that does the job - just provide the list of names as on the exchange server, and it will fill the next column with the email addreses. Download the Excel sheet having macro &lt;a href="http://attachments4myblog.googlegroups.com/web/FetchAddress.xls?gda=_ovDu0IAAAA4QBSv5GugYvsJuY_LdKgGvgmriq6A3ClZkOsIM6w8vYR70fJZo5zeS4tgi5Ebl_xV4u3aa4iAIyYQIqbG9naPgh6o8ccLBvP6Chud5KMzIQ&amp;amp;hl=en"&gt;here&lt;/a&gt; &lt;a href="http://groups.google.com/group/attachments4myblog/web/FetchAddress.xls?hl=en"&gt;.&lt;/a&gt;. Check out the Readme worksheet for instructions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; PREREQUISITE&lt;br /&gt;You should have a signed-in session with Outlook connected to your Exchange server before running the macro.&lt;br /&gt;&lt;br /&gt;For those who are curious about how it works, the code simply accesses the Global Address List of your exchange server through your signed in Outlook account, fetches the usernames (cn values from the exchange directory) and then manually appends the company domain (this is configurable) to it. Of course it won't work for those with multiple company domains... You can check out the code in the macro's section of the excel sheet (press Alt-F11 after opening the excel sheet).&lt;br /&gt;&lt;br /&gt;For more robust handling like getting the correct whole smtp address (instead of appending the domain manually) is possible but it would entail using extended MAPI (lots n lots of code) or extra libraries CDO / Redemption with C++.&lt;br /&gt;&lt;br /&gt;But VBA suits &lt;strong&gt;my&lt;/strong&gt; purpose. And that's what good software is all about - meeting the need (not the wants)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-7479697157278357563?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/7479697157278357563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2008/10/macro-for-fetching-email-addresses-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/7479697157278357563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/7479697157278357563'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2008/10/macro-for-fetching-email-addresses-for.html' title='Macro to fetch email addresses for a list of names from Exchange server'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-1914065847225219321</id><published>2001-01-01T23:59:00.002+05:30</published><updated>2008-10-31T13:21:48.416+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Links</title><content type='html'>Blogger Links&lt;br /&gt;&lt;a href="http://webbietips.blogspot.com/"&gt;http://webbietips.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bloggertools.org/"&gt;http://www.bloggertools.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bguide.blogspot.com/"&gt;The Blogger Guide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-1914065847225219321?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/1914065847225219321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2001/01/links-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/1914065847225219321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/1914065847225219321'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2001/01/links-page.html' title='Links'/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-3962285880994251765</id><published>2001-01-01T14:40:00.003+05:30</published><updated>2008-11-03T13:22:45.220+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'></title><content type='html'>Excellent Java Links&lt;br /&gt;&lt;a href="http://www.javaranch.com/"&gt;http://www.javaranch.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.javabeat.net/"&gt;http://www.javabeat.net/&lt;/a&gt;&lt;br /&gt;Java2HTML formatter (online version as well as Eclipse plugin) - &lt;a href="http://www.java2html.de/"&gt;http://www.java2html.de/&lt;/a&gt;&lt;br /&gt;Nice java formatter - &lt;a href="http://www.prettyprinter.de/"&gt;http://www.prettyprinter.de/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-3962285880994251765?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/3962285880994251765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2001/01/excellent-java-links-httpwww.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3962285880994251765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/3962285880994251765'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2001/01/excellent-java-links-httpwww.html' title=''/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2525462180566728820.post-4306221812423586760</id><published>2001-01-01T01:01:00.002+05:30</published><updated>2008-10-23T14:29:53.482+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'></title><content type='html'>&lt;a href="http://apache.org/"&gt;Apache.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2525462180566728820-4306221812423586760?l=devsac.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsac.blogspot.com/feeds/4306221812423586760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://devsac.blogspot.com/2001/01/test2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4306221812423586760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2525462180566728820/posts/default/4306221812423586760'/><link rel='alternate' type='text/html' href='http://devsac.blogspot.com/2001/01/test2.html' title=''/><author><name>Sachin</name><uri>http://www.blogger.com/profile/07150290864964883084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
