+ private NormalizedNode<?, ?> parsePossibleDefaultAppConfigXMLFile(SchemaContext schemaContext,
+ DataSchemaNode dataSchema) {
+
+ String appConfigFileName = defaultAppConfigFileName;
+ if(Strings.isNullOrEmpty(appConfigFileName)) {
+ String moduleName = findYangModuleName(bindingContext.bindingQName, schemaContext);
+ if(moduleName == null) {
+ return null;
+ }
+
+ appConfigFileName = moduleName + "_" + bindingContext.bindingQName.getLocalName() + ".xml";
+ }
+
+ File appConfigFile = new File(DEFAULT_APP_CONFIG_FILE_PATH, appConfigFileName);
+
+ LOG.debug("{}: parsePossibleDefaultAppConfigXMLFile looking for file {}", logName(),
+ appConfigFile.getAbsolutePath());
+
+ if(!appConfigFile.exists()) {
+ return null;
+ }
+
+ LOG.debug("{}: Found file {}", logName(), appConfigFile.getAbsolutePath());
+
+ DomToNormalizedNodeParserFactory parserFactory = DomToNormalizedNodeParserFactory.getInstance(
+ XmlUtils.DEFAULT_XML_CODEC_PROVIDER, schemaContext);
+
+ try(FileInputStream fis = new FileInputStream(appConfigFile)) {
+ Document root = DOC_BUILDER_FACTORY.newDocumentBuilder().parse(fis);
+ NormalizedNode<?, ?> dataNode = bindingContext.parseDataElement(root.getDocumentElement(), dataSchema,
+ parserFactory);
+
+ LOG.debug("{}: Parsed data node: {}", logName(), dataNode);
+
+ return dataNode;
+ } catch (Exception e) {
+ setFailureMessage(String.format("%s: Could not read/parse app config file %s", logName(), appConfigFile));
+ }
+
+ return null;
+ }
+
+ private String findYangModuleName(QName qname, SchemaContext schemaContext) {
+ for(Module m: schemaContext.getModules()) {
+ if(qname.getModule().equals(m.getQNameModule())) {
+ return m.getName();
+ }
+ }
+
+ setFailureMessage(String.format("%s: Could not find yang module for QName %s", logName(), qname));
+ return null;
+ }
+