66
77import java .io .File ;
88import java .lang .reflect .Constructor ;
9+ import java .util .Map ;
910import java .util .Properties ;
1011
1112import org .apache .tools .ant .BuildException ;
1516import org .hibernate .cfg .reveng .OverrideRepository ;
1617import org .hibernate .cfg .reveng .ReverseEngineeringSettings ;
1718import org .hibernate .cfg .reveng .ReverseEngineeringStrategy ;
19+ import org .hibernate .boot .cfgxml .internal .ConfigLoader ;
20+ import org .hibernate .boot .registry .BootstrapServiceRegistryBuilder ;
1821import org .hibernate .tool .api .metadata .MetadataDescriptor ;
1922import org .hibernate .tool .api .metadata .MetadataDescriptorFactory ;
2023import org .hibernate .tool .util .ReflectHelper ;
@@ -40,7 +43,7 @@ public JDBCConfigurationTask() {
4043 setDescription ("JDBC Configuration (for reverse engineering)" );
4144 }
4245 protected MetadataDescriptor createMetadataDescriptor () {
43- Properties properties = loadPropertiesFile ();
46+ Properties properties = loadProperties ();
4447 ReverseEngineeringStrategy res = createReverseEngineeringStrategy ();
4548 return MetadataDescriptorFactory
4649 .createJdbcDescriptor (
@@ -108,7 +111,7 @@ public void setDetectManyToMany(boolean b) {
108111 public void setDetectOptimisticLock (boolean b ) {
109112 detectOptimisticLock = b ;
110113 }
111-
114+
112115 private ReverseEngineeringStrategy loadreverseEngineeringStrategy (final String className , ReverseEngineeringStrategy delegate )
113116 throws BuildException {
114117 try {
@@ -132,4 +135,21 @@ private ReverseEngineeringStrategy loadreverseEngineeringStrategy(final String c
132135 throw new BuildException ("Could not create or find " + className + " with one argument delegate constructor" , e );
133136 }
134137 }
138+
139+ private Map <String , Object > loadCfgXmlFile () {
140+ return new ConfigLoader (new BootstrapServiceRegistryBuilder ().build ())
141+ .loadConfigXmlFile (getConfigurationFile ())
142+ .getConfigurationValues ();
143+ }
144+
145+ private Properties loadProperties () {
146+ Properties result = new Properties ();
147+ if (getPropertyFile () != null ) {
148+ result .putAll (loadPropertiesFile ());
149+ }
150+ if (getConfigurationFile () != null ) {
151+ result .putAll (loadCfgXmlFile ());
152+ }
153+ return result ;
154+ }
135155}
0 commit comments