You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(22) |
Nov
(308) |
Dec
(131) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(369) |
Feb
(171) |
Mar
(236) |
Apr
(187) |
May
(218) |
Jun
(217) |
Jul
(127) |
Aug
(448) |
Sep
(270) |
Oct
(231) |
Nov
(422) |
Dec
(255) |
| 2004 |
Jan
(111) |
Feb
(73) |
Mar
(338) |
Apr
(351) |
May
(349) |
Jun
(495) |
Jul
(394) |
Aug
(1048) |
Sep
(499) |
Oct
(142) |
Nov
(269) |
Dec
(638) |
| 2005 |
Jan
(825) |
Feb
(1272) |
Mar
(593) |
Apr
(690) |
May
(950) |
Jun
(958) |
Jul
(767) |
Aug
(839) |
Sep
(525) |
Oct
(449) |
Nov
(585) |
Dec
(455) |
| 2006 |
Jan
(603) |
Feb
(656) |
Mar
(195) |
Apr
(114) |
May
(136) |
Jun
(100) |
Jul
(128) |
Aug
(68) |
Sep
(7) |
Oct
(1) |
Nov
(1) |
Dec
(8) |
| 2007 |
Jan
(4) |
Feb
(3) |
Mar
(8) |
Apr
(16) |
May
(5) |
Jun
(4) |
Jul
(6) |
Aug
(23) |
Sep
(15) |
Oct
(5) |
Nov
(7) |
Dec
(5) |
| 2008 |
Jan
(5) |
Feb
(1) |
Mar
(1) |
Apr
(5) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(2) |
| 2013 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <hib...@li...> - 2006-07-27 22:38:13
|
Author: ste...@jb...
Date: 2006-07-26 11:05:23 -0400 (Wed, 26 Jul 2006)
New Revision: 10162
Removed:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
Log:
JDK5 cleanup
Deleted: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-26 15:00:49 UTC (rev 10161)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-26 15:05:23 UTC (rev 10162)
@@ -1,21 +0,0 @@
-//$Id: $
-package org.hibernate.test.bytecode.javassist;
-
-/**
- * @author Emmanuel Bernard
- */
-public class Hammer implements Tool {
- private Long id;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public Integer usage() {
- return new Integer( 0 );
- }
-}
Deleted: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-26 15:00:49 UTC (rev 10161)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-26 15:05:23 UTC (rev 10162)
@@ -1,47 +0,0 @@
-//$Id: $
-package org.hibernate.test.bytecode.javassist;
-
-import org.hibernate.Session;
-import org.hibernate.Transaction;
-import org.hibernate.Hibernate;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.test.TestCase;
-
-/**
- * @author Emmanuel Bernard
- */
-public class ProxyBreakingTest extends TestCase {
-
- static {
- System.setProperty( "hibernate.bytecode.provider", "javassist" );
- }
-
- public void testProxiedBridgeMethod() throws Exception {
- //bridge methods should not be proxied
- Session s = openSession( );
- Transaction tx = s.beginTransaction();
- Hammer h = new Hammer();
- s.save(h);
- s.flush();
- s.clear();
- assertNotNull( "The proxy creation failure is breaking things", h.getId() );
- h = (Hammer) s.load( Hammer.class, h.getId() );
- assertFalse( Hibernate.isInitialized( h ) );
- tx.rollback();
- s.close();
- }
-
- public ProxyBreakingTest(String name) {
- super( name );
- }
-
- protected String[] getMappings() {
- return new String[] {
- "bytecode/javassist/Hammer.hbm.xml"
- };
- }
-
- protected void configure(Configuration cfg) {
- super.configure( cfg.setProperty( "hibernate.bytecode.provider", "javassist" ) );
- }
-}
Deleted: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-26 15:00:49 UTC (rev 10161)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-26 15:05:23 UTC (rev 10162)
@@ -1,13 +0,0 @@
-//$Id: $
-package org.hibernate.test.bytecode.javassist;
-
-/**
- * @author Emmanuel Bernard
- */
-public interface Tool {
- public Long getId();
-
- public void setId(Long id);
-
- public Integer usage();
-}
Deleted: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-26 15:00:49 UTC (rev 10161)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-26 15:05:23 UTC (rev 10162)
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
-<hibernate-mapping package="org.hibernate.test.bytecode.javassist">
- <class name="Hammer">
- <id name="id" type="java.lang.Long">
- <generator class="increment"/>
- </id>
- </class>
-</hibernate-mapping>
|
|
From: <hib...@li...> - 2006-07-27 21:52:06
|
Author: max...@jb...
Date: 2006-07-27 17:51:51 -0400 (Thu, 27 Jul 2006)
New Revision: 10177
Modified:
trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl
Log:
whoops - forgot to handle timestamp when ensuring order in hbm.xml
Modified: trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl
===================================================================
--- trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl 2006-07-27 07:25:43 UTC (rev 10176)
+++ trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl 2006-07-27 21:51:51 UTC (rev 10177)
@@ -72,11 +72,11 @@
<#-- version has to be done explicitly since Annotation's does not list version first -->
<#if pojo.hasVersionProperty()>
<#assign property=clazz.getVersion()/>
-<#include "version.hbm.ftl"/>
+<#include "${c2h.getTag(property)}.hbm.ftl"/>
</#if>
<#foreach property in clazz.getUnjoinedPropertyIterator()>
-<#if c2h.getTag(property)!="version">
+<#if c2h.getTag(property)!="version" && c2h.getTag(property)!="timestamp">
<#include "${c2h.getTag(property)}.hbm.ftl"/>
</#if>
</#foreach>
|
|
From: <hib...@li...> - 2006-07-27 21:19:05
|
Author: max...@jb...
Date: 2006-07-26 07:38:29 -0400 (Wed, 26 Jul 2006)
New Revision: 10155
Modified:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/AllTests.java
Log:
update AllTests for 1941
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/AllTests.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/AllTests.java 2006-07-26 11:32:19 UTC (rev 10154)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/AllTests.java 2006-07-26 11:38:29 UTC (rev 10155)
@@ -82,6 +82,7 @@
import org.hibernate.test.mapelemformula.MapElementFormulaTest;
import org.hibernate.test.mapping.PersistentClassVisitorTest;
import org.hibernate.test.mapping.ValueVisitorTest;
+import org.hibernate.test.mappingexception.MappingExceptionTest;
import org.hibernate.test.mixed.MixedTest;
import org.hibernate.test.naturalid.NaturalIdTest;
import org.hibernate.test.ondelete.OnDeleteTest;
@@ -270,6 +271,7 @@
suite.addTest( AuctionTest.suite() );
suite.addTest( AuctionTest2.suite() );
suite.addTest( PaginationTest.suite() );
+ suite.addTest( MappingExceptionTest.suite() );
if ( InstrumentTest.isRunnable() ) {
suite.addTest( InstrumentTest.suite() );
}
|
|
From: <hib...@li...> - 2006-07-27 19:27:58
|
Author: epbernard
Date: 2006-07-25 17:47:00 -0400 (Tue, 25 Jul 2006)
New Revision: 10151
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/engine/CascadingAction.java
Log:
HHH-1943
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/engine/CascadingAction.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/engine/CascadingAction.java 2006-07-25 21:37:08 UTC (rev 10150)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/engine/CascadingAction.java 2006-07-25 21:47:00 UTC (rev 10151)
@@ -267,7 +267,8 @@
Type type = persister.getPropertyTypes()[propertyIndex];
if ( type.isEntityType() ) {
String childEntityName = ( ( EntityType ) type ).getAssociatedEntityName( session.getFactory() );
- if ( ForeignKeys.isTransient( childEntityName, child, null, session ) ) {
+
+ if ( ! isInManagedState( child, session ) && ForeignKeys.isTransient( childEntityName, child, null, session ) ) {
String parentEntiytName = persister.getEntityName();
String propertyName = persister.getPropertyNames()[propertyIndex];
throw new TransientObjectException(
@@ -280,6 +281,11 @@
}
}
+ private boolean isInManagedState(Object child, EventSource session) {
+ EntityEntry entry = session.getPersistenceContext().getEntry( child );
+ return entry != null && (entry.getStatus() == Status.MANAGED || entry.getStatus() == Status.READ_ONLY);
+ }
+
public String toString() {
return "ACTION_PERSIST_ON_FLUSH";
}
|
|
From: <hib...@li...> - 2006-07-27 17:43:05
|
Author: ste...@jb...
Date: 2006-07-26 11:00:49 -0400 (Wed, 26 Jul 2006)
New Revision: 10161
Modified:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
Log:
JDK5 cleanup
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-26 14:58:48 UTC (rev 10160)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-26 15:00:49 UTC (rev 10161)
@@ -16,6 +16,6 @@
}
public Integer usage() {
- return 0;
+ return new Integer( 0 );
}
}
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-26 14:58:48 UTC (rev 10160)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-26 15:00:49 UTC (rev 10161)
@@ -9,5 +9,5 @@
public void setId(Long id);
- public Number usage();
+ public Integer usage();
}
|
|
From: <hib...@li...> - 2006-07-27 14:18:07
|
Author: ste...@jb...
Date: 2006-07-26 10:58:48 -0400 (Wed, 26 Jul 2006)
New Revision: 10160
Modified:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
Log:
JDK5 cleanup
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-26 13:36:20 UTC (rev 10159)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-26 14:58:48 UTC (rev 10160)
@@ -41,7 +41,6 @@
};
}
- @Override
protected void configure(Configuration cfg) {
super.configure( cfg.setProperty( "hibernate.bytecode.provider", "javassist" ) );
}
|
|
From: <hib...@li...> - 2006-07-27 14:16:33
|
Author: ste...@jb...
Date: 2006-07-26 11:09:20 -0400 (Wed, 26 Jul 2006)
New Revision: 10164
Modified:
branches/Branch_3_2/Hibernate3/grammar/hql.g
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java
Log:
ported fix for HHH-1947 to 3.2 branch
Modified: branches/Branch_3_2/Hibernate3/grammar/hql.g
===================================================================
--- branches/Branch_3_2/Hibernate3/grammar/hql.g 2006-07-26 15:07:50 UTC (rev 10163)
+++ branches/Branch_3_2/Hibernate3/grammar/hql.g 2006-07-26 15:09:20 UTC (rev 10164)
@@ -521,7 +521,7 @@
#l.setText( (n == null) ? "like" : "not like");
}
concatenation likeEscape)
- | (MEMBER! OF! p:path! {
+ | (MEMBER! (OF!)? p:path! {
processMemberOf(n,#p,currentAST);
} ) )
)
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java 2006-07-26 15:07:50 UTC (rev 10163)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java 2006-07-26 15:09:20 UTC (rev 10164)
@@ -929,6 +929,7 @@
public void testEjbqlExtensions() throws Exception {
parse( "select object(a) from Animal a where a.mother member of a.offspring" );
+ parse( "select object(a) from Animal a where a.mother member a.offspring" );
parse( "select object(a) from Animal a where a.offspring is empty" );
}
|
|
From: <hib...@li...> - 2006-07-27 14:13:30
|
Author: ste...@jb...
Date: 2006-07-26 14:04:07 -0400 (Wed, 26 Jul 2006)
New Revision: 10173
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/hql/ast/tree/FromClause.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java
Log:
ported fix for HHH-1948 to 3.2 branch
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/hql/ast/tree/FromClause.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/hql/ast/tree/FromClause.java 2006-07-26 18:01:49 UTC (rev 10172)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/hql/ast/tree/FromClause.java 2006-07-26 18:04:07 UTC (rev 10173)
@@ -103,12 +103,27 @@
*/
public FromElement getFromElement(String aliasOrClassName) {
FromElement fromElement = ( FromElement ) fromElementByClassAlias.get( aliasOrClassName );
+ if ( fromElement == null && getSessionFactoryHelper().isStrictJPAQLComplianceEnabled() ) {
+ fromElement = findIntendedAliasedFromElementBasedOnCrazyJPARequirements( aliasOrClassName );
+ }
if ( fromElement == null && parentFromClause != null ) {
fromElement = parentFromClause.getFromElement( aliasOrClassName );
}
return fromElement;
}
+ private FromElement findIntendedAliasedFromElementBasedOnCrazyJPARequirements(String specifiedAlias) {
+ Iterator itr = fromElementByClassAlias.entrySet().iterator();
+ while ( itr.hasNext() ) {
+ Map.Entry entry = ( Map.Entry ) itr.next();
+ String alias = ( String ) entry.getKey();
+ if ( alias.equalsIgnoreCase( specifiedAlias ) ) {
+ return ( FromElement ) entry.getValue();
+ }
+ }
+ return null;
+ }
+
/**
* Convenience method to check whether a given token represents a from-element alias.
*
@@ -117,7 +132,7 @@
* from this point in the query graph.
*/
public boolean isFromElementAlias(String possibleAlias) {
- boolean isAlias = fromElementByClassAlias.containsKey( possibleAlias );
+ boolean isAlias = containsClassAlias( possibleAlias );
if ( !isAlias && parentFromClause != null ) {
// try the parent FromClause...
isAlias = parentFromClause.isFromElementAlias( possibleAlias );
@@ -227,7 +242,11 @@
* @return true if the from node contains the class alias name.
*/
public boolean containsClassAlias(String alias) {
- return fromElementByClassAlias.keySet().contains( alias );
+ boolean isAlias = fromElementByClassAlias.containsKey( alias );
+ if ( !isAlias && getSessionFactoryHelper().isStrictJPAQLComplianceEnabled() ) {
+ isAlias = findIntendedAliasedFromElementBasedOnCrazyJPARequirements( alias ) != null;
+ }
+ return isAlias;
}
/**
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java 2006-07-26 18:01:49 UTC (rev 10172)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java 2006-07-26 18:04:07 UTC (rev 10173)
@@ -19,6 +19,7 @@
public static Test suite() {
return new TestSuite( JPAQLComplianceTest.class );
}
+
public void testAliasNameSameAsUnqualifiedEntityName() {
Session s = openSession();
s.beginTransaction();
@@ -39,4 +40,16 @@
}
s.close();
}
+
+ public void testIdentifierCaseSensitive() throws Exception {
+ Session s = openSession( );
+ s.createQuery( "select object(I) from Item i").list();
+ s.close();
+ }
+
+ public void testSelectWithDistinctClause() {
+ Session s = openSession();
+ s.createQuery( "select c FROM Item c WHERE c.parts IS EMPTY" ).list();
+ s.close();
+ }
}
|
|
From: <hib...@li...> - 2006-07-27 12:10:55
|
Author: max...@jb...
Date: 2006-07-26 08:18:38 -0400 (Wed, 26 Jul 2006)
New Revision: 10157
Modified:
trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java
Log:
HBX-710 bomb detection
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java 2006-07-26 11:38:41 UTC (rev 10156)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java 2006-07-26 12:18:38 UTC (rev 10157)
@@ -17,6 +17,8 @@
import org.apache.tools.ant.types.Environment;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PropertySet;
+import org.hibernate.MappingException;
+import org.hibernate.MappingNotFoundException;
import org.hibernate.cfg.Configuration;
import org.hibernate.util.StringHelper;
@@ -173,6 +175,7 @@
private void reportException(Throwable re, int count, ExporterTask generatorTask) {
log("An exception occurred while running exporter #" + count + ":" + generatorTask.getName(), Project.MSG_ERR);
log("To get the full stack trace run ant with -verbose", Project.MSG_ERR);
+
log(re.toString(), Project.MSG_ERR);
String ex = new String();
Throwable cause = re.getCause();
@@ -187,6 +190,11 @@
if(StringHelper.isNotEmpty(ex)) {
log(ex, Project.MSG_ERR);
}
+
+ String newbieMessage = getProbableSolutionOrCause(re);
+ if(newbieMessage!=null) {
+ log(newbieMessage);
+ }
if(re instanceof BuildException) {
throw (BuildException)re;
@@ -195,6 +203,50 @@
}
}
+ private String getProbableSolutionOrCause(Throwable re) {
+ if(re==null) return null;
+
+ if(re instanceof MappingNotFoundException) {
+ MappingNotFoundException mnf = (MappingNotFoundException)re;
+ if("resource".equals(mnf.getType())) {
+ return "A " + mnf.getType() + " located at " + mnf.getPath() + " was not found.\n" +
+ "Check the following:\n" +
+ "\n" +
+ "1) Is the spelling/casing correct ?\n" +
+ "2) Is " + mnf.getPath() + " available via the classpath ?\n" +
+ "3) Does it actually exist ?\n";
+ } else {
+ return "A " + mnf.getType() + " located at " + mnf.getPath() + " was not found.\n" +
+ "Check the following:\n" +
+ "\n" +
+ "1) Is the spelling/casing correct ?\n" +
+ "2) Do you permission to access " + mnf.getPath() + " ?\n" +
+ "3) Does it actually exist ?\n";
+ }
+ }
+
+ if(re instanceof ClassNotFoundException || re instanceof NoClassDefFoundError) {
+
+ return "A class were not found in the classpath of the Ant task.\n" +
+ "Ensure that the classpath contains the classes needed for Hibernate and your code are in the classpath.\n";
+
+ }
+
+ if(re instanceof UnsupportedClassVersionError) {
+ return "You are most likely running the ant task with a JRE that is older than the JRE required to use the classes.\n" +
+ "e.g. running with JRE 1.3 or 1.4 when using JDK 1.5 annotations is not possible.\n" +
+ "Ensure that you are using a correct JRE.";
+ }
+
+
+
+ if(re.getCause()!=re) {
+ return getProbableSolutionOrCause( re.getCause() );
+ }
+
+ return null;
+ }
+
private void validateParameters() {
if(generators.isEmpty()) {
throw new BuildException("No exporters specified in <hibernatetool>. There has to be at least one specified. An exporter is e.g. <hbm2java> or <hbmtemplate>. See documentation for details.", getLocation());
|
|
From: <hib...@li...> - 2006-07-27 05:14:52
|
Author: ste...@jb...
Date: 2006-07-26 16:11:52 -0400 (Wed, 26 Jul 2006)
New Revision: 10174
Added:
trunk/Hibernate3/src/org/hibernate/dialect/function/AnsiTrimEmulationFunction.java
Modified:
trunk/Hibernate3/src/org/hibernate/dialect/DerbyDialect.java
Log:
test ansi trim emulation on derby
Modified: trunk/Hibernate3/src/org/hibernate/dialect/DerbyDialect.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/dialect/DerbyDialect.java 2006-07-26 18:04:07 UTC (rev 10173)
+++ trunk/Hibernate3/src/org/hibernate/dialect/DerbyDialect.java 2006-07-26 20:11:52 UTC (rev 10174)
@@ -3,6 +3,7 @@
import org.hibernate.Hibernate;
import org.hibernate.dialect.function.VarArgsSQLFunction;
+import org.hibernate.dialect.function.AnsiTrimEmulationFunction;
import org.hibernate.id.TableHiLoGenerator;
import org.hibernate.sql.CaseFragment;
import org.hibernate.sql.DerbyCaseFragment;
@@ -20,6 +21,7 @@
public DerbyDialect() {
super();
registerFunction( "concat", new VarArgsSQLFunction( Hibernate.STRING, "(","||",")" ) );
+ registerFunction( "trim", new AnsiTrimEmulationFunction() );
}
/**
Added: trunk/Hibernate3/src/org/hibernate/dialect/function/AnsiTrimEmulationFunction.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/dialect/function/AnsiTrimEmulationFunction.java 2006-07-26 18:04:07 UTC (rev 10173)
+++ trunk/Hibernate3/src/org/hibernate/dialect/function/AnsiTrimEmulationFunction.java 2006-07-26 20:11:52 UTC (rev 10174)
@@ -0,0 +1,146 @@
+package org.hibernate.dialect.function;
+
+import org.hibernate.Hibernate;
+import org.hibernate.QueryException;
+import org.hibernate.engine.Mapping;
+import org.hibernate.engine.SessionFactoryImplementor;
+import org.hibernate.type.Type;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * A {@link SQLFunction} implementation that emulates the ANSI SQL trim function
+ * on dialects which do not support the full definition. However, this function
+ * definition does assume the availability of ltrim, rtrim, and replace functions
+ * which it uses in various combinations to emulate the desired ANSI trim()
+ * functionality.
+ *
+ * @author Steve Ebersole
+ */
+public class AnsiTrimEmulationFunction implements SQLFunction {
+
+ private static final SQLFunction LEADING_SPACE_TRIM = new SQLFunctionTemplate( Hibernate.STRING, "ltrim( ?1 )");
+ private static final SQLFunction TRAILING_SPACE_TRIM = new SQLFunctionTemplate( Hibernate.STRING, "rtrim( ?1 )");
+ private static final SQLFunction BOTH_SPACE_TRIM = new SQLFunctionTemplate( Hibernate.STRING, "ltrim( rtrim( ?1 ) )");
+ private static final SQLFunction BOTH_SPACE_TRIM_FROM = new SQLFunctionTemplate( Hibernate.STRING, "ltrim( rtrim( ?2 ) )");
+
+ private static final SQLFunction LEADING_TRIM = new SQLFunctionTemplate( Hibernate.STRING, "replace( replace( rtrim( replace( replace( ?1, ' ', '${space}$' ), ?2, ' ' ) ), ' ', ?2 ), '${space}$', ' ' )" );
+ private static final SQLFunction TRAILING_TRIM = new SQLFunctionTemplate( Hibernate.STRING, "replace( replace( ltrim( replace( replace( ?1, ' ', '${space}$' ), ?2, ' ' ) ), ' ', ?2 ), '${space}$', ' ' )" );
+ private static final SQLFunction BOTH_TRIM = new SQLFunctionTemplate( Hibernate.STRING, "replace( replace( ltrim( rtrim( replace( replace( ?1, ' ', '${space}$' ), ?2, ' ' ) ) ), ' ', ?2 ), '${space}$', ' ' )" );
+
+ public Type getReturnType(Type columnType, Mapping mapping) throws QueryException {
+ return Hibernate.STRING;
+ }
+
+ public boolean hasArguments() {
+ return true;
+ }
+
+ public boolean hasParenthesesIfNoArguments() {
+ return false;
+ }
+
+ public String render(List args, SessionFactoryImplementor factory) throws QueryException {
+ // according to both the ANSI-SQL and EJB3 specs, trim can either take
+ // exactly one parameter or a variable number of parameters between 1 and 4.
+ // from the SQL spec:
+ //
+ // <trim function> ::=
+ // TRIM <left paren> <trim operands> <right paren>
+ //
+ // <trim operands> ::=
+ // [ [ <trim specification> ] [ <trim character> ] FROM ] <trim source>
+ //
+ // <trim specification> ::=
+ // LEADING
+ // | TRAILING
+ // | BOTH
+ //
+ // If only <trim specification> is omitted, BOTH is assumed;
+ // if <trim character> is omitted, space is assumed
+ if ( args.size() == 1 ) {
+ // we have the form: trim(trimSource)
+ // so we trim leading and trailing spaces
+ return BOTH_SPACE_TRIM.render( args, factory );
+ }
+ else if ( "from".equalsIgnoreCase( ( String ) args.get( 0 ) ) ) {
+ // we have the form: trim(from trimSource).
+ // This is functionally equivalent to trim(trimSource)
+ return BOTH_SPACE_TRIM_FROM.render( args, factory );
+ }
+ else {
+ // otherwise, a trim-specification and/or a trim-character
+ // have been specified; we need to decide which options
+ // are present and "do the right thing"
+ boolean leading = true; // should leading trim-characters be trimmed?
+ boolean trailing = true; // should trailing trim-characters be trimmed?
+ String trimCharacter = null; // the trim-character
+ String trimSource = null; // the trim-source
+
+ // potentialTrimCharacterArgIndex = 1 assumes that a
+ // trim-specification has been specified. we handle the
+ // exception to that explicitly
+ int potentialTrimCharacterArgIndex = 1;
+ String firstArg = ( String ) args.get( 0 );
+ if ( "leading".equalsIgnoreCase( firstArg ) ) {
+ trailing = false;
+ }
+ else if ( "trailing".equalsIgnoreCase( firstArg ) ) {
+ leading = false;
+ }
+ else if ( "both".equalsIgnoreCase( firstArg ) ) {
+ }
+ else {
+ potentialTrimCharacterArgIndex = 0;
+ }
+
+ String potentialTrimCharacter = ( String ) args.get( potentialTrimCharacterArgIndex );
+ if ( "from".equalsIgnoreCase( potentialTrimCharacter ) ) {
+ trimCharacter = "' '";
+ trimSource = ( String ) args.get( potentialTrimCharacterArgIndex + 1 );
+ }
+ else if ( potentialTrimCharacterArgIndex + 1 >= args.size() ) {
+ trimCharacter = "' '";
+ trimSource = potentialTrimCharacter;
+ }
+ else {
+ trimCharacter = potentialTrimCharacter;
+ if ( "from".equalsIgnoreCase( ( String ) args.get( potentialTrimCharacterArgIndex + 1 ) ) ) {
+ trimSource = ( String ) args.get( potentialTrimCharacterArgIndex + 2 );
+ }
+ else {
+ trimSource = ( String ) args.get( potentialTrimCharacterArgIndex + 1 );
+ }
+ }
+
+ List argsToUse = null;
+ argsToUse = new ArrayList();
+ argsToUse.add( trimSource );
+ argsToUse.add( trimCharacter );
+
+ if ( trimCharacter.equals( "' '" ) ) {
+ if ( leading && trailing ) {
+ return BOTH_SPACE_TRIM.render( argsToUse, factory );
+ }
+ else if ( leading ) {
+ return LEADING_SPACE_TRIM.render( argsToUse, factory );
+ }
+ else {
+ return TRAILING_SPACE_TRIM.render( argsToUse, factory );
+ }
+ }
+ else {
+ if ( leading && trailing ) {
+ return BOTH_TRIM.render( argsToUse, factory );
+ }
+ else if ( leading ) {
+ return LEADING_TRIM.render( argsToUse, factory );
+ }
+ else {
+ return TRAILING_TRIM.render( argsToUse, factory );
+ }
+ }
+ }
+ }
+}
|
|
From: <hib...@li...> - 2006-07-27 02:50:24
|
Author: epbernard
Date: 2006-07-25 18:20:30 -0400 (Tue, 25 Jul 2006)
New Revision: 10152
Modified:
trunk/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java
Log:
Add test for HHH-1944
Modified: trunk/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java 2006-07-25 21:47:00 UTC (rev 10151)
+++ trunk/Hibernate3/test/org/hibernate/test/jpa/ql/JPAQLComplianceTest.java 2006-07-25 22:20:30 UTC (rev 10152)
@@ -39,4 +39,10 @@
}
s.close();
}
+
+ public void testSelectWithDistinctClause() {
+ Session s = openSession();
+ s.createQuery( "select c FROM Item c WHERE c.parts IS EMPTY" ).list();
+ s.close();
+ }
}
|
|
From: <hib...@li...> - 2006-07-26 13:25:55
|
Author: epbernard
Date: 2006-07-26 09:00:00 -0400 (Wed, 26 Jul 2006)
New Revision: 10158
Modified:
trunk/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java
Log:
HHH-1947 test
Modified: trunk/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java 2006-07-26 12:18:38 UTC (rev 10157)
+++ trunk/Hibernate3/test/org/hibernate/test/hql/HqlParserTest.java 2006-07-26 13:00:00 UTC (rev 10158)
@@ -2,6 +2,9 @@
package org.hibernate.test.hql;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
import antlr.RecognitionException;
import antlr.TokenStreamException;
import antlr.collections.AST;
@@ -13,9 +16,6 @@
import org.hibernate.hql.ast.util.ASTIterator;
import org.hibernate.hql.ast.util.ASTPrinter;
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-
/**
* Tests the HQL parser on various inputs, just makes sure that the first phase of the parser
* works properly (i.e. no unexpected syntax errors).
@@ -929,6 +929,7 @@
public void testEjbqlExtensions() throws Exception {
parse( "select object(a) from Animal a where a.mother member of a.offspring" );
+ parse( "select object(a) from Animal a where a.mother member a.offspring" ); //no member of
parse( "select object(a) from Animal a where a.offspring is empty" );
}
|
|
From: <hib...@li...> - 2006-07-26 13:18:24
|
Author: max...@jb... Date: 2006-07-26 05:11:56 -0400 (Wed, 26 Jul 2006) New Revision: 10153 Added: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/mappingexception/ Log: merge to 3.2 -> HHH-1941 Be more specific about x not found and invalid mapping exceptions to allow tools to tell about it Copied: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/mappingexception (from rev 10148, trunk/Hibernate3/test/org/hibernate/test/mappingexception) |
|
From: <hib...@li...> - 2006-07-26 11:32:32
|
Author: max...@jb...
Date: 2006-07-26 07:32:19 -0400 (Wed, 26 Jul 2006)
New Revision: 10154
Added:
branches/Branch_3_2/Hibernate3/src/org/hibernate/InvalidMappingException.java
branches/Branch_3_2/Hibernate3/src/org/hibernate/MappingNotFoundException.java
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/DuplicateMappingException.java
branches/Branch_3_2/Hibernate3/src/org/hibernate/cfg/Configuration.java
Log:
merge from 3.2 HHH-1941
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/DuplicateMappingException.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/DuplicateMappingException.java 2006-07-26 09:11:56 UTC (rev 10153)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/DuplicateMappingException.java 2006-07-26 11:32:19 UTC (rev 10154)
@@ -1,5 +1,12 @@
package org.hibernate;
+/**
+ * Raised whenever a duplicate for a certain type occurs.
+ * Duplicate class, table, property name etc.
+ *
+ * @author Max Rydahl Andersen
+ *
+ */
public class DuplicateMappingException extends MappingException {
private final String name;
Copied: branches/Branch_3_2/Hibernate3/src/org/hibernate/InvalidMappingException.java (from rev 10148, trunk/Hibernate3/src/org/hibernate/InvalidMappingException.java)
Copied: branches/Branch_3_2/Hibernate3/src/org/hibernate/MappingNotFoundException.java (from rev 10148, trunk/Hibernate3/src/org/hibernate/MappingNotFoundException.java)
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/cfg/Configuration.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/cfg/Configuration.java 2006-07-26 09:11:56 UTC (rev 10153)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/cfg/Configuration.java 2006-07-26 11:32:19 UTC (rev 10154)
@@ -34,7 +34,9 @@
import org.hibernate.EmptyInterceptor;
import org.hibernate.HibernateException;
import org.hibernate.Interceptor;
+import org.hibernate.InvalidMappingException;
import org.hibernate.MappingException;
+import org.hibernate.MappingNotFoundException;
import org.hibernate.SessionFactory;
import org.hibernate.proxy.EntityNotFoundDelegate;
import org.hibernate.dialect.Dialect;
@@ -271,20 +273,22 @@
public Configuration addFile(String xmlFile) throws MappingException {
log.info( "Reading mappings from file: " + xmlFile );
try {
- List errors = new ArrayList();
- org.dom4j.Document doc = xmlHelper.createSAXReader( xmlFile, errors, entityResolver )
- .read( new File( xmlFile ) );
- if ( errors.size() != 0 ) {
- throw new MappingException( "invalid mapping", (Throwable) errors.get( 0 ) );
+ File file = new File( xmlFile );
+ if(file.exists()) {
+ List errors = new ArrayList();
+ org.dom4j.Document doc = xmlHelper.createSAXReader( xmlFile, errors, entityResolver )
+ .read( file );
+ if ( errors.size() != 0 ) {
+ throw new MappingException( "invalid mapping", (Throwable) errors.get( 0 ) );
+ }
+ add( doc );
+ return this;
+ } else {
+ throw new MappingNotFoundException("file", file.toString());
}
- add( doc );
- return this;
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping document from file: " + xmlFile,
- e
- );
+ throw new InvalidMappingException("file", xmlFile, e);
}
}
@@ -299,10 +303,7 @@
addInputStream( new FileInputStream( xmlFile ) );
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping document from file: " + xmlFile.getPath(),
- e
- );
+ throw new InvalidMappingException( "file", xmlFile.getPath(),e );
}
return this;
}
@@ -332,8 +333,8 @@
}
}
- // If deserialization failed
- if ( doc == null ) {
+ // If deserialization failed or cached file does not exist
+ if ( doc == null && xmlFile.exists()) {
log.info( "Reading mappings from file: " + xmlFile );
doc = xmlHelper.createSAXReader( xmlFile.getAbsolutePath(), errors, entityResolver )
.read( xmlFile );
@@ -344,6 +345,8 @@
catch (SerializationException e) {
log.warn( "Could not write cached file: " + lazyfile, e );
}
+ } else {
+ throw new MappingNotFoundException("file", xmlFile.toString());
}
if ( errors.size() != 0 ) {
@@ -353,10 +356,7 @@
return this;
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping document from file: " + xmlFile,
- e
- );
+ throw new InvalidMappingException("file", xmlFile.toString(), e);
}
}
@@ -402,7 +402,7 @@
addInputStream( url.openStream() );
}
catch (Exception e) {
- throw new MappingException( "Could not read mapping document from URL: " + url, e );
+ throw new InvalidMappingException( "URL", ""+url, e );
}
return this;
}
@@ -466,7 +466,7 @@
return this;
}
catch (DocumentException e) {
- throw new MappingException( "Could not parse mapping document in input stream", e );
+ throw new InvalidMappingException( "input stream", null, e );
}
finally {
try {
@@ -488,13 +488,13 @@
log.info( "Reading mappings from resource: " + path );
InputStream rsrc = classLoader.getResourceAsStream( path );
if ( rsrc == null ) {
- throw new MappingException( "Resource: " + path + " not found" );
+ throw new MappingNotFoundException( "resource", path );
}
try {
return addInputStream( rsrc );
}
catch (MappingException me) {
- throw new MappingException( "Could not read mappings from resource: " + path, me );
+ throw new InvalidMappingException( "resource", path, me );
}
}
@@ -514,13 +514,13 @@
rsrc = Environment.class.getClassLoader().getResourceAsStream( path );
}
if ( rsrc == null ) {
- throw new MappingException( "Resource: " + path + " not found" );
+ throw new MappingNotFoundException( "resource", path );
}
try {
return addInputStream( rsrc );
}
catch (MappingException me) {
- throw new MappingException( "Could not read mappings from resource: " + path, me );
+ throw new InvalidMappingException( "resource", path, me );
}
}
@@ -535,16 +535,14 @@
log.info( "Reading mappings from resource: " + fileName );
InputStream rsrc = persistentClass.getClassLoader().getResourceAsStream( fileName );
if ( rsrc == null ) {
- throw new MappingException( "Resource: " + fileName + " not found" );
+ throw new MappingNotFoundException( "resource", fileName );
}
try {
return addInputStream( rsrc );
}
catch (MappingException me) {
- throw new MappingException(
- "Could not read mappings from resource: " + fileName,
- me
- );
+ throw new InvalidMappingException(
+ "resource", fileName, me );
}
}
@@ -564,8 +562,8 @@
jarFile = new JarFile( jar );
}
catch (IOException ioe) {
- throw new MappingException(
- "Could not read mapping documents from jar: " + jar.getName(),
+ throw new InvalidMappingException(
+ "Could not read mapping documents from jar: " + jar.getName(), "jar", jar.getName(),
ioe
);
}
@@ -581,8 +579,10 @@
addInputStream( jarFile.getInputStream( ze ) );
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping documents from jar: " + jar.getName(),
+ throw new InvalidMappingException(
+ "Could not read mapping documents from jar: " + jar.getName(),
+ "jar",
+ jar.getName(),
e
);
}
|
Author: epbernard
Date: 2006-07-25 13:08:43 -0400 (Tue, 25 Jul 2006)
New Revision: 10149
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Hammer.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/ProxyBreakingTest.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Tool.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/hammer.hbm.xml
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Organization.java
Removed:
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
Modified:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytoone/ManyToOneTest.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/override/Trip.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/Dimensions.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Administration.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/metadata-complete.xml
Log:
Move JDK 5 dependent tests to annotations
more tests for Annotations
Deleted: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -1,21 +0,0 @@
-//$Id: $
-package org.hibernate.test.bytecode.javassist;
-
-/**
- * @author Emmanuel Bernard
- */
-public class Hammer implements Tool {
- private Long id;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public Integer usage() {
- return 0;
- }
-}
Deleted: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -1,48 +0,0 @@
-//$Id: $
-package org.hibernate.test.bytecode.javassist;
-
-import org.hibernate.Session;
-import org.hibernate.Transaction;
-import org.hibernate.Hibernate;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.test.TestCase;
-
-/**
- * @author Emmanuel Bernard
- */
-public class ProxyBreakingTest extends TestCase {
-
- static {
- System.setProperty( "hibernate.bytecode.provider", "javassist" );
- }
-
- public void testProxiedBridgeMethod() throws Exception {
- //bridge methods should not be proxied
- Session s = openSession( );
- Transaction tx = s.beginTransaction();
- Hammer h = new Hammer();
- s.save(h);
- s.flush();
- s.clear();
- assertNotNull( "The proxy creation failure is breaking things", h.getId() );
- h = (Hammer) s.load( Hammer.class, h.getId() );
- assertFalse( Hibernate.isInitialized( h ) );
- tx.rollback();
- s.close();
- }
-
- public ProxyBreakingTest(String name) {
- super( name );
- }
-
- protected String[] getMappings() {
- return new String[] {
- "bytecode/javassist/Hammer.hbm.xml"
- };
- }
-
- @Override
- protected void configure(Configuration cfg) {
- super.configure( cfg.setProperty( "hibernate.bytecode.provider", "javassist" ) );
- }
-}
Deleted: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -1,13 +0,0 @@
-//$Id: $
-package org.hibernate.test.bytecode.javassist;
-
-/**
- * @author Emmanuel Bernard
- */
-public interface Tool {
- public Long getId();
-
- public void setId(Long id);
-
- public Number usage();
-}
Deleted: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-25 17:08:43 UTC (rev 10149)
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
-<hibernate-mapping package="org.hibernate.test.bytecode.javassist">
- <class name="Hammer">
- <id name="id" type="java.lang.Long">
- <generator class="increment"/>
- </id>
- </class>
-</hibernate-mapping>
\ No newline at end of file
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Hammer.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Hammer.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Hammer.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -0,0 +1,21 @@
+//$Id: $
+package org.hibernate.test.annotations.bytecode;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class Hammer implements Tool {
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Integer usage() {
+ return 0;
+ }
+}
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/ProxyBreakingTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/ProxyBreakingTest.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/ProxyBreakingTest.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -0,0 +1,48 @@
+//$Id: $
+package org.hibernate.test.annotations.bytecode;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.Hibernate;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.test.TestCase;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class ProxyBreakingTest extends TestCase {
+
+ static {
+ System.setProperty( "hibernate.bytecode.provider", "javassist" );
+ }
+
+ public void testProxiedBridgeMethod() throws Exception {
+ //bridge methods should not be proxied
+ Session s = openSession( );
+ Transaction tx = s.beginTransaction();
+ Hammer h = new Hammer();
+ s.save(h);
+ s.flush();
+ s.clear();
+ assertNotNull( "The proxy creation failure is breaking things", h.getId() );
+ h = (Hammer) s.load( Hammer.class, h.getId() );
+ assertFalse( Hibernate.isInitialized( h ) );
+ tx.rollback();
+ s.close();
+ }
+
+ public ProxyBreakingTest(String name) {
+ super( name );
+ }
+
+ protected String[] getMappings() {
+ return new String[] {
+ "annotations/bytecode/Hammer.hbm.xml"
+ };
+ }
+
+ @Override
+ protected void configure(Configuration cfg) {
+ super.configure( cfg.setProperty( "hibernate.bytecode.provider", "javassist" ) );
+ }
+}
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Tool.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Tool.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/Tool.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -0,0 +1,13 @@
+//$Id: $
+package org.hibernate.test.annotations.bytecode;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public interface Tool {
+ public Long getId();
+
+ public void setId(Long id);
+
+ public Number usage();
+}
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/hammer.hbm.xml
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/hammer.hbm.xml 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/bytecode/hammer.hbm.xml 2006-07-25 17:08:43 UTC (rev 10149)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.hibernate.test.annotations.bytecode">
+ <class name="Hammer">
+ <id name="id" type="java.lang.Long">
+ <generator class="increment"/>
+ </id>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytoone/ManyToOneTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytoone/ManyToOneTest.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytoone/ManyToOneTest.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -173,6 +173,18 @@
assertNotNull( discount );
assertFalse( Hibernate.isInitialized( discount.getOwner() ) );
tx.commit();
+
+ s = openSession();
+ tx = s.beginTransaction();
+ discount = (Discount) s.load( Discount.class, discount.getId() );
+ assertNotNull( discount );
+ assertFalse( Hibernate.isInitialized( discount.getOwner() ) );
+ tx.commit();
+
+ s = openSession();
+ tx = s.beginTransaction();
+ s.delete( s.get( Discount.class, discount.getId() ) );
+ tx.commit();
s.close();
}
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/override/Trip.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/override/Trip.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/override/Trip.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -11,8 +11,8 @@
*/
@Entity
@AssociationOverrides({
-@AssociationOverride(name = "from", joinColumns = @JoinColumn(name = "from", nullable = false)),
-@AssociationOverride(name = "to", joinColumns = @JoinColumn(name = "to", nullable = false))
+@AssociationOverride(name = "from", joinColumns = @JoinColumn(name = "from2", nullable = false)),
+@AssociationOverride(name = "to", joinColumns = @JoinColumn(name = "to2", nullable = false))
})
public class Trip extends Move {
}
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/Dimensions.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/Dimensions.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/Dimensions.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -8,6 +8,8 @@
*/
@Embeddable
public class Dimensions {
+
+
private int length;
private int width;
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Administration.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Administration.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Administration.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -17,7 +17,7 @@
@Entity(name = "JavaAdministration")
@Table(name = "JavaAdministration")
@SecondaryTable(name = "Extend")
-public class Administration {
+public class Administration extends Organization {
@Id
private Integer id;
private String firstname;
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -73,6 +73,12 @@
* @author Emmanuel Bernard
*/
public class EJB3OverridenAnnotationReaderTest extends TestCase {
+ public void testMappedSuperclassAnnotations() throws Exception {
+ XMLContext context = buildContext( "org/hibernate/test/reflection/java/xml/metadata-complete.xml" );
+ EJB3OverridenAnnotationReader reader = new EJB3OverridenAnnotationReader( Organization.class, context );
+ assertTrue( reader.isAnnotationPresent( MappedSuperclass.class ) );
+ }
+
public void testEntityRelatedAnnotations() throws Exception {
XMLContext context = buildContext( "org/hibernate/test/reflection/java/xml/orm.xml" );
EJB3OverridenAnnotationReader reader = new EJB3OverridenAnnotationReader( Administration.class, context );
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Organization.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Organization.java 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/Organization.java 2006-07-25 17:08:43 UTC (rev 10149)
@@ -0,0 +1,17 @@
+//$Id: $
+package org.hibernate.test.reflection.java.xml;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class Organization {
+ private String organizationId;
+
+ public String getOrganizationId() {
+ return organizationId;
+ }
+
+ public void setOrganizationId(String organizationId) {
+ this.organizationId = organizationId;
+ }
+}
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/metadata-complete.xml
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/metadata-complete.xml 2006-07-25 14:17:16 UTC (rev 10148)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/metadata-complete.xml 2006-07-25 17:08:43 UTC (rev 10149)
@@ -14,6 +14,11 @@
</persistence-unit-defaults>
</persistence-unit-metadata>
<package>org.hibernate.test.reflection.java.xml</package>
+ <mapped-superclass class="Organization">
+ <attributes>
+ <basic name="organizationId"/>
+ </attributes>
+ </mapped-superclass>
<entity class="Administration">
<attributes>
<id name="id"/>
|
Author: max...@jb...
Date: 2006-07-25 10:17:16 -0400 (Tue, 25 Jul 2006)
New Revision: 10148
Added:
trunk/Hibernate3/src/org/hibernate/InvalidMappingException.java
trunk/Hibernate3/src/org/hibernate/MappingNotFoundException.java
trunk/Hibernate3/test/org/hibernate/test/mappingexception/
trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.hbm.xml
trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.java
trunk/Hibernate3/test/org/hibernate/test/mappingexception/MappingExceptionTest.java
trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.hbm.xml
trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.java
Modified:
trunk/Hibernate3/src/org/hibernate/DuplicateMappingException.java
trunk/Hibernate3/src/org/hibernate/cfg/Configuration.java
Log:
HHH-1941 Be more specific about x not found and invalid mapping exceptions to allow tools to tell about it
Modified: trunk/Hibernate3/src/org/hibernate/DuplicateMappingException.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/DuplicateMappingException.java 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/src/org/hibernate/DuplicateMappingException.java 2006-07-25 14:17:16 UTC (rev 10148)
@@ -1,5 +1,12 @@
package org.hibernate;
+/**
+ * Raised whenever a duplicate for a certain type occurs.
+ * Duplicate class, table, property name etc.
+ *
+ * @author Max Rydahl Andersen
+ *
+ */
public class DuplicateMappingException extends MappingException {
private final String name;
Added: trunk/Hibernate3/src/org/hibernate/InvalidMappingException.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/InvalidMappingException.java 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/src/org/hibernate/InvalidMappingException.java 2006-07-25 14:17:16 UTC (rev 10148)
@@ -0,0 +1,42 @@
+package org.hibernate;
+
+/**
+ * Thrown when a mapping is found to be invalid.
+ * Similar to MappingException, but this contains more info about the path and type of mapping (e.g. file, resource or url)
+ *
+ * @author Max Rydahl Andersen
+ *
+ */
+public class InvalidMappingException extends MappingException {
+
+ private final String path;
+ private final String type;
+
+ public InvalidMappingException(String customMessage, String type, String path, Throwable cause) {
+ super(customMessage, cause);
+ this.type=type;
+ this.path=path;
+ }
+
+ public InvalidMappingException(String customMessage, String type, String path) {
+ super(customMessage);
+ this.type=type;
+ this.path=path;
+ }
+
+ public InvalidMappingException(String type, String path) {
+ this("Could not parse mapping document from " + type + (path==null?"":" " + path), type, path);
+ }
+
+ public InvalidMappingException(String type, String path, Throwable cause) {
+ this("Could not parse mapping document from " + type + (path==null?"":" " + path), type, path, cause);
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public String getPath() {
+ return path;
+ }
+}
Added: trunk/Hibernate3/src/org/hibernate/MappingNotFoundException.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/MappingNotFoundException.java 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/src/org/hibernate/MappingNotFoundException.java 2006-07-25 14:17:16 UTC (rev 10148)
@@ -0,0 +1,41 @@
+package org.hibernate;
+
+/**
+ * Thrown when a resource for a mapping could not be found.
+ *
+ * @author Max Rydahl Andersen
+ *
+ */
+public class MappingNotFoundException extends MappingException {
+
+ private final String path;
+ private final String type;
+
+ public MappingNotFoundException(String customMessage, String type, String path, Throwable cause) {
+ super(customMessage, cause);
+ this.type=type;
+ this.path=path;
+ }
+
+ public MappingNotFoundException(String customMessage, String type, String path) {
+ super(customMessage);
+ this.type=type;
+ this.path=path;
+ }
+
+ public MappingNotFoundException(String type, String path) {
+ this(type + ": " + path + " not found", type, path);
+ }
+
+ public MappingNotFoundException(String type, String path, Throwable cause) {
+ this(type + ": " + path + " not found", type, path, cause);
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public String getPath() {
+ return path;
+ }
+}
Modified: trunk/Hibernate3/src/org/hibernate/cfg/Configuration.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/cfg/Configuration.java 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/src/org/hibernate/cfg/Configuration.java 2006-07-25 14:17:16 UTC (rev 10148)
@@ -34,7 +34,9 @@
import org.hibernate.EmptyInterceptor;
import org.hibernate.HibernateException;
import org.hibernate.Interceptor;
+import org.hibernate.InvalidMappingException;
import org.hibernate.MappingException;
+import org.hibernate.MappingNotFoundException;
import org.hibernate.SessionFactory;
import org.hibernate.proxy.EntityNotFoundDelegate;
import org.hibernate.dialect.Dialect;
@@ -271,20 +273,22 @@
public Configuration addFile(String xmlFile) throws MappingException {
log.info( "Reading mappings from file: " + xmlFile );
try {
- List errors = new ArrayList();
- org.dom4j.Document doc = xmlHelper.createSAXReader( xmlFile, errors, entityResolver )
- .read( new File( xmlFile ) );
- if ( errors.size() != 0 ) {
- throw new MappingException( "invalid mapping", (Throwable) errors.get( 0 ) );
+ File file = new File( xmlFile );
+ if(file.exists()) {
+ List errors = new ArrayList();
+ org.dom4j.Document doc = xmlHelper.createSAXReader( xmlFile, errors, entityResolver )
+ .read( file );
+ if ( errors.size() != 0 ) {
+ throw new MappingException( "invalid mapping", (Throwable) errors.get( 0 ) );
+ }
+ add( doc );
+ return this;
+ } else {
+ throw new MappingNotFoundException("file", file.toString());
}
- add( doc );
- return this;
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping document from file: " + xmlFile,
- e
- );
+ throw new InvalidMappingException("file", xmlFile, e);
}
}
@@ -299,10 +303,7 @@
addInputStream( new FileInputStream( xmlFile ) );
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping document from file: " + xmlFile.getPath(),
- e
- );
+ throw new InvalidMappingException( "file", xmlFile.getPath(),e );
}
return this;
}
@@ -332,8 +333,8 @@
}
}
- // If deserialization failed
- if ( doc == null ) {
+ // If deserialization failed or cached file does not exist
+ if ( doc == null && xmlFile.exists()) {
log.info( "Reading mappings from file: " + xmlFile );
doc = xmlHelper.createSAXReader( xmlFile.getAbsolutePath(), errors, entityResolver )
.read( xmlFile );
@@ -344,6 +345,8 @@
catch (SerializationException e) {
log.warn( "Could not write cached file: " + lazyfile, e );
}
+ } else {
+ throw new MappingNotFoundException("file", xmlFile.toString());
}
if ( errors.size() != 0 ) {
@@ -353,10 +356,7 @@
return this;
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping document from file: " + xmlFile,
- e
- );
+ throw new InvalidMappingException("file", xmlFile.toString(), e);
}
}
@@ -402,7 +402,7 @@
addInputStream( url.openStream() );
}
catch (Exception e) {
- throw new MappingException( "Could not read mapping document from URL: " + url, e );
+ throw new InvalidMappingException( "URL", ""+url, e );
}
return this;
}
@@ -466,7 +466,7 @@
return this;
}
catch (DocumentException e) {
- throw new MappingException( "Could not parse mapping document in input stream", e );
+ throw new InvalidMappingException( "input stream", null, e );
}
finally {
try {
@@ -488,13 +488,13 @@
log.info( "Reading mappings from resource: " + path );
InputStream rsrc = classLoader.getResourceAsStream( path );
if ( rsrc == null ) {
- throw new MappingException( "Resource: " + path + " not found" );
+ throw new MappingNotFoundException( "resource", path );
}
try {
return addInputStream( rsrc );
}
catch (MappingException me) {
- throw new MappingException( "Could not read mappings from resource: " + path, me );
+ throw new InvalidMappingException( "resource", path, me );
}
}
@@ -514,13 +514,13 @@
rsrc = Environment.class.getClassLoader().getResourceAsStream( path );
}
if ( rsrc == null ) {
- throw new MappingException( "Resource: " + path + " not found" );
+ throw new MappingNotFoundException( "resource", path );
}
try {
return addInputStream( rsrc );
}
catch (MappingException me) {
- throw new MappingException( "Could not read mappings from resource: " + path, me );
+ throw new InvalidMappingException( "resource", path, me );
}
}
@@ -535,16 +535,14 @@
log.info( "Reading mappings from resource: " + fileName );
InputStream rsrc = persistentClass.getClassLoader().getResourceAsStream( fileName );
if ( rsrc == null ) {
- throw new MappingException( "Resource: " + fileName + " not found" );
+ throw new MappingNotFoundException( "resource", fileName );
}
try {
return addInputStream( rsrc );
}
catch (MappingException me) {
- throw new MappingException(
- "Could not read mappings from resource: " + fileName,
- me
- );
+ throw new InvalidMappingException(
+ "resource", fileName, me );
}
}
@@ -564,8 +562,8 @@
jarFile = new JarFile( jar );
}
catch (IOException ioe) {
- throw new MappingException(
- "Could not read mapping documents from jar: " + jar.getName(),
+ throw new InvalidMappingException(
+ "Could not read mapping documents from jar: " + jar.getName(), "jar", jar.getName(),
ioe
);
}
@@ -581,8 +579,10 @@
addInputStream( jarFile.getInputStream( ze ) );
}
catch (Exception e) {
- throw new MappingException(
- "Could not read mapping documents from jar: " + jar.getName(),
+ throw new InvalidMappingException(
+ "Could not read mapping documents from jar: " + jar.getName(),
+ "jar",
+ jar.getName(),
e
);
}
Added: trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.hbm.xml 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.hbm.xml 2006-07-25 14:17:16 UTC (rev 10148)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+
+This File Intentionally Left Blank
\ No newline at end of file
Added: trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.java 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/test/org/hibernate/test/mappingexception/InvalidMapping.java 2006-07-25 14:17:16 UTC (rev 10148)
@@ -0,0 +1,5 @@
+package org.hibernate.test.mappingexception;
+
+public class InvalidMapping {
+// This Class Intentionally Left Blank
+}
Added: trunk/Hibernate3/test/org/hibernate/test/mappingexception/MappingExceptionTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/mappingexception/MappingExceptionTest.java 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/test/org/hibernate/test/mappingexception/MappingExceptionTest.java 2006-07-25 14:17:16 UTC (rev 10148)
@@ -0,0 +1,236 @@
+// $Id: SQLExceptionConversionTest.java 6847 2005-05-21 15:46:41Z oneovthafew $
+package org.hibernate.test.mappingexception;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.hibernate.DuplicateMappingException;
+import org.hibernate.Hibernate;
+import org.hibernate.InvalidMappingException;
+import org.hibernate.MappingException;
+import org.hibernate.MappingNotFoundException;
+import org.hibernate.test.TestCase;
+import org.hibernate.util.ConfigHelper;
+
+/**
+ * Test for various mapping exceptions thrown when mappings are not found or invalid.
+ *
+ * @author Max Rydahl Andersen
+ */
+public class MappingExceptionTest extends TestCase {
+
+ public MappingExceptionTest(String name) {
+ super(name);
+ }
+
+ protected String[] getMappings() {
+ return new String[] {"mappingexception/User.hbm.xml"};
+ }
+
+ public void testNotFound() throws MappingException, MalformedURLException {
+
+ try {
+ getCfg().addCacheableFile( "completelybogus.hbm.xml" );
+ fail();
+ } catch(InvalidMappingException inv) { // TODO: should be MappingNotFound
+ assertEquals(inv.getType(), "file");
+ assertEquals(inv.getPath(), "completelybogus.hbm.xml");
+ assertClassAssignability( inv.getCause().getClass(), MappingNotFoundException.class);
+ }
+
+ try {
+ getCfg().addCacheableFile( new File("completelybogus.hbm.xml") );
+ fail();
+ } catch(InvalidMappingException inv) { // TODO: should be MappingNotFound
+ assertEquals(inv.getType(), "file");
+ assertEquals(inv.getPath(), "completelybogus.hbm.xml");
+ assertClassAssignability( inv.getCause().getClass(), MappingNotFoundException.class);
+ }
+
+ try {
+ getCfg().addClass( Hibernate.class ); // TODO: String.class result in npe, because no classloader exists for it
+ fail();
+ } catch(MappingNotFoundException inv) {
+ assertEquals(inv.getType(), "resource");
+ assertEquals(inv.getPath(), "org/hibernate/Hibernate.hbm.xml");
+ }
+
+ try {
+ getCfg().addFile( "completelybogus.hbm.xml" );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "file");
+ assertEquals(inv.getPath(), "completelybogus.hbm.xml");
+ assertClassAssignability( inv.getCause().getClass(), MappingNotFoundException.class);
+ }
+
+ try {
+ getCfg().addFile( new File("completelybogus.hbm.xml"));
+ fail();
+ } catch(InvalidMappingException inv) { // TODO: could be a MappingNotFoundException
+ assertEquals(inv.getType(), "file");
+ assertEquals(inv.getPath(), "completelybogus.hbm.xml");
+ }
+
+ try {
+ getCfg().addInputStream( new ByteArrayInputStream(new byte[0]));
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "input stream");
+ assertEquals(inv.getPath(), null);
+ }
+
+ try {
+ getCfg().addResource( "nothere" );
+ fail();
+ } catch(MappingNotFoundException inv) {
+ assertEquals(inv.getType(), "resource");
+ assertEquals(inv.getPath(), "nothere");
+ }
+
+ try {
+ getCfg().addResource( "nothere", getClass().getClassLoader() );
+ fail();
+ } catch(MappingNotFoundException inv) {
+ assertEquals(inv.getType(), "resource");
+ assertEquals(inv.getPath(), "nothere");
+ }
+
+ try {
+ getCfg().addURL( new URL("file://nothere") );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "URL");
+ assertEquals(inv.getPath(), "file://nothere");
+ }
+ }
+
+ public void testDuplicateMapping() {
+ try {
+ getCfg().addResource( getBaseForMappings() + "mappingexception/User.hbm.xml" );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "resource");
+ assertEquals(inv.getPath(), getBaseForMappings() + "mappingexception/User.hbm.xml");
+ assertClassAssignability( inv.getCause().getClass(), DuplicateMappingException.class);
+ }
+ }
+
+ void copy(InputStream in, File dst) throws IOException {
+ OutputStream out = new FileOutputStream(dst);
+
+ // Transfer bytes from in to out
+ byte[] buf = new byte[1024];
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ in.close();
+ out.close();
+ }
+
+ public void testInvalidMapping() throws MappingException, IOException {
+ String resourceName = getBaseForMappings() + "mappingexception/InvalidMapping.hbm.xml";
+
+ File file = File.createTempFile( "TempInvalidMapping", ".hbm.xml" );
+ file.deleteOnExit();
+ copy( ConfigHelper.getConfigStream( resourceName ), file );
+
+ try {
+ getCfg().addCacheableFile( file.getAbsolutePath() );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "file");
+ assertNotNull(inv.getPath());
+ assertTrue(inv.getPath().endsWith(".hbm.xml"));
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+ try {
+ getCfg().addCacheableFile( file );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "file");
+ assertNotNull(inv.getPath());
+ assertTrue(inv.getPath().endsWith(".hbm.xml"));
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+ try {
+ getCfg().addClass( InvalidMapping.class );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "resource");
+ assertEquals(inv.getPath(), "org/hibernate/test/mappingexception/InvalidMapping.hbm.xml");
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+ try {
+ getCfg().addFile( file.getAbsolutePath() );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "file");
+ assertEquals(inv.getPath(), file.getPath());
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+ try {
+ getCfg().addFile( file );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "file");
+ assertEquals(inv.getPath(), file.getPath());
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+
+ try {
+ getCfg().addInputStream( ConfigHelper.getResourceAsStream( resourceName ) );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "input stream");
+ assertEquals(inv.getPath(), null);
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+ try {
+ getCfg().addResource( resourceName );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "resource");
+ assertEquals(inv.getPath(), resourceName);
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+ try {
+ getCfg().addResource( resourceName, getClass().getClassLoader() );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "resource");
+ assertEquals(inv.getPath(), resourceName);
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+
+ try {
+ getCfg().addURL( ConfigHelper.findAsResource( resourceName ) );
+ fail();
+ } catch(InvalidMappingException inv) {
+ assertEquals(inv.getType(), "URL");
+ assertTrue(inv.getPath().endsWith("InvalidMapping.hbm.xml"));
+ assertTrue(!(inv.getCause() instanceof MappingNotFoundException ));
+ }
+ }
+
+ public static Test suite() {
+ return new TestSuite(MappingExceptionTest.class);
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.hbm.xml 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.hbm.xml 2006-07-25 14:17:16 UTC (rev 10148)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+
+<hibernate-mapping package="org.hibernate.test.exception" >
+ <class name="User" table="T_USER" >
+ <id name="id" unsaved-value="null" column="user_id" >
+ <generator class="native"/>
+ </id>
+ <property name="username" type="string" column="user_name" />
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.java 2006-07-25 05:27:42 UTC (rev 10147)
+++ trunk/Hibernate3/test/org/hibernate/test/mappingexception/User.java 2006-07-25 14:17:16 UTC (rev 10148)
@@ -0,0 +1,31 @@
+// $Id: User.java 4746 2004-11-11 20:57:28Z steveebersole $
+package org.hibernate.test.mappingexception;
+
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ *
+ *
+ * @author Max Rydahl Andersen
+ */
+public class User {
+ private Long id;
+ private String username;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+}
|
|
From: <hib...@li...> - 2006-07-25 05:27:47
|
Author: max...@jb...
Date: 2006-07-25 01:27:42 -0400 (Tue, 25 Jul 2006)
New Revision: 10147
Modified:
trunk/Hibernate3/test/org/hibernate/test/TestCase.java
Log:
"debug" nightly build
Modified: trunk/Hibernate3/test/org/hibernate/test/TestCase.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/TestCase.java 2006-07-24 19:43:49 UTC (rev 10146)
+++ trunk/Hibernate3/test/org/hibernate/test/TestCase.java 2006-07-25 05:27:42 UTC (rev 10147)
@@ -381,7 +381,9 @@
public void runBare() throws Throwable {
assertNotNull(getName());
- if(Boolean.getBoolean( "hibernate.test.validatefailureexpected" )) {
+ String string = "hibernate.test.validatefailureexpected";
+ System.out.println(string + " is set to [" + System.getProperty( string ) + "]");
+ if(Boolean.getBoolean( string )) {
if(getName().endsWith( "FailureExpected" ) ) {
Throwable t = null;
try {
|
|
From: <hib...@li...> - 2006-07-24 20:01:51
|
Author: epbernard Date: 2006-07-24 14:51:28 -0400 (Mon, 24 Jul 2006) New Revision: 10145 Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java Log: tests Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java =================================================================== --- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java 2006-07-24 17:57:17 UTC (rev 10144) +++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java 2006-07-24 18:51:28 UTC (rev 10145) @@ -1,6 +1,8 @@ //$Id$ package org.hibernate.test.annotations.collectionelement; +import java.util.List; + import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.test.annotations.Country; @@ -45,6 +47,9 @@ assertNotNull( boy.getFavoriteNumbers() ); assertEquals( 3, boy.getFavoriteNumbers()[1] ); assertTrue( boy.getCharacters().contains( Character.CRAFTY ) ); + List result = s.createQuery( "select boy from Boy boy join boy.nickNames names where names = :name") + .setParameter( "name", "Thing").list(); + assertEquals( 1, result.size() ); s.delete( boy ); tx.commit(); s.close(); |
|
From: <hib...@li...> - 2006-07-24 19:44:00
|
Author: scottmarlownovell
Date: 2006-07-24 15:43:49 -0400 (Mon, 24 Jul 2006)
New Revision: 10146
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java
Log:
Fix for HHH-1293. Use InvocationHandler instead of MethodInterceptor.
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java 2006-07-24 18:51:28 UTC (rev 10145)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java 2006-07-24 19:43:49 UTC (rev 10146)
@@ -4,16 +4,19 @@
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.CallbackFilter;
import net.sf.cglib.proxy.Enhancer;
-import net.sf.cglib.proxy.Factory;
-import net.sf.cglib.proxy.MethodInterceptor;
-import net.sf.cglib.proxy.MethodProxy;
+import net.sf.cglib.proxy.InvocationHandler;
import net.sf.cglib.proxy.NoOp;
import org.hibernate.HibernateException;
+import org.hibernate.LazyInitializationException;
import org.hibernate.proxy.pojo.BasicLazyInitializer;
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.engine.SessionImplementor;
@@ -25,11 +28,8 @@
/**
* A <tt>LazyInitializer</tt> implemented using the CGLIB bytecode generation library
*/
-public final class CGLIBLazyInitializer extends BasicLazyInitializer implements MethodInterceptor {
-
+public final class CGLIBLazyInitializer extends BasicLazyInitializer implements InvocationHandler {
- private static final Class[] CALLBACK_TYPES = new Class[]{ MethodInterceptor.class,NoOp.class };
-
private static final CallbackFilter FINALIZE_FILTER = new CallbackFilter() {
public int accept(Method method) {
if ( method.getParameterTypes().length == 0 && method.getName().equals("finalize") ){
@@ -62,13 +62,10 @@
session
);
- final HibernateProxy proxy = (HibernateProxy) Enhancer.create(
- interfaces.length == 1 ? persistentClass : null,
- interfaces,
- FINALIZE_FILTER,
- new Callback[]{ instance, NoOp.INSTANCE }
- );
-
+ final HibernateProxy proxy;
+ Class factory = getProxyFactory(persistentClass, interfaces);
+ Enhancer.registerCallbacks(factory, new Callback[]{ instance, null });
+ proxy = (HibernateProxy)factory.newInstance();
instance.constructed = true;
return proxy;
}
@@ -98,12 +95,12 @@
final HibernateProxy proxy;
try {
+ Enhancer.registerCallbacks(factory, new Callback[]{ instance, null });
proxy = (HibernateProxy) factory.newInstance();
}
catch (Exception e) {
throw new HibernateException( "CGLIB Enhancement failed: " + persistentClass.getName(), e );
}
- ( (Factory) proxy ).setCallback( 0, instance );
instance.constructed = true;
return proxy;
@@ -111,28 +108,17 @@
public static Class getProxyFactory(Class persistentClass, Class[] interfaces)
throws HibernateException {
- // note: interfaces is assumed to already contain HibernateProxy.class
-
- try {
-
- Enhancer en = new Enhancer();
- en.setUseCache( false );
- en.setInterceptDuringConstruction( false );
-
- en.setCallbackTypes( CALLBACK_TYPES );
- en.setCallbackFilter( FINALIZE_FILTER );
-
- en.setSuperclass( interfaces.length == 1 ? persistentClass : null );
- en.setInterfaces( interfaces );
-
- return en.createClass();
-
- }
- catch (Throwable t) {
- LogFactory.getLog( BasicLazyInitializer.class )
- .error( "CGLIB Enhancement failed: " + persistentClass.getName(), t );
- throw new HibernateException( "CGLIB Enhancement failed: " + persistentClass.getName(), t );
- }
+ Enhancer e = new Enhancer();
+ e.setSuperclass( interfaces.length == 1 ? persistentClass : null );
+ e.setInterfaces(interfaces);
+ e.setCallbackTypes(new Class[]{
+ InvocationHandler.class,
+ NoOp.class,
+ });
+ e.setCallbackFilter(FINALIZE_FILTER);
+ e.setUseFactory(false);
+ e.setInterceptDuringConstruction( false );
+ return e.createClass();
}
private CGLIBLazyInitializer(final String entityName, final Class persistentClass,
@@ -151,43 +137,75 @@
this.interfaces = interfaces;
}
- public Object intercept(final Object proxy, final Method method, final Object[] args,
- final MethodProxy methodProxy) throws Throwable {
+ private static boolean isCastable(Class caster, Class castee) {
+ if ( castee.equals( caster ) ) {
+ return true;
+ }
+ List list = addCheckingTypes( caster, new ArrayList() );
+ for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
+ Class cl = ( Class ) iter.next();
+ if ( castee.equals( cl ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static List addCheckingTypes(final Class type, final List list) {
+ Class superclass = type.getSuperclass();
+ if ( superclass != null ) {
+ list.add( superclass );
+ addCheckingTypes( superclass, list );
+ }
+ Class[] interfaces = type.getInterfaces();
+ for ( int i = 0; i < interfaces.length; ++i ) {
+ list.add( interfaces[i] );
+ addCheckingTypes( interfaces[i], list );
+ }
+ return list;
+ }
+
+ public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
if ( constructed ) {
-
Object result = invoke( method, args, proxy );
if ( result == INVOKE_IMPLEMENTATION ) {
Object target = getImplementation();
final Object returnValue;
+ try {
if ( ReflectHelper.isPublic( persistentClass, method ) ) {
- returnValue = methodProxy.invoke( target, args );
+ if ( !isCastable(
+ target.getClass(), method
+ .getDeclaringClass()
+ ) ) {
+ throw new ClassCastException(
+ target.getClass()
+ .getName()
+ );
+ }
+ returnValue = method.invoke( target, args );
}
else {
if ( !method.isAccessible() ) method.setAccessible( true );
- try {
returnValue = method.invoke( target, args );
}
+ return returnValue == target ? proxy : returnValue;
+ }
catch (InvocationTargetException ite) {
throw ite.getTargetException();
}
}
- return returnValue == target ? proxy : returnValue;
- }
else {
return result;
}
-
}
else {
-
// while constructor is running
if ( method.getName().equals( "getHibernateLazyInitializer" ) ) {
return this;
}
else {
- return methodProxy.invokeSuper( proxy, args );
+ throw new LazyInitializationException("unexpected case hit, method=" + method.getName());
}
-
}
}
|
|
From: <hib...@li...> - 2006-07-24 17:57:19
|
Author: epbernard
Date: 2006-07-24 13:57:17 -0400 (Mon, 24 Jul 2006)
New Revision: 10144
Added:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
Log:
HHH-1938 test
Added: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-24 17:56:29 UTC (rev 10143)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-24 17:57:17 UTC (rev 10144)
@@ -0,0 +1,21 @@
+//$Id: $
+package org.hibernate.test.bytecode.javassist;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class Hammer implements Tool {
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Integer usage() {
+ return 0;
+ }
+}
Added: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-24 17:56:29 UTC (rev 10143)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-24 17:57:17 UTC (rev 10144)
@@ -0,0 +1,48 @@
+//$Id: $
+package org.hibernate.test.bytecode.javassist;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.Hibernate;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.test.TestCase;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class ProxyBreakingTest extends TestCase {
+
+ static {
+ System.setProperty( "hibernate.bytecode.provider", "javassist" );
+ }
+
+ public void testProxiedBridgeMethod() throws Exception {
+ //bridge methods should not be proxied
+ Session s = openSession( );
+ Transaction tx = s.beginTransaction();
+ Hammer h = new Hammer();
+ s.save(h);
+ s.flush();
+ s.clear();
+ assertNotNull( "The proxy creation failure is breaking things", h.getId() );
+ h = (Hammer) s.load( Hammer.class, h.getId() );
+ assertFalse( Hibernate.isInitialized( h ) );
+ tx.rollback();
+ s.close();
+ }
+
+ public ProxyBreakingTest(String name) {
+ super( name );
+ }
+
+ protected String[] getMappings() {
+ return new String[] {
+ "bytecode/javassist/Hammer.hbm.xml"
+ };
+ }
+
+ @Override
+ protected void configure(Configuration cfg) {
+ super.configure( cfg.setProperty( "hibernate.bytecode.provider", "javassist" ) );
+ }
+}
Added: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-24 17:56:29 UTC (rev 10143)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-24 17:57:17 UTC (rev 10144)
@@ -0,0 +1,13 @@
+//$Id: $
+package org.hibernate.test.bytecode.javassist;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public interface Tool {
+ public Long getId();
+
+ public void setId(Long id);
+
+ public Number usage();
+}
Added: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-24 17:56:29 UTC (rev 10143)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-24 17:57:17 UTC (rev 10144)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.hibernate.test.bytecode.javassist">
+ <class name="Hammer">
+ <id name="id" type="java.lang.Long">
+ <generator class="increment"/>
+ </id>
+ </class>
+</hibernate-mapping>
|
|
From: <hib...@li...> - 2006-07-24 17:56:31
|
Author: epbernard
Date: 2006-07-24 13:56:29 -0400 (Mon, 24 Jul 2006)
New Revision: 10143
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java
branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java
Log:
HHH-1937 set class to lazy false if proxy factory creation fails
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2006-07-24 17:56:10 UTC (rev 10142)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2006-07-24 17:56:29 UTC (rev 10143)
@@ -133,6 +133,9 @@
if ( entityMetamodel.isLazy() ) {
proxyFactory = buildProxyFactory( mappingInfo, idGetter, idSetter );
+ if (proxyFactory == null) {
+ entityMetamodel.setLazy( false );
+ }
}
else {
proxyFactory = null;
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java 2006-07-24 17:56:10 UTC (rev 10142)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java 2006-07-24 17:56:29 UTC (rev 10143)
@@ -78,7 +78,7 @@
private final int[] naturalIdPropertyNumbers;
- private final boolean lazy;
+ private boolean lazy; //not final because proxy factory creation can fail
private final boolean hasCascades;
private final boolean mutable;
private final boolean isAbstract;
@@ -420,6 +420,10 @@
return lazy;
}
+ public void setLazy(boolean lazy) {
+ this.lazy = lazy;
+ }
+
public boolean isVersioned() {
return versioned;
}
|
|
From: <hib...@li...> - 2006-07-24 17:56:13
|
Author: epbernard
Date: 2006-07-24 13:56:10 -0400 (Mon, 24 Jul 2006)
New Revision: 10142
Added:
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
Modified:
trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java
trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java
Log:
HHH-1937 set class to lazy false if proxy factory creation fails
Modified: trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2006-07-24 15:09:49 UTC (rev 10141)
+++ trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2006-07-24 17:56:10 UTC (rev 10142)
@@ -133,6 +133,9 @@
if ( entityMetamodel.isLazy() ) {
proxyFactory = buildProxyFactory( mappingInfo, idGetter, idSetter );
+ if (proxyFactory == null) {
+ entityMetamodel.setLazy( false );
+ }
}
else {
proxyFactory = null;
Modified: trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java 2006-07-24 15:09:49 UTC (rev 10141)
+++ trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java 2006-07-24 17:56:10 UTC (rev 10142)
@@ -78,7 +78,7 @@
private final int[] naturalIdPropertyNumbers;
- private final boolean lazy;
+ private boolean lazy; //not final, proxy factory creation may fail
private final boolean hasCascades;
private final boolean mutable;
private final boolean isAbstract;
@@ -420,6 +420,10 @@
return lazy;
}
+ public void setLazy(boolean lazy) {
+ this.lazy = lazy;
+ }
+
public boolean isVersioned() {
return versioned;
}
Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-24 15:09:49 UTC (rev 10141)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-24 17:56:10 UTC (rev 10142)
@@ -0,0 +1,21 @@
+//$Id: $
+package org.hibernate.test.bytecode.javassist;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class Hammer implements Tool {
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Integer usage() {
+ return 0;
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-24 15:09:49 UTC (rev 10141)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-24 17:56:10 UTC (rev 10142)
@@ -0,0 +1,48 @@
+//$Id: $
+package org.hibernate.test.bytecode.javassist;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.Hibernate;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.test.TestCase;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class ProxyBreakingTest extends TestCase {
+
+ static {
+ System.setProperty( "hibernate.bytecode.provider", "javassist" );
+ }
+
+ public void testProxiedBridgeMethod() throws Exception {
+ //bridge methods should not be proxied
+ Session s = openSession( );
+ Transaction tx = s.beginTransaction();
+ Hammer h = new Hammer();
+ s.save(h);
+ s.flush();
+ s.clear();
+ assertNotNull( "The proxy creation failure is breaking things", h.getId() );
+ h = (Hammer) s.load( Hammer.class, h.getId() );
+ assertFalse( Hibernate.isInitialized( h ) );
+ tx.rollback();
+ s.close();
+ }
+
+ public ProxyBreakingTest(String name) {
+ super( name );
+ }
+
+ protected String[] getMappings() {
+ return new String[] {
+ "bytecode/javassist/Hammer.hbm.xml"
+ };
+ }
+
+ @Override
+ protected void configure(Configuration cfg) {
+ super.configure( cfg.setProperty( "hibernate.bytecode.provider", "javassist" ) );
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-24 15:09:49 UTC (rev 10141)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-24 17:56:10 UTC (rev 10142)
@@ -0,0 +1,13 @@
+//$Id: $
+package org.hibernate.test.bytecode.javassist;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public interface Tool {
+ public Long getId();
+
+ public void setId(Long id);
+
+ public Number usage();
+}
Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-24 15:09:49 UTC (rev 10141)
+++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-24 17:56:10 UTC (rev 10142)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.hibernate.test.bytecode.javassist">
+ <class name="Hammer">
+ <id name="id" type="java.lang.Long">
+ <generator class="increment"/>
+ </id>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
|
|
From: <hib...@li...> - 2006-07-24 15:09:57
|
Author: max...@jb...
Date: 2006-07-24 11:09:49 -0400 (Mon, 24 Jul 2006)
New Revision: 10141
Modified:
trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/ComponentPOJOClass.java
trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java
trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/POJOClass.java
trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl
Log:
HBX-708 hbm2hbmxml misorders version,property from annotations
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/ComponentPOJOClass.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/ComponentPOJOClass.java 2006-07-24 13:20:15 UTC (rev 10140)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/ComponentPOJOClass.java 2006-07-24 15:09:49 UTC (rev 10141)
@@ -160,5 +160,8 @@
return null;
}
-
+ public boolean hasVersionProperty() {
+ return false;
+ }
+
}
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java 2006-07-24 13:20:15 UTC (rev 10140)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java 2006-07-24 15:09:49 UTC (rev 10141)
@@ -18,6 +18,7 @@
import org.hibernate.mapping.KeyValue;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
+import org.hibernate.mapping.RootClass;
import org.hibernate.mapping.Selectable;
import org.hibernate.mapping.SimpleValue;
import org.hibernate.mapping.Subclass;
@@ -779,4 +780,7 @@
return getClass().getName() + "(" + (clazz==null?"<none>":clazz.getEntityName()) + ")";
}
+ public boolean hasVersionProperty() {
+ return clazz.isVersioned() && clazz instanceof RootClass;
+ }
}
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/POJOClass.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/POJOClass.java 2006-07-24 13:20:15 UTC (rev 10140)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/POJOClass.java 2006-07-24 15:09:49 UTC (rev 10141)
@@ -105,4 +105,6 @@
public Property getIdentifierProperty();
+ public boolean hasVersionProperty();
+
}
Modified: trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl
===================================================================
--- trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl 2006-07-24 13:20:15 UTC (rev 10140)
+++ trunk/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl 2006-07-24 15:09:49 UTC (rev 10141)
@@ -69,8 +69,16 @@
<#include "id.hbm.ftl"/>
</#if>
+<#-- version has to be done explicitly since Annotation's does not list version first -->
+<#if pojo.hasVersionProperty()>
+<#assign property=clazz.getVersion()/>
+<#include "version.hbm.ftl"/>
+</#if>
+
<#foreach property in clazz.getUnjoinedPropertyIterator()>
+<#if c2h.getTag(property)!="version">
<#include "${c2h.getTag(property)}.hbm.ftl"/>
+</#if>
</#foreach>
</${c2h.getTag(clazz)}>
\ No newline at end of file
|
|
From: <hib...@li...> - 2006-07-24 13:20:18
|
Author: max...@jb...
Date: 2006-07-24 09:20:15 -0400 (Mon, 24 Jul 2006)
New Revision: 10140
Modified:
trunk/Hibernate3/src/org/hibernate/loader/Loader.java
Log:
HHH-1934: better message
Modified: trunk/Hibernate3/src/org/hibernate/loader/Loader.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/loader/Loader.java 2006-07-24 13:19:38 UTC (rev 10139)
+++ trunk/Hibernate3/src/org/hibernate/loader/Loader.java 2006-07-24 13:20:15 UTC (rev 10140)
@@ -1232,7 +1232,7 @@
if ( !persister.isInstance( object, session.getEntityMode() ) ) {
throw new WrongClassException(
- "loaded object was of wrong class",
+ "loaded object was of wrong class " + object.getClass(),
key.getIdentifier(),
persister.getEntityName()
);
|
|
From: <hib...@li...> - 2006-07-24 13:19:43
|
Author: max...@jb...
Date: 2006-07-24 09:19:38 -0400 (Mon, 24 Jul 2006)
New Revision: 10139
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/loader/Loader.java
Log:
better exception
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/loader/Loader.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/loader/Loader.java 2006-07-24 10:52:04 UTC (rev 10138)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/loader/Loader.java 2006-07-24 13:19:38 UTC (rev 10139)
@@ -1232,7 +1232,7 @@
if ( !persister.isInstance( object, session.getEntityMode() ) ) {
throw new WrongClassException(
- "loaded object was of wrong class",
+ "loaded object was of wrong class " + object.getClass(),
key.getIdentifier(),
persister.getEntityName()
);
|