1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
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 <a href="http://mina.apache.org">Apache MINA Project</a>
34 *
35 * @see java.net.InetAddress
36 */
37 public class InetAddressEditor extends AbstractPropertyEditor {
38 @Override
39 protected String toText(Object value) {
40 String hostname = ((InetAddress) value).getHostAddress();
41 if (hostname.equals("0:0:0:0:0:0:0:0") || hostname.equals("0.0.0.0") ||
42 hostname.equals("00:00:00:00:00:00:00:00")) {
43 hostname = "*";
44 }
45 return hostname;
46 }
47
48 @Override
49 protected Object toValue(String text) throws IllegalArgumentException {
50 if (text.length() == 0 || text.equals("*")) {
51 return defaultValue();
52 }
53
54 try {
55 return InetAddress.getByName(text);
56 } catch (UnknownHostException uhe) {
57 IllegalArgumentException iae = new IllegalArgumentException();
58 iae.initCause(uhe);
59 throw iae;
60 }
61 }
62
63 @Override
64 protected String defaultText() {
65 return "*";
66 }
67
68 @Override
69 protected Object defaultValue() {
70 try {
71 return InetAddress.getByName("0.0.0.0");
72 } catch (UnknownHostException e) {
73 throw new InternalError();
74 }
75 }
76 }