/**
* 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
*/
package org.orbeon.oxf.processor.impl;
import org.orbeon.oxf.pipeline.api.PipelineContext;
import org.orbeon.oxf.processor.Processor;
import org.orbeon.oxf.processor.ProcessorImpl;
import org.orbeon.oxf.processor.ProcessorInput;
import org.orbeon.oxf.processor.ProcessorOutput;
import org.orbeon.oxf.xml.dom4j.LocationData;
public class DelegatingProcessorInput implements ProcessorInput {
private final String originalName;
private ProcessorInput delegateInput;
private ProcessorOutput delegateOutput;
private ProcessorImpl processor;
public DelegatingProcessorInput(ProcessorImpl processor, String originalName, ProcessorInput delegateInput, ProcessorOutput delegateOutput) {
this.processor = processor;
this.originalName = originalName;
this.delegateInput = delegateInput;
this.delegateOutput = delegateOutput;
}
DelegatingProcessorInput(ProcessorImpl processor, String originalName) {
this.processor = processor;
this.originalName = originalName;
}
public Processor getProcessor(PipelineContext pipelineContext) {
return processor;
}
public void setDelegateInput(ProcessorInput delegateInput) {
this.delegateInput = delegateInput;
}
public void setDelegateOutput(ProcessorOutput delegateOutput) {
this.delegateOutput = delegateOutput;
}
public void setOutput(ProcessorOutput output) {
delegateInput.setOutput(output);
}
public ProcessorOutput getOutput() {
// Not sure why the input validation stuff expects another output here. For now, allow caller to specify
// which output is returned. Once we are confident, switch to delegateInput.getOutput().
return delegateOutput;
// return delegateInput.getOutput();
}
public String getSchema() {
return delegateInput.getSchema();
}
public void setSchema(String schema) {
delegateInput.setSchema(schema);
}
public Class getProcessorClass() {
return processor.getClass();
}
public String getName() {
return originalName;
}
public void setDebug(String debugMessage) {
delegateInput.setDebug(debugMessage);
}
public void setLocationData(LocationData locationData) {
delegateInput.setLocationData(locationData);
}
public String getDebugMessage() {
return delegateInput.getDebugMessage();
}
public LocationData getLocationData() {
return delegateInput.getLocationData();
}
}