001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.camel.converter; 018 019 import java.util.Collection; 020 import java.util.Iterator; 021 022 import org.apache.camel.Converter; 023 import org.apache.camel.util.ObjectHelper; 024 025 /** 026 * Some core java.lang based <a 027 * href="http://activemq.apache.org/camel/type-converter.html">Type Converters</a> 028 * 029 * @version $Revision: 42486 $ 030 */ 031 @Converter 032 public final class ObjectConverter { 033 034 /** 035 * Utility classes should not have a public constructor. 036 */ 037 private ObjectConverter() { 038 } 039 040 public static boolean isCollection(Object value) { 041 // TODO we should handle primitive array types? 042 return value instanceof Collection || (value != null && value.getClass().isArray()); 043 } 044 045 /** 046 * Creates an iterator over the value 047 * 048 * @deprecated use {@link org.apache.camel.util.ObjectHelper#createIterator(Object)}. Will be removed in Camel 2.0. 049 */ 050 @SuppressWarnings("unchecked") 051 @Converter 052 @Deprecated 053 public static Iterator iterator(Object value) { 054 return ObjectHelper.createIterator(value); 055 } 056 057 /** 058 * Converts the given value to a boolean, handling strings or Boolean 059 * objects; otherwise returning false if the value could not be converted to 060 * a boolean 061 */ 062 @Converter 063 public static boolean toBool(Object value) { 064 Boolean answer = toBoolean(value); 065 if (answer != null) { 066 return answer.booleanValue(); 067 } 068 return false; 069 } 070 071 /** 072 * Converts the given value to a Boolean, handling strings or Boolean 073 * objects; otherwise returning null if the value cannot be converted to a 074 * boolean 075 */ 076 @Converter 077 public static Boolean toBoolean(Object value) { 078 return ObjectHelper.toBoolean(value); 079 } 080 081 /** 082 * Returns the boolean value, or null if the value is null 083 */ 084 @Converter 085 public static Boolean toBoolean(Boolean value) { 086 if (value != null) { 087 return value; 088 } 089 return Boolean.FALSE; 090 } 091 092 093 /** 094 * Returns the converted value, or null if the value is null 095 */ 096 @Converter 097 public static Byte toByte(Object value) { 098 if (value instanceof Byte) { 099 return (Byte) value; 100 } else if (value instanceof Number) { 101 Number number = (Number) value; 102 return Byte.valueOf(number.byteValue()); 103 } else if (value instanceof String) { 104 return Byte.valueOf((String) value); 105 } else { 106 return null; 107 } 108 } 109 110 @Converter 111 public static byte[] toByteArray(String value) { 112 return value.getBytes(); 113 } 114 115 @Converter 116 public static char[] toCharArray(String value) { 117 return value.toCharArray(); 118 } 119 120 @Converter 121 public static String fromCharArray(char[] value) { 122 return new String(value); 123 } 124 125 /** 126 * Returns the converted value, or null if the value is null 127 */ 128 @Converter 129 public static Short toShort(Object value) { 130 if (value instanceof Short) { 131 return (Short) value; 132 } else if (value instanceof Number) { 133 Number number = (Number) value; 134 return Short.valueOf(number.shortValue()); 135 } else if (value instanceof String) { 136 return Short.valueOf((String) value); 137 } else { 138 return null; 139 } 140 } 141 142 /** 143 * Returns the converted value, or null if the value is null 144 */ 145 @Converter 146 public static Integer toInteger(Object value) { 147 if (value instanceof Integer) { 148 return (Integer) value; 149 } else if (value instanceof Number) { 150 Number number = (Number) value; 151 return Integer.valueOf(number.intValue()); 152 } else if (value instanceof String) { 153 return Integer.valueOf((String) value); 154 } else { 155 return null; 156 } 157 } 158 159 /** 160 * Returns the converted value, or null if the value is null 161 */ 162 @Converter 163 public static Long toLong(Object value) { 164 if (value instanceof Long) { 165 return (Long) value; 166 } else if (value instanceof Number) { 167 Number number = (Number) value; 168 return Long.valueOf(number.longValue()); 169 } else if (value instanceof String) { 170 return Long.valueOf((String) value); 171 } else { 172 return null; 173 } 174 } 175 176 /** 177 * Returns the converted value, or null if the value is null 178 */ 179 @Converter 180 public static Float toFloat(Object value) { 181 if (value instanceof Float) { 182 return (Float) value; 183 } else if (value instanceof Number) { 184 Number number = (Number) value; 185 return Float.valueOf(number.floatValue()); 186 } else if (value instanceof String) { 187 return Float.valueOf((String) value); 188 } else { 189 return null; 190 } 191 } 192 193 /** 194 * Returns the converted value, or null if the value is null 195 */ 196 @Converter 197 public static Double toDouble(Object value) { 198 if (value instanceof Double) { 199 return (Double) value; 200 } else if (value instanceof Number) { 201 Number number = (Number) value; 202 return Double.valueOf(number.doubleValue()); 203 } else if (value instanceof String) { 204 return Double.valueOf((String) value); 205 } else { 206 return null; 207 } 208 } 209 210 211 212 }