Skip to content

Commit 0721619

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 a430038 commit 0721619

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

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

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@
2121

2222
import java.io.File;
2323
import java.lang.reflect.Constructor;
24+
import java.util.Map;
2425
import java.util.Properties;
2526

2627
import org.apache.tools.ant.BuildException;
2728
import org.apache.tools.ant.Project;
2829
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;
2933
import org.hibernate.tool.api.metadata.MetadataDescriptor;
3034
import org.hibernate.tool.api.metadata.MetadataDescriptorFactory;
3135
import org.hibernate.tool.api.metadata.MetadataConstants;
@@ -55,7 +59,7 @@ public JDBCConfigurationTask() {
5559
setDescription("JDBC Configuration (for reverse engineering)");
5660
}
5761
protected MetadataDescriptor createMetadataDescriptor() {
58-
Properties properties = loadPropertiesFile();
62+
Properties properties = loadProperties();
5963
RevengStrategy res = createReverseEngineeringStrategy();
6064
properties.put(MetadataConstants.PREFER_BASIC_COMPOSITE_IDS, preferBasicCompositeIds);
6165
return MetadataDescriptorFactory
@@ -121,8 +125,8 @@ public void setDetectManyToMany(boolean b) {
121125
public void setDetectOptimisticLock(boolean b) {
122126
detectOptimisticLock = b;
123127
}
124-
125-
private RevengStrategy loadreverseEngineeringStrategy(final String className, RevengStrategy delegate)
128+
129+
private RevengStrategy loadreverseEngineeringStrategy(final String className, RevengStrategy delegate)
126130
throws BuildException {
127131
try {
128132
Class<?> clazz = ReflectionUtil.classForName(className);
@@ -146,4 +150,21 @@ private RevengStrategy loadreverseEngineeringStrategy(final String className, Re
146150
throw new BuildException("Could not create or find " + className + " with one argument delegate constructor", e);
147151
}
148152
}
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+
}
149170
}

0 commit comments

Comments
 (0)