Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * This software is licensed under the Apache License, Version 2.0
  * (the "License") agreement; you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  * 
  *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * 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.force66.beantester.valuegens;
Will determine an appropriate ValueGenerator for a specific class.

Author(s):
D. Ashmore
public class ValueGeneratorFactory {
	private static final ValueGenerator<?>[] STOCK_GENERATORS = new ValueGenerator<?>[]{
		,new PrimitiveValueGenerator(Long.classnew Object[]{Long.valueOf(0)})
		,new PrimitiveValueGenerator(Integer.class"int"new Object[]{Integer.valueOf(0)})
		,new PrimitiveValueGenerator(Double.classnew Object[]{Double.valueOf(0)})
		,new PrimitiveValueGenerator(Float.classnew Object[]{Float.valueOf(0)})
		,new PrimitiveValueGenerator(Short.classnew Object[]{ Short.valueOf("0")})
		,new PrimitiveValueGenerator(Character.class"char"new Object[]{ 'A'})
		,new GenericValueGenerator(new Object[]{InstantiationUtils.newXMLGregorianCalendar()})
	};
	public void registerGenerator(Class<?> klass,ValueGenerator<?> generator) {
		Validate.notNull(klass"Null class not allowed");
		Validate.notNull(generator"Null generator not allowed");
		.put(klassgenerator);
	}
	public ValueGenerator<?> forClass(Class<?> targetClass) {
		Validate.notNull(targetClass"Null class not allowed");
		ValueGenerator<?> generator = .get(targetClass);
		if (generator == null) {
			for (ValueGenerator<?> gen) {
				if (gen.canGenerate(targetClass)) {
					.put(targetClassgen);
					return gen;
				}
			}
		}
		else {
			return generator;
		}
		if (targetClass.isInterface()) {
        	InterfaceValueGenerator gen = new InterfaceValueGenerator(targetClass);
        	this.registerGenerator(targetClassgen);
        	return gen;
        }
        else if (targetClass.isEnum()) {
        	return registerGenericGenerator(targetClasstargetClass.getEnumConstants());
        }
        else if (targetClass.isArray()) {
        	ArrayValueGenerator gen = new ArrayValueGenerator(targetClassthis);
        	this.registerGenerator(targetClassgen);
        	return gen;
        }
        else if (Class.class.equals(targetClass)) {
        	return registerGenericGenerator(targetClassnew Object[]{Object.class});
         }
        else {
        	return registerGenericGenerator(targetClassnew Object[]{InstantiationUtils.safeNewInstance(targetClass)});
        }
	}
	protected ValueGenerator<?> registerGenericGenerator(Class<?> targetClassObject[] objValues) {
		this.registerGenerator(targetClassgen);
		return gen;
	}
New to GrepCode? Check out our FAQ X