blob: 34bc3e238511cdf4f3d5f264a96feefef9f8c6fa [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="SMILA/Project Concepts/Simple configuration handler" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Project_Concepts/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
<title>SMILA/Project Concepts/Simple configuration handler - Eclipsepedia</title>
<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
<!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Project_Concepts/Simple_configuration_handler";
var wgTitle = "SMILA/Project Concepts/Simple configuration handler";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "15399";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "285824";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>
<!-- Performance mods similar to those for bug 166401 -->
<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>
<!-- Head Scripts -->
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<style type="text/css">/*<![CDATA[*/
.source-java {line-height: normal; font-size: medium;}
.source-java li {line-height: normal;}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for java
* CSS class: source-java, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)
*/
.source-java .de1, .source-java .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
.source-java {}
.source-java .head {}
.source-java .foot {}
.source-java .imp {font-weight: bold; color: red;}
.source-java .ln-xtra {color: #cc0; background-color: #ffc;}
.source-java li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
.source-java li.li2 {font-weight: bold;}
.source-java .kw1 {color: #7F0055; font-weight: bold;}
.source-java .kw2 {color: #7F0055; font-weight: bold;}
.source-java .kw3 {color: #000000; font-weight: normal}
.source-java .kw4 {color: #7F0055; font-weight: bold;}
.source-java .co1 {color: #3F7F5F; font-style: italic;}
.source-java .co2 {color: #3F7F5F;}
.source-java .co3 {color: #3F7F5F; font-style: italic; font-weight: bold;}
.source-java .coMULTI {color: #3F5FBF; font-style: italic;}
.source-java .es0 {color: #000000;}
.source-java .br0 {color: #000000;}
.source-java .st0 {color: #2A00ff;}
.source-java .nu0 {color: #000000;}
.source-java .me1 {color: #000000;}
.source-java .me2 {color: #000000;}
/*]]>*/
</style>
<style type="text/css">/*<![CDATA[*/
@import "/index.php?title=MediaWiki:Geshi.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000";
/*]]>*/
</style><link rel="stylesheet" type="text/css" href="Simple_configuration_handler.html" /> </head>
<body class="mediawiki ns-0 ltr page-SMILA_Project_Concepts_Simple_configuration_handler">
<div id="globalWrapper">
<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->
<div id="header">
<div id="header-graphic">
<img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
</div>
<!-- Pulled 101409 Mward -->
<div class="portlet" id="p-personal">
<div class="pBody">
<ul>
<li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Project_Concepts/Simple_configuration_handler">Log in</a></li>
</ul>
</div>
</div>
<div id="header-icons">
<div id="sites">
<ul id="sitesUL">
<li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
<li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
<li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
<li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
<li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
<li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
</ul>
</div>
</div>
</div>
<!-- NEW HEADER STUFF HERE -->
<div id="header-menu">
<div id="header-nav">
<ul> <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li> <li><a href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li>
<li><a href="http://www.eclipse.org/users/" target="_self">Users</a></li>
<li><a href="http://www.eclipse.org/membership/" target="_self">Members</a></li>
<li><a href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li>
<li><a href="http://www.eclipse.org/resources/" target="_self">Resources</a></li>
<li><a href="http://www.eclipse.org/projects/" target="_self">Projects</a></li>
<li><a href="http://www.eclipse.org/org/" target="_self">About Us</a></li>
</ul>
</div>
<div id="header-utils">
<!-- moved the search window here -->
<form action="http://wiki.eclipse.org/Special:Search" >
<input class="input" name="search" type="text" accesskey="f" value="" />
<input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
<input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text" value="Search" />
</form>
</div>
</div>
<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->
<!--Started nav rip here-->
<!-- these are the nav controls main page, changes etc -->
<div id="novaContent" class="faux">
<div id="leftcol">
<ul id="leftnav">
<!-- these are the page controls, edit history etc -->
<li class="separator"><a class="separator">Navigation &#160;&#160;</li>
<li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
<li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
<li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
<li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
<li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
<li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
<li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>
<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Project_Concepts/Simple_configuration_handler">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Project_Concepts/Simple_configuration_handler">Related changes</a></li>
<!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Simple_configuration_handler&amp;printable=yes">Printable version</a></li> <li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Simple_configuration_handler&amp;oldid=285824">Permanent link</a></li> </ul>
</div>
<!-- Additions and mods for leftside nav End here -->
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<div id="tabs">
<ul class="primary">
<li class="active"><a href="Simple_configuration_handler.html"><span class="tab">Page</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Project_Concepts/Simple_configuration_handler&amp;action=edit"><span class="tab">Discussion</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Simple_configuration_handler&amp;action=edit"><span class="tab">View source</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Simple_configuration_handler&amp;action=history"><span class="tab">History</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Project%20Concepts/Simple%20configuration%20handler"><span class="tab">Edit</span></a></li>
</ul>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<h1 class="firstHeading">SMILA/Project Concepts/Simple configuration handler</h1>
<div id="bodyContent">
<h3 id="siteSub">From Eclipsepedia</h3>
<div id="contentSub"><span class="subpages">&lt; <a href="../../SMILA.html" title="SMILA">SMILA</a> | <a href="../Project_Concepts.1.html" title="SMILA/Project Concepts">Project Concepts</a></span></div>
<div id="jump-to-nav">Jump to: <a href="Simple_configuration_handler.html#column-one">navigation</a>, <a href="Simple_configuration_handler.html#searchInput">search</a></div> <!-- start content -->
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="Simple_configuration_handler.html#Description"><span class="tocnumber">1</span> <span class="toctext">Description</span></a></li>
<li class="toclevel-1"><a href="Simple_configuration_handler.html#Usage"><span class="tocnumber">2</span> <span class="toctext">Usage</span></a>
<ul>
<li class="toclevel-2"><a href="Simple_configuration_handler.html#Configuring_the_configuration_folder"><span class="tocnumber">2.1</span> <span class="toctext">Configuring the configuration folder</span></a></li>
<li class="toclevel-2"><a href="Simple_configuration_handler.html#JavaDoc"><span class="tocnumber">2.2</span> <span class="toctext">JavaDoc</span></a></li>
<li class="toclevel-2"><a href="Simple_configuration_handler.html#Which_methods_have_a_bundle_fallback_and_which_not"><span class="tocnumber">2.3</span> <span class="toctext">Which methods have a bundle fallback and which not</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="Simple_configuration_handler.html#Example"><span class="tocnumber">3</span> <span class="toctext">Example</span></a></li>
</ul>
</li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="Description"></a><h2> <span class="mw-headline"> Description </span></h2>
<p>Many of the SMILA bundles require configuration files. The <tt>org.eclipse.smila.utils.config.ConfigUtils</tt> support developers in accessing the configuration files.
</p><p>By default the bundle's configuration files reside in a folder with the same name as the full qualified bundle name in a <tt>configuration</tt> folder.
</p><p>For example the Jobmanager (bundle name is <tt>org.eclipse.smila.jobmanager</tt>) configuration resides in <tt>configuration/org.eclipse.smila.jobmanager</tt> and consists of several json files the Jobmanager accesses through the ConfigUtils.
</p>
<a name="Usage"></a><h2> <span class="mw-headline"> Usage </span></h2>
<p>To use the <tt>ConfigUtils</tt> you have to import the package <tt>org.eclipse.smila.utils.config</tt>.
</p><p>The ConfigUtils class provides several convenience methods to list or access files or streams in the bundle's configuration folder. This folder can be
</p>
<ul><li> a central config folder
</li><li> a default config delivered and deployed with the bundle (only for streams and properties, see below)
</li></ul>
<p>I.e. if a configuration file is requested, the central configuration folder is searched first, if there is no such file, the bundle will be examined for a fallback file and then this fallback file will be loaded, if it exists. If the requested file could not be determined or accessed, a <tt>ConfigurationLoadException</tt> will be thrown.
</p>
<a name="Configuring_the_configuration_folder"></a><h3> <span class="mw-headline"> Configuring the configuration folder </span></h3>
<p>The central configuration folder will be determined in the following order:
</p>
<ul><li> a system property of the name <tt>org.eclipse.smila.utils.config.root</tt>
</li><li> an environment variable of the name <tt>org.eclipse.smila.utils.config.root</tt>
</li><li> <tt>&lt;org.eclipse.core.runtime.Platform.getInstallLocation()&gt;/configuration</tt> (which will always yield a folder)
</li></ul>
<a name="JavaDoc"></a><h3> <span class="mw-headline"> JavaDoc </span></h3>
<p>The ConfigUtils' JavaDoc can be found <a href="http://build.eclipse.org/rt/smila/javadoc/current/org/eclipse/smila/utils/config/ConfigUtils.html" class="external text" title="http://build.eclipse.org/rt/smila/javadoc/current/org/eclipse/smila/utils/config/ConfigUtils.html" rel="nofollow">here</a>.
</p>
<a name="Which_methods_have_a_bundle_fallback_and_which_not"></a><h3> <span class="mw-headline"> Which methods have a bundle fallback and which not </span></h3>
<p>Not all methods really look up the entries in the bundle if the files cannot be found in the configuration folder. The reason is that files cannot be loaded from the bundle, only streams can.
</p>
<ul><li>Lookup in the application's configuration folder only:
<ul><li> getConfigFile
</li><li> getConfigFilePath
</li></ul>
</li><li>Lookup all entries from the application's configuration folder if present or (only if no such folder has been found) list fallbacks from the bundle:
<ul><li> getConfigEntries
</li></ul>
</li><li>First look up in the application's configuration folder, if no such file exists, look up fallback in the bundle
<ul><li> getConfigStream
</li><li> getConfigProperties
</li><li> getConfigContent
</li></ul>
</li></ul>
<a name="Example"></a><h2> <span class="mw-headline"> Example </span></h2>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw3">String</span> BUNDLE_ID = <span class="st0">&quot;org.eclipse.smila.jobmanager&quot;</span>;
&nbsp;
...
&nbsp;
<span class="kw1">final</span> <span class="kw3">InputStream</span> bucketsJson =
ConfigUtils.<span class="me1">getConfigStream</span><span class="br0">&#40;</span>BUNDLE_ID, <span class="st0">&quot;buckets.json&quot;</span><span class="br0">&#41;</span>;
<span class="kw1">try</span> <span class="br0">&#123;</span>
<span class="kw1">final</span> AnyMap bucketsAny = <span class="br0">&#40;</span>AnyMap<span class="br0">&#41;</span> _anyReader.<span class="me1">readJsonStream</span><span class="br0">&#40;</span>bucketsJson<span class="br0">&#41;</span>;
&nbsp;
...
&nbsp;
<span class="br0">&#125;</span> <span class="kw1">finally</span> <span class="br0">&#123;</span>
IOUtils.<span class="me1">closeQuietly</span><span class="br0">&#40;</span>bucketsJson<span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></div>
<p>This snippet will load a file "buckets.json" from either the applications configuration folder <tt>config/org.eclipse.smila.jobmanager/buckets.json</tt> or if that did not exist from the same path within the bundle and converts it into an <tt>AnyMap</tt>.
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw3">String</span> BUNDLE_ID = <span class="st0">&quot;org.eclipse.smila.importing.state.objectstore&quot;</span>;
&nbsp;
...
&nbsp;
<span class="kw3">Properties</span> props;
<span class="kw1">try</span> <span class="br0">&#123;</span>
props = ConfigUtils.<span class="me1">getConfigProperties</span><span class="br0">&#40;</span>BUNDLE_ID, <span class="st0">&quot;deltastore.properties&quot;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw1">final</span> <span class="kw3">Exception</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
_log.<span class="me1">info</span><span class="br0">&#40;</span><span class="st0">&quot;No configuration &quot;</span> + BUNDLE_ID + <span class="st0">&quot;/&quot;</span> + <span class="st0">&quot; found, using default settings.&quot;</span><span class="br0">&#41;</span>;
props = <span class="kw1">new</span> <span class="kw3">Properties</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></div>
<p>This snippet loads properties from either the applications configuration folder <tt>configuration/org.eclipse.smila.importing.state.objectstore</tt> or the same path within the bundle itself.
</p>
<!--
NewPP limit report
Preprocessor node count: 26/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->
<!-- Saved in parser cache with key wikidb:pcache:idhash:15399-0!1!0!!en!2!edit=0 and timestamp 20120202171431 -->
<div class="printfooter">
Retrieved from "<a href="Simple_configuration_handler.html">http://wiki.eclipse.org/SMILA/Project_Concepts/Simple_configuration_handler</a>"</div>
<!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<!-- Yoink of toolbox for phoenix moved up -->
</div>
</div>
<div id="clearFooter"/>
<div id="footer" >
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
</ul>
<span id="copyright">Copyright &copy; 2012 The Eclipse Foundation. All Rights Reserved</span>
<p id="footercredit">This page was last modified 15:34, 23 January 2012 by <a href="http://wiki.eclipse.org/User:Andreas.schank.attensity.com" title="User:Andreas.schank.attensity.com">A. Schank</a>. Based on work by <a href="http://wiki.eclipse.org/User:Juergen.schumacher.empolis.com" title="User:Juergen.schumacher.empolis.com">Juergen Schumacher</a> and <a href="http://wiki.eclipse.org/index.php?title=User:Dhazin.gmail.com&amp;action=edit" class="new" title="User:Dhazin.gmail.com">Dmitry Hazin</a>.</p>
<p id="footerviews">This page has been accessed 2,802 times.</p>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-910670-4");
pageTracker._trackPageview();
</script>
<!-- <div class="visualClear"></div> -->
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>
<!-- Served in 0.052 secs. --></body></html>