Hibernate SVN: r13947 - validator/trunk/src/java/org/hibernate/validator.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-08-22 01:14:13 -0400 (Wed, 22 Aug 2007)
New Revision: 13947
Modified:
validator/trunk/src/java/org/hibernate/validator/ClassValidator.java
Log:
Reduce helper method visibility
Modified: validator/trunk/src/java/org/hibernate/validator/ClassValidator.java
===================================================================
--- validator/trunk/src/java/org/hibernate/validator/ClassValidator.java 2007-08-21 18:42:37 UTC (rev 13946)
+++ validator/trunk/src/java/org/hibernate/validator/ClassValidator.java 2007-08-22 05:14:13 UTC (rev 13947)
@@ -540,7 +540,7 @@
return value;
}
- public String getPropertyName(XMember member) {
+ private String getPropertyName(XMember member) {
//Do no try to cache the result in a map, it's actually much slower (2.x time)
String propertyName;
if ( XProperty.class.isAssignableFrom( member.getClass() ) ) {
16 years, 8 months
Hibernate SVN: r13946 - in search/trunk/src: test/org/hibernate/search/test/session and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-08-21 14:42:37 -0400 (Tue, 21 Aug 2007)
New Revision: 13946
Modified:
search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java
Log:
HSEARCH-109 lazy indexed object use the wrong class name
Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java 2007-08-21 18:01:54 UTC (rev 13945)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java 2007-08-21 18:42:37 UTC (rev 13946)
@@ -504,7 +504,7 @@
public Document getDocument(T instance, Serializable id) {
Document doc = new Document();
- XClass instanceClass = reflectionManager.toXClass( instance.getClass() );
+ XClass instanceClass = reflectionManager.toXClass( Hibernate.getClass( instance ) );
if ( rootPropertiesMetadata.boost != null ) {
doc.setBoost( rootPropertiesMetadata.boost );
}
@@ -590,6 +590,7 @@
private Object unproxy(Object value) {
//FIXME this service should be part of Core?
if ( value instanceof HibernateProxy ) {
+ // .getImplementation() initializes the data by side effect
value = ( (HibernateProxy) value ).getHibernateLazyInitializer()
.getImplementation();
}
Modified: search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java 2007-08-21 18:01:54 UTC (rev 13945)
+++ search/trunk/src/test/org/hibernate/search/test/session/MassIndexTest.java 2007-08-21 18:42:37 UTC (rev 13946)
@@ -2,6 +2,7 @@
package org.hibernate.search.test.session;
import java.util.List;
+import java.util.Iterator;
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.index.Term;
@@ -150,6 +151,22 @@
luceneQuery = new TermQuery( new Term( "categorie.nom", "livre" ) );
result = session.createFullTextQuery( luceneQuery, Entite.class ).list();
assertEquals( "test lazy loading and indexing", 1, result.size() );
+ s.close();
+
+ s = openSession();
+ Iterator it = s.createQuery( "from Entite where id = :id").setParameter( "id", ent.getId() ).iterate();
+ session = Search.createFullTextSession( s );
+ while ( it.hasNext() ) {
+ ent = (Entite) it.next();
+ session.index( ent );
+ }
+ s.close();
+
+ s = openSession();
+ session = Search.createFullTextSession( s );
+ luceneQuery = new TermQuery( new Term( "categorie.nom", "livre" ) );
+ result = session.createFullTextQuery( luceneQuery, Entite.class ).list();
+ assertEquals( "test lazy loading and indexing", 1, result.size() );
ent = (Entite) result.get( 0 );
cat = ent.getCategorie();
ent.setCategorie( null );
16 years, 8 months
Hibernate SVN: r13945 - in search/trunk/src/java/org/hibernate/search: store and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-08-21 14:01:54 -0400 (Tue, 21 Aug 2007)
New Revision: 13945
Modified:
search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java
search/trunk/src/java/org/hibernate/search/store/DirectoryProvider.java
search/trunk/src/java/org/hibernate/search/store/DirectoryProviderFactory.java
search/trunk/src/java/org/hibernate/search/store/FSDirectoryProvider.java
search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
search/trunk/src/java/org/hibernate/search/store/RAMDirectoryProvider.java
Log:
HSEARCH-107 introduce a start() method for DirectoryProviders
Modified: search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java 2007-08-21 00:25:25 UTC (rev 13944)
+++ search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java 2007-08-21 18:01:54 UTC (rev 13945)
@@ -271,6 +271,7 @@
}
}
}
+ factory.startDirectoryProviders();
}
/**
Modified: search/trunk/src/java/org/hibernate/search/store/DirectoryProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/DirectoryProvider.java 2007-08-21 00:25:25 UTC (rev 13944)
+++ search/trunk/src/java/org/hibernate/search/store/DirectoryProvider.java 2007-08-21 18:01:54 UTC (rev 13945)
@@ -20,11 +20,19 @@
*/
public interface DirectoryProvider<TDirectory extends Directory> {
/**
- * get the information to initialize the directory and build its hashCode
+ * get the information to initialize the directory and build its hashCode/equals method
*/
void initialize(String directoryProviderName, Properties properties, SearchFactoryImplementor searchFactoryImplementor);
/**
+ * Executed after initialize, this method set up the heavy process of starting up the DirectoryProvider
+ * IO processing as well as backgroup processing are expected to be set up here
+ *
+ * TODO stop() method, for now use finalize()
+ */
+ void start();
+
+ /**
* Returns an initialized Lucene Directory. This method call <b>must</b> be threadsafe
*/
TDirectory getDirectory();
Modified: search/trunk/src/java/org/hibernate/search/store/DirectoryProviderFactory.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/DirectoryProviderFactory.java 2007-08-21 00:25:25 UTC (rev 13944)
+++ search/trunk/src/java/org/hibernate/search/store/DirectoryProviderFactory.java 2007-08-21 18:01:54 UTC (rev 13945)
@@ -118,6 +118,12 @@
return new DirectoryProviders( shardingStrategy, providers );
}
+ public void startDirectoryProviders() {
+ for ( DirectoryProvider provider : providers ) {
+ provider.start();
+ }
+ }
+
private DirectoryProvider<?> createDirectoryProvider(String directoryProviderName, Properties indexProps, SearchFactoryImplementor searchFactoryImplementor) {
String className = indexProps.getProperty( "directory_provider" );
if ( StringHelper.isEmpty( className ) ) {
Modified: search/trunk/src/java/org/hibernate/search/store/FSDirectoryProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/FSDirectoryProvider.java 2007-08-21 00:25:25 UTC (rev 13944)
+++ search/trunk/src/java/org/hibernate/search/store/FSDirectoryProvider.java 2007-08-21 18:01:54 UTC (rev 13945)
@@ -30,6 +30,7 @@
boolean create = !indexDir.exists();
indexName = indexDir.getCanonicalPath();
directory = FSDirectory.getDirectory( indexName );
+ //this is cheap so it's not done in start()
if ( create ) {
IndexWriter iw = new IndexWriter( directory, new StandardAnalyzer(), create );
iw.close();
@@ -40,6 +41,10 @@
}
}
+ public void start() {
+ //all the process is done in initialize
+ }
+
public FSDirectory getDirectory() {
return directory;
}
Modified: search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java 2007-08-21 00:25:25 UTC (rev 13944)
+++ search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java 2007-08-21 18:01:54 UTC (rev 13945)
@@ -39,31 +39,49 @@
private Timer timer;
private SearchFactoryImplementor searchFactory;
+ //variables needed between initialize and start
+ private String source;
+ private File indexDir;
+ private String directoryProviderName;
+ private Properties properties;
+
+
public void initialize(String directoryProviderName, Properties properties, SearchFactoryImplementor searchFactoryImplementor) {
+ this.properties = properties;
+ this.directoryProviderName = directoryProviderName;
//source guessing
- String source = DirectoryProviderHelper.getSourceDirectory( "sourceBase", "source", directoryProviderName, properties );
+ source = DirectoryProviderHelper.getSourceDirectory( "sourceBase", "source", directoryProviderName, properties );
if ( source == null)
throw new IllegalStateException("FSMasterDirectoryProvider requires a viable source directory");
log.debug( "Source directory: " + source );
- File indexDir = DirectoryProviderHelper.determineIndexDir( directoryProviderName, properties );
+ indexDir = DirectoryProviderHelper.determineIndexDir( directoryProviderName, properties );
log.debug( "Index directory: " + indexDir );
- String refreshPeriod = properties.getProperty( "refresh", "3600" );
- long period = Long.parseLong( refreshPeriod );
- log.debug("Refresh period " + period + " seconds");
- period *= 1000; //per second
try {
boolean create = !indexDir.exists();
- indexName = indexDir.getCanonicalPath();
if (create) {
log.debug( "Index directory '" + indexName + "' will be initialized");
indexDir.mkdir();
}
+ indexName = indexDir.getCanonicalPath();
directory = FSDirectory.getDirectory( indexName);
if ( create ) {
IndexWriter iw = new IndexWriter( directory, new StandardAnalyzer(), create );
iw.close();
}
+ }
+ catch (IOException e) {
+ throw new HibernateException( "Unable to initialize index: " + directoryProviderName, e );
+ }
+ this.searchFactory = searchFactoryImplementor;
+ }
+ public void start() {
+ //source guessing
+ String refreshPeriod = properties.getProperty( "refresh", "3600" );
+ long period = Long.parseLong( refreshPeriod );
+ log.debug("Refresh period " + period + " seconds");
+ period *= 1000; //per second
+ try {
//copy to source
if ( new File( source, "current1").exists() ) {
current = 2;
@@ -90,7 +108,6 @@
timer = new Timer(true); //daemon thread, the copy algorithm is robust
TimerTask task = new FSMasterDirectoryProvider.TriggerTask(indexName, source, this );
timer.scheduleAtFixedRate( task, period, period );
- this.searchFactory = searchFactoryImplementor;
}
public FSDirectory getDirectory() {
Modified: search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java 2007-08-21 00:25:25 UTC (rev 13944)
+++ search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java 2007-08-21 18:01:54 UTC (rev 13945)
@@ -39,21 +39,25 @@
private String indexName;
private Timer timer;
+ //variables needed between initialize and start
+ private String source;
+ private File indexDir;
+ private String directoryProviderName;
+ private Properties properties;
+
public void initialize(String directoryProviderName, Properties properties, SearchFactoryImplementor searchFactoryImplementor) {
+ this.properties = properties;
+ this.directoryProviderName = directoryProviderName;
//source guessing
- String source = DirectoryProviderHelper.getSourceDirectory( "sourceBase", "source", directoryProviderName, properties );
+ source = DirectoryProviderHelper.getSourceDirectory( "sourceBase", "source", directoryProviderName, properties );
if (source == null)
throw new IllegalStateException("FSSlaveDirectoryProvider requires a viable source directory");
if ( ! new File(source, "current1").exists() && ! new File(source, "current2").exists() ) {
throw new IllegalStateException("No current marker in source directory");
}
log.debug( "Source directory: " + source );
- File indexDir = DirectoryProviderHelper.determineIndexDir( directoryProviderName, properties );
+ indexDir = DirectoryProviderHelper.determineIndexDir( directoryProviderName, properties );
log.debug( "Index directory: " + indexDir.getPath() );
- String refreshPeriod = properties.getProperty( "refresh", "3600" );
- long period = Long.parseLong( refreshPeriod );
- log.debug("Refresh period " + period + " seconds");
- period *= 1000; //per second
try {
boolean create = !indexDir.exists();
indexName = indexDir.getCanonicalPath();
@@ -61,7 +65,21 @@
indexDir.mkdir();
log.debug("Initializing index directory " + indexName);
}
+ }
+ catch (IOException e) {
+ throw new HibernateException( "Unable to initialize index: " + directoryProviderName, e );
+ }
+ }
+ public void start() {
+ //source guessing
+ String refreshPeriod = properties.getProperty( "refresh", "3600" );
+ long period = Long.parseLong( refreshPeriod );
+ log.debug("Refresh period " + period + " seconds");
+ period *= 1000; //per second
+ try {
+ boolean create;
+
File subDir = new File( indexName, "1" );
create = ! subDir.exists();
directory1 = FSDirectory.getDirectory( subDir.getCanonicalPath());
Modified: search/trunk/src/java/org/hibernate/search/store/RAMDirectoryProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/RAMDirectoryProvider.java 2007-08-21 00:25:25 UTC (rev 13944)
+++ search/trunk/src/java/org/hibernate/search/store/RAMDirectoryProvider.java 2007-08-21 18:01:54 UTC (rev 13945)
@@ -23,6 +23,9 @@
public void initialize(String directoryProviderName, Properties properties, SearchFactoryImplementor searchFactoryImplementor) {
indexName = directoryProviderName;
+ }
+
+ public void start() {
directory = new RAMDirectory();
try {
IndexWriter iw = new IndexWriter( directory, new StandardAnalyzer(), true );
@@ -33,6 +36,7 @@
}
}
+
public RAMDirectory getDirectory() {
return directory;
}
16 years, 8 months
Hibernate SVN: r13944 - in search/trunk/src: java/org/hibernate/search/engine and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-08-20 20:25:25 -0400 (Mon, 20 Aug 2007)
New Revision: 13944
Modified:
search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java
search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java
Log:
HSEARCH-108 id not indexed in embedded objects
Modified: search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java 2007-08-20 14:47:34 UTC (rev 13943)
+++ search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java 2007-08-21 00:25:25 UTC (rev 13944)
@@ -97,7 +97,7 @@
}
public void add(Object entity, Serializable id, WorkType workType, WorkQueue workQueue) {
- //don't check for builder it's done in performWorks
+ //don't check for builder it's done in prepareWork
Work work = new Work(entity, id, workType);
workQueue.add( work );
if ( batchSize > 0 && workQueue.size() >= batchSize ) {
Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java 2007-08-20 14:47:34 UTC (rev 13943)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java 2007-08-21 00:25:25 UTC (rev 13944)
@@ -202,23 +202,41 @@
}
DocumentId documentIdAnn = member.getAnnotation( DocumentId.class );
- if ( isRoot && documentIdAnn != null ) {
- if ( idKeywordName != null ) {
- throw new AssertionFailure( "Two document id assigned: "
- + idKeywordName + " and " + BinderHelper.getAttributeName( member, documentIdAnn.name() ) );
+ if ( documentIdAnn != null ) {
+ if ( isRoot ) {
+ if ( idKeywordName != null ) {
+ throw new AssertionFailure( "Two document id assigned: "
+ + idKeywordName + " and " + BinderHelper.getAttributeName( member, documentIdAnn.name() ) );
+ }
+ idKeywordName = prefix + BinderHelper.getAttributeName( member, documentIdAnn.name() );
+ FieldBridge fieldBridge = BridgeFactory.guessType( null, member );
+ if ( fieldBridge instanceof TwoWayFieldBridge ) {
+ idBridge = (TwoWayFieldBridge) fieldBridge;
+ }
+ else {
+ throw new SearchException(
+ "Bridge for document id does not implement IdFieldBridge: " + member.getName() );
+ }
+ idBoost = getBoost( member );
+ setAccessible( member );
+ idGetter = member;
}
- idKeywordName = prefix + BinderHelper.getAttributeName( member, documentIdAnn.name() );
- FieldBridge fieldBridge = BridgeFactory.guessType( null, member );
- if ( fieldBridge instanceof TwoWayFieldBridge ) {
- idBridge = (TwoWayFieldBridge) fieldBridge;
- }
else {
- throw new SearchException(
- "Bridge for document id does not implement IdFieldBridge: " + member.getName() );
+ //component should index their document id
+ setAccessible( member );
+ propertiesMetadata.fieldGetters.add( member );
+ String fieldName = prefix + BinderHelper.getAttributeName( member, documentIdAnn.name() );
+ propertiesMetadata.fieldNames.add( fieldName );
+ propertiesMetadata.fieldStore.add( getStore( Store.YES ) );
+ propertiesMetadata.fieldIndex.add( getIndex( Index.UN_TOKENIZED ) );
+ propertiesMetadata.fieldBridges.add( BridgeFactory.guessType( null, member ) );
+ // Field > property > entity analyzer
+ Analyzer analyzer = null; //no field analyzer
+ if ( analyzer == null ) analyzer = getAnalyzer( member );
+ if ( analyzer == null ) analyzer = propertiesMetadata.analyzer;
+ if ( analyzer == null ) throw new AssertionFailure( "Analizer should not be undefined" );
+ this.analyzer.addScopedAnalyzer( fieldName, analyzer );
}
- idBoost = getBoost( member );
- setAccessible( member );
- idGetter = member;
}
{
org.hibernate.search.annotations.Field fieldAnn =
Modified: search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java 2007-08-20 14:47:34 UTC (rev 13943)
+++ search/trunk/src/test/org/hibernate/search/test/embedded/EmbeddedTest.java 2007-08-21 00:25:25 UTC (rev 13944)
@@ -3,17 +3,17 @@
import java.util.List;
-import org.hibernate.search.test.SearchTestCase;
-import org.hibernate.search.FullTextSession;
-import org.hibernate.search.Search;
-import org.hibernate.Session;
-import org.hibernate.Transaction;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.queryParser.MultiFieldQueryParser;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.index.Term;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.search.FullTextSession;
+import org.hibernate.search.Search;
+import org.hibernate.search.test.SearchTestCase;
/**
* @author Emmanuel Bernard
@@ -24,55 +24,57 @@
Tower tower = new Tower();
tower.setName( "JBoss tower" );
Address a = new Address();
- a.setStreet( "Tower place");
- a.getTowers().add(tower);
+ a.setStreet( "Tower place" );
+ a.getTowers().add( tower );
tower.setAddress( a );
Owner o = new Owner();
o.setName( "Atlanta Renting corp" );
a.setOwnedBy( o );
o.setAddress( a );
- Session s = openSession( );
+ Session s = openSession();
Transaction tx = s.beginTransaction();
s.persist( tower );
tx.commit();
-
+ FullTextSession session = Search.createFullTextSession( s );
+ QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ Query query;
+ List result;
- FullTextSession session = Search.createFullTextSession(s);
- QueryParser parser = new QueryParser("id", new StandardAnalyzer() );
- Query query;
- List result;
+ query = parser.parse( "address.street:place" );
+ result = session.createFullTextQuery( query ).list();
+ assertEquals( "unable to find property in embedded", 1, result.size() );
- query = parser.parse("address.street:place");
- result = session.createFullTextQuery(query).list();
- assertEquals( "unable to find property in embedded", 1, result.size() );
-
- query = parser.parse("address.ownedBy_name:renting");
- result = session.createFullTextQuery(query, Tower.class).list();
+ query = parser.parse( "address.ownedBy_name:renting" );
+ result = session.createFullTextQuery( query, Tower.class ).list();
assertEquals( "unable to find property in embedded", 1, result.size() );
+ query = parser.parse( "address.id:" + a.getId().toString() );
+ result = session.createFullTextQuery( query, Tower.class ).list();
+ assertEquals( "unable to find property by id of embedded", 1, result.size() );
+
s.clear();
tx = s.beginTransaction();
- Address address = (Address) s.get(Address.class, a.getId() );
- address.getOwnedBy().setName( "Buckhead community");
+ Address address = (Address) s.get( Address.class, a.getId() );
+ address.getOwnedBy().setName( "Buckhead community" );
tx.commit();
s.clear();
- session = Search.createFullTextSession(s);
+ session = Search.createFullTextSession( s );
- query = parser.parse("address.ownedBy_name:buckhead");
- result = session.createFullTextQuery(query, Tower.class).list();
- assertEquals( "change in embedded not reflected in root index", 1, result.size() );
+ query = parser.parse( "address.ownedBy_name:buckhead" );
+ result = session.createFullTextQuery( query, Tower.class ).list();
+ assertEquals( "change in embedded not reflected in root index", 1, result.size() );
s.clear();
tx = s.beginTransaction();
- s.delete( s.get(Tower.class, tower.getId() ) );
+ s.delete( s.get( Tower.class, tower.getId() ) );
tx.commit();
s.close();
@@ -83,7 +85,7 @@
Tower tower = new Tower();
tower.setName( "JBoss tower" );
Address a = new Address();
- a.setStreet( "Tower place");
+ a.setStreet( "Tower place" );
a.getTowers().add( tower );
tower.setAddress( a );
Owner o = new Owner();
@@ -91,7 +93,7 @@
a.setOwnedBy( o );
o.setAddress( a );
- Session s = openSession( );
+ Session s = openSession();
Transaction tx = s.beginTransaction();
s.persist( tower );
tx.commit();
@@ -99,25 +101,25 @@
s.clear();
tx = s.beginTransaction();
- Address address = (Address) s.get(Address.class, a.getId() );
+ Address address = (Address) s.get( Address.class, a.getId() );
address.setStreet( "Peachtree Road NE" );
tx.commit();
s.clear();
- FullTextSession session = Search.createFullTextSession(s);
- QueryParser parser = new QueryParser("id", new StandardAnalyzer() );
- Query query;
- List result;
+ FullTextSession session = Search.createFullTextSession( s );
+ QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ Query query;
+ List result;
- query = parser.parse("address.street:peachtree");
- result = session.createFullTextQuery(query, Tower.class).list();
- assertEquals( "change in embedded not reflected in root index", 1, result.size() );
+ query = parser.parse( "address.street:peachtree" );
+ result = session.createFullTextQuery( query, Tower.class ).list();
+ assertEquals( "change in embedded not reflected in root index", 1, result.size() );
s.clear();
tx = s.beginTransaction();
- address = (Address) s.get(Address.class, a.getId() );
+ address = (Address) s.get( Address.class, a.getId() );
Tower tower1 = address.getTowers().iterator().next();
tower1.setAddress( null );
address.getTowers().remove( tower1 );
@@ -125,14 +127,14 @@
s.clear();
- session = Search.createFullTextSession(s);
+ session = Search.createFullTextSession( s );
- query = parser.parse("address.street:peachtree");
- result = session.createFullTextQuery(query, Tower.class).list();
- assertEquals( "breaking link fails", 0, result.size() );
+ query = parser.parse( "address.street:peachtree" );
+ result = session.createFullTextQuery( query, Tower.class ).list();
+ assertEquals( "breaking link fails", 0, result.size() );
tx = s.beginTransaction();
- s.delete( s.get(Tower.class, tower.getId() ) );
+ s.delete( s.get( Tower.class, tower.getId() ) );
tx.commit();
s.close();
@@ -150,24 +152,24 @@
a4.setName( "Proust" );
Order o = new Order();
- o.setOrderNumber( "ACVBNM");
+ o.setOrderNumber( "ACVBNM" );
Order o2 = new Order();
- o2.setOrderNumber( "ZERTYD");
+ o2.setOrderNumber( "ZERTYD" );
Product p1 = new Product();
p1.setName( "Candide" );
- p1.getAuthors().add(a);
- p1.getAuthors().add(a2); //be creative
+ p1.getAuthors().add( a );
+ p1.getAuthors().add( a2 ); //be creative
Product p2 = new Product();
p2.setName( "Le malade imaginaire" );
- p2.getAuthors().add(a3);
- p2.getOrders().put("Emmanuel", o);
- p2.getOrders().put("Gavin", o2);
+ p2.getAuthors().add( a3 );
+ p2.getOrders().put( "Emmanuel", o );
+ p2.getOrders().put( "Gavin", o2 );
-
- Session s = openSession( );
+
+ Session s = openSession();
Transaction tx = s.beginTransaction();
s.persist( a );
s.persist( a2 );
@@ -181,28 +183,28 @@
s.clear();
- FullTextSession session = Search.createFullTextSession(s);
+ FullTextSession session = Search.createFullTextSession( s );
tx = session.beginTransaction();
- QueryParser parser = new MultiFieldQueryParser( new String[] {"name", "authors.name"}, new StandardAnalyzer() );
- Query query;
- List result;
+ QueryParser parser = new MultiFieldQueryParser( new String[] { "name", "authors.name" }, new StandardAnalyzer() );
+ Query query;
+ List result;
- query = parser.parse("Hugo");
- result = session.createFullTextQuery(query, Product.class).list();
- assertEquals( "collection of embedded ignored", 1, result.size() );
+ query = parser.parse( "Hugo" );
+ result = session.createFullTextQuery( query, Product.class ).list();
+ assertEquals( "collection of embedded ignored", 1, result.size() );
//update the collection
- Product p = (Product) result.get(0);
- p.getAuthors().add(a4);
+ Product p = (Product) result.get( 0 );
+ p.getAuthors().add( a4 );
//PhraseQuery
- query = new TermQuery(new Term("orders.orderNumber", "ZERTYD"));
- result = session.createFullTextQuery(query, Product.class).list();
- assertEquals( "collection of untokenized ignored", 1, result.size() );
- query = new TermQuery(new Term("orders.orderNumber", "ACVBNM"));
- result = session.createFullTextQuery(query, Product.class).list();
- assertEquals( "collection of untokenized ignored", 1, result.size() );
+ query = new TermQuery( new Term( "orders.orderNumber", "ZERTYD" ) );
+ result = session.createFullTextQuery( query, Product.class ).list();
+ assertEquals( "collection of untokenized ignored", 1, result.size() );
+ query = new TermQuery( new Term( "orders.orderNumber", "ACVBNM" ) );
+ result = session.createFullTextQuery( query, Product.class ).list();
+ assertEquals( "collection of untokenized ignored", 1, result.size() );
tx.commit();
@@ -210,13 +212,13 @@
tx = s.beginTransaction();
session = Search.createFullTextSession( s );
- query = parser.parse("Proust");
- result = session.createFullTextQuery(query, Product.class).list();
+ query = parser.parse( "Proust" );
+ result = session.createFullTextQuery( query, Product.class ).list();
//HSEARCH-56
assertEquals( "update of collection of embedded ignored", 1, result.size() );
- s.delete( s.get(Product.class, p1.getId() ) );
- s.delete( s.get(Product.class, p2.getId() ) );
+ s.delete( s.get( Product.class, p1.getId() ) );
+ s.delete( s.get( Product.class, p2.getId() ) );
tx.commit();
s.close();
16 years, 8 months
Hibernate SVN: r13943 - sandbox/trunk/jdbc-proxy/src/test/perf/org/hibernate/jdbc.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2007-08-20 10:47:34 -0400 (Mon, 20 Aug 2007)
New Revision: 13943
Modified:
sandbox/trunk/jdbc-proxy/src/test/perf/org/hibernate/jdbc/PerformanceTest.java
Log:
new average-based perf testing
Modified: sandbox/trunk/jdbc-proxy/src/test/perf/org/hibernate/jdbc/PerformanceTest.java
===================================================================
--- sandbox/trunk/jdbc-proxy/src/test/perf/org/hibernate/jdbc/PerformanceTest.java 2007-08-20 12:34:37 UTC (rev 13942)
+++ sandbox/trunk/jdbc-proxy/src/test/perf/org/hibernate/jdbc/PerformanceTest.java 2007-08-20 14:47:34 UTC (rev 13943)
@@ -33,6 +33,7 @@
import org.hibernate.jdbc.delegation.ConnectionDelegate;
import org.hibernate.jdbc.impl.LogicalConnectionImpl;
import org.hibernate.jdbc.proxy.ProxyBuilder;
+import org.hibernate.util.ArrayHelper;
/**
* PerformanceTest implementation
@@ -113,221 +114,136 @@
}
@Test
- public void testSimultaneous() throws Throwable {
- System.gc();
- System.gc();
+ public void averaged() throws Throwable {
- for ( int n = 2; n < 5000; n *= 2 ) {
- Data[] datum = new Data[n];
- for ( int i = 0; i < n; i++ ) {
- datum[i] = new Data( i, "test - many [" + i + "]" );
+ // set up test data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ int[] sizes = sizes();
+ Data[][] datums = new Data[sizes.length][];
+ for ( int a = 0; a < sizes.length; a++ ) {
+ datums[a] = new Data[sizes[a]];
+ for ( int i = 0; i < sizes[a]; i++ ) {
+ datums[a][i] = new Data( i, "test - many [" + i + "]" );
}
+ }
- // prime ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ System.gc();
+ System.gc();
- Connection c;
- LogicalConnectionImpl lc;
+ Connection c;
+ LogicalConnectionImpl lc;
- c = services.getConnectionProvider().getConnection();
- process( c, datum );
- services.getConnectionProvider().closeConnection( c );
+ // prime ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- process( c, datum );
- c.close();
- lc.close();
+ for ( int a = 0, Z = datums.length; a < Z; a++ ) {
+ process( datums[a], 1 );
+ }
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- process( c, datum );
- c.close();
- lc.close();
+ // timings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- c = services.getConnectionProvider().getConnection();
- process( c, datum );
- services.getConnectionProvider().closeConnection( c );
+ int N = 10;
+ ProcessResult[][] results = new ProcessResult[sizes.length][10];
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- process( c, datum );
- c.close();
- lc.close();
+ for ( int x = 0; x < N; x++ ) {
+ for ( int a = 0, Z = datums.length; a < Z; a++ ) {
+ results[a][x] = process( datums[a], 1 );
+ }
+ }
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- process( c, datum );
- c.close();
- lc.close();
+ ProcessResult averagedResults = average( results, 1000 );
- // Now do timings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ System.out.println( "-----------------------------------------------------------------------------------" );
+ System.out.println( " Averages (per 1000 objects)" );
+ System.out.println( "-----------------------------------------------------------------------------------" );
+ System.out.println( "Direct JDBC : " + averagedResults.jdbc + " ms" );
+ System.out.println( " Proxies : " + averagedResults.proxy + " ms (ratio=" + ( (float) averagedResults.proxy )/averagedResults.jdbc + ")" );
+ System.out.println( " Delegation : " + averagedResults.deleg + " ms (ratio=" + ( (float) averagedResults.deleg )/averagedResults.jdbc + ")" );
+ System.out.println( "-----------------------------------------------------------------------------------" );
+ }
- long proxies = 0, deleg = 0, jdbc = 0, start = 0;
+ private ProcessResult average(ProcessResult[][] results, int extrapolation) {
+ long jdbcAvg = 0, proxyAvg = 0, delegAvg = 0;
+ // the first dimension is the object counts...
+ for ( int x = 0, X = results.length; x < X; x++ ) {
+ int iterationCount = results[x].length;
+ long jdbc = 0, proxy = 0, deleg = 0;
+ for ( int y = 0; y < iterationCount; y++ ) {
+ jdbc += results[x][y].jdbc;
+ proxy += results[x][y].proxy;
+ deleg += results[x][y].deleg;
+ }
+ jdbc /= iterationCount;
+ proxy /= iterationCount;
+ deleg /= iterationCount;
- c = services.getConnectionProvider().getConnection();
- start = System.currentTimeMillis();
- process( c, datum );
- jdbc += System.currentTimeMillis() - start;
- services.getConnectionProvider().closeConnection( c );
+ float extrapolationFactor = results[x][0].objectCount / extrapolation;
+ jdbcAvg += ( jdbc * extrapolationFactor );
+ proxyAvg += ( proxy * extrapolationFactor );
+ delegAvg += ( deleg * extrapolationFactor );
+ }
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- start = System.currentTimeMillis();
- process( c, datum );
- proxies += System.currentTimeMillis() - start;
- c.close();
- lc.close();
+ return new ProcessResult(
+ extrapolation,
+ jdbcAvg / results.length,
+ proxyAvg / results.length,
+ delegAvg / results.length
+ );
+ }
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- start = System.currentTimeMillis();
- process( c, datum );
- deleg += System.currentTimeMillis() - start;
- c.close();
- lc.close();
+ private static class ProcessResult {
+ private final int objectCount;
+ private final long jdbc;
+ private final long proxy;
+ private final long deleg;
- c = services.getConnectionProvider().getConnection();
- start = System.currentTimeMillis();
- process( c, datum );
- jdbc += System.currentTimeMillis() - start;
- services.getConnectionProvider().closeConnection( c );
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- start = System.currentTimeMillis();
- process( c, datum );
- proxies += System.currentTimeMillis() - start;
- c.close();
- lc.close();
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- start = System.currentTimeMillis();
- process( c, datum );
- deleg += System.currentTimeMillis() - start;
- c.close();
- lc.close();
-
- c = services.getConnectionProvider().getConnection();
- start = System.currentTimeMillis();
- process( c, datum );
- jdbc += System.currentTimeMillis() - start;
- services.getConnectionProvider().closeConnection( c );
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- start = System.currentTimeMillis();
- process( c, datum );
- proxies += System.currentTimeMillis() - start;
- c.close();
- lc.close();
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- start = System.currentTimeMillis();
- process( c, datum );
- deleg += System.currentTimeMillis() - start;
- c.close();
- lc.close();
-
- System.out.println( "-----------------------------------------------------------------------------------" );
- System.out.println( " Objects : " + n );
- System.out.println( "Direct JDBC : " + jdbc + " ms" );
- System.out.println( " Proxies : " + proxies + " ms (ratio=" + ( ( (float) proxies )/jdbc ) + ")" );
- System.out.println( " Delegation : " + deleg + " ms (ratio=" + ( ( (float) deleg )/jdbc ) + ")" );
- System.out.println( "-----------------------------------------------------------------------------------" );
-
+ private ProcessResult(int objectCount, long jdbc, long proxy, long deleg) {
+ this.objectCount = objectCount;
+ this.jdbc = jdbc;
+ this.proxy = proxy;
+ this.deleg = deleg;
}
}
- @Test
- public void testMany() throws Throwable {
- System.gc();
- System.gc();
+ private ProcessResult process(Data[] datums, int statementCount) throws Throwable {
+ Connection c;
+ LogicalConnectionImpl lc;
+ long start;
- int N = 30;
- long proxies = 0, jdbc = 0, deleg = 0, start = 0;
+ start = System.currentTimeMillis();
+ c = services.getConnectionProvider().getConnection();
+ for ( int i = 0; i < statementCount; i++ ) {
+ process( c, datums );
+ }
+ services.getConnectionProvider().closeConnection( c );
+ long jdbc = System.currentTimeMillis() - start;
- for ( int n = 1; n < 20; n++ ) {
- Data[] datum = new Data[n];
- for ( int i = 0; i < n; i++ ) {
- datum[i] = new Data( i, "test - many [" + i + "]" );
- }
+ start = System.currentTimeMillis();
+ lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
+ c = ProxyBuilder.buildConnection( lc );
+ for ( int i = 0; i < statementCount; i++ ) {
+ process( c, datums );
+ }
+ c.close();
+ lc.close();
+ long proxy = System.currentTimeMillis() - start;
- Connection c;
- LogicalConnectionImpl lc;
-
- // prime ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- c = services.getConnectionProvider().getConnection();
- process( c, datum );
- services.getConnectionProvider().closeConnection( c );
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- process( c, datum );
- c.close();
- lc.close();
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- process( c, datum );
- c.close();
- lc.close();
-
- c = services.getConnectionProvider().getConnection();
- process( c, datum );
- services.getConnectionProvider().closeConnection( c );
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- process( c, datum );
- c.close();
- lc.close();
-
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- process( c, datum );
- c.close();
- lc.close();
-
- // Now do timings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- start = System.currentTimeMillis();
- c = services.getConnectionProvider().getConnection();
- for ( int i = 0; i < N; i++ ) {
- process( c, datum );
- }
- services.getConnectionProvider().closeConnection( c );
- jdbc += System.currentTimeMillis() - start;
-
- start = System.currentTimeMillis();
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = ProxyBuilder.buildConnection( lc );
- for ( int i = 0; i < N; i++ ) {
- process( c, datum );
- }
- c.close();
- lc.close();
- proxies += ( System.currentTimeMillis() - start );
-
- start = System.currentTimeMillis();
- lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
- c = new ConnectionDelegate( lc );
- for ( int i = 0; i < N; i++ ) {
- process( c, datum );
- }
- c.close();
- lc.close();
- deleg += ( System.currentTimeMillis() - start );
-
+ start = System.currentTimeMillis();
+ lc = new LogicalConnectionImpl( null, ConnectionReleaseMode.AFTER_TRANSACTION, services );
+ c = new ConnectionDelegate( lc );
+ for ( int i = 0; i < statementCount; i++ ) {
+ process( c, datums );
}
+ c.close();
+ lc.close();
+ long deleg = System.currentTimeMillis() - start;
System.out.println( "-----------------------------------------------------------------------------------" );
+ System.out.println( " Objects : " + datums.length );
System.out.println( "Direct JDBC : " + jdbc + " ms" );
- System.out.println( " Proxies : " + proxies + " ms (ratio=" + ( (float) proxies )/jdbc + ")" );
- System.out.println( " Delegation : " + deleg + " ms (ratio=" + ( (float) deleg )/jdbc + ")" );
+ System.out.println( " Proxies : " + proxy + " ms (ratio=" + ( ( (float) proxy )/jdbc ) + ")" );
+ System.out.println( " Delegation : " + deleg + " ms (ratio=" + ( ( (float) deleg )/jdbc ) + ")" );
System.out.println( "-----------------------------------------------------------------------------------" );
+
+ return new ProcessResult( datums.length, jdbc, proxy, deleg );
}
private void process(Connection connection, Data[] datums) throws Throwable {
@@ -367,4 +283,9 @@
connection.commit();
}
+
+
+ private int[] sizes() {
+ return ArrayHelper.getBatchSizes( 5000 );
+ }
}
16 years, 8 months
Hibernate SVN: r13942 - in branches/Branch_3_2/HibernateExt/tools/src: java/org/hibernate/tool/hbm2x/visitor and 2 other directories.
by hibernate-commits@lists.jboss.org
Author: max.andersen(a)jboss.com
Date: 2007-08-20 08:34:37 -0400 (Mon, 20 Aug 2007)
New Revision: 13942
Modified:
branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java
branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/JavaTypeFromValueVisitor.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2DaoTest.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2EJBDaoTest.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2HibernateDAOTest.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/JdbcHbm2JavaEjb3Test.java
Log:
Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -5,21 +5,29 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategyUtil;
+import org.hibernate.mapping.Any;
+import org.hibernate.mapping.Array;
+import org.hibernate.mapping.Bag;
import org.hibernate.mapping.Collection;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.Component;
+import org.hibernate.mapping.IdentifierBag;
import org.hibernate.mapping.MetaAttributable;
import org.hibernate.mapping.MetaAttribute;
+import org.hibernate.mapping.PrimitiveArray;
import org.hibernate.mapping.Property;
import org.hibernate.mapping.PropertyGeneration;
import org.hibernate.mapping.Selectable;
+import org.hibernate.mapping.Set;
import org.hibernate.mapping.SimpleValue;
import org.hibernate.mapping.Value;
import org.hibernate.tool.hbm2x.Cfg2JavaTool;
import org.hibernate.tool.hbm2x.MetaAttributeConstants;
import org.hibernate.tool.hbm2x.MetaAttributeHelper;
+import org.hibernate.tool.hbm2x.visitor.DefaultValueVisitor;
import org.hibernate.util.StringHelper;
/**
@@ -851,11 +859,48 @@
return c2j.getJavaTypeName(p, useGenerics, this);
}
+ static private class DefaultInitializor {
+
+ private final String type;
+ private final boolean initToZero;
+
+ public DefaultInitializor(String type, boolean initToZero) {
+ this.type = type;
+ this.initToZero = initToZero;
+ }
+
+ public String getDefaultValue(String comparator, String genericDeclaration, ImportContext importContext) {
+ StringBuffer val = new StringBuffer("new " + importContext.importType(type));
+ if(genericDeclaration!=null) {
+ val.append(genericDeclaration);
+ }
+
+ val.append("(");
+ if(comparator!=null) {
+ val.append("new ");
+ val.append(importContext.importType(comparator));
+ val.append("()");
+ if(initToZero) val.append(",");
+ }
+ if(initToZero) {
+ val.append("0");
+ }
+ val.append(")");
+ return val.toString();
+ }
+
+ public String getType() {
+ return type;
+ }
+ }
+
static Map defaultInitializors = new HashMap();
static {
- defaultInitializors.put("java.util.List", "java.util.ArrayList");
- defaultInitializors.put("java.util.Map", "java.util.HashMap");
- defaultInitializors.put("java.util.Set", "java.util.HashSet");
+ defaultInitializors.put("java.util.List", new DefaultInitializor("java.util.ArrayList", true));
+ defaultInitializors.put("java.util.Map", new DefaultInitializor("java.util.HashMap", true));
+ defaultInitializors.put("java.util.Set", new DefaultInitializor("java.util.HashSet",true));
+ defaultInitializors.put("java.util.SortedSet", new DefaultInitializor("java.util.TreeSet", false));
+ defaultInitializors.put("java.util.SortedMap", new DefaultInitializor("java.util.TreeMap", false));
}
public boolean hasFieldInitializor(Property p, boolean useGenerics) {
@@ -863,22 +908,67 @@
}
public String getFieldInitialization(Property p, boolean useGenerics) {
- String javaTypeName = c2j.getJavaTypeName(p, false);
if(hasMetaAttribute(p, "default-value")) {
return MetaAttributeHelper.getMetaAsString( p.getMetaAttribute( "default-value" ) );
}
- if(javaTypeName==null) {
- return null;
+ if(c2j.getJavaTypeName(p, false)==null) {
+ throw new IllegalArgumentException();
} else if (p.getValue() instanceof Collection) {
- String initialization = (String) defaultInitializors.get(javaTypeName);
+ Collection col = (Collection) p.getValue();
- String decl = null;
-
- if(useGenerics) {
- decl = c2j.getGenericCollectionDeclaration((Collection) p.getValue(), true, importContext);
- }
- if(initialization!=null) {
- return "new " + importType(initialization) + (decl==null?"":decl) + "(0)";
+ DefaultInitializor initialization = (DefaultInitializor) col.accept(new DefaultValueVisitor(true) {
+
+ public Object accept(Bag o) {
+ return new DefaultInitializor("java.util.ArrayList", true);
+ }
+
+ public Object accept(org.hibernate.mapping.List o) {
+ return new DefaultInitializor("java.util.ArrayList", true);
+ }
+
+ public Object accept(org.hibernate.mapping.Map o) {
+ if(o.isSorted()) {
+ return new DefaultInitializor("java.util.TreeMap", false);
+ } else {
+ return new DefaultInitializor("java.util.HashMap", true);
+ }
+ }
+
+ public Object accept(IdentifierBag o) {
+ return new DefaultInitializor("java.util.ArrayList", true);
+ }
+
+ public Object accept(Set o) {
+ if(o.isSorted()) {
+ return new DefaultInitializor("java.util.TreeSet", false);
+ } else {
+ return new DefaultInitializor("java.util.HashSet", true);
+ }
+ }
+
+
+ public Object accept(PrimitiveArray o) {
+ return null; // TODO: default init for arrays ?
+ }
+
+ public Object accept(Array o) {
+ return null;// TODO: default init for arrays ?
+ }
+
+ });
+
+ if(initialization!=null) {
+ String comparator = null;
+ String decl = null;
+
+ if(col.isSorted()) {
+ comparator = col.getComparatorClassName();
+ }
+
+ if(useGenerics) {
+ decl = c2j.getGenericCollectionDeclaration((Collection) p.getValue(), true, importContext);
+ }
+ return initialization.getDefaultValue(comparator, decl, this);
} else {
return null;
}
@@ -888,3 +978,4 @@
}
}
+
\ No newline at end of file
Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/JavaTypeFromValueVisitor.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/JavaTypeFromValueVisitor.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/JavaTypeFromValueVisitor.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -1,10 +1,14 @@
package org.hibernate.tool.hbm2x.visitor;
+import java.util.List;
+
import org.hibernate.HibernateException;
import org.hibernate.mapping.Component;
import org.hibernate.mapping.ManyToOne;
+import org.hibernate.mapping.Map;
import org.hibernate.mapping.OneToMany;
import org.hibernate.mapping.OneToOne;
+import org.hibernate.mapping.Set;
import org.hibernate.mapping.SimpleValue;
import org.hibernate.mapping.ToOne;
import org.hibernate.mapping.Value;
@@ -12,6 +16,7 @@
import org.hibernate.type.CompositeCustomType;
import org.hibernate.type.CustomType;
import org.hibernate.type.Type;
+import org.hibernate.type.TypeFactory;
public class JavaTypeFromValueVisitor extends DefaultValueVisitor {
@@ -22,6 +27,22 @@
super( true );
}
+ // special handling for Map's to avoid initialization of comparators that depends on the keys/values which might not be generated yet.
+ public Object accept(Map o) {
+ if ( o.isSorted() ) {
+ return "java.util.SortedMap";
+ }
+ return super.accept(o);
+ }
+
+ // special handling for Set's to avoid initialization of comparators that depends on the keys/values which might not be generated yet.
+ public Object accept(Set o) {
+ if ( o.isSorted() ) {
+ return "java.util.SortedSet";
+ }
+ return super.accept(o);
+ }
+
public Object accept(Component value) {
// composite-element breaks without it.
return value.getComponentClassName();
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -1,6 +1,9 @@
package org.hibernate.tool;
import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Iterator;
@@ -163,5 +166,29 @@
assertNotNull(document);
return document;
}
+
+ protected void generateComparator() throws IOException {
+ File file = new File(getOutputDir().getAbsolutePath() + "/comparator/NoopComparator.java");
+ file.getParentFile().mkdirs();
+
+ FileWriter fileWriter = new FileWriter(file);
+ PrintWriter pw = new PrintWriter(fileWriter);
+
+ pw.println("package comparator;");
+
+ pw.println("import java.util.Comparator;");
+
+ pw.println("public class NoopComparator implements Comparator {\n" +
+ "\n" +
+ " public int compare(Object o1, Object o2) {\n" +
+ " return 0;\n" +
+ " }\n" +
+ "\n" +
+ " }\n" +
+ "");
+
+ pw.flush();
+ pw.close();
+ }
}
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2DaoTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2DaoTest.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2DaoTest.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -5,6 +5,7 @@
package org.hibernate.tool.hbm2x;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -38,11 +39,13 @@
assertFileAndExists(new File(getOutputDir(), "org/hibernate/tool/hbm2x/AuthorHome.java") );
}
- public void testCompilable() {
+ public void testCompilable() throws IOException {
File file = new File("compilable");
file.mkdir();
+ generateComparator();
+
List list = new ArrayList();
TestHelper.compile(getOutputDir(), file, TestHelper.visitAllFiles(getOutputDir(), list), "1.5", "" );
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2EJBDaoTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2EJBDaoTest.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2EJBDaoTest.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -5,6 +5,7 @@
package org.hibernate.tool.hbm2x;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -37,8 +38,10 @@
assertFileAndExists(new File(getOutputDir(), "org/hibernate/tool/hbm2x/AuthorHome.java") );
}
- public void testCompilable() {
+ public void testCompilable() throws IOException {
+ generateComparator();
+
File file = new File("compilable");
file.mkdir();
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2HibernateDAOTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2HibernateDAOTest.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2HibernateDAOTest.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -5,6 +5,7 @@
package org.hibernate.tool.hbm2x;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -24,6 +25,8 @@
protected void setUp() throws Exception {
super.setUp();
+
+
POJOExporter javaExporter = new POJOExporter(getCfg(), getOutputDir() );
POJOExporter exporter = new DAOExporter(getCfg(), getOutputDir() );
exporter.getProperties().setProperty("ejb3", "false");
@@ -37,8 +40,9 @@
assertFileAndExists(new File(getOutputDir(), "org/hibernate/tool/hbm2x/AuthorHome.java") );
}
- public void testCompilable() {
+ public void testCompilable() throws IOException {
+ generateComparator();
File file = new File("compilable");
file.mkdir();
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -6,6 +6,7 @@
import java.io.File;
import java.io.FileWriter;
+import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -32,28 +33,8 @@
protected void setUp() throws Exception {
super.setUp();
- File file = new File(getOutputDir().getAbsolutePath() + "/comparator/NoopComparator.java");
- file.getParentFile().mkdirs();
+ generateComparator();
- FileWriter fileWriter = new FileWriter(file);
- PrintWriter pw = new PrintWriter(fileWriter);
-
- pw.println("package comparator;");
-
- pw.println("import java.util.Comparator;");
-
- pw.println("public class NoopComparator implements Comparator {\n" +
- "\n" +
- " public int compare(Object o1, Object o2) {\n" +
- " return 0;\n" +
- " }\n" +
- "\n" +
- " }\n" +
- "");
-
- pw.flush();
- pw.close();
-
POJOExporter exporter = new POJOExporter(getCfg(), getOutputDir() );
exporter.setTemplatePath(new String[0]);
exporter.getProperties().setProperty("ejb3", "true");
@@ -62,6 +43,8 @@
exporter.start();
}
+
+
public void testFileExistence() {
assertFileAndExists( new File(getOutputDir().getAbsolutePath() + "/org/hibernate/tool/hbm2x/Author.java") );
assertFileAndExists( new File(getOutputDir().getAbsolutePath() + "/org/hibernate/tool/hbm2x/Article.java") );
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -72,6 +72,17 @@
assertEquals("new ArrayList<Article>(0)", clazz.getFieldInitialization(p, true));
assertEquals("new ArrayList(0)", clazz.getFieldInitialization(p, false));
+ p = classMapping.getProperty("bagstrings");
+
+ assertEquals("Bag's are just a collection", "java.util.Collection", cfg2java.getJavaTypeName( p, false ));
+ assertEquals("Should be a a generic'd collection when generics=true", "java.util.Collection<java.lang.String>", cfg2java.getJavaTypeName( p, true ));
+ assertEquals("Collection<String>",cfg2java.getJavaTypeName(p, true, clazz));
+ assertEquals("new ArrayList<String>(0)", clazz.getFieldInitialization(p, true));
+ assertEquals("new ArrayList(0)", clazz.getFieldInitialization(p, false));
+
+ p = classMapping.getProperty("bagstrings");
+ assertEquals("new ArrayList(0)", clazz.getFieldInitialization(p, false));
+
p = classMapping.getProperty("naturalSortedArticlesMap");
assertEquals("java.util.SortedMap", cfg2java.getJavaTypeName( p, false));
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/JdbcHbm2JavaEjb3Test.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/JdbcHbm2JavaEjb3Test.java 2007-08-20 11:21:32 UTC (rev 13941)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/JdbcHbm2JavaEjb3Test.java 2007-08-20 12:34:37 UTC (rev 13942)
@@ -36,7 +36,7 @@
public void testUniqueConstraints() {
assertEquals(null, findFirstString( "uniqueConstraints", new File(getOutputDir(),"Master.java") ));
- assertNotNull(findFirstString( "uniqueConstraints", new File(getOutputDir(),"UniqueMaster.java") ));
+ assertNotNull(findFirstString( "uniqueConstraints", new File(getOutputDir(),"Uniquemaster.java") ));
}
public void testCompile() {
16 years, 8 months
Hibernate SVN: r13941 - in branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool: hbm2x and 4 other directories.
by hibernate-commits@lists.jboss.org
Author: max.andersen(a)jboss.com
Date: 2007-08-20 07:21:32 -0400 (Mon, 20 Aug 2007)
New Revision: 13941
Added:
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java
Modified:
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Article.hbm.xml
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2XAllTests.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbmlint/HbmLintAllTests.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java
branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java
Log:
HBX-825 Circular dependency between POJO source generation and Comparator class compilation
HBX-826 Code generator: sortedset are not instantiated by default
HBX-973 ClassCastException: hbm2java generates HashSet instead of TreeSet when <set .... sort="MySorter"> is defined.
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -55,7 +55,7 @@
assertNoTables();
}
- private void cleanupOutputDir() {
+ protected void cleanupOutputDir() {
if (getOutputDir()!=null) TestHelper.deleteDir(getOutputDir());
}
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Article.hbm.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Article.hbm.xml 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Article.hbm.xml 2007-08-20 11:21:32 UTC (rev 13941)
@@ -64,7 +64,27 @@
<list-index/>
<one-to-many class="Article"/>
</list>
-
- </class>
+ <set name="sortedArticlesSet" inverse="true"
+ sort="comparator.NoopComparator">
+ <key column="idx"/>
+ <one-to-many class="Article" />
+ </set>
+
+ <map name="sortedArticlesMap" inverse="true"
+ sort="comparator.NoopComparator">
+ <key column="idx"/>
+ <map-key type="string"/>
+ <one-to-many class="Article" />
+ </map>
+
+ <map name="naturalSortedArticlesMap" inverse="true"
+ sort="natural">
+ <key column="idx"/>
+ <map-key type="string"/>
+ <one-to-many class="Article" />
+ </map>
+
+ </class>
+
</hibernate-mapping>
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaEjb3Test.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -5,6 +5,8 @@
package org.hibernate.tool.hbm2x;
import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +32,28 @@
protected void setUp() throws Exception {
super.setUp();
+ File file = new File(getOutputDir().getAbsolutePath() + "/comparator/NoopComparator.java");
+ file.getParentFile().mkdirs();
+
+ FileWriter fileWriter = new FileWriter(file);
+ PrintWriter pw = new PrintWriter(fileWriter);
+
+ pw.println("package comparator;");
+
+ pw.println("import java.util.Comparator;");
+
+ pw.println("public class NoopComparator implements Comparator {\n" +
+ "\n" +
+ " public int compare(Object o1, Object o2) {\n" +
+ " return 0;\n" +
+ " }\n" +
+ "\n" +
+ " }\n" +
+ "");
+
+ pw.flush();
+ pw.close();
+
POJOExporter exporter = new POJOExporter(getCfg(), getOutputDir() );
exporter.setTemplatePath(new String[0]);
exporter.getProperties().setProperty("ejb3", "true");
@@ -84,41 +108,7 @@
}
-
- public void testFieldInitializationAndTypeNames() {
- PersistentClass classMapping = getCfg().getClassMapping("org.hibernate.tool.hbm2x.Article");
- Cfg2JavaTool cfg2java = new Cfg2JavaTool();
- POJOClass clazz = cfg2java.getPOJOClass(classMapping);
-
- Property p = classMapping.getProperty("AMap");
-
- assertEquals("all types should be fully qualified when no importcontext","java.util.Map<java.lang.String,org.hibernate.tool.hbm2x.Article>",cfg2java.getJavaTypeName(p, true));
- assertEquals("Map<String,Article>",cfg2java.getJavaTypeName(p, true, clazz));
- assertEquals("new HashMap<String,Article>(0)", clazz.getFieldInitialization(p, true));
- assertEquals("new HashMap(0)", clazz.getFieldInitialization(p, false));
-
- p = classMapping.getProperty("aList");
-
- assertEquals("lists should not have the index visible in the declaration", "List<Article>",cfg2java.getJavaTypeName(p, true, clazz));
- assertEquals("all types should be fully qualified when no importcontext","java.util.List<org.hibernate.tool.hbm2x.Article>",cfg2java.getJavaTypeName(p, true));
-
- assertEquals("new ArrayList<Article>(0)", clazz.getFieldInitialization(p, true));
- assertEquals("new ArrayList(0)", clazz.getFieldInitialization(p, false));
-
- p = classMapping.getProperty("content");
- assertEquals("\"what can I say\"",clazz.getFieldInitialization(p, false));
-
- p = classMapping.getProperty("bagarticles");
-
- assertEquals("Should be a list via property-type", "java.util.List", cfg2java.getJavaTypeName( p, false ));
- assertEquals("Should be a a generic'd list when generics=true", "java.util.List<org.hibernate.tool.hbm2x.Article>", cfg2java.getJavaTypeName( p, true ));
- assertEquals("List<Article>",cfg2java.getJavaTypeName(p, true, clazz));
- assertEquals("new ArrayList<Article>(0)", clazz.getFieldInitialization(p, true));
- assertEquals("new ArrayList(0)", clazz.getFieldInitialization(p, false));
-
- }
-
public void testAnnotationColumnDefaults() {
PersistentClass classMapping = getCfg().getClassMapping("org.hibernate.tool.hbm2x.Article");
Cfg2JavaTool cfg2java = new Cfg2JavaTool();
Added: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java (rev 0)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaInitializationTest.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -0,0 +1,123 @@
+/*
+ * Created on 2004-12-01
+ *
+ */
+package org.hibernate.tool.hbm2x;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hibernate.mapping.PersistentClass;
+import org.hibernate.mapping.Property;
+import org.hibernate.tool.NonReflectiveTestCase;
+import org.hibernate.tool.hbm2x.pojo.AnnotationBuilder;
+import org.hibernate.tool.hbm2x.pojo.EntityPOJOClass;
+import org.hibernate.tool.hbm2x.pojo.ImportContextImpl;
+import org.hibernate.tool.hbm2x.pojo.NoopImportContext;
+import org.hibernate.tool.hbm2x.pojo.POJOClass;
+import org.hibernate.tool.hbm2x.pojo.EntityPOJOClass.IteratorTransformer;
+import org.hibernate.tool.test.TestHelper;
+
+/**
+ * @author max
+ *
+ */
+public class Hbm2JavaInitializationTest extends NonReflectiveTestCase {
+
+ public Hbm2JavaInitializationTest(String name) {
+ super( name, "hbm2inittest" );
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ }
+
+ protected void tearDown() throws Exception {
+ cleanupOutputDir();
+ }
+
+
+
+
+ public void testFieldInitializationAndTypeNames() {
+ PersistentClass classMapping = getCfg().getClassMapping("org.hibernate.tool.hbm2x.Article");
+ Cfg2JavaTool cfg2java = new Cfg2JavaTool();
+ POJOClass clazz = cfg2java.getPOJOClass(classMapping);
+
+ Property p = classMapping.getProperty("AMap");
+
+ assertEquals("all types should be fully qualified when no importcontext","java.util.Map<java.lang.String,org.hibernate.tool.hbm2x.Article>",cfg2java.getJavaTypeName(p, true));
+ assertEquals("Map<String,Article>",cfg2java.getJavaTypeName(p, true, clazz));
+ assertEquals("new HashMap<String,Article>(0)", clazz.getFieldInitialization(p, true));
+ assertEquals("new HashMap(0)", clazz.getFieldInitialization(p, false));
+
+ p = classMapping.getProperty("aList");
+
+ assertEquals("lists should not have the index visible in the declaration", "List<Article>",cfg2java.getJavaTypeName(p, true, clazz));
+ assertEquals("all types should be fully qualified when no importcontext","java.util.List<org.hibernate.tool.hbm2x.Article>",cfg2java.getJavaTypeName(p, true));
+
+ assertEquals("new ArrayList<Article>(0)", clazz.getFieldInitialization(p, true));
+ assertEquals("new ArrayList(0)", clazz.getFieldInitialization(p, false));
+
+ p = classMapping.getProperty("content");
+ assertEquals("\"what can I say\"",clazz.getFieldInitialization(p, false));
+
+ p = classMapping.getProperty("bagarticles");
+
+ assertEquals("Should be a list via property-type", "java.util.List", cfg2java.getJavaTypeName( p, false ));
+ assertEquals("Should be a a generic'd list when generics=true", "java.util.List<org.hibernate.tool.hbm2x.Article>", cfg2java.getJavaTypeName( p, true ));
+ assertEquals("List<Article>",cfg2java.getJavaTypeName(p, true, clazz));
+ assertEquals("new ArrayList<Article>(0)", clazz.getFieldInitialization(p, true));
+ assertEquals("new ArrayList(0)", clazz.getFieldInitialization(p, false));
+
+ p = classMapping.getProperty("naturalSortedArticlesMap");
+
+ assertEquals("java.util.SortedMap", cfg2java.getJavaTypeName( p, false));
+ assertEquals("SortedMap<String,Article>", cfg2java.getJavaTypeName( p, true, new ImportContextImpl("") ));
+ assertEquals("new TreeMap<String,Article>()", clazz.getFieldInitialization(p, true));
+ assertEquals("new TreeMap()", clazz.getFieldInitialization(p, false));
+
+ p = classMapping.getProperty("sortedArticlesMap");
+
+ assertEquals("java.util.SortedMap", cfg2java.getJavaTypeName( p, false));
+ assertEquals("SortedMap<String,Article>", cfg2java.getJavaTypeName( p, true, new ImportContextImpl("") ));
+
+ assertFalse(clazz.generateImports().contains("import comparator.NoopComparator;"));
+ assertEquals("new TreeMap(new NoopComparator())", clazz.getFieldInitialization(p, false));
+ assertTrue(clazz.generateImports().contains("import comparator.NoopComparator;"));
+
+ assertEquals("new TreeMap<String,Article>(new NoopComparator())", clazz.getFieldInitialization(p, true));
+
+ p = classMapping.getProperty("sortedArticlesSet");
+
+ assertEquals("java.util.SortedSet", cfg2java.getJavaTypeName( p, false));
+ assertEquals("SortedSet<Article>", cfg2java.getJavaTypeName( p, true, new ImportContextImpl("") ));
+ assertEquals("new TreeSet<Article>(new NoopComparator())", clazz.getFieldInitialization(p, true));
+
+ }
+
+
+
+
+
+ protected String getBaseForMappings() {
+ return "org/hibernate/tool/hbm2x/";
+ }
+
+ protected String[] getMappings() {
+ return new String[] {
+ "Author.hbm.xml",
+ "Article.hbm.xml",
+ "Train.hbm.xml",
+ "Passenger.hbm.xml"
+// "GenericModel.hbm.xml",
+// "Customer.hbm.xml",
+// "Order.hbm.xml",
+// "LineItem.hbm.xml",
+// "Product.hbm.xml"
+ };
+ }
+
+}
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -92,7 +92,7 @@
assertEquals("test", findFirstString("testParent", file));
}
- public void testNoVelocityLeftOvers() {
+ public void testNoFreeMarkerLeftOvers() {
assertEquals( null, findFirstString( "$", new File( getOutputDir(),
"org/hibernate/tool/hbm2x/Customer.java" ) ) );
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2XAllTests.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2XAllTests.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2XAllTests.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -6,25 +6,29 @@
public class Hbm2XAllTests {
public static Test suite() {
- TestSuite suite = new TestSuite( "Test for org.hibernate.tool.hbm2x" );
+ TestSuite suite = new TestSuite("Test for org.hibernate.tool.hbm2x");
//$JUnit-BEGIN$
- suite.addTestSuite( Hbm2JavaConstructorTest.class );
+ suite.addTestSuite(PropertiesTest.class);
+ suite.addTestSuite(Hbm2CfgTest.class);
+ suite.addTestSuite(Hbm2DaoTest.class);
+ suite.addTestSuite(OtherCfg2HbmTest.class);
+ suite.addTestSuite(Hbm2JavaConstructorTest.class);
+ suite.addTestSuite(CachedMetaDataTest.class);
+ suite.addTestSuite(GenerateFromJDBCTest.class);
+ suite.addTestSuite(Hbm2JavaInitializationTest.class);
+ suite.addTestSuite(Hbm2HibernateDAOTest.class);
+ suite.addTestSuite(DefaultSchemaCatalogTest.class);
+ suite.addTestSuite(HashcodeEqualsTest.class);
+ suite.addTestSuite(JdbcHbm2JavaEjb3Test.class);
+ suite.addTestSuite(DocExporterTest.class);
+ suite.addTestSuite(Hbm2EJBDaoTest.class);
suite
- .addTestSuite( Hbm2JavaBidirectionalIndexedCollectionMappingTest.class );
- suite.addTestSuite( Hbm2JavaTest.class );
- suite.addTestSuite( DefaultSchemaCatalogTest.class );
- suite.addTestSuite( GenerateFromJDBCTest.class );
- suite.addTestSuite( HashcodeEqualsTest.class );
- suite.addTestSuite( Hbm2DaoTest.class );
- suite.addTestSuite( XMLPrettyPrinterTest.class );
- suite.addTestSuite( Hbm2JavaEjb3Test.class );
- suite.addTestSuite( OtherCfg2HbmTest.class );
- suite.addTestSuite( Hbm2EJBDaoTest.class );
- suite.addTestSuite( Hbm2CfgTest.class );
- suite.addTestSuite( GenericExporterTest.class );
- suite.addTestSuite( Hbm2HibernateDAOTest.class );
- suite.addTestSuite( DocExporterTest.class );
- suite.addTestSuite( PropertiesTest.class );
+ .addTestSuite(Hbm2JavaBidirectionalIndexedCollectionMappingTest.class);
+ suite.addTestSuite(IncrementalSchemaReadingTest.class);
+ suite.addTestSuite(Hbm2JavaEjb3Test.class);
+ suite.addTestSuite(XMLPrettyPrinterTest.class);
+ suite.addTestSuite(GenericExporterTest.class);
+ suite.addTestSuite(Hbm2JavaTest.class);
//$JUnit-END$
return suite;
}
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -7,9 +7,9 @@
public static Test suite() {
TestSuite suite = new TestSuite(
- "Test for org.hibernate.tool.hbm2x.query" );
+ "Test for org.hibernate.tool.hbm2x.query");
//$JUnit-BEGIN$
- suite.addTestSuite( QueryExporterTest.class );
+ suite.addTestSuite(QueryExporterTest.class);
//$JUnit-END$
return suite;
}
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbmlint/HbmLintAllTests.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbmlint/HbmLintAllTests.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbmlint/HbmLintAllTests.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -6,10 +6,10 @@
public class HbmLintAllTests {
public static Test suite() {
- TestSuite suite = new TestSuite( "Test for org.hibernate.tool.hbmlint" );
+ TestSuite suite = new TestSuite("Test for org.hibernate.tool.hbmlint");
//$JUnit-BEGIN$
- suite.addTestSuite( HbmLintTest.class );
- suite.addTestSuite( SchemaAnalyzerTest.class );
+ suite.addTestSuite(SchemaAnalyzerTest.class);
+ suite.addTestSuite(HbmLintTest.class);
//$JUnit-END$
return suite;
}
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -7,11 +7,11 @@
public static Test suite() {
TestSuite suite = new TestSuite(
- "Test for org.hibernate.tool.ide.completion" );
+ "Test for org.hibernate.tool.ide.completion");
//$JUnit-BEGIN$
- suite.addTestSuite( CompletionHelperTest.class );
- suite.addTestSuite( HqlAnalyzerTest.class );
- suite.addTestSuite( ModelCompletionTest.class );
+ suite.addTestSuite(CompletionHelperTest.class);
+ suite.addTestSuite(HqlAnalyzerTest.class);
+ suite.addTestSuite(ModelCompletionTest.class);
//$JUnit-END$
return suite;
}
Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java 2007-08-20 10:07:02 UTC (rev 13940)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java 2007-08-20 11:21:32 UTC (rev 13941)
@@ -7,27 +7,27 @@
public static Test suite() {
TestSuite suite = new TestSuite(
- "Test for org.hibernate.tool.test.jdbc2cfg" );
+ "Test for org.hibernate.tool.test.jdbc2cfg");
//$JUnit-BEGIN$
- suite.addTest( BasicMultiSchemaTest.suite() );
- suite.addTest( PerformanceTest.suite() );
- suite.addTest( NoPrimaryKeyTest.suite() );
- suite.addTest( SearchEscapeStringTest.suite() );
- suite.addTest( ManyToManyTest.suite() );
- suite.addTest( OverrideBinderTest.suite() );
- suite.addTest( VersioningTest.suite() );
- suite.addTest( MetaDataTest.suite() );
- suite.addTest( CompositeIdTest.suite() );
- suite.addTest( IndexTest.suite() );
- suite.addTest( OracleCompositeIdOrderTest.suite() );
- suite.addTest( ForeignKeysTest.suite() );
- suite.addTest( RevEngForeignKeyTests.suite() );
- suite.addTest( OracleViewsTest.suite() );
- suite.addTest( BasicTest.suite() );
- suite.addTest( AutoQuoteTest.suite() );
- suite.addTest( KeyPropertyCompositeIdTest.suite() );
- suite.addTest( PersistentClassesTest.suite() );
- suite.addTest( DefaultReverseEngineeringStrategyTest.suite() );
+ suite.addTest(ManyToManyTest.suite());
+ suite.addTest(OverrideBinderTest.suite());
+ suite.addTest(DefaultReverseEngineeringStrategyTest.suite());
+ suite.addTest(PersistentClassesTest.suite());
+ suite.addTest(OracleViewsTest.suite());
+ suite.addTest(CompositeIdTest.suite());
+ suite.addTest(SearchEscapeStringTest.suite());
+ suite.addTest(PerformanceTest.suite());
+ suite.addTest(ForeignKeysTest.suite());
+ suite.addTest(BasicMultiSchemaTest.suite());
+ suite.addTest(MetaDataTest.suite());
+ suite.addTest(RevEngForeignKeyTests.suite());
+ suite.addTest(OracleCompositeIdOrderTest.suite());
+ suite.addTest(NoPrimaryKeyTest.suite());
+ suite.addTest(BasicTest.suite());
+ suite.addTest(VersioningTest.suite());
+ suite.addTest(AutoQuoteTest.suite());
+ suite.addTest(KeyPropertyCompositeIdTest.suite());
+ suite.addTest(IndexTest.suite());
//$JUnit-END$
return suite;
}
16 years, 8 months
Hibernate SVN: r13940 - branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool.
by hibernate-commits@lists.jboss.org
Author: max.andersen(a)jboss.com
Date: 2007-08-20 06:07:02 -0400 (Mon, 20 Aug 2007)
New Revision: 13940
Modified:
branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java
Log:
missing bump version
Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java 2007-08-20 10:06:21 UTC (rev 13939)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java 2007-08-20 10:07:02 UTC (rev 13940)
@@ -5,7 +5,7 @@
final public class Version {
- public static final String VERSION = "3.2.0.b9";
+ public static final String VERSION = "3.2.0.b10";
private static final Version instance = new Version();
16 years, 8 months
Hibernate SVN: r13939 - branches/Branch_3_2/HibernateExt/tools.
by hibernate-commits@lists.jboss.org
Author: max.andersen(a)jboss.com
Date: 2007-08-20 06:06:21 -0400 (Mon, 20 Aug 2007)
New Revision: 13939
Modified:
branches/Branch_3_2/HibernateExt/tools/build.xml
Log:
missing bump version
Modified: branches/Branch_3_2/HibernateExt/tools/build.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/build.xml 2007-08-20 10:06:04 UTC (rev 13938)
+++ branches/Branch_3_2/HibernateExt/tools/build.xml 2007-08-20 10:06:21 UTC (rev 13939)
@@ -7,7 +7,7 @@
<!-- Name of project and version, used to create filenames -->
<property name="Name" value="Hibernate Tools"/>
<property name="name" value="hibernate-tools"/>
- <property name="version" value="3.2.0b9"/>
+ <property name="version" value="3.2.0b10"/>
<property name="javadoc.packagenames" value="org.hibernate.tool"/>
16 years, 8 months
Hibernate SVN: r13938 - branches/Branch_3_2/HibernateExt/tools/doc/reference/en.
by hibernate-commits@lists.jboss.org
Author: max.andersen(a)jboss.com
Date: 2007-08-20 06:06:04 -0400 (Mon, 20 Aug 2007)
New Revision: 13938
Modified:
branches/Branch_3_2/HibernateExt/tools/doc/reference/en/master.xml
Log:
missing bump version
Modified: branches/Branch_3_2/HibernateExt/tools/doc/reference/en/master.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/doc/reference/en/master.xml 2007-08-19 23:09:11 UTC (rev 13937)
+++ branches/Branch_3_2/HibernateExt/tools/doc/reference/en/master.xml 2007-08-20 10:06:04 UTC (rev 13938)
@@ -14,7 +14,7 @@
<subtitle>Reference Guide</subtitle>
- <releaseinfo>3.2.0.beta9</releaseinfo>
+ <releaseinfo>3.2.0.beta10</releaseinfo>
<mediaobject>
<imageobject>
16 years, 8 months