KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > common > propertyeditor > ArrayPropertyEditorAdapter


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 package org.apache.geronimo.common.propertyeditor;
19
20 import java.beans.PropertyEditor JavaDoc;
21 import java.beans.PropertyEditorSupport JavaDoc;
22 import java.lang.reflect.Array JavaDoc;
23 import java.util.LinkedList JavaDoc;
24 import java.util.List JavaDoc;
25 import java.util.StringTokenizer JavaDoc;
26
27 /**
28  * Adapter for editing array types.
29  *
30  * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
31  */

32 public final class ArrayPropertyEditorAdapter extends PropertyEditorSupport JavaDoc {
33     private Class JavaDoc type;
34     private PropertyEditor JavaDoc editor;
35
36     public ArrayPropertyEditorAdapter(final Class JavaDoc type, final PropertyEditor JavaDoc editor) {
37         if (type == null) {
38             throw new IllegalArgumentException JavaDoc("Type is null");
39         }
40         if (editor == null) {
41             throw new IllegalArgumentException JavaDoc("Editor is null");
42         }
43
44         this.type = type;
45         this.editor = editor;
46     }
47
48     public void setAsText(String JavaDoc text) {
49         if (text == null || text.length() == 0) {
50             setValue(null);
51         } else {
52             StringTokenizer JavaDoc stok = new StringTokenizer JavaDoc(text, ",");
53             final List JavaDoc list = new LinkedList JavaDoc();
54
55             while (stok.hasMoreTokens()) {
56                 editor.setAsText(stok.nextToken());
57                 list.add(editor.getValue());
58             }
59
60             Object JavaDoc array = Array.newInstance(type, list.size());
61             for (int i = 0; i < list.size(); i++) {
62                 Array.set(array, i, list.get(i));
63             }
64
65             setValue(array);
66         }
67     }
68
69     public String JavaDoc getAsText() {
70         Object JavaDoc[] objects = (Object JavaDoc[]) getValue();
71         if (objects == null || objects.length == 0) {
72             return null;
73         }
74
75         StringBuffer JavaDoc result = new StringBuffer JavaDoc(String.valueOf(objects[0]));
76         for (int i = 1; i < objects.length; i++) {
77             result.append(",").append(objects[i]);
78         }
79
80         return result.toString();
81
82     }
83 }
84
Popular Tags