org.kuali.common.util.nullify.DefaultBeanNullifier Maven / Gradle / Ivy
/**
* Copyright 2010-2012 The Kuali Foundation
*
* Licensed under the Educational Community 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
*
* http://www.opensource.org/licenses/ecl2.php
*
* 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.kuali.common.util.nullify;
import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.List;
import org.apache.commons.beanutils.PropertyUtils;
import org.kuali.common.util.Str;
import org.kuali.common.util.property.Constants;
import org.springframework.util.Assert;
public class DefaultBeanNullifier implements Nullify {
Object bean;
List properties;
List nullTokens = Collections.singletonList(Constants.NULL);
boolean caseSensitive = false;
@Override
public void nullify() {
Assert.notNull(bean, "bean cannot be null");
Assert.notNull(properties, "properties cannot be null");
Assert.notNull(nullTokens, "nullTokens cannot be null");
for (String property : properties) {
Object value = getProperty(bean, property);
if (isNullify(value, nullTokens, caseSensitive)) {
setProperty(bean, property, null);
}
}
}
protected boolean isNullify(Object value, List nullTokens, boolean caseSensitive) {
if (value == null) {
return false;
} else {
return Str.contains(nullTokens, value.toString(), caseSensitive);
}
}
protected void setProperty(Object bean, String property, Object value) {
try {
PropertyUtils.setProperty(bean, property, value);
} catch (NoSuchMethodException e) {
throw new IllegalArgumentException(e);
} catch (InvocationTargetException e) {
throw new IllegalArgumentException(e);
} catch (IllegalAccessException e) {
throw new IllegalArgumentException(e);
}
}
protected Object getProperty(Object bean, String property) {
try {
return PropertyUtils.getProperty(bean, property);
} catch (NoSuchMethodException e) {
throw new IllegalArgumentException(e);
} catch (InvocationTargetException e) {
throw new IllegalArgumentException(e);
} catch (IllegalAccessException e) {
throw new IllegalArgumentException(e);
}
}
public Object getBean() {
return bean;
}
public void setBean(Object bean) {
this.bean = bean;
}
public List getProperties() {
return properties;
}
public void setProperties(List properties) {
this.properties = properties;
}
public List getNullTokens() {
return nullTokens;
}
public void setNullTokens(List nullTokens) {
this.nullTokens = nullTokens;
}
public boolean isCaseSensitive() {
return caseSensitive;
}
public void setCaseSensitive(boolean caseSensitive) {
this.caseSensitive = caseSensitive;
}
}