Skip to content

Commit 4cc36a9

Browse files
committed
HBX-3130: Take into account the 'hibernate.cfg.xml' file in the Ant reverse engineering task
Signed-off-by: Koen Aers <[email protected]>
1 parent 61cd00b commit 4cc36a9

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

main/src/main/java/org/hibernate/tool/ant/JDBCConfigurationTask.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.io.File;
88
import java.lang.reflect.Constructor;
9+
import java.util.Map;
910
import java.util.Properties;
1011

1112
import org.apache.tools.ant.BuildException;
@@ -15,6 +16,8 @@
1516
import org.hibernate.cfg.reveng.OverrideRepository;
1617
import org.hibernate.cfg.reveng.ReverseEngineeringSettings;
1718
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
19+
import org.hibernate.boot.cfgxml.internal.ConfigLoader;
20+
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
1821
import org.hibernate.tool.api.metadata.MetadataDescriptor;
1922
import org.hibernate.tool.api.metadata.MetadataDescriptorFactory;
2023
import 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

Comments
 (0)