
org.jvnet.jaxb2_commons.util.CustomizationUtils Maven / Gradle / Ivy
The newest version!
package org.jvnet.jaxb2_commons.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.sun.tools.xjc.model.CAttributePropertyInfo;
import com.sun.tools.xjc.model.CClassInfo;
import com.sun.tools.xjc.model.CCustomizations;
import com.sun.tools.xjc.model.CElement;
import com.sun.tools.xjc.model.CElementPropertyInfo;
import com.sun.tools.xjc.model.CPluginCustomization;
import com.sun.tools.xjc.model.CPropertyInfo;
import com.sun.tools.xjc.model.CPropertyVisitor;
import com.sun.tools.xjc.model.CReferencePropertyInfo;
import com.sun.tools.xjc.model.CValuePropertyInfo;
import com.sun.tools.xjc.model.Model;
import com.sun.tools.xjc.outline.ClassOutline;
import com.sun.tools.xjc.outline.FieldOutline;
public class CustomizationUtils {
private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY;
static {
DOCUMENT_BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
// try {
// DOCUMENT_BUILDER = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder();
// } catch (ParserConfigurationException pce) {
// throw new ExceptionInInitializerError(pce);
// }
}
public static DocumentBuilder getDocumentBuilder() {
try {
return DOCUMENT_BUILDER_FACTORY.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
throw new AssertionError(pce);
}
}
public static CPluginCustomization createCustomization(QName name) {
final Document document = getDocumentBuilder().newDocument();
final Element element = document.createElementNS(
name.getNamespaceURI(), name.getLocalPart());
return createCustomization(element);
}
public static CPluginCustomization createCustomization(final Element element) {
final CPluginCustomization customization = new CPluginCustomization(
element, null);
return customization;
}
public static boolean containsCustomization(ClassOutline classOutline,
QName name) {
final CPluginCustomization customization = findCustomization(
classOutline, name);
if (customization != null) {
customization.markAsAcknowledged();
}
return customization != null;
}
public static boolean containsCustomization(CClassInfo classInfo, QName name) {
final CPluginCustomization customization = findCustomization(classInfo,
name);
if (customization != null) {
customization.markAsAcknowledged();
}
return customization != null;
}
public static CPluginCustomization findCustomization(
ClassOutline classOutline, QName name) {
final CCustomizations customizations = CustomizationUtils
.getCustomizations(classOutline);
final CPluginCustomization customization = customizations.find(name
.getNamespaceURI(), name.getLocalPart());
if (customization != null) {
customization.markAsAcknowledged();
}
return customization;
}
public static CPluginCustomization findCustomization(CClassInfo classInfo,
QName name) {
final CCustomizations customizations = CustomizationUtils
.getCustomizations(classInfo);
final CPluginCustomization customization = customizations.find(name
.getNamespaceURI(), name.getLocalPart());
if (customization != null) {
customization.markAsAcknowledged();
}
return customization;
}
public static boolean containsCustomization(FieldOutline fieldOutline,
QName name) {
final CPluginCustomization customization = findCustomization(
fieldOutline, name);
if (customization != null) {
customization.markAsAcknowledged();
}
return customization != null;
}
public static boolean containsCustomization(CPropertyInfo propertyInfo,
QName name) {
final CPluginCustomization customization = findCustomization(
propertyInfo, name);
if (customization != null) {
customization.markAsAcknowledged();
}
return customization != null;
}
public static CPluginCustomization findCustomization(
FieldOutline fieldOutline, QName name) {
final CCustomizations customizations = CustomizationUtils
.getCustomizations(fieldOutline);
final CPluginCustomization customization = customizations.find(name
.getNamespaceURI(), name.getLocalPart());
if (customization != null) {
customization.markAsAcknowledged();
}
return customization;
}
public static CPluginCustomization findCustomization(
CPropertyInfo propertyInfo, QName name) {
final CCustomizations customizations = CustomizationUtils
.getCustomizations(propertyInfo);
final CPluginCustomization customization = customizations.find(name
.getNamespaceURI(), name.getLocalPart());
if (customization != null) {
customization.markAsAcknowledged();
}
return customization;
}
public static CPluginCustomization findCustomization(Model model, QName name) {
final CCustomizations customizations = CustomizationUtils
.getCustomizations(model);
final CPluginCustomization customization = customizations.find(name
.getNamespaceURI(), name.getLocalPart());
if (customization != null) {
customization.markAsAcknowledged();
}
return customization;
}
// public static BIXPluginCustomization getCustomization(JavaItem item,
// QName name) {
// final BIXPluginCustomization[] customizations = getCustomizations(item,
// name);
// if (customizations == null || customizations.length < 1) {
// return null;
// }
// else {
// return customizations[0];
// }
// }
public static FieldOutline findFieldWithCustomization(
ClassOutline classOutline, final QName name) {
for (final FieldOutline fieldOutline : classOutline.getDeclaredFields()) {
final CCustomizations customizations = getCustomizations(fieldOutline);
final CPluginCustomization customization = customizations.find(name
.getNamespaceURI(), name.getLocalPart());
if (customization != null)
return fieldOutline;
}
return null;
}
public static CPropertyInfo findPropertyWithCustomization(
CClassInfo classInfo, final QName name) {
for (final CPropertyInfo propertyInfo : classInfo.getProperties()) {
final CCustomizations customizations = getCustomizations(propertyInfo);
final CPluginCustomization customization = customizations.find(name
.getNamespaceURI(), name.getLocalPart());
if (customization != null)
return propertyInfo;
}
return null;
}
public static FieldOutline findInheritedFieldWithCustomization(
ClassOutline classOutline, final QName name) {
for (final FieldOutline fieldOutline : classOutline.getDeclaredFields()) {
if (containsCustomization(fieldOutline, name)) {
return fieldOutline;
}
}
final ClassOutline superClassOutline = classOutline.getSuperClass();
if (superClassOutline != null) {
return findInheritedFieldWithCustomization(superClassOutline, name);
} else {
return null;
}
}
public static CPropertyInfo findInheritedPropertyWithCustomization(
CClassInfo classInfo, final QName name) {
for (final CPropertyInfo propertyInfo : classInfo.getProperties()) {
if (containsCustomization(propertyInfo, name)) {
return propertyInfo;
}
}
final CClassInfo superClassInfo = classInfo.getBaseClass();
if (superClassInfo != null) {
return findInheritedPropertyWithCustomization(superClassInfo, name);
} else {
return null;
}
}
public static CCustomizations getCustomizations(FieldOutline fieldOutline) {
return getCustomizations(fieldOutline.getPropertyInfo());
}
public static CCustomizations getCustomizations(final Model model) {
final CCustomizations main = new CCustomizations(model
.getCustomizations());
return main;
}
public static CCustomizations getCustomizations(
final CPropertyInfo propertyInfo) {
final CCustomizations main = new CCustomizations(propertyInfo
.getCustomizations());
final Collection elementCustomizations = propertyInfo
.accept(new CPropertyVisitor>() {
public Collection onAttribute(
CAttributePropertyInfo info) {
return Collections.emptyList();
}
public Collection onElement(
CElementPropertyInfo arg0) {
return Collections.emptyList();
}
public Collection onReference(
CReferencePropertyInfo info) {
final List elementCustomizations = new ArrayList(
info.getElements().size());
for (CElement element : info.getElements()) {
elementCustomizations.add(element
.getCustomizations());
}
return elementCustomizations;
}
public Collection onValue(
CValuePropertyInfo arg0) {
return Collections.emptyList();
};
});
CCustomizations customizations = main;
for (CCustomizations e : elementCustomizations) {
main.addAll(e);
}
return customizations;
}
public static CCustomizations getCustomizations(ClassOutline classOutline) {
return getCustomizations(classOutline.target);
}
public static CCustomizations getCustomizations(final CClassInfo classInfo) {
return classInfo.getCustomizations();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy