r1955 - in trunk/topia-persistence/src: main/java/org/nuiton/topia/framework test/java/org/nuiton/topia/framework test/java/org/nuiton/topiatest test/java/org/nuiton/topiatest/persistence
Author: fdesbois Date: 2010-05-12 11:38:43 +0200 (Wed, 12 May 2010) New Revision: 1955 Url: http://nuiton.org/repositories/revision/topia/1955 Log: Add tests for TopiaContextImpl (problem testing with maven, but idea works) Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1.java trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Abstract.java trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.hbm.xml trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.java trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/package-info.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2010-05-11 12:09:48 UTC (rev 1954) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2010-05-12 09:38:43 UTC (rev 1955) @@ -25,6 +25,7 @@ package org.nuiton.topia.framework; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Document; @@ -456,7 +457,6 @@ /* (non-Javadoc) * @see org.nuiton.topia.TopiaContext#createSchema() */ - @Override public void updateSchema() throws TopiaException { try { @@ -592,15 +592,15 @@ TOPIA_PERSISTENCE_DIRECTORIES, "").split(","); for (String dir : dirs) { dir = dir.trim(); - if (!"".equals(dir)) { + if (StringUtils.isNotEmpty(dir)) { + if (log.isDebugEnabled()) { + log.debug("Load persistence from dir : " + dir); + } hibernateConfiguration.addDirectory(new File(dir)); } } // ajout des classes dites persistentes - String listPersistenceClasses = getConfig().getProperty( - TOPIA_PERSISTENCE_CLASSES, ""); - for (TopiaService service : getServices().values()) { Class<?>[] classes = service.getPersistenceClasses(); @@ -612,10 +612,16 @@ } } + String listPersistenceClasses = getConfig().getProperty( + TOPIA_PERSISTENCE_CLASSES, ""); + String[] classes = listPersistenceClasses.split(","); for (String classname : classes) { classname = classname.trim(); - if (!"".equals(classname)) { + if (StringUtils.isNotEmpty(classname)) { + if (log.isDebugEnabled()) { + log.debug("Load persistent class : " + classname); + } Class<?> clazz; try { clazz = Class.forName(classname); @@ -632,8 +638,22 @@ Properties prop = new Properties(); prop.putAll(hibernateConfiguration.getProperties()); prop.putAll(getConfig()); - prop.putAll(TopiaUtil.getProperties(getConfig().getProperty( - TOPIA_PERSISTENCE_PROPERTIES_FILE))); + + // Strange behavior, all properties are already loaded from + // constructor. Difficult to use this behavior, need to have + // TOPIA_PERSISTENCE_PROPERTIES_FILE in config. + Properties propertiesFromClasspath = + TopiaUtil.getProperties(getConfig(). + getProperty(TOPIA_PERSISTENCE_PROPERTIES_FILE)); + + if (!propertiesFromClasspath.isEmpty()) { + if (log.isDebugEnabled()) { + log.debug("Load properties from file : " + + propertiesFromClasspath); + } + prop.putAll(propertiesFromClasspath); + } + hibernateConfiguration.setProperties(prop); } } @@ -998,7 +1018,6 @@ /* (non-Javadoc) * @see org.nuiton.topia.TopiaContext#add(org.nuiton.topia.persistence.TopiaEntity) */ - @Override public void add(TopiaEntity e) throws TopiaException { checkClosed(I18n._( Modified: trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java 2010-05-11 12:09:48 UTC (rev 1954) +++ trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaContextImplTest.java 2010-05-12 09:38:43 UTC (rev 1955) @@ -1,18 +1,29 @@ package org.nuiton.topia.framework; +import org.apache.commons.lang.time.DurationFormatUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.h2.Driver; +import org.hibernate.cfg.Configuration; +import org.hibernate.mapping.PersistentClass; +import org.hibernate.mapping.RootClass; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.nuiton.i18n.I18n; +import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaNotFoundException; +import org.nuiton.topiatest.persistence.Entity1; +import org.nuiton.topiatest.persistence.Entity1Impl; import org.nuiton.topiatest.service.FakeService; import org.nuiton.topiatest.service.TestService; -import java.util.Collection; +import java.io.File; +import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Properties; @@ -50,7 +61,7 @@ /** PREPARE DATA **/ properties.setProperty("topia.service.test", - TestService.class.getName()); + TestService.class.getName()); TopiaContextImpl context = new TopiaContextImpl(); @@ -66,7 +77,7 @@ properties.clear(); properties.setProperty("topia.service.fake", - TestService.class.getName()); + TestService.class.getName()); results = context.loadServices(properties); Assert.assertEquals(0, results.size()); @@ -90,7 +101,7 @@ /** PREPARE DATA **/ properties.setProperty("topia.service.test", - TestService.class.getName()); + TestService.class.getName()); // Calling the constructor with properties will load the services TopiaContextImpl context = new TopiaContextImpl(properties); @@ -126,7 +137,7 @@ // Even it's properly loaded the serviceEnabled method will return false properties.clear(); properties.setProperty("topia.service.fake", - FakeService.class.getName()); + FakeService.class.getName()); TopiaContextImpl otherContext = new TopiaContextImpl(properties); boolean test6 = otherContext.serviceEnabled(FakeService.class); @@ -136,7 +147,7 @@ " : service not loaded"); // TestService is not loaded in otherContext try { - TestService test7 = otherContext.getService(TestService.class); + TestService test7 = otherContext.getService(TestService.class); } catch (Exception eee) { log.error(eee.getClass().getSimpleName() + " : " + eee.getMessage()); Assert.assertEquals(TopiaNotFoundException.class, eee.getClass()); @@ -198,9 +209,90 @@ // public void testGetHibernate() throws Exception { // } // -// @Test -// public void testGetHibernateFactory() throws Exception { -// } + + @Test + public void testGetHibernateFactory() throws Exception { + log.info("## testGetHibernateFactory"); + + /** PREPARE DATA **/ + TopiaContextImpl context = new TopiaContextImpl(); + context.services = new HashMap<String, TopiaService>(); + + String basedir = System.getenv("basedir"); + if (basedir == null) { + + // says basedir is where we start tests. + basedir = new File("").getAbsolutePath(); + } + + log.debug("baseDir : " + basedir); + File persistenceDir = new File(basedir, + "src" + File.separator + + "test" + File.separator + + "java" + File.separator + + "org" + File.separator + + "nuiton" + File.separator + + "topiatest" + File.separator + + "persistence"); + log.debug("persistenceDir : " + persistenceDir); + File resourcesDir = new File(basedir, + "src" + File.separator + + "test" + File.separator + + "resources"); + + /** EXEC METHOD **/ + log.info("test 1 : load mappings from directory"); + + properties.setProperty(TopiaContextImpl.TOPIA_PERSISTENCE_DIRECTORIES, + persistenceDir.getAbsolutePath()); + context.config = properties; + + Configuration test1 = context.getHibernateConfiguration(); + PersistentClass persistentClass = + test1.getClassMapping(Entity1Impl.class.getName()); + Assert.assertNotNull(persistentClass); + Assert.assertEquals(Entity1.class, persistentClass.getProxyInterface()); + +// for (Iterator<RootClass> it = test1.getClassMappings(); it.hasNext();) { +// RootClass o = it.next(); +// log.debug("entity : " + o.getEntityName()); +// } + + log.info("test 2 : load mappings for all entities"); + //reset from previous test + context = new TopiaContextImpl(); + context.services = new HashMap<String, TopiaService>(); + properties.clear(); + + // use property TOPIA_PERSISTENCE_CLASSES + properties.setProperty(TopiaContextImpl.TOPIA_PERSISTENCE_CLASSES, + Entity1Impl.class.getName()); + context.config = properties; + + Configuration test2 = context.getHibernateConfiguration(); + persistentClass = test2.getClassMapping(Entity1Impl.class.getName()); + Assert.assertNotNull(persistentClass); + Assert.assertEquals(Entity1.class, persistentClass.getProxyInterface()); + + log.info("test 3 : add properties from file"); + //reset from previous test + context = new TopiaContextImpl(); + context.services = new HashMap<String, TopiaService>(); + properties.clear(); + + // use property TOPIA_PERSISTENCE_PROPERTIES_FILE to add default + // properties from file + properties.setProperty(TopiaContextImpl.TOPIA_PERSISTENCE_PROPERTIES_FILE, + resourcesDir + File.separator + "TopiaContextImpl.properties"); + context.config = properties; + + Configuration test3 = context.getHibernateConfiguration(); + Assert.assertEquals( + test3.getProperty("hibernate.connection.driver_class"), + Driver.class.getName()); + + // Note : maybe add a test to load classes from services + } // // @Test // public void testGetHibernateConfiguration() throws Exception { Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1.java (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1.java 2010-05-12 09:38:43 UTC (rev 1955) @@ -0,0 +1,25 @@ +package org.nuiton.topiatest.persistence; + +import org.nuiton.topia.persistence.TopiaEntity; + +/** + * Created: 11 mai 2010 + * + * @author fdesbois <fdesbois@codelutin.com> + * @version $Id$ + */ +public interface Entity1 extends TopiaEntity { + + String ATTR_1 = "attr1"; + + String ATTR_2 = "attr2"; + + String getAttr1(); + + void setAttr1(String attr1); + + String getAttr2(); + + void setAttr2(String attr2); + +} Property changes on: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Abstract.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Abstract.java (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Abstract.java 2010-05-12 09:38:43 UTC (rev 1955) @@ -0,0 +1,59 @@ +package org.nuiton.topiatest.persistence; + +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.EntityVisitor; +import org.nuiton.topia.persistence.TopiaEntityAbstract; + +/** + * Created: 11 mai 2010 + * + * @author fdesbois <fdesbois@codelutin.com> + * @version $Id$ + */ +public abstract class Entity1Abstract extends TopiaEntityAbstract + implements Entity1 { + + protected String attr1; + + protected String attr2; + + @Override + public String getAttr1() { + fireOnPreRead(ATTR_1, attr1); + String result = attr1; + fireOnPostRead(ATTR_1, attr1); + return result; + } + + @Override + public void setAttr1(String attr1) { + String _oldValue = this.attr1; + fireOnPreWrite(ATTR_1, _oldValue, attr1); + this.attr1 = attr1; + fireOnPostWrite(ATTR_1, _oldValue, attr1); + } + + @Override + public String getAttr2() { + fireOnPreRead(ATTR_2, attr2); + String result = attr2; + fireOnPostRead(ATTR_2, attr2); + return result; + } + + @Override + public void setAttr2(String attr2) { + String _oldValue = this.attr2; + fireOnPreWrite(ATTR_2, _oldValue, attr2); + this.attr2 = attr2; + fireOnPostWrite(ATTR_2, _oldValue, attr2); + } + + @Override + public void accept(EntityVisitor visitor) throws TopiaException { + visitor.start(this); + visitor.visit(this, ATTR_1, String.class, attr1); + visitor.visit(this, ATTR_2, String.class, attr2); + visitor.end(this); + } +} Property changes on: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Abstract.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.hbm.xml =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.hbm.xml (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.hbm.xml 2010-05-12 09:38:43 UTC (rev 1955) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> +<hibernate-mapping default-access="field" auto-import="true" package="org.nuiton.topiatest"> + <class name="org.nuiton.topiatest.persistence.Entity1Impl" table="entity1" node="org.nuiton.topiatest.persistence.Entity1Impl" abstract="false" proxy="org.nuiton.topiatest.persistence.Entity1" > + <id name="topiaId" type="string" length="255" node="@topiaId"/> + <version name="topiaVersion" type="long" node="@topiaVersion"/> + <property name="topiaCreateDate" type="timestamp" node="@topiaCreateDate"/> + <property name="attr1" type="java.lang.String" access="field" column="attr1" node="attr1"/> + <property name="attr2" type="java.lang.String" access="field" column="attr2" node="attr2"/> + </class> +</hibernate-mapping> Property changes on: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.hbm.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.java (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.java 2010-05-12 09:38:43 UTC (rev 1955) @@ -0,0 +1,13 @@ +package org.nuiton.topiatest.persistence; + +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.EntityVisitor; + +/** + * Created: 11 mai 2010 + * + * @author fdesbois <fdesbois@codelutin.com> + * @version $Id$ + */ +public class Entity1Impl extends Entity1Abstract { +} Property changes on: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/Entity1Impl.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/package-info.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/package-info.java (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/package-info.java 2010-05-12 09:38:43 UTC (rev 1955) @@ -0,0 +1,4 @@ +/** + * Contains persistent entities for Tests. + */ +package org.nuiton.topiatest.persistence; \ No newline at end of file Property changes on: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/persistence/package-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL
participants (1)
-
fdesbois@users.nuiton.org