/** * Copyright (C) 2010 Orbeon, Inc. * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU Lesser General Public License as published by the Free Software Foundation; either version * 2.1 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * The full text of the license is available at http://www.gnu.org/copyleft/lesser.html */ import org.orbeon.oxf.common.OXFException; import org.orbeon.oxf.pipeline.api.PipelineContext; import org.orbeon.oxf.xml.XMLReceiver; import org.orbeon.oxf.processor.ProcessorInput; import org.orbeon.oxf.processor.ProcessorInputOutputInfo; import org.orbeon.oxf.processor.SimpleProcessor; import org.orbeon.oxf.xml.SimpleForwardingXMLReceiver; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; import java.util.Iterator; import java.util.List; import java.util.Map; public class ListInputs extends SimpleProcessor { public ListInputs() { addInputInfo(new ProcessorInputOutputInfo("required-input-1")); addInputInfo(new ProcessorInputOutputInfo("required-input-2")); addOutputInfo(new ProcessorInputOutputInfo("list")); } public void generateList(PipelineContext pipelineContext, XMLReceiver xmlReceiver) { try { Map inputMap = getConnectedInputs(); xmlReceiver.startDocument(); xmlReceiver.startElement("", "inputs", "inputs", new AttributesImpl()); for (Iterator i = inputMap.keySet().iterator(); i.hasNext();) { String inputName = (String) i.next(); List inputsForName = (List) inputMap.get(inputName); for (Iterator j = inputsForName.iterator(); j.hasNext();) { ProcessorInput input = (ProcessorInput) j.next(); addStringElement(xmlReceiver, "input", input.getName()); readInputAsSAX(pipelineContext, input, new SimpleForwardingXMLReceiver(xmlReceiver) { public void startDocument() { } public void endDocument() { } }); } } xmlReceiver.endElement("", "inputs", "inputs"); xmlReceiver.endDocument(); } catch (Exception e) { throw new OXFException(e); } } protected static void addStringElement(ContentHandler contentHandler, String name, String value) throws SAXException { contentHandler.startElement("", name, name, new AttributesImpl()); contentHandler.characters(value.toCharArray(), 0, value.length()); contentHandler.endElement("", name, name); } }