<!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=UTF-8" />
<title>CollectionEditor xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/integration/beans/CollectionEditor.html">View Javadoc</a></div><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>  <em class="jxr_comment"> */</em>
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">package</strong> org.apache.mina.integration.beans;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.beans.PropertyEditor;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.regex.Matcher;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.regex.Pattern;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment">/**</em>
<a name="29" href="#29">29</a>  <em class="jxr_javadoccomment"> * A {@link PropertyEditor} which converts a {@link String} into</em>
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * a {@link Collection} and vice versa.</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> *</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * @version $Revision: 601229 $, $Date: 2007-12-05 00:13:18 -0700 (Wed, 05 Dec 2007) $</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> */</em>
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/integration/beans/CollectionEditor.html">CollectionEditor</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/mina/integration/beans/AbstractPropertyEditor.html">AbstractPropertyEditor</a> {
<a name="36" href="#36">36</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Pattern ELEMENT = Pattern.compile(
<a name="37" href="#37">37</a>              <span class="jxr_string">"([,&#92;&#92;s]+)|"</span> + <em class="jxr_comment">// Delimiter</em>
<a name="38" href="#38">38</a>              <span class="jxr_string">"(?&lt;=\&quot;)((?:&#92;&#92;&#92;&#92;\&quot;|&#92;&#92;&#92;&#92;'|&#92;&#92;&#92;&#92;&#92;&#92;&#92;&#92;|&#92;&#92;&#92;&#92; |[^\&quot;])*)(?=\&quot;)|"</span> +
<a name="39" href="#39">39</a>              <span class="jxr_string">"(?&lt;=')((?:&#92;&#92;&#92;&#92;\&quot;|&#92;&#92;&#92;&#92;'|&#92;&#92;&#92;&#92;&#92;&#92;&#92;&#92;|&#92;&#92;&#92;&#92; |[^'])*)(?=')|"</span> +
<a name="40" href="#40">40</a>              <span class="jxr_string">"((?:[^&#92;&#92;&#92;&#92;&#92;&#92;s'\&quot;,]|&#92;&#92;&#92;&#92; |&#92;&#92;&#92;&#92;\&quot;|&#92;&#92;&#92;&#92;')+)"</span>);
<a name="41" href="#41">41</a>      
<a name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Class&lt;?&gt; elementType;
<a name="43" href="#43">43</a>      
<a name="44" href="#44">44</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/integration/beans/CollectionEditor.html">CollectionEditor</a>(Class&lt;?&gt; elementType) {
<a name="45" href="#45">45</a>          <strong class="jxr_keyword">if</strong> (elementType == <strong class="jxr_keyword">null</strong>) {
<a name="46" href="#46">46</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> NullPointerException(<span class="jxr_string">"elementType"</span>);
<a name="47" href="#47">47</a>          }
<a name="48" href="#48">48</a>          
<a name="49" href="#49">49</a>          <strong class="jxr_keyword">this</strong>.elementType = elementType;
<a name="50" href="#50">50</a>          getElementEditor();
<a name="51" href="#51">51</a>          setTrimText(false);
<a name="52" href="#52">52</a>      }
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> PropertyEditor getElementEditor() {
<a name="55" href="#55">55</a>          PropertyEditor e = PropertyEditorFactory.getInstance(elementType);
<a name="56" href="#56">56</a>          <strong class="jxr_keyword">if</strong> (e == <strong class="jxr_keyword">null</strong>) {
<a name="57" href="#57">57</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
<a name="58" href="#58">58</a>                      <span class="jxr_string">"No "</span> + PropertyEditor.<strong class="jxr_keyword">class</strong>.getSimpleName() + 
<a name="59" href="#59">59</a>                      <span class="jxr_string">" found for "</span> + elementType.getSimpleName() + '.');
<a name="60" href="#60">60</a>          }
<a name="61" href="#61">61</a>          <strong class="jxr_keyword">return</strong> e;
<a name="62" href="#62">62</a>      }
<a name="63" href="#63">63</a>  
<a name="64" href="#64">64</a>      @Override
<a name="65" href="#65">65</a>      @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
<a name="66" href="#66">66</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> String toText(Object value) {
<a name="67" href="#67">67</a>          StringBuilder buf = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="68" href="#68">68</a>          <strong class="jxr_keyword">for</strong> (Object v: (Collection) value) {
<a name="69" href="#69">69</a>              <strong class="jxr_keyword">if</strong> (v == <strong class="jxr_keyword">null</strong>) {
<a name="70" href="#70">70</a>                  v = defaultElement();
<a name="71" href="#71">71</a>              }
<a name="72" href="#72">72</a>              
<a name="73" href="#73">73</a>              PropertyEditor e = PropertyEditorFactory.getInstance(v);
<a name="74" href="#74">74</a>              <strong class="jxr_keyword">if</strong> (e == <strong class="jxr_keyword">null</strong>) {
<a name="75" href="#75">75</a>                  <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
<a name="76" href="#76">76</a>                          <span class="jxr_string">"No "</span> + PropertyEditor.<strong class="jxr_keyword">class</strong>.getSimpleName() + 
<a name="77" href="#77">77</a>                          <span class="jxr_string">" found for "</span> + v.getClass().getSimpleName() + '.');
<a name="78" href="#78">78</a>              }            
<a name="79" href="#79">79</a>              e.setValue(v);
<a name="80" href="#80">80</a>              <em class="jxr_comment">// TODO normalize.</em>
<a name="81" href="#81">81</a>              String s = e.getAsText();
<a name="82" href="#82">82</a>              buf.append(s);
<a name="83" href="#83">83</a>              buf.append(<span class="jxr_string">", "</span>);
<a name="84" href="#84">84</a>          }
<a name="85" href="#85">85</a>          
<a name="86" href="#86">86</a>          <em class="jxr_comment">// Remove the last delimiter.</em>
<a name="87" href="#87">87</a>          <strong class="jxr_keyword">if</strong> (buf.length() &gt;= 2) {
<a name="88" href="#88">88</a>              buf.setLength(buf.length() - 2);
<a name="89" href="#89">89</a>          }
<a name="90" href="#90">90</a>          <strong class="jxr_keyword">return</strong> buf.toString();
<a name="91" href="#91">91</a>      }
<a name="92" href="#92">92</a>  
<a name="93" href="#93">93</a>      @Override
<a name="94" href="#94">94</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> Object toValue(String text) <strong class="jxr_keyword">throws</strong> IllegalArgumentException {
<a name="95" href="#95">95</a>          PropertyEditor e = getElementEditor();
<a name="96" href="#96">96</a>          Collection&lt;Object&gt; answer = newCollection();
<a name="97" href="#97">97</a>          Matcher m = ELEMENT.matcher(text);
<a name="98" href="#98">98</a>          <strong class="jxr_keyword">boolean</strong> matchedDelimiter = <strong class="jxr_keyword">true</strong>;
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>         <strong class="jxr_keyword">while</strong> (m.find()) {
<a name="101" href="#101">101</a>             <strong class="jxr_keyword">if</strong> (m.group(1) != <strong class="jxr_keyword">null</strong>) {
<a name="102" href="#102">102</a>                 matchedDelimiter = <strong class="jxr_keyword">true</strong>;
<a name="103" href="#103">103</a>                 <strong class="jxr_keyword">continue</strong>;
<a name="104" href="#104">104</a>             }
<a name="105" href="#105">105</a>             
<a name="106" href="#106">106</a>             <strong class="jxr_keyword">if</strong> (!matchedDelimiter) {
<a name="107" href="#107">107</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"No delimiter between elements: "</span> + text);
<a name="108" href="#108">108</a>             }
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>             <em class="jxr_comment">// TODO escape here.</em>
<a name="111" href="#111">111</a>             e.setAsText(m.group());
<a name="112" href="#112">112</a>             answer.add(e.getValue());
<a name="113" href="#113">113</a>             
<a name="114" href="#114">114</a>             matchedDelimiter = false;
<a name="115" href="#115">115</a>             <strong class="jxr_keyword">if</strong> (m.group(2) != <strong class="jxr_keyword">null</strong> || m.group(3) != <strong class="jxr_keyword">null</strong>) {
<a name="116" href="#116">116</a>                 <em class="jxr_comment">// Skip the last '&quot;'.</em>
<a name="117" href="#117">117</a>                 m.region(m.end() + 1, m.regionEnd());
<a name="118" href="#118">118</a>             }
<a name="119" href="#119">119</a>         }
<a name="120" href="#120">120</a>         
<a name="121" href="#121">121</a>         <strong class="jxr_keyword">return</strong> answer;
<a name="122" href="#122">122</a>     }
<a name="123" href="#123">123</a>     
<a name="124" href="#124">124</a>     <strong class="jxr_keyword">protected</strong> Collection&lt;Object&gt; newCollection() {
<a name="125" href="#125">125</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> ArrayList&lt;Object&gt;();
<a name="126" href="#126">126</a>     }
<a name="127" href="#127">127</a>     
<a name="128" href="#128">128</a>     <strong class="jxr_keyword">protected</strong> Object defaultElement() {
<a name="129" href="#129">129</a>         PropertyEditor e = PropertyEditorFactory.getInstance(elementType);
<a name="130" href="#130">130</a>         <strong class="jxr_keyword">if</strong> (e == <strong class="jxr_keyword">null</strong>) {
<a name="131" href="#131">131</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="132" href="#132">132</a>         }
<a name="133" href="#133">133</a>         
<a name="134" href="#134">134</a>         <strong class="jxr_keyword">if</strong> (e instanceof AbstractPropertyEditor) {
<a name="135" href="#135">135</a>             <strong class="jxr_keyword">return</strong> ((AbstractPropertyEditor) e).defaultValue();
<a name="136" href="#136">136</a>         }
<a name="137" href="#137">137</a> 
<a name="138" href="#138">138</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="139" href="#139">139</a>     }
<a name="140" href="#140">140</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

