@Override public void readElement(final XMLExtendedStreamReader reader, final FeaturePackDescription result) throws XMLStreamException { final Set<Attribute> required = EnumSet.noneOf(Attribute.class); final int count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { throw ParsingUtils.unexpectedContent(reader); } if (!required.isEmpty()) { throw ParsingUtils.missingAttributes(reader.getLocation(), required); } while (reader.hasNext()) { switch (reader.nextTag()) { case XMLStreamConstants.END_ELEMENT: { return; } case XMLStreamConstants.START_ELEMENT: { final Element element = Element.of(reader.getName()); switch (element) { case DEPENDENCIES: parseDependencies(reader, result); break; case ARTIFACT_VERSIONS: parseArtifactVersions(reader, result); break; case CONFIG: configModelParser.parseConfig(reader, result.getConfig()); break; case COPY_ARTIFACTS: copyArtifactsModelParser.parseCopyArtifacts(reader, result.getCopyArtifacts()); break; case FILE_PERMISSIONS: filePermissionsModelParser.parseFilePermissions( reader, result.getFilePermissions()); break; default: throw ParsingUtils.unexpectedContent(reader); } break; } default: { throw ParsingUtils.unexpectedContent(reader); } } } throw ParsingUtils.endOfDocument(reader.getLocation()); }
private void parseArtifactVersions( final XMLStreamReader reader, final FeaturePackDescription result) throws XMLStreamException { final Set<Artifact> artifactVersions = result.getArtifactVersions(); while (reader.hasNext()) { switch (reader.nextTag()) { case XMLStreamConstants.END_ELEMENT: { return; } case XMLStreamConstants.START_ELEMENT: { final Element element = Element.of(reader.getName()); switch (element) { case ARTIFACT: artifactVersions.add(parseArtifact(reader)); break; default: throw ParsingUtils.unexpectedContent(reader); } break; } default: { throw ParsingUtils.unexpectedContent(reader); } } } throw ParsingUtils.endOfDocument(reader.getLocation()); }