6
6
7
7
import java .io .File ;
8
8
import java .lang .reflect .Constructor ;
9
+ import java .util .Map ;
9
10
import java .util .Properties ;
10
11
11
12
import org .apache .tools .ant .BuildException ;
15
16
import org .hibernate .cfg .reveng .OverrideRepository ;
16
17
import org .hibernate .cfg .reveng .ReverseEngineeringSettings ;
17
18
import org .hibernate .cfg .reveng .ReverseEngineeringStrategy ;
19
+ import org .hibernate .boot .cfgxml .internal .ConfigLoader ;
20
+ import org .hibernate .boot .registry .BootstrapServiceRegistryBuilder ;
18
21
import org .hibernate .tool .api .metadata .MetadataDescriptor ;
19
22
import org .hibernate .tool .api .metadata .MetadataDescriptorFactory ;
20
23
import org .hibernate .tool .util .ReflectHelper ;
@@ -40,7 +43,7 @@ public JDBCConfigurationTask() {
40
43
setDescription ("JDBC Configuration (for reverse engineering)" );
41
44
}
42
45
protected MetadataDescriptor createMetadataDescriptor () {
43
- Properties properties = loadPropertiesFile ();
46
+ Properties properties = loadProperties ();
44
47
ReverseEngineeringStrategy res = createReverseEngineeringStrategy ();
45
48
return MetadataDescriptorFactory
46
49
.createJdbcDescriptor (
@@ -108,7 +111,7 @@ public void setDetectManyToMany(boolean b) {
108
111
public void setDetectOptimisticLock (boolean b ) {
109
112
detectOptimisticLock = b ;
110
113
}
111
-
114
+
112
115
private ReverseEngineeringStrategy loadreverseEngineeringStrategy (final String className , ReverseEngineeringStrategy delegate )
113
116
throws BuildException {
114
117
try {
@@ -132,4 +135,21 @@ private ReverseEngineeringStrategy loadreverseEngineeringStrategy(final String c
132
135
throw new BuildException ("Could not create or find " + className + " with one argument delegate constructor" , e );
133
136
}
134
137
}
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
+ }
135
155
}
0 commit comments