01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: *
19: */
20: package org.apache.mina.integration.beans;
21:
22: import java.beans.PropertyEditor;
23: import java.net.InetAddress;
24: import java.net.UnknownHostException;
25:
26: /**
27: * A {@link PropertyEditor} which converts a {@link String} into an
28: * {@link InetAddress}.
29: * This editor simply calls {@link InetAddress#getByName(java.lang.String)}
30: * when converting from a {@link String}, and {@link InetAddress#getHostAddress()}
31: * when converting to a {@link String}.
32: *
33: * @author The Apache MINA Project (dev@mina.apache.org)
34: * @version $Revision: 601972 $, $Date: 2007-12-06 20:34:55 -0700 (Thu, 06 Dec 2007) $
35: *
36: * @see java.net.InetAddress
37: */
38: public class InetAddressEditor extends AbstractPropertyEditor {
39: @Override
40: protected String toText(Object value) {
41: String hostname = ((InetAddress) value).getHostAddress();
42: if (hostname.equals("0:0:0:0:0:0:0:0")
43: || hostname.equals("0.0.0.0")
44: || hostname.equals("00:00:00:00:00:00:00:00")) {
45: hostname = "*";
46: }
47: return hostname;
48: }
49:
50: @Override
51: protected Object toValue(String text)
52: throws IllegalArgumentException {
53: if (text.length() == 0 || text.equals("*")) {
54: return defaultValue();
55: }
56:
57: try {
58: return InetAddress.getByName(text);
59: } catch (UnknownHostException uhe) {
60: IllegalArgumentException iae = new IllegalArgumentException();
61: iae.initCause(uhe);
62: throw iae;
63: }
64: }
65:
66: @Override
67: protected String defaultText() {
68: return "*";
69: }
70:
71: @Override
72: protected Object defaultValue() {
73: try {
74: return InetAddress.getByName("0.0.0.0");
75: } catch (UnknownHostException e) {
76: throw new InternalError();
77: }
78: }
79: }
|