2121
2222import java .io .File ;
2323import java .lang .reflect .Constructor ;
24+ import java .util .Map ;
2425import java .util .Properties ;
2526
2627import org .apache .tools .ant .BuildException ;
2728import org .apache .tools .ant .Project ;
2829import org .apache .tools .ant .types .Path ;
30+ import org .hibernate .boot .cfgxml .internal .ConfigLoader ;
31+ import org .hibernate .boot .cfgxml .spi .LoadedConfig ;
32+ import org .hibernate .boot .registry .BootstrapServiceRegistryBuilder ;
2933import org .hibernate .tool .api .metadata .MetadataDescriptor ;
3034import org .hibernate .tool .api .metadata .MetadataDescriptorFactory ;
3135import org .hibernate .tool .api .metadata .MetadataConstants ;
@@ -55,7 +59,7 @@ public JDBCConfigurationTask() {
5559 setDescription ("JDBC Configuration (for reverse engineering)" );
5660 }
5761 protected MetadataDescriptor createMetadataDescriptor () {
58- Properties properties = loadPropertiesFile ();
62+ Properties properties = loadProperties ();
5963 RevengStrategy res = createReverseEngineeringStrategy ();
6064 properties .put (MetadataConstants .PREFER_BASIC_COMPOSITE_IDS , preferBasicCompositeIds );
6165 return MetadataDescriptorFactory
@@ -121,8 +125,8 @@ public void setDetectManyToMany(boolean b) {
121125 public void setDetectOptimisticLock (boolean b ) {
122126 detectOptimisticLock = b ;
123127 }
124-
125- private RevengStrategy loadreverseEngineeringStrategy (final String className , RevengStrategy delegate )
128+
129+ private RevengStrategy loadreverseEngineeringStrategy (final String className , RevengStrategy delegate )
126130 throws BuildException {
127131 try {
128132 Class <?> clazz = ReflectionUtil .classForName (className );
@@ -146,4 +150,21 @@ private RevengStrategy loadreverseEngineeringStrategy(final String className, Re
146150 throw new BuildException ("Could not create or find " + className + " with one argument delegate constructor" , e );
147151 }
148152 }
153+
154+ private Map <String , Object > loadCfgXmlFile () {
155+ return new ConfigLoader (new BootstrapServiceRegistryBuilder ().build ())
156+ .loadConfigXmlFile (getConfigurationFile ())
157+ .getConfigurationValues ();
158+ }
159+
160+ private Properties loadProperties () {
161+ Properties result = new Properties ();
162+ if (getPropertyFile () != null ) {
163+ result .putAll (loadPropertiesFile ());
164+ }
165+ if (getConfigurationFile () != null ) {
166+ result .putAll (loadCfgXmlFile ());
167+ }
168+ return result ;
169+ }
149170}
0 commit comments