use of org.eclipse.persistence.oxm.annotations.XmlDiscriminatorNode in project eclipselink by eclipse-ee4j.
the class AnnotationsProcessor method preBuildTypeInfo.
/**
* Process class level annotations only. It is assumed that a call to init()
* has been made prior to calling this method. After the types created via
* this method have been modified (if necessary) postBuildTypeInfo and
* processJavaClasses should be called to finish processing.
*/
public Map<String, TypeInfo> preBuildTypeInfo(JavaClass[] javaClasses) {
for (JavaClass javaClass : javaClasses) {
String qualifiedName = javaClass.getQualifiedName();
TypeInfo info = typeInfos.get(qualifiedName);
if (javaClass.isArray() || (info != null && info.isPreBuilt()) || !shouldGenerateTypeInfo(javaClass) || isXmlRegistry(javaClass)) {
continue;
}
if (javaClass.isEnum()) {
info = new EnumTypeInfo(helper, javaClass);
} else {
info = new TypeInfo(helper, javaClass);
}
info.setJavaClassName(qualifiedName);
info.setPreBuilt(true);
// handle @XmlTransient
if (helper.isAnnotationPresent(javaClass, XmlTransient.class)) {
info.setXmlTransient(true);
}
// handle @XmlElementNillable
processXmlElementNillable(javaClass, info);
// handle @XmlExtensible
processXmlExtensible(javaClass, info);
// handle @XmlInlineBinaryData
if (helper.isAnnotationPresent(javaClass, XmlInlineBinaryData.class)) {
info.setInlineBinaryData(true);
}
// handle @NamedObjectGraph
processNamedObjectGraphs(javaClass, info);
// handle @XmlRootElement
processXmlRootElement(javaClass, info);
// handle @XmlSeeAlso
processXmlSeeAlso(javaClass, info);
PackageInfo packageInfo = getPackageInfoForPackage(javaClass);
if (packageInfo != null && packageInfo.getPackageLevelAdaptersByClass().size() > 0) {
for (String adapterClass : packageInfo.getPackageLevelAdaptersByClass().keySet()) {
JavaClass boundType = packageInfo.getPackageLevelAdaptersByClass().get(adapterClass);
info.getPackageLevelAdaptersByClass().put(adapterClass, boundType);
}
}
NamespaceInfo namespaceInfo = packageInfo.getNamespaceInfo();
// handle @XmlType
preProcessXmlType(javaClass, info, namespaceInfo);
// handle @XmlAccessorType
preProcessXmlAccessorType(javaClass, info, namespaceInfo);
// handle @XmlAccessorOrder
preProcessXmlAccessorOrder(javaClass, info, namespaceInfo);
// handle package level @XmlJavaTypeAdapters
processPackageLevelAdapters(javaClass, info);
// handle Accessor Factory
processAccessorFactory(javaClass, info);
// handle class level @XmlJavaTypeAdapters
processClassLevelAdapters(javaClass, info);
// handle descriptor customizer
preProcessCustomizer(javaClass, info);
// handle package level @XmlSchemaType(s)
processSchemaTypes(javaClass, info);
// handle class extractor
if (helper.isAnnotationPresent(javaClass, XmlClassExtractor.class)) {
XmlClassExtractor classExtractor = (XmlClassExtractor) helper.getAnnotation(javaClass, XmlClassExtractor.class);
info.setClassExtractorName(classExtractor.value().getName());
}
// handle user properties
if (helper.isAnnotationPresent(javaClass, XmlProperties.class)) {
XmlProperties xmlProperties = (XmlProperties) helper.getAnnotation(javaClass, XmlProperties.class);
Map<Object, Object> propertiesMap = createUserPropertiesMap(xmlProperties.value());
info.setUserProperties(propertiesMap);
} else if (helper.isAnnotationPresent(javaClass, XmlProperty.class)) {
XmlProperty xmlProperty = (XmlProperty) helper.getAnnotation(javaClass, XmlProperty.class);
Map<Object, Object> propertiesMap = createUserPropertiesMap(new XmlProperty[] { xmlProperty });
info.setUserProperties(propertiesMap);
}
// handle class indicator field name
if (helper.isAnnotationPresent(javaClass, XmlDiscriminatorNode.class)) {
XmlDiscriminatorNode xmlDiscriminatorNode = (XmlDiscriminatorNode) helper.getAnnotation(javaClass, XmlDiscriminatorNode.class);
info.setXmlDiscriminatorNode(xmlDiscriminatorNode.value());
}
// handle class indicator
if (helper.isAnnotationPresent(javaClass, XmlDiscriminatorValue.class)) {
XmlDiscriminatorValue xmlDiscriminatorValue = (XmlDiscriminatorValue) helper.getAnnotation(javaClass, XmlDiscriminatorValue.class);
info.setXmlDiscriminatorValue(xmlDiscriminatorValue.value());
}
typeInfoClasses.add(javaClass);
typeInfos.put(info.getJavaClassName(), info);
}
return typeInfos;
}
Aggregations