Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Copyright 2004-2008 the original author or authors.
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
 package org.springframework.binding.format.registry;
 import java.util.Map;
Base class for formatter factories. Manages the locale used by the produced formatters using Spring's org.springframework.context.i18n.LocaleContext system.

Keith Donald
 public class GenericFormatterRegistry implements FormatterRegistry {
 	private Map formattersById = new HashMap();
 	private Map formattersByClass = new HashMap();
 	public Formatter getFormatter(Class clazz) {
 		Assert.notNull(clazz"The formatted class argument is required");
 		return findFormatter(clazz);
 	public Formatter getFormatter(String id) {
 		Assert.hasText(id"The id of the custom formatter is required");
 		return (Formatter.get(id);
 	// impl
 	public void registerFormatter(Class clazzFormatter formatter) {
 		Assert.notNull(formatter"The formatter to register is required");
 	public void registerFormatter(String idFormatter formatter) {
 		Assert.hasText(id"The id of the custom formatter is required");
 		Assert.notNull(formatter"The formatter to register is required");
 	// helpers
 	private Formatter findFormatter(Class clazz) {
 		LinkedList classQueue = new LinkedList();
 		while (!classQueue.isEmpty()) {
 			clazz = (ClassclassQueue.removeLast();
 			Formatter factory = (Formatter.get(clazz);
 			if (factory != null) {
 				return factory;
 			if (!clazz.isInterface() && clazz.getSuperclass() != null) {
 			Class[] interfaces = clazz.getInterfaces();
 			for (int i = 0; i < interfaces.lengthi++) {
 		return null;
 	private Class convertToWrapperClassIfNecessary(Class targetType) {
 		if (targetType.isPrimitive()) {
 			if (targetType.equals(int.class)) {
 				return Integer.class;
 			} else if (targetType.equals(short.class)) {
 				return Short.class;
 			} else if (targetType.equals(long.class)) {
 				return Long.class;
 			} else if (targetType.equals(float.class)) {
 				return Float.class;
 			} else if (targetType.equals(double.class)) {
 				return Double.class;
 			} else if (targetType.equals(byte.class)) {
 				return Byte.class;
 			} else if (targetType.equals(boolean.class)) {
 				return Boolean.class;
else if (targetType.equals(char.class)) {
				return Character.class;
else {
				throw new IllegalStateException("Should never happen - primitive type is not a primitive?");
else {
			return targetType;
New to GrepCode? Check out our FAQ X