
com.codebox.bean.ValueBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javabean-tester Show documentation
Show all versions of javabean-tester Show documentation
Javabean Tester Simplifies POJO Testing and greatly simplifies Lombok Bean Testing!
/**
* JavaBean Tester (https://github.com/hazendaz/javabean-tester)
*
* Copyright (c) 2012 - 2015 Hazendaz.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of The Apache Software License,
* Version 2.0 which accompanies this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Contributors:
* CodeBox (Rob Dawson).
* Hazendaz (Jeremy Landis).
*/
package com.codebox.bean;
import com.codebox.enums.LoadData;
import com.codebox.enums.LoadType;
import com.codebox.instance.ClassInstance;
import com.codebox.instance.ConstructorInstance;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* Builds values from given type.
*/
@Data
public class ValueBuilder {
/** The load data. */
private LoadData loadData;
/**
* Builds the value.
*
* @param
* the generic type
* @param clazz
* the clazz
* @param loadType
* the load type
* @return the object
*/
public Object buildValue(final Class clazz, final LoadType loadType) {
// Next check for a no-arg constructor
final Constructor>[] ctrs = clazz.getConstructors();
for (final Constructor> ctr : ctrs) {
if (ctr.getParameterTypes().length == 0 && clazz != String.class) {
if (this.loadData == LoadData.ON) {
// Load Underlying Data
JavaBeanTesterWorker beanTesterWorker = new JavaBeanTesterWorker(clazz);
beanTesterWorker.setLoadData(this.loadData);
beanTesterWorker.getterSetterTests(new ClassInstance().newInstance(clazz));
return null;
}
// The class has a no-arg constructor, so just call it
return ConstructorInstance.newInstance(ctr);
}
}
// Specific rules for common classes
Object returnObject = null;
switch (loadType) {
case ALTERNATE_DATA:
returnObject = setAlternateValues(clazz);
break;
case NULL_DATA:
returnObject = setNullValues(clazz);
break;
case STANDARD_DATA:
default:
returnObject = setStandardValues(clazz);
break;
}
if (returnObject != null || loadType == LoadType.NULL_DATA) {
return returnObject;
} else if (clazz.isAssignableFrom(List.class)) {
return new ArrayList
© 2015 - 2025 Weber Informatics LLC | Privacy Policy