/****************************************************************************** * Copyright 2009-2018 Exactpro (Exactpro Systems Limited) * * 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 * * 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 com.exactpro.sf.common.util; import java.beans.PropertyDescriptor; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtilsBean; import org.apache.commons.beanutils.PropertyUtilsBean; import org.apache.commons.configuration.HierarchicalConfiguration; public class BeanConfigurator { public static void loadBean(HierarchicalConfiguration context, Object beanObject, ConvertUtilsBean converter) { PropertyUtilsBean beanUtils = new PropertyUtilsBean(); PropertyDescriptor[] descriptors = beanUtils.getPropertyDescriptors(beanObject); try { for ( PropertyDescriptor descr : descriptors ) { //check that setter exists if ( descr.getWriteMethod() != null ) { String value = context.getString(descr.getName()); if(converter.lookup(descr.getPropertyType()) != null) { BeanUtils.setProperty(beanObject, descr.getName(), converter.convert(value, descr.getPropertyType())); } } } } catch ( Exception e ) { throw new EPSCommonException(e); } } public static void loadBean(HierarchicalConfiguration context, Object beanObject) { ConvertUtilsBean converter = new ConvertUtilsBean(); loadBean(context, beanObject, converter); } public static void saveBean(HierarchicalConfiguration context, Object beanObject) { ConvertUtilsBean converter = new ConvertUtilsBean(); PropertyUtilsBean beanUtils = new PropertyUtilsBean(); PropertyDescriptor[] descriptors = beanUtils.getPropertyDescriptors(beanObject); try { for ( PropertyDescriptor descr : descriptors ) { //check that setter exists if ( descr.getWriteMethod() != null ) { Object value = BeanUtils.getProperty(beanObject, descr.getName()); context.setProperty(descr.getName(), converter.convert(value)); } } } catch ( Exception e ) { throw new EPSCommonException(e); } } public static void copyBean(Object beanOrig, Object beanClone) { PropertyUtilsBean beanUtils = new PropertyUtilsBean(); try { beanUtils.copyProperties(beanClone, beanOrig); } catch ( Exception e ) { throw new EPSCommonException(e); } } }