Author: thomas.heute(a)jboss.com
Date: 2008-01-15 16:14:33 -0500 (Tue, 15 Jan 2008)
New Revision: 9516
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java
Log:
[JBPORTAL-1840] Workaround to database that are not case sensitive by default.
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java 2008-01-15
19:07:36 UTC (rev 9515)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java 2008-01-15
21:14:33 UTC (rev 9516)
@@ -244,8 +244,9 @@
}
/**
+ * @throws DuplicatePortalObjectException
*/
- public void createChild(ObjectNode node)
+ public void createChild(ObjectNode node) throws DuplicatePortalObjectException
{
}
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java 2008-01-15
19:07:36 UTC (rev 9515)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java 2008-01-15
21:14:33 UTC (rev 9516)
@@ -26,6 +26,7 @@
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import org.hibernate.exception.ConstraintViolationException;
import org.jboss.logging.Logger;
import org.jboss.portal.core.model.portal.DuplicatePortalObjectException;
import org.jboss.portal.core.model.portal.PortalObjectId;
@@ -92,12 +93,21 @@
session.flush();
}
- public void createChild(ObjectNode node)
+ public void createChild(ObjectNode node) throws DuplicatePortalObjectException
{
Session session = sessionFactory.getCurrentSession();
- session.save(node);
- session.save(node.getObject());
- session.flush();
+ try
+ {
+ session.save(node);
+ session.save(node.getObject());
+ session.flush();
+ }
+ catch (ConstraintViolationException e)
+ {
+ log.warn("The configured database is probably case-insensitive.
" + e.getMessage());
+ session.close();
+ throw new DuplicatePortalObjectException();
+ }
}
public void updated(ObjectNode node)
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java 2008-01-15
19:07:36 UTC (rev 9515)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java 2008-01-15
21:14:33 UTC (rev 9516)
@@ -119,11 +119,11 @@
TransactionAssert.beginTransaction();
PortalContainer ctx = container.getContext();
Portal n1 = ctx.createPortal("default");
- Page n2 = n1.createPage("default");
+ n1.createPage("default");
boolean duplicate = false;
try
{
- Page n3 = n1.createPage("default");
+ n1.createPage("default");
}
catch (DuplicatePortalObjectException e)
{
@@ -136,22 +136,31 @@
public void testRegisterObjectWithSameNameCaseInsensitive() throws Exception
{
+ // Some database will create 2 pages, while some other will consider
+ // both names as equal.
TransactionAssert.beginTransaction();
PortalContainer ctx = container.getContext();
Portal n1 = ctx.createPortal("default");
- Page n2 = n1.createPage("default");
- boolean duplicate = true;
+ n1.createPage("default");
+
+ TransactionAssert.commitTransaction();
+
+ boolean rollback = false;
+
+ TransactionAssert.beginTransaction();
try
{
- Page n3 = n1.createPage("dEfAuLt");
+ n1.createPage("dEfAuLt");
}
catch (DuplicatePortalObjectException e)
{
- duplicate = false;
+ rollback = true;
+ TransactionAssert.rollbackTransaction(false);
}
- assertTrue(duplicate);
-
- TransactionAssert.commitTransaction();
+ if (!rollback)
+ {
+ TransactionAssert.commitTransaction();
+ }
}
public void testPropertyUpdateDoesNotCascadeToDescendantsWhenTheyDeclareIt() throws
Exception
Show replies by date