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() ); |