+ if (parent instanceof AbstractMountPointDataWithSchema) {
+ // Parent can potentially hold a mount point, let's see if there is a label present
+ final Optional<MountPointSchemaNode> optMount;
+ if (parentSchema instanceof ContainerSchemaNode) {
+ optMount = MountPointSchemaNode.streamAll((ContainerSchemaNode) parentSchema).findFirst();
+ } else if (parentSchema instanceof ListSchemaNode) {
+ optMount = MountPointSchemaNode.streamAll((ListSchemaNode) parentSchema).findFirst();
+ } else {
+ throw new XMLStreamException("Unhandled mount-aware schema " + parentSchema,
+ in.getLocation());
+ }
+
+ if (optMount.isPresent()) {
+ final MountPointIdentifier mountId = MountPointIdentifier.of(optMount.get().getQName());
+ LOG.debug("Assuming node {} and namespace {} belongs to mount point {}", xmlElementName,
+ nsUri, mountId);
+
+ final Optional<MountPointContextFactory> optFactory = codecs.mountPointContext()
+ .findMountPoint(mountId);
+ if (optFactory.isPresent()) {
+ final MountPointData mountData = ((AbstractMountPointDataWithSchema<?>) parent)
+ .getMountPointData(mountId, optFactory.get());
+ addMountPointChild(mountData, nsUri, xmlElementName,
+ new DOMSource(readAnyXmlValue(in).getDocumentElement()));
+ continue;
+ }
+
+ LOG.debug("Mount point {} not attached", mountId);
+ }
+ }
+
+ // We have not handled the node -- let's decide what to do about that
+ if (strictParsing) {
+ throw new XMLStreamException(String.format(
+ "Schema for node with name %s and namespace %s does not exist at %s", xmlElementName,
+ elementNS, parentSchema.getPath()), in.getLocation());
+ }
+
+ LOG.debug("Skipping unknown node ns=\"{}\" localName=\"{}\" at path {}", elementNS, xmlElementName,
+ parentSchema.getPath());
+ skipUnknownNode(in);