<!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">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /><title>ConfigurationManagerTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../../../apidocs/org/apache/axis2/savan/ConfigurationManagerTest.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> * Copyright 2004,2005 The Apache Software Foundation.</em>
<a name="3" href="#3">3</a>   <em class="comment"> *</em>
<a name="4" href="#4">4</a>   <em class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</em>
<a name="5" href="#5">5</a>   <em class="comment"> * you may not use this file except in compliance with the License.</em>
<a name="6" href="#6">6</a>   <em class="comment"> * You may obtain a copy of the License at</em>
<a name="7" href="#7">7</a>   <em class="comment"> *</em>
<a name="8" href="#8">8</a>   <em class="comment"> *      <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="9" href="#9">9</a>   <em class="comment"> *</em>
<a name="10" href="#10">10</a>  <em class="comment"> * Unless required by applicable law or agreed to in writing, software</em>
<a name="11" href="#11">11</a>  <em class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="12" href="#12">12</a>  <em class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="13" href="#13">13</a>  <em class="comment"> * See the License for the specific language governing permissions and</em>
<a name="14" href="#14">14</a>  <em class="comment"> * limitations under the License.</em>
<a name="15" href="#15">15</a>  <em class="comment"> */</em>
<a name="16" href="#16">16</a>  
<a name="17" href="#17">17</a>  <strong>package</strong> org.apache.axis2.savan;
<a name="18" href="#18">18</a>  
<a name="19" href="#19">19</a>  <strong>import</strong> java.io.File;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong>import</strong> org.apache.savan.SavanException;
<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.savan.configuration.ConfigurationManager;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong>import</strong> junit.framework.TestCase;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../org/apache/axis2/savan/ConfigurationManagerTest.html">ConfigurationManagerTest</a> <strong>extends</strong> TestCase {
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  	<strong>public</strong> <strong>void</strong> testFromXMLFile () throws SavanException {
<a name="29" href="#29">29</a>  		
<a name="30" href="#30">30</a>          File baseDir = <strong>new</strong> File(<span class="string">""</span>);
<a name="31" href="#31">31</a>  	
<a name="32" href="#32">32</a>          String testRource = baseDir.getAbsolutePath() + File.separator + <span class="string">"src"</span> + File.separator + <span class="string">"test"</span> + File.separator + <span class="string">"resources"</span>;
<a name="33" href="#33">33</a>          String testConfigurationFile = testRource + File.separator + <span class="string">"savan-config-test.xml"</span>;
<a name="34" href="#34">34</a>          
<a name="35" href="#35">35</a>  		File f = <strong>new</strong> File (testConfigurationFile);  <em class="comment">//test-resources configuration file.</em>
<a name="36" href="#36">36</a>  		<strong>if</strong> (!f.isFile())
<a name="37" href="#37">37</a>  			<strong>throw</strong> <strong>new</strong> SavanException (<span class="string">"Cant find the test configuration file"</span>);
<a name="38" href="#38">38</a>  		
<a name="39" href="#39">39</a>  		ConfigurationManager cm = <strong>new</strong> ConfigurationManager ();
<a name="40" href="#40">40</a>  		cm.configure(f);
<a name="41" href="#41">41</a>  		
<a name="42" href="#42">42</a>  		
<a name="43" href="#43">43</a>  	}
<a name="44" href="#44">44</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

