NamespacePrefixPlugin.java 文件源码

java
阅读 27 收藏 0 点赞 0 评论 0

项目:jaxb2-namespace-prefix 作者:
@Override
public boolean run(final Outline outline, final Options options, final ErrorHandler errorHandler) {
    final JClass xmlNsClass = outline.getCodeModel().ref(XmlNs.class);
    final JClass xmlSchemaClass = outline.getCodeModel().ref(XmlSchema.class);

    for (PackageOutline packageOutline : outline.getAllPackageContexts()) {
        final JPackage p = packageOutline._package();

        // get the target namespaces of all schemas that bind to the current package
        final Set<String> packageNamespaces = getPackageNamespace(packageOutline);

        // is there any prefix binding defined for the current package ?
        final Model packageModel = getPackageModel((PackageOutlineImpl) packageOutline);
        final List<Pair> list = getPrefixBinding(packageModel, packageNamespaces);
        acknowledgePrefixAnnotations(packageModel);

        if (list == null || list.isEmpty()) {
            // no prefix binding, nothing to do
            continue;
        }

        // add XML namespace prefix annotations
        final JAnnotationUse xmlSchemaAnnotation = getOrAddXmlSchemaAnnotation(p, xmlSchemaClass);
        if (xmlSchemaAnnotation == null) {
            throw new RuntimeException("Unable to get/add 'XmlSchema' annotation to package [" + p.name() + "]");
        }

        final JAnnotationArrayMember members = xmlSchemaAnnotation.paramArray("xmlns");
        for (Pair pair : list) {
            addNamespacePrefix(xmlNsClass, members, pair.getNamespace(), pair.getPrefix());
        }
    }

    return true;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号