@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;
}
NamespacePrefixPlugin.java 文件源码
java
阅读 27
收藏 0
点赞 0
评论 0
项目:jaxb2-namespace-prefix
作者:
评论列表
文章目录