1
2
3
4
5
6 package gov.nist.secauto.metaschema.databind.io.xml;
7
8 import gov.nist.secauto.metaschema.core.model.IBoundObject;
9 import gov.nist.secauto.metaschema.core.model.util.XmlEventUtil;
10 import gov.nist.secauto.metaschema.databind.io.AbstractProblemHandler;
11 import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex;
12
13 import org.apache.logging.log4j.LogManager;
14 import org.apache.logging.log4j.Logger;
15
16 import java.util.HashSet;
17 import java.util.Set;
18
19 import javax.xml.namespace.QName;
20 import javax.xml.stream.events.Attribute;
21
22
23
24
25
26
27
28
29 public class DefaultXmlProblemHandler
30 extends AbstractProblemHandler
31 implements IXmlProblemHandler {
32 private static final Logger LOGGER = LogManager.getLogger(DefaultXmlProblemHandler.class);
33
34 private static final QName XSI_SCHEMA_LOCATION
35 = new QName("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation");
36 private static final Set<QName> IGNORED_QNAMES;
37
38 static {
39 IGNORED_QNAMES = new HashSet<>();
40 IGNORED_QNAMES.add(XSI_SCHEMA_LOCATION);
41 }
42
43 @Override
44 public boolean handleUnknownAttribute(
45 IBoundDefinitionModelComplex parentDefinition,
46 IBoundObject targetObject,
47 Attribute attribute,
48 IXmlParsingContext parsingContext) {
49 QName qname = attribute.getName();
50
51 if (LOGGER.isWarnEnabled() && !IGNORED_QNAMES.contains(qname)) {
52 LOGGER.atWarn().log("Skipping unrecognized attribute '{}'{}.",
53 qname,
54 XmlEventUtil.generateLocationMessage(attribute.getLocation()));
55 }
56
57 return true;
58 }
59 }