package org.skyscreamer.yoga.view; import java.io.IOException; import java.io.OutputStream; import org.dom4j.Element; import org.dom4j.dom.DOMElement; import org.skyscreamer.yoga.mapper.YogaRequestContext; import org.skyscreamer.yoga.model.HierarchicalModel; import org.skyscreamer.yoga.model.XmlHierarchyModelImpl; import org.skyscreamer.yoga.util.XmlYogaViewUtil; /** * This class represents an xml yoga view. It will return an xml representation * of either single objects or a list of objects * * @author solomon.duskis * * @see AbstractYogaView */ public class XmlSelectorView extends AbstractYogaView { @Override public void render( Object value, YogaRequestContext context, OutputStream os ) throws IOException { HierarchicalModel<Element> model = null; if (value instanceof Iterable) { String name = getClassName( ( ( Iterable<?> ) value ).iterator().next() ); model = new XmlHierarchyModelImpl( new DOMElement( "result" ), name ); } else { model = new XmlHierarchyModelImpl( new DOMElement( getClassName( value ) ) ); } _resultTraverser.traverse( value, context.getSelector(), model, context ); XmlYogaViewUtil.write( model.getUnderlyingModel(), os ); } @Override public String getContentType() { return "application/xml"; } @Override public String getHrefSuffix() { return "xml"; } }