package com.sissi.protocol.presence; import java.util.Iterator; import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import com.sissi.field.Field; import com.sissi.field.Fields; import com.sissi.field.impl.BeanFields; import com.sissi.io.read.Collector; import com.sissi.io.read.Metadata; /** * @author kim 2013年12月13日 */ @Metadata(uri = XVCard.XMLNS, localName = X.NAME) @XmlType(namespace = XVCard.XMLNS) @XmlRootElement public class XVCard extends X implements Fields, Field<String>, Collector { public final static String XMLNS = "vcard-temp:x:update"; private final BeanFields vCardFields = new BeanFields(false); public String getXmlns() { return XMLNS; } @Override public void set(String localName, Object ob) { this.add(Field.class.cast(ob)); } @XmlElements({ @XmlElement(name = XVCardPhoto.NAME, type = XVCardPhoto.class) }) public List<Field<?>> getFields() { return this.vCardFields.getFields(); } @Override public String getValue() { return null; } @Override public Fields getChildren() { return this.vCardFields; } @Override public boolean hasChild() { return true; } @Override public Iterator<Field<?>> iterator() { return this.vCardFields.iterator(); } @Override public boolean isEmbed() { return this.vCardFields.isEmbed(); } public boolean isEmpty() { return this.vCardFields.isEmpty(); } @Override public XVCard add(Field<?> field) { this.vCardFields.add(field); return this; } public Fields findFields(String name) { return this.vCardFields.findFields(name); } @Override public <T extends Field<?>> T findField(String name, Class<T> clazz) { return this.vCardFields.findField(name, clazz); } }