/* ORG Usurper is a random value object generator library Copyright (C) 2007 Pierre-Antoine Grégoire This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package org.org.usurper; import java.util.List; import java.util.Map; import java.util.Set; import junit.framework.TestCase; import org.org.usurper.TestCommons.BadSetupException; import org.org.usurper.TestCommons.NullPropertyException; import org.org.usurper.dummydomain.DummyService; import org.org.usurper.dummydomain.DummyVO; import org.org.usurper.dummydomain.IDummyDAO; import org.org.usurper.dummydomain.IOtherDummyDAO; import org.org.usurper.dummydomain.ImmutableDummyVO; import org.org.usurper.dummydomain.OtherDummyVO; import org.org.usurper.setup.IUsurperGeneratorSetup; import org.org.usurper.setup.constants.OnMissingHandlers; import org.org.usurper.setup.constants.PropertyWritingMechanism; import org.org.usurper.springframework.UsurperFactoryBean; import org.org.usurper.springframework.UsurperGeneratorSetupFactoryBean; import org.org.usurper.springframework.UsurperListFactoryBean; import org.org.usurper.springframework.UsurperMapFactoryBean; import org.org.usurper.springframework.UsurperSetFactoryBean; import org.org.usurper.springframework.UsurperSpringConstants; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author pagregoire */ public class UsurperSpringTest extends TestCase { /** * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { super.setUp(); } public void testGenerateObject() throws Exception { // CREATE USURPER GENERATOR UsurperFactoryBean usurperFactoryBean = new UsurperFactoryBean(); usurperFactoryBean.setUsurpedClassName(DummyVO.class.getName()); usurperFactoryBean.afterPropertiesSet(); // GENERATE USURPER DummyVO object = (DummyVO) usurperFactoryBean.getObject(); // VALIDATE RESULTING OBJECT try { TestCommons.auditVO(object); } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateList() throws Exception { final int listSize = 15; // CREATE USURPER GENERATOR UsurperListFactoryBean usurperListFactoryBean = new UsurperListFactoryBean(); usurperListFactoryBean.setUsurpedClassName(DummyVO.class.getName()); usurperListFactoryBean.setCount(listSize); usurperListFactoryBean.afterPropertiesSet(); // GENERATE USURPER List list = (List) usurperListFactoryBean.getObject(); assertTrue("Generated List's size should be " + listSize, list.size() == listSize); // VALIDATE RESULTING OBJECT try { for (Object object : list) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateSet() throws Exception { final int setSize = 15; // CREATE USURPER GENERATOR UsurperSetFactoryBean usurperSetFactoryBean = new UsurperSetFactoryBean(); usurperSetFactoryBean.setUsurpedClassName(DummyVO.class.getName()); usurperSetFactoryBean.setCount(setSize); usurperSetFactoryBean.afterPropertiesSet(); // GENERATE USURPER Set set = (Set) usurperSetFactoryBean.getObject(); assertTrue("Generated Set's size should be " + setSize, set.size() == setSize); // VALIDATE RESULTING OBJECT try { for (Object object : set) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateMap() throws Exception { final int mapSize = 15; // CREATE USURPER GENERATOR UsurperMapFactoryBean usurperMapFactoryBean = new UsurperMapFactoryBean(); usurperMapFactoryBean.setUsurpedKeyClassName(DummyVO.class.getName()); usurperMapFactoryBean.setUsurpedValueClassName(OtherDummyVO.class.getName()); usurperMapFactoryBean.setCount(mapSize); usurperMapFactoryBean.afterPropertiesSet(); // GENERATE USURPER Map map = (Map) usurperMapFactoryBean.getObject(); assertTrue("Generated Map's size should be " + mapSize, map.size() == mapSize); // VALIDATE RESULTING OBJECT try { Set keys = map.keySet(); for (Object key : keys) { TestCommons.auditVO(key); TestCommons.auditVO(map.get(key)); } } catch (NullPropertyException e) { fail(e.getMessage()); } } public void testGenerateObjectWithNamespaceHandler() throws Exception { // CREATE USURPER GENERATOR through Spring namespace ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-onebean.xml"); // RETRIEVE USURPER DummyVO object = (DummyVO) applicationContext.getBean("DummyVO"); // VALIDATE RESULTING OBJECT try { TestCommons.auditVO(object); } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER object = ((DummyService) applicationContext.getBean("DummyService")).getDummyVO(); // VALIDATE RESULTING OBJECT try { TestCommons.auditVO(object); } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateListWithNamespaceHandler() throws Exception { final int listSize = 15; // CREATE USURPER GENERATOR through Spring namespace ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-listofbeans.xml"); // RETRIEVE USURPER List list = (List) applicationContext.getBean("DummyVOs"); assertTrue("Generated List's size should be " + listSize, list.size() == listSize); // VALIDATE RESULTING OBJECT try { for (Object object : list) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateSetWithNamespaceHandler() throws Exception { final int setSize = 15; // CREATE USURPER GENERATOR through Spring namespace ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-setofbeans.xml"); // RETRIEVE USURPER Set set = (Set) applicationContext.getBean("DummyVOs"); assertTrue("Generated Set's size should be " + setSize, set.size() == setSize); // VALIDATE RESULTING OBJECT try { for (Object object : set) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateMapWithNamespaceHandler() throws Exception { final int mapSize = 15; // CREATE USURPER GENERATOR through Spring namespace ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-mapofbeans.xml"); // RETRIEVE USURPER Map map = (Map) applicationContext.getBean("DummyVOs"); assertTrue("Generated Map's size should be " + mapSize, map.size() == mapSize); // VALIDATE RESULTING OBJECT try { Set keys = map.keySet(); for (Object key : keys) { TestCommons.auditVO(key); TestCommons.auditVO(map.get(key)); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testMethodInterceptor() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-aop.xml"); IDummyDAO dummyDAO = (IDummyDAO) applicationContext.getBean("DummyDAO"); // RETRIEVE USURPER DummyVO dummyVO = dummyDAO.getVO("whatever, this is not used"); // VALIDATE RESULTING OBJECT try { TestCommons.auditVO(dummyVO); } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER List list = dummyDAO.getVOList("whatever, this is not used"); assertTrue("Generated List's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, list.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { for (Object object : list) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER Set set = dummyDAO.getVOSet("whatever, this is not used"); assertTrue("Generated Set's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, set.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { for (Object object : set) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER Map map = dummyDAO.getVOMap("whatever, this is not used"); assertTrue("Generated Map's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, map.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { Set keys = map.keySet(); for (Object key : keys) { TestCommons.auditVO(key); TestCommons.auditVO(map.get(key)); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testMethodInterceptorWithNamespaceHandler() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-aop.xml"); IDummyDAO dummyDAO = (IDummyDAO) applicationContext.getBean("DummyDAO"); // RETRIEVE USURPER DummyVO dummyVO = dummyDAO.getVO("whatever, this is not used"); // VALIDATE RESULTING OBJECT try { TestCommons.auditVO(dummyVO); } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER List list = dummyDAO.getVOList("whatever, this is not used"); assertTrue("Generated List's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, list.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { for (Object object : list) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER Set set = dummyDAO.getVOSet("whatever, this is not used"); assertTrue("Generated Set's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, set.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { for (Object object : set) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER Map map = dummyDAO.getVOMap("whatever, this is not used"); assertTrue("Generated Map's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, map.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { Set keys = map.keySet(); for (Object key : keys) { TestCommons.auditVO(key); TestCommons.auditVO(map.get(key)); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testMethodInterceptorWithNamespaceHandlerAndImmutables() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-aop-immutable.xml"); IOtherDummyDAO dummyDAO = (IOtherDummyDAO) applicationContext.getBean("OtherDummyDAO"); // RETRIEVE USURPER ImmutableDummyVO dummyVO = dummyDAO.getVO("whatever, this is not used"); // VALIDATE RESULTING OBJECT try { TestCommons.auditVO(dummyVO); } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER List list = dummyDAO.getVOList("whatever, this is not used"); assertTrue("Generated List's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, list.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { for (Object object : list) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER Set set = dummyDAO.getVOSet("whatever, this is not used"); assertTrue("Generated Set's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, set.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { for (Object object : set) { TestCommons.auditVO(object); } } catch (NullPropertyException e) { fail(e.getMessage()); } // RETRIEVE USURPER Map map = dummyDAO.getVOMap("whatever, this is not used"); assertTrue("Generated Map's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, map.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT); // VALIDATE RESULTING OBJECT try { Set keys = map.keySet(); for (Object key : keys) { TestCommons.auditVO(key); TestCommons.auditVO(map.get(key)); } } catch (NullPropertyException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateSetup() throws Exception { UsurperGeneratorSetupFactoryBean usurperGeneratorSetupFactoryBean = new UsurperGeneratorSetupFactoryBean(); usurperGeneratorSetupFactoryBean.setArrayHandler(TestCommons.ARRAY_HANDLER); usurperGeneratorSetupFactoryBean.setEnumHandler(TestCommons.ENUM_HANDLER); usurperGeneratorSetupFactoryBean.setCountCallback(TestCommons.DUMMY_COLLECTION_COUNT_CALLBACK); usurperGeneratorSetupFactoryBean.onMissingHandlers(OnMissingHandlers.SKIP); usurperGeneratorSetupFactoryBean.usePropertyWritingMechanism(PropertyWritingMechanism.USE_SETTERS); usurperGeneratorSetupFactoryBean.setPropertyTypeHandlers(TestCommons.PROPERTY_TYPE_HANDLERS_SET); usurperGeneratorSetupFactoryBean.setSpecificPropertyHandlers(TestCommons.SPECIFIC_PROPERTY_HANDLERS_SET); usurperGeneratorSetupFactoryBean.afterPropertiesSet(); IUsurperGeneratorSetup usurperGeneratorSetup = (IUsurperGeneratorSetup) usurperGeneratorSetupFactoryBean.getObject(); try { TestCommons.auditSetup(usurperGeneratorSetup); } catch (BadSetupException e) { fail(e.getMessage()); } UsurperGeneratorSetupFactoryBean usurperGeneratorSetupFactoryBean2 = new UsurperGeneratorSetupFactoryBean(); usurperGeneratorSetupFactoryBean2.setParentSetup(usurperGeneratorSetup); usurperGeneratorSetupFactoryBean2.afterPropertiesSet(); IUsurperGeneratorSetup usurperGeneratorSetup2 = (IUsurperGeneratorSetup) usurperGeneratorSetupFactoryBean2.getObject(); try { TestCommons.auditSetup(usurperGeneratorSetup2); } catch (BadSetupException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateSetupWithXMLConfig() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-setup.xml"); IUsurperGeneratorSetup usurperGeneratorSetup = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupClassic"); try { TestCommons.auditSetup(usurperGeneratorSetup); } catch (BadSetupException e) { fail(e.getMessage()); } IUsurperGeneratorSetup usurperGeneratorSetup2 = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupClassic2"); try { TestCommons.auditSetup(usurperGeneratorSetup2); } catch (BadSetupException e) { fail(e.getMessage()); } } @SuppressWarnings("unchecked") public void testGenerateSetupWithNamespaceHandler() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-setup.xml"); IUsurperGeneratorSetup usurperGeneratorSetup = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupNamespace"); try { TestCommons.auditSetup(usurperGeneratorSetup); } catch (BadSetupException e) { fail(e.getMessage()); } IUsurperGeneratorSetup usurperGeneratorSetup2 = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupNamespace2"); try { TestCommons.auditSetup(usurperGeneratorSetup2); } catch (BadSetupException e) { fail(e.getMessage()); } } }