use of com.zimbra.soap.json.jackson.annotate.ZimbraKeyValuePairs in project zm-mailbox by Zimbra.
the class NameInfo method setWrappedInfo.
private void setWrappedInfo(AnnotationIntrospector ai, AnnotatedMember prop, String defaultWrappedName) {
ZimbraUniqueElement uniqueElemAnnot = prop.getAnnotation(ZimbraUniqueElement.class);
if (uniqueElemAnnot != null) {
treatAsUniqueElement = uniqueElemAnnot.value();
}
ZimbraJsonArrayForWrapper arrayForWrapperAnnot = prop.getAnnotation(ZimbraJsonArrayForWrapper.class);
if (arrayForWrapperAnnot != null) {
wrapperIsArray = arrayForWrapperAnnot.value();
}
ZimbraKeyValuePairs kvpAnnot = prop.getAnnotation(ZimbraKeyValuePairs.class);
if (kvpAnnot != null) {
keyValuePairs = kvpAnnot.value();
return;
}
ZimbraJsonAttribute jsonAttributeAnnot = prop.getAnnotation(ZimbraJsonAttribute.class);
if (jsonAttributeAnnot != null) {
treatAsAttribute = jsonAttributeAnnot.value();
}
mixedAllowed = (prop.getAnnotation(XmlMixed.class) != null);
anyElementAllowed = (prop.getAnnotation(XmlAnyElement.class) != null);
anyAttributeAllowed = (prop.getAnnotation(XmlAnyAttribute.class) != null);
XmlElement elemAnnot = prop.getAnnotation(XmlElement.class);
if (elemAnnot != null) {
wrappedName = getQName(prop.getName(), elemAnnot.namespace(), elemAnnot.name());
return;
}
XmlElementRef elemRefAnnot = prop.getAnnotation(XmlElementRef.class);
wrappedName = getElementRefName(elemRefAnnot);
if (wrappedName != null) {
return;
}
XmlElements elemsAnnot = prop.getAnnotation(XmlElements.class);
if (elemsAnnot != null) {
XmlElement[] elems = elemsAnnot.value();
wrappedNameMap = Maps.newHashMapWithExpectedSize(elems.length);
for (XmlElement elem : elems) {
QName qn = getQName(prop.getName(), elem.namespace(), elem.name());
Class<?> kls = elem.type();
getWrappedNameMap().put(kls, qn);
}
return;
}
XmlElementRefs elemRefsAnnot = prop.getAnnotation(XmlElementRefs.class);
if (elemRefsAnnot != null) {
XmlElementRef[] elems = elemRefsAnnot.value();
wrappedNameMap = Maps.newHashMapWithExpectedSize(elems.length);
for (XmlElementRef elem : elems) {
QName qn = getElementRefName(elem);
Class<?> kls = elem.type();
getWrappedNameMap().put(kls, qn);
}
return;
}
if (wrapperName != null) {
// We have a wrapper but nothing to tell us what the wrapped name should be, so use default
wrappedName = new QName("", defaultWrappedName);
}
}
use of com.zimbra.soap.json.jackson.annotate.ZimbraKeyValuePairs in project zm-mailbox by Zimbra.
the class JaxbInfo method getKeyValuePairElementInfo.
/**
* If this object has keyvaluepairs for children, this returns information about them, otherwise returns null.
* Note implicit assumption that there can only be one set of keyvaluepairs - this is because the JSON
* representation would be unable to differentiate between them.
*/
public KeyValuePairXmlRepresentationInfo getKeyValuePairElementInfo() {
if (haveKvpXmlInfo) {
return kvpXmlInfo;
}
String elemName = null;
String attrName = null;
Field[] fields = jaxbClass.getDeclaredFields();
for (Field field : fields) {
ZimbraKeyValuePairs annot = field.getAnnotation(ZimbraKeyValuePairs.class);
if (annot == null) {
continue;
}
XmlElement xmlElemAnnot = field.getAnnotation(XmlElement.class);
if (xmlElemAnnot != null) {
elemName = xmlElemAnnot.name();
} else {
elemName = field.getName();
}
}
if (elemName != null) {
Method[] methods = jaxbClass.getDeclaredMethods();
for (Method method : methods) {
ZimbraKeyValuePairs annot = method.getAnnotation(ZimbraKeyValuePairs.class);
if (annot == null) {
continue;
}
XmlElement xmlElemAnnot = method.getAnnotation(XmlElement.class);
if (xmlElemAnnot != null) {
elemName = xmlElemAnnot.name();
} else {
elemName = method.getName();
}
}
}
if (elemName != null) {
Class<?> kvpElemClass = this.getClassForElement(elemName);
if (kvpElemClass != null) {
JaxbInfo kvpJaxbInfo = JaxbInfo.getFromCache(kvpElemClass);
if (kvpJaxbInfo != null) {
Iterable<String> attribNames = kvpJaxbInfo.getAttributeNames();
if (attribNames != null) {
for (String attribName : attribNames) {
// Should only be one...
attrName = attribName;
break;
}
}
}
}
}
if ((elemName != null) && (attrName != null)) {
kvpXmlInfo = new KeyValuePairXmlRepresentationInfo(elemName, attrName);
} else {
kvpXmlInfo = null;
}
haveKvpXmlInfo = true;
return kvpXmlInfo;
}
Aggregations