Skip to content

Commit 7338015

Browse files
committed
Disable Mybatis mapping validation by default for engine configurators
1 parent f28a6a8 commit 7338015

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

modules/flowable-engine/src/main/java/org/flowable/engine/cfg/AbstractEngineConfigurator.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
*/
4545
public abstract class AbstractEngineConfigurator implements ProcessEngineConfigurator {
4646

47+
protected boolean enableMybatisXmlMappingValidation;
48+
4749
@Override
4850
public void beforeInit(ProcessEngineConfigurationImpl processEngineConfiguration) {
4951
registerCustomDeployers(processEngineConfiguration);
@@ -93,7 +95,7 @@ protected void registerCustomMybatisMappings(ProcessEngineConfigurationImpl proc
9395
if (cfgPath != null) {
9496
Set<String> resources = new HashSet<>();
9597
try (InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(cfgPath)) {
96-
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
98+
DocumentBuilderFactory docBuilderFactory = createDocumentBuilderFactory();
9799
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
98100
Document document = docBuilder.parse(inputStream);
99101
NodeList nodeList = document.getElementsByTagName("mapper");
@@ -115,6 +117,18 @@ protected void registerCustomMybatisMappings(ProcessEngineConfigurationImpl proc
115117
}
116118
}
117119

120+
protected DocumentBuilderFactory createDocumentBuilderFactory() throws ParserConfigurationException {
121+
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
122+
if (!enableMybatisXmlMappingValidation) {
123+
docBuilderFactory.setValidating(false);
124+
docBuilderFactory.setNamespaceAware(false);
125+
docBuilderFactory.setExpandEntityReferences(false);
126+
docBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
127+
docBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
128+
}
129+
return docBuilderFactory;
130+
}
131+
118132
/**
119133
* Override when custom type aliases are needed.
120134
*/
@@ -203,8 +217,16 @@ protected void initClock(ProcessEngineConfigurationImpl processEngineConfigurati
203217
targetEngineConfiguration.setClock(processEngineConfiguration.getClock());
204218
}
205219

206-
protected abstract List<Class<? extends Entity>> getEntityInsertionOrder() ;
220+
protected abstract List<Class<? extends Entity>> getEntityInsertionOrder();
207221

208-
protected abstract List<Class<? extends Entity>> getEntityDeletionOrder() ;
222+
protected abstract List<Class<? extends Entity>> getEntityDeletionOrder();
223+
224+
public boolean isEnableMybatisXmlMappingValidation() {
225+
return enableMybatisXmlMappingValidation;
226+
}
227+
228+
public void setEnableMybatisXmlMappingValidation(boolean enableMybatisXmlMappingValidation) {
229+
this.enableMybatisXmlMappingValidation = enableMybatisXmlMappingValidation;
230+
}
209231

210232
}

0 commit comments

Comments
 (0)