21
21
22
22
import java .io .File ;
23
23
import java .lang .reflect .Constructor ;
24
+ import java .util .Map ;
24
25
import java .util .Properties ;
25
26
26
27
import org .apache .tools .ant .BuildException ;
27
28
import org .apache .tools .ant .Project ;
28
29
import 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 ;
29
33
import org .hibernate .tool .api .metadata .MetadataDescriptor ;
30
34
import org .hibernate .tool .api .metadata .MetadataDescriptorFactory ;
31
35
import org .hibernate .tool .api .metadata .MetadataConstants ;
@@ -55,7 +59,7 @@ public JDBCConfigurationTask() {
55
59
setDescription ("JDBC Configuration (for reverse engineering)" );
56
60
}
57
61
protected MetadataDescriptor createMetadataDescriptor () {
58
- Properties properties = loadPropertiesFile ();
62
+ Properties properties = loadProperties ();
59
63
RevengStrategy res = createReverseEngineeringStrategy ();
60
64
properties .put (MetadataConstants .PREFER_BASIC_COMPOSITE_IDS , preferBasicCompositeIds );
61
65
return MetadataDescriptorFactory
@@ -121,8 +125,8 @@ public void setDetectManyToMany(boolean b) {
121
125
public void setDetectOptimisticLock (boolean b ) {
122
126
detectOptimisticLock = b ;
123
127
}
124
-
125
- private RevengStrategy loadreverseEngineeringStrategy (final String className , RevengStrategy delegate )
128
+
129
+ private RevengStrategy loadreverseEngineeringStrategy (final String className , RevengStrategy delegate )
126
130
throws BuildException {
127
131
try {
128
132
Class <?> clazz = ReflectionUtil .classForName (className );
@@ -146,4 +150,21 @@ private RevengStrategy loadreverseEngineeringStrategy(final String className, Re
146
150
throw new BuildException ("Could not create or find " + className + " with one argument delegate constructor" , e );
147
151
}
148
152
}
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
+ }
149
170
}
0 commit comments