19
19
20
20
import java .io .File ;
21
21
import java .lang .reflect .Constructor ;
22
+ import java .util .Map ;
22
23
import java .util .Properties ;
23
24
24
25
import org .apache .tools .ant .BuildException ;
25
26
import org .apache .tools .ant .Project ;
26
27
import org .apache .tools .ant .types .Path ;
28
+ import org .hibernate .boot .cfgxml .internal .ConfigLoader ;
29
+ import org .hibernate .boot .cfgxml .spi .LoadedConfig ;
30
+ import org .hibernate .boot .registry .BootstrapServiceRegistryBuilder ;
27
31
import org .hibernate .tool .api .metadata .MetadataDescriptor ;
28
32
import org .hibernate .tool .api .metadata .MetadataDescriptorFactory ;
29
33
import org .hibernate .tool .api .metadata .MetadataConstants ;
@@ -53,7 +57,7 @@ public JDBCConfigurationTask() {
53
57
setDescription ("JDBC Configuration (for reverse engineering)" );
54
58
}
55
59
protected MetadataDescriptor createMetadataDescriptor () {
56
- Properties properties = loadPropertiesFile ();
60
+ Properties properties = loadProperties ();
57
61
RevengStrategy res = createReverseEngineeringStrategy ();
58
62
properties .put (MetadataConstants .PREFER_BASIC_COMPOSITE_IDS , preferBasicCompositeIds );
59
63
return MetadataDescriptorFactory
@@ -119,8 +123,8 @@ public void setDetectManyToMany(boolean b) {
119
123
public void setDetectOptimisticLock (boolean b ) {
120
124
detectOptimisticLock = b ;
121
125
}
122
-
123
- private RevengStrategy loadreverseEngineeringStrategy (final String className , RevengStrategy delegate )
126
+
127
+ private RevengStrategy loadreverseEngineeringStrategy (final String className , RevengStrategy delegate )
124
128
throws BuildException {
125
129
try {
126
130
Class <?> clazz = ReflectionUtil .classForName (className );
@@ -144,4 +148,21 @@ private RevengStrategy loadreverseEngineeringStrategy(final String className, Re
144
148
throw new BuildException ("Could not create or find " + className + " with one argument delegate constructor" , e );
145
149
}
146
150
}
151
+
152
+ private Map <String , Object > loadCfgXmlFile () {
153
+ return new ConfigLoader (new BootstrapServiceRegistryBuilder ().build ())
154
+ .loadConfigXmlFile (getConfigurationFile ())
155
+ .getConfigurationValues ();
156
+ }
157
+
158
+ private Properties loadProperties () {
159
+ Properties result = new Properties ();
160
+ if (getPropertyFile () != null ) {
161
+ result .putAll (loadPropertiesFile ());
162
+ }
163
+ if (getConfigurationFile () != null ) {
164
+ result .putAll (loadCfgXmlFile ());
165
+ }
166
+ return result ;
167
+ }
147
168
}
0 commit comments