|
From: Leandro R. S. C. <bas...@us...> - 2004-03-22 21:34:25
|
Update of /cvsroot/xingu/xingu/exintake/src/java/br/com/ibnetwork/xingu/exintake/factory In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31708/exintake/src/java/br/com/ibnetwork/xingu/exintake/factory Added Files: ReflectionFactory.java Log Message: adding Extensible input taker --- NEW FILE: ReflectionFactory.java --- /* * Created on Feb 12, 2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package br.com.ibnetwork.xingu.exintake.factory; import java.lang.reflect.InvocationTargetException; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.Composable; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import br.com.ibnetwork.xingu.exintake.model.Group; import br.com.ibnetwork.xingu.factory.ObjectFactoryException; import br.com.ibnetwork.xingu.factory.impl.FactoryDefaultImpl; import br.com.ibnetwork.xingu.logging.LoggerFactory; /** * @author <a href="mailto:le...@ib...">Leandro Rodrigo Saad Cruz</a> * */ public class ReflectionFactory extends FactoryDefaultImpl implements Composable { private ComponentManager manager; private Log logger; /* (non-Javadoc) * @see br.com.ibnetwork.xingu.factory.Factory#getInstance(java.lang.String, java.lang.Object[], java.lang.String[]) */ public Object getInstance( String className, Object[] params, String[] signature) throws ObjectFactoryException { Group group = (Group) params[0]; Map map = (Map) params[1]; logger.debug("Creating object mapped for group ["+group+"] with map["+map+"]"); Object bean = super.getInstance(className); try { BeanUtils.populate(bean,map); if(bean instanceof Composable) { ((Composable)bean).compose(manager); } } catch (Exception e) { throw new ObjectFactoryException("Error populating bean",e); } return bean; } /* (non-Javadoc) * @see org.apache.avalon.framework.component.Composable#compose(org.apache.avalon.framework.component.ComponentManager) */ public void compose(ComponentManager manager) throws ComponentException { this.manager = manager; logger = ((LoggerFactory)manager.lookup(LoggerFactory.ROLE)).getLoggerForClass(this.getClass()); } } |