Index: topia2/src/test/org/codelutin/topia/Person.hbm.xml
diff -u topia2/src/test/org/codelutin/topia/Person.hbm.xml:1.1.1.1 topia2/src/test/org/codelutin/topia/Person.hbm.xml:1.2
--- topia2/src/test/org/codelutin/topia/Person.hbm.xml:1.1.1.1 Mon Jan 2 13:54:35 2006
+++ topia2/src/test/org/codelutin/topia/Person.hbm.xml Fri Jan 6 12:15:20 2006
@@ -9,7 +9,7 @@
-
+
Index: topia2/src/test/org/codelutin/topia/TopiaContextTest.java
diff -u topia2/src/test/org/codelutin/topia/TopiaContextTest.java:1.2 topia2/src/test/org/codelutin/topia/TopiaContextTest.java:1.3
--- topia2/src/test/org/codelutin/topia/TopiaContextTest.java:1.2 Wed Jan 4 13:21:51 2006
+++ topia2/src/test/org/codelutin/topia/TopiaContextTest.java Fri Jan 6 12:15:20 2006
@@ -23,9 +23,9 @@
*
* @author poussin
*
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*
- * Last update: $Date: 2006/01/04 13:21:51 $ by : $Author: bpoussin $
+ * Last update: $Date: 2006/01/06 12:15:20 $ by : $Author: bpoussin $
*/
package org.codelutin.topia;
@@ -36,6 +36,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.event.TopiaEntityEvent;
+import org.codelutin.topia.event.TopiaEntityListener;
+import org.codelutin.topia.event.TopiaVetoableEntityEvent;
+import org.codelutin.topia.event.TopiaVetoableEntityListener;
import org.codelutin.topia.framework.TopiaContextImplementor;
import org.codelutin.topia.persistence.TopiaDAO;
@@ -48,7 +52,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(TopiaContextTest.class);
- public void testGetParentContext() throws Exception {
+ protected Properties getPostgreSQLProperties() {
Properties config = new Properties();
config.setProperty("hibernate.show_sql", "true");
config.setProperty("hibernate.hbm2ddl.auto", "create");
@@ -64,6 +68,46 @@
config.setProperty("hibernate.connection.username", "dbuser");
config.setProperty("hibernate.connection.password", "xxxxxxxx");
+ return config;
+ }
+
+ protected Properties getDerbyProperties() {
+ Properties config = new Properties();
+ config.setProperty("hibernate.show_sql", "true");
+ config.setProperty("hibernate.hbm2ddl.auto", "create");
+
+ config.setProperty("topia.dao.flatfile.directory", "/tmp/topiadb");
+ config.setProperty("topia.dao.flatfile.mapping.key", "firstname");
+
+ config.setProperty("topia.persistence.classes",
+ "org.codelutin.topia.Person");
+ config.setProperty("hibernate.dialect",
+ "org.hibernate.dialect.DerbyDialect");
+ config.setProperty("hibernate.connection.driver_class",
+ "org.apache.derby.jdbc.EmbeddedDriver");
+ config.setProperty("hibernate.connection.url",
+ "jdbc:derby:/tmp/topiaderby;create=true");
+ config.setProperty("hibernate.connection.username", "dbuser");
+ config.setProperty("hibernate.connection.password", "xxxxxxxx");
+
+ return config;
+ }
+
+ protected Properties getProperties() {
+ return getDerbyProperties();
+ }
+
+ /*
+ * #hibernate.dialect org.hibernate.dialect.DerbyDialect
+ * #hibernate.connection.driver_class org.apache.derby.jdbc.EmbeddedDriver
+ * #hibernate.connection.url jdbc:derby:/test;create=true
+ * #hibernate.connection.username
+ * #hibernate.connection.password
+ */
+
+ public void testGetParentContext() throws Exception {
+ Properties config = getProperties();
+
TopiaContextImplementor topiaContext = (TopiaContextImplementor) TopiaContextFactory
.getContext(config);
@@ -82,31 +126,9 @@
}
public void testHibernate() throws Exception {
- log.info("Debut du test");
- log.debug("(debug mode)");
+ System.out.println("Debut du test Hibernate");
- Properties config = new Properties();
- config.setProperty("hibernate.show_sql", "true");
- config.setProperty("hibernate.hbm2ddl.auto", "create");
-
- config.setProperty("topia.persistence.classes",
- "org.codelutin.topia.Person");
- config.setProperty("hibernate.dialect",
- "org.hibernate.dialect.PostgreSQLDialect");
- config.setProperty("hibernate.connection.driver_class",
- "org.postgresql.Driver");
- config.setProperty("hibernate.connection.url",
- "jdbc:postgresql:database");
- config.setProperty("hibernate.connection.username", "dbuser");
- config.setProperty("hibernate.connection.password", "xxxxxxxx");
-
- /*
- * #hibernate.dialect org.hibernate.dialect.DerbyDialect
- * #hibernate.connection.driver_class
- * org.apache.derby.jdbc.EmbeddedDriver #hibernate.connection.username
- * #hibernate.connection.password #hibernate.connection.url
- * jdbc:derby:/test;create=true
- */
+ Properties config = getProperties();
TopiaContext context = TopiaContextFactory.getContext(config);
@@ -118,6 +140,8 @@
p.setFirstname("benjamin");
persons.update(p);
childContext.commitTransaction();
+
+ Object id = p.getTopiaId();
Person p1 = persons.create();
p1.setName("poussin");
@@ -134,32 +158,29 @@
p.setFirstname("berengere");
persons.update(p);
childContext.commitTransaction();
-
+
+ p.setFirstname("toto");
+ persons.update(p);
+ assertEquals("toto", p.getFirstname());
+ childContext.rollbackTransaction();
+
+ p = persons.findByTopiaId(id);
+ assertEquals("berengere", p.getFirstname());
+
+ TopiaContextImplementor childContext2 = (TopiaContextImplementor) context
+ .beginTransaction();
+ TopiaDAO persons2 = childContext2.getDAO(Person.class);
+
+ Person pp = persons2.findByTopiaId(id);
+ assertEquals("berengere", pp.getFirstname());
+
}
public void testFlatFile() throws Exception {
- log.info("Debut du test");
- log.debug("(debug mode)");
-
- Properties config = new Properties();
- config.setProperty("topia.persistence.classes",
- "org.codelutin.topia.Person");
+ System.out.println("Debut du test FlatFile");
+ Properties config = getProperties();
config.setProperty("topia.dao.default.class", "flatfile");
- config.setProperty("topia.dao.flatfile.directory", "/tmp/topiadb");
- config.setProperty("topia.dao.flatfile.mapping.key", "firstname");
-
- config.setProperty("hibernate.show_sql", "true");
- config.setProperty("hibernate.hbm2ddl.auto", "create");
-
- config.setProperty("hibernate.dialect",
- "org.hibernate.dialect.PostgreSQLDialect");
- config.setProperty("hibernate.connection.driver_class",
- "org.postgresql.Driver");
- config.setProperty("hibernate.connection.url",
- "jdbc:postgresql:database");
- config.setProperty("hibernate.connection.username", "dbuser");
- config.setProperty("hibernate.connection.password", "xxxxxxxx");
TopiaContext context = TopiaContextFactory.getContext(config);
@@ -190,4 +211,127 @@
}
+
+ public void testConstructor() throws Exception {
+ System.out.println("Debut du test constructor");
+
+ Properties config = getProperties();
+
+ TopiaContext context = TopiaContextFactory.getContext(config);
+
+ TopiaContextImplementor childContext = (TopiaContextImplementor) context
+ .beginTransaction();
+
+ TopiaDAO persons = childContext.getDAO(Person.class);
+ Person p = persons.create("name", "poussin", "firstname", "toto");
+ assertEquals("poussin", p.getName());
+ assertEquals("toto", p.getFirstname());
+
+ persons.update(p);
+ childContext.commitTransaction();
+
+ p.setFirstname("titi");
+ assertEquals("titi", p.getFirstname());
+
+ persons.update(p);
+ childContext.commitTransaction();
+
+ p.setFirstname("benjamin");
+ assertEquals("benjamin", p.getFirstname());
+
+ persons.update(p);
+ childContext.commitTransaction();
+
+ persons.delete(p);
+ childContext.commitTransaction();
+ }
+
+ String state = "";
+
+ public void testEventHibernate() throws Exception {
+ System.out.println("Debut du test Event");
+
+ Properties config = getProperties();
+ // FIXME voir pourquoi si on a pas un nouveau context ca ne marche pas :(
+ // On met un propriete qui ne sert a rien pour etre sur qu'il
+ // recre bien un Context pour ce test
+// config.setProperty("test", "testEventHibernate");
+
+ TopiaContext context = TopiaContextFactory.getContext(config);
+
+ TopiaContextImplementor childContext = (TopiaContextImplementor) context
+ .beginTransaction();
+
+ TopiaVetoableEntityListener v = new TopiaVetoableEntityListener() {
+ public void loadEntity(TopiaVetoableEntityEvent event) {
+ System.out.println("vetoLoad " + event.getEntityClass() + " id: " + event.getId());
+ state = "vetoLoad";
+ }
+ public void createEntity(TopiaVetoableEntityEvent event) {
+ System.out.println("vetoCreate " + event.getEntityClass() + " id: " + event.getId());
+ state = "vetoCreate";
+ }
+ public void updateEntity(TopiaVetoableEntityEvent event) {
+ System.out.println("vetoUpdate " + event.getEntityClass() + " id: " + event.getId());
+ state = "vetoUpdate";
+ }
+ public void deleteEntity(TopiaVetoableEntityEvent event) {
+ System.out.println("vetoDelete " + event.getEntityClass() + " id: " + event.getId());
+ state = "vetoDelete";
+ }
+ };
+
+ TopiaEntityListener l = new TopiaEntityListener() {
+ public void entityLoaded(TopiaEntityEvent event) {
+ System.out.println("entityLoaded " + event.getTopiaEntities());
+ state = "entityLoaded";
+ }
+ public void entityCreated(TopiaEntityEvent event) {
+ System.out.println("entityCreated " + event.getTopiaEntities());
+ state = "entityCreated";
+ }
+ public void entityUpdated(TopiaEntityEvent event) {
+ System.out.println("entityUpdated " + event.getTopiaEntities());
+ state = "entityUpdated";
+ }
+ public void entityDeleted(TopiaEntityEvent event) {
+ System.out.println("entityDeleted " + event.getTopiaEntities());
+ state = "entityDeleted";
+ }
+ };
+
+
+ childContext.addVetoableListener(v);
+ childContext.addTopiaEntityListener(l);
+
+ TopiaDAO persons = childContext.getDAO(Person.class);
+ Person p = persons.create();
+ assertEquals("entityCreated", state);
+ p.setName("poussin");
+ p.setFirstname("benjamin");
+ persons.update(p);
+ childContext.commitTransaction();
+ assertEquals("entityUpdated", state);
+
+ p.setFirstname("toto");
+ persons.update(p);
+ childContext.commitTransaction();
+ assertEquals("entityUpdated", state);
+
+ TopiaContextImplementor childContext2 = (TopiaContextImplementor) context
+ .beginTransaction();
+ childContext2.addVetoableListener(v);
+ childContext2.addTopiaEntityListener(l);
+ TopiaDAO persons2 = childContext2.getDAO(Person.class);
+
+ Person pp = persons2.findByTopiaId(p.getTopiaId());
+ assertEquals(p.getFirstname(), pp.getFirstname());
+ assertEquals("entityLoaded", state);
+
+ persons.delete(p);
+ childContext.commitTransaction();
+ assertEquals("entityDeleted", state);
+
+ }
+
}