001 /******************************************************************************* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 *******************************************************************************/ 019 package org.apache.commons.convert; 020 021 import java.io.IOException; 022 import java.net.InetAddress; 023 import java.net.MalformedURLException; 024 import java.net.URI; 025 import java.net.URISyntaxException; 026 import java.net.URL; 027 028 /** java.net Converter classes. */ 029 public class NetConverters implements ConverterLoader { 030 031 public void loadConverters() { 032 Converters.loadContainedConverters(NetConverters.class); 033 Converters.registerConverter(new GenericToStringConverter<URI>(URI.class)); 034 Converters.registerConverter(new GenericToStringConverter<URL>(URL.class)); 035 Converters.registerConverter(new GenericSingletonToList<InetAddress>(InetAddress.class)); 036 Converters.registerConverter(new GenericSingletonToList<URI>(URI.class)); 037 Converters.registerConverter(new GenericSingletonToList<URL>(URL.class)); 038 Converters.registerConverter(new GenericSingletonToSet<InetAddress>(InetAddress.class)); 039 Converters.registerConverter(new GenericSingletonToSet<URI>(URI.class)); 040 Converters.registerConverter(new GenericSingletonToSet<URL>(URL.class)); 041 } 042 043 /** 044 * An object that converts an <code>InetAddress</code> to a 045 * <code>String</code>. 046 */ 047 public static class InetAddressToString extends AbstractConverter<InetAddress, String> { 048 public InetAddressToString() { 049 super(InetAddress.class, String.class); 050 } 051 052 public String convert(InetAddress obj) throws ConversionException { 053 String hostName = obj.getHostName(); 054 if (hostName != null) return hostName; 055 return obj.getHostAddress(); 056 } 057 } 058 059 /** 060 * An object that converts a <code>String</code> to an 061 * <code>InetAddress</code>. 062 */ 063 public static class StringToInetAddress extends AbstractConverter<String, InetAddress> { 064 public StringToInetAddress() { 065 super(String.class, InetAddress.class); 066 } 067 068 public InetAddress convert(String obj) throws ConversionException { 069 try { 070 return InetAddress.getByName(obj); 071 } catch (IOException e) { 072 throw (ConversionException) new ConversionException(e.getMessage()).initCause(e); 073 } 074 } 075 } 076 077 /** 078 * An object that converts a <code>String</code> to a 079 * <code>URI</code>. 080 */ 081 public static class StringToURI extends AbstractConverter<String, URI> { 082 public StringToURI() { 083 super(String.class, URI.class); 084 } 085 086 public URI convert(String obj) throws ConversionException { 087 try { 088 return new URI(obj); 089 } catch (URISyntaxException e) { 090 throw (ConversionException) new ConversionException(e.getMessage()).initCause(e); 091 } 092 } 093 } 094 095 /** 096 * An object that converts a <code>String</code> to a 097 * <code>URL</code>. 098 */ 099 public static class StringToURL extends AbstractConverter<String, URL> { 100 public StringToURL() { 101 super(String.class, URL.class); 102 } 103 104 public URL convert(String obj) throws ConversionException { 105 try { 106 return new URL(obj); 107 } catch (MalformedURLException e) { 108 throw (ConversionException) new ConversionException(e.getMessage()).initCause(e); 109 } 110 } 111 } 112 113 /** 114 * An object that converts a <code>URI</code> to a 115 * <code>URL</code>. 116 */ 117 public static class URIToURL extends AbstractConverter<URI, URL> { 118 public URIToURL() { 119 super(URI.class, URL.class); 120 } 121 122 public URL convert(URI obj) throws ConversionException { 123 try { 124 return obj.toURL(); 125 } catch (MalformedURLException e) { 126 throw (ConversionException) new ConversionException(e.getMessage()).initCause(e); 127 } 128 } 129 } 130 131 /** 132 * An object that converts a <code>URL</code> to a 133 * <code>URI</code>. 134 */ 135 public static class URLToURI extends AbstractConverter<URL, URI> { 136 public URLToURI() { 137 super(URL.class, URI.class); 138 } 139 140 public URI convert(URL obj) throws ConversionException { 141 try { 142 return obj.toURI(); 143 } catch (URISyntaxException e) { 144 throw (ConversionException) new ConversionException(e.getMessage()).initCause(e); 145 } 146 } 147 } 148 }