<!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>WebServicesTckIT xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_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="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.chemistry.opencmis.fit.tck;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="22" href="#22">22</a>  
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.SessionParameter;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.BindingType;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/chemistry/opencmis/fit/tck/WebServicesTckIT.html">WebServicesTckIT</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/chemistry/opencmis/fit/tck/AbstractTckIT.html">AbstractTckIT</a> {
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String WEBSERVICES_PATH = <span class="jxr_string">"/opencmis/services/"</span>;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>      @Override
<a name="31" href="#31">31</a>      <strong class="jxr_keyword">public</strong> Map&lt;String, String&gt; getSessionParameters() {
<a name="32" href="#32">32</a>          Map&lt;String, String&gt; parameters = getBaseSessionParameters();
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>          String url = <span class="jxr_string">"http://"</span> + HOST + <span class="jxr_string">":"</span> + PORT + WEBSERVICES_PATH;
<a name="35" href="#35">35</a>  
<a name="36" href="#36">36</a>          parameters.put(SessionParameter.BINDING_TYPE, BindingType.WEBSERVICES.value());
<a name="37" href="#37">37</a>          parameters.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE, url + <span class="jxr_string">"RepositoryService?wsdl"</span>);
<a name="38" href="#38">38</a>          parameters.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE, url + <span class="jxr_string">"NavigationService?wsdl"</span>);
<a name="39" href="#39">39</a>          parameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE, url + <span class="jxr_string">"ObjectService?wsdl"</span>);
<a name="40" href="#40">40</a>          parameters.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE, url + <span class="jxr_string">"VersioningService?wsdl"</span>);
<a name="41" href="#41">41</a>          parameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE, url + <span class="jxr_string">"DiscoveryService?wsdl"</span>);
<a name="42" href="#42">42</a>          parameters.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE, url + <span class="jxr_string">"RelationshipService?wsdl"</span>);
<a name="43" href="#43">43</a>          parameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE, url + <span class="jxr_string">"MultiFilingService?wsdl"</span>);
<a name="44" href="#44">44</a>          parameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE, url + <span class="jxr_string">"PolicyService?wsdl"</span>);
<a name="45" href="#45">45</a>          parameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE, url + <span class="jxr_string">"ACLService?wsdl"</span>);
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>          <strong class="jxr_keyword">return</strong> parameters;
<a name="48" href="#48">48</a>      }
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      @Override
<a name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> BindingType getBindingType() {
<a name="52" href="#52">52</a>          <strong class="jxr_keyword">return</strong> BindingType.WEBSERVICES;
<a name="53" href="#53">53</a>      }
<a name="54" href="#54">54</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

