package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.NodeList;
import at.gv.egovernment.moa.spss.MOARuntimeException;
import at.gv.egovernment.moa.spss.api.common.Content;
import at.gv.egovernment.moa.spss.api.common.ContentXML;
import at.gv.egovernment.moa.spss.api.common.InputData;
/**
 * Content wrapper decorating an XML content with two additional attributes 
 * needed for returning HashInputData and ReferenceInputData
 *  information as part of VerifyXMLSignatureResponse.
 * 
 * @author Gregor Karlinger
 * 
 * @version $Id$
 */
public class InputDataXMLImpl implements ContentXML, InputData
{
  /**
   * The wrapped ContentXML.
   */
  protected ContentXML wrapped_;
  
  /**
   * This attribute signals what kind of container the XMLDSIG Reference
   * this InputData belongs to is part of. 
   */
  protected String partOf_;
  
  /**
   * If this InputData belongs to an XMLDSIG Reference
   * being part of either a XMLDSIGManifest or a SignatureManifest, this attribute
   * (a positive int) signals the particular Reference of the XMLDSIG 
   * SignedInfo referring to the XMLDSIGManifest or SignatureManifest
   * respectively.
   */
  protected int referringReferenceNumber_;
  
  /**
   * Creates a new instance.
   * 
   * @param wrapped The wrapped ContentBinary. Must be of type {@link Content#XML_CONTENT}.
   * 
   * @param partOf see {@link InputData}
   * 
   * @param referringReferenceNumber see {@link InputData}
   */
  public InputDataXMLImpl(Content wrapped, String partOf, int referringReferenceNumber)
  {
    if (wrapped.getContentType() != Content.XML_CONTENT) throw new MOARuntimeException("9901", null);
    wrapped_ = (ContentXML) wrapped;
    partOf_ =  partOf;
    referringReferenceNumber_ = referringReferenceNumber;
  }
  
  /** 
   * @see at.gv.egovernment.moa.spss.api.common.Content#getContentType()
   */
  public int getContentType()
  {
    return wrapped_.getContentType();
  }
  /**
   * @see at.gv.egovernment.moa.spss.api.common.Content#getReference()
   */
  public String getReference()
  {
    return wrapped_.getReference();
  }
  /**
   * @see at.gv.egovernment.moa.spss.api.common.ContentXML#getXMLContent()
   */
  public NodeList getXMLContent()
  {
    return wrapped_.getXMLContent();
  }
  /**
   * @see at.gv.egovernment.moa.spss.api.common.InputData#getPartOf()
   */
  public String getPartOf()
  {
    return partOf_;
  }
  /**
   * @see at.gv.egovernment.moa.spss.api.common.InputData#getReferringReferenceNumber()
   */
  public int getReferringReferenceNumber()
  {
    return referringReferenceNumber_;
  }
}