com.ibm.as400.data

Class ProgramCallDocument

  • java.lang.Object
    • com.ibm.as400.data.ProgramCallDocument
  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable


    public class ProgramCallDocument
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Cloneable
    XML Document based program call. The ProgramCallDocument class uses a Program Call Markup Language (PCML) document to call IBM i system programs. PCML is an XML language for describing the input and output parameters to the IBM i system program. This class parses a PCML document and allows the application to call IBM i system programs described in the PCML document.

    Command Line Interface

    The command line interface may be used to serialize PCML document definitions. Note that XPCML documents cannot be serialized.
     java com.ibm.as400.data.ProgramCallDocument
         -serialize
         PCML document name
     
    Options:
    -serialize
    Parses the PCML document and creates a serialized version of the document. The name of the serialized file will match the document name, and the file extension will be .pcml.ser (lowercase).
    PCML document name
    The fully-qualified resource name of the PCML document which defines the program interface.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field and Description
      static int SERIALIZED
      Constant indicating a serialized PCML or XPCML document is being streamed.
      static int SOURCE_PCML
      Constant indicating a source PCML document is being streamed.
      static int SOURCE_XPCML
      Constant indicating a source XPCML document is being streamed.
    • Constructor Summary

      Constructors 
      Constructor and Description
      ProgramCallDocument()
      Constructs a ProgramCallDocument object.
      ProgramCallDocument(AS400 sys, java.lang.String docName)
      Constructs a ProgramCallDocument object.
      ProgramCallDocument(AS400 sys, java.lang.String docName, java.lang.ClassLoader loader)
      Constructs a ProgramCallDocument object.
      ProgramCallDocument(AS400 sys, java.lang.String docName, java.lang.ClassLoader loader, java.io.InputStream xsdStream)
      Constructs a ProgramCallDocument object.
      ProgramCallDocument(AS400 sys, java.lang.String docName, java.io.InputStream xsdStream)
      Constructs a ProgramCallDocument object.
      ProgramCallDocument(AS400 sys, java.lang.String docName, java.io.InputStream docStream, java.lang.ClassLoader loader, java.io.InputStream xsdStream, int type)
      Constructs a ProgramCallDocument object.
      ProgramCallDocument(java.lang.String docName)
      Constructs a ProgramCallDocument object.
      ProgramCallDocument(java.lang.String docName, java.lang.ClassLoader loader)
      Constructs a ProgramCallDocument object.
    • Method Summary

      Methods 
      Modifier and Type Method and Description
      boolean callProgram(java.lang.String name)
      Calls the named program.
      java.lang.Object clone()
      Clones the ProgramCallDocument and the objects contained in it.
      static void condenseXPCML(java.io.InputStream fullStream, java.io.OutputStream xsdStream, java.io.OutputStream condensedStream, java.lang.String xsdStreamName)
      Transforms a fully specified XPCML stream to a more condensed XPCML stream and an XSD stream representing the new type definitions created while condensing.
      void generateXPCML(java.io.OutputStream outputStream)
      Generates XPCML representing the data contained in the entire PCML node tree.
      void generateXPCML(java.lang.String fileName)
      Generates XPCML representing the data contained in the entire PCML node tree.
      void generateXPCML(java.lang.String pgmName, java.io.OutputStream outputStream)
      Generates XPCML representing the data associated with the passed-in program name.
      void generateXPCML(java.lang.String pgmName, java.lang.String fileName)
      Generates XPCML representing the data contained for the passed in program name.
      Descriptor getDescriptor()
      Returns a Descriptor for the current PCML document.
      static Descriptor getDescriptor(java.lang.String docName)
      Returns a Descriptor for the specified PCML document.
      static Descriptor getDescriptor(java.lang.String docName, java.lang.ClassLoader loader)
      Returns a Descriptor for the specified PCML document.
      static Descriptor getDescriptor(java.lang.String docName, java.lang.ClassLoader loader, java.io.InputStream xsdStream)
      Returns a Descriptor for the specified XPCML document.
      static Descriptor getDescriptor(java.lang.String docName, java.io.InputStream xsdStream)
      Returns a Descriptor for the specified XPCML document.
      int getErrno(java.lang.String name)
      Returns an "errno" value for the named service program element.
      int getIntReturnValue(java.lang.String name)
      Returns an int return value for the named service program element.
      int getIntValue(java.lang.String name)
      Returns an int value for the named element.
      int getIntValue(java.lang.String name, int[] indices)
      Returns an int value for the named element given indices to the data element.
      AS400Message[] getMessageList(java.lang.String name)
      Returns the list of IBM i system messages returned from running the program.
      int getOutputsize(java.lang.String name)
      Returns the number of bytes reserved for output for the named element.
      int getOutputsize(java.lang.String name, int[] indices)
      Returns the number of bytes reserved for output for the named element and indices.
      ProgramCall getProgramCall()
      Returns the ProgramCall object that was used in the most recent invocation of callProgram().
      java.lang.String getStringValue(java.lang.String name)
      Returns a String value for the named element.
      java.lang.String getStringValue(java.lang.String name, int type)
      Returns a String value for the named element.
      java.lang.String getStringValue(java.lang.String name, int[] indices)
      Returns a String value for the named element given indices to the data element.
      java.lang.String getStringValue(java.lang.String name, int[] indices, int type)
      Returns a String value for the named element given indices to the data element.
      AS400 getSystem()
      Gets the system on which programs are to be called.
      boolean getThreadsafeOverride(java.lang.String program)
      Gets the value of the override of the threadsafe attribute of a program element.
      int getTimeout() 
      java.lang.Object getValue(java.lang.String name)
      Returns the Java object value for the named element.
      java.lang.Object getValue(java.lang.String name, int[] indices)
      Returns the Java object value for the named element given indices to the data element.
      java.lang.String getXsdName()
      Returns the value of the XSD name to be used on the <xpcml> tag when generating XPCML.
      static void main(java.lang.String[] args)
      Provides a command line interface to ProgramCallDocument.
      void serialize()
      Deprecated. 
      Use serialize(File) instead.
      void serialize(java.io.File file)
      Serializes the ProgramCallDocument to a file.
      void serialize(java.io.OutputStream outputStream)
      Serializes the ProgramCallDocument to a stream.
      void setCharArrayValue(java.lang.String name, char[] value) 
      void setCharArrayValue(java.lang.String name, char[] value, int type) 
      void setCharArrayValue(java.lang.String name, int[] indices, char[] value, int type) 
      void setDocument(java.lang.String docName)
      Sets the PCML or XPCML document resource.
      void setDocument(java.lang.String docName, java.lang.ClassLoader loader)
      Sets the PCML or XPCML document resource.
      void setDocument(java.lang.String docName, java.lang.ClassLoader loader, java.io.InputStream xsdStream)
      Sets the PCML or XPCML document resource.
      void setDocument(java.lang.String docName, java.io.InputStream xsdStream)
      Sets the XPCML document resource.
      void setIntValue(java.lang.String name, int value)
      Sets the Java object value for the named element using a int input.
      void setIntValue(java.lang.String name, int[] indices, int value)
      Sets the Java object value for the named element using an int input value given indices to the data element.
      void setPath(java.lang.String program, java.lang.String path)
      Allows for dynamically specifying the program path of the program to be called.
      void setStringValue(java.lang.String name, int[] indices, java.lang.String value, int type)
      Sets the Java object value for the named element using a String input value given indices to the data element.
      void setStringValue(java.lang.String name, java.lang.String value)
      Sets the Java object value for the named element using a String input.
      void setStringValue(java.lang.String name, java.lang.String value, int type)
      Sets the Java object value for the named element using a String input.
      void setSystem(AS400 system)
      Sets the system on which to call programs.
      void setThreadsafeOverride(java.lang.String program, boolean threadsafe)
      Allows the overriding of the threadsafe attribute of a program element.
      void setTimeOut(int timeOut) 
      void setValue(java.lang.String name, int[] indices, java.lang.Object value)
      Sets the Java object value for the named element given indices to the data element.
      void setValue(java.lang.String name, java.lang.Object value)
      Sets the Java object value for the named element.
      void setXsdName(java.lang.String xsdName)
      Sets the XSD name that will appear in the generated <xpcml> tag from the generateXPCML() methods.
      static void transformPCMLToXPCML(java.io.InputStream pcmlStream, java.io.OutputStream xpcmlStream)
      Transforms a PCML stream to its equivalent XPCML stream.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ProgramCallDocument

        public ProgramCallDocument(AS400 sys,
                           java.lang.String docName)
                            throws PcmlException
        Constructs a ProgramCallDocument object. The PCML or XPCML document resource will be loaded from the classpath. If the document is a PCML document, the classpath will first be searched for a serialized resource. XPCML documents cannot be serialized. If a serialized resource is not found, the classpath will be searched for a PCML or XPCML source file.
        Parameters:
        sys - The system on which to run the program.
        docName - The document resource name of the PCML document for the programs to be called. All PCML-related file extensions are assumed to be lowercase (for example, .pcml or .pcml.ser). The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • ProgramCallDocument

        public ProgramCallDocument(AS400 sys,
                           java.lang.String docName,
                           java.io.InputStream xsdStream)
                            throws PcmlException
        Constructs a ProgramCallDocument object. The XPCML document resource will be loaded from the classpath and parsed using the XML schema definitions provided in the input XSD stream.
        Parameters:
        sys - The system on which to run the program.
        docName - The document resource name of the PCML document for the programs to be called. All PCML-related file extensions are assumed to be lowercase (for example, .pcml or .pcml.ser).
        xsdStream - An input stream that contains XML schema definitions that extend XPCML. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • ProgramCallDocument

        public ProgramCallDocument(AS400 sys,
                           java.lang.String docName,
                           java.lang.ClassLoader loader)
                            throws PcmlException
        Constructs a ProgramCallDocument object. The PCML or XPCML document resource will be loaded from the classpath. If the document is a PCML document, the classpath will first be searched for a serialized resource. XPCML documents cannot be serialized. If a serialized resource is not found, the classpath will be searched for a PCML or XPCML source file.
        Parameters:
        sys - The system on which to run the program.
        docName - The document resource name of the PCML document for the programs to be called. All PCML-related file extensions are assumed to be lowercase (for example, .pcml or .pcml.ser). The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        loader - The ClassLoader that will be used when loading the specified document resource.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • ProgramCallDocument

        public ProgramCallDocument(AS400 sys,
                           java.lang.String docName,
                           java.lang.ClassLoader loader,
                           java.io.InputStream xsdStream)
                            throws PcmlException
        Constructs a ProgramCallDocument object. The PCML or XPCML document resource will be loaded from the classpath and parsed using the XML schema definitions provided in the input XSD stream.
        Parameters:
        sys - The system on which to run the program.
        docName - The document resource name of the PCML document for the programs to be called. All PCML-related file extensions are assumed to be lowercase (for example, .pcml or .pcml.ser).
        loader - The ClassLoader that will be used when loading the specified document resource.
        xsdStream - An input stream that contains XML schema definitions that extend XPCML. This parameter can be null. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • ProgramCallDocument

        public ProgramCallDocument(AS400 sys,
                           java.lang.String docName,
                           java.io.InputStream docStream,
                           java.lang.ClassLoader loader,
                           java.io.InputStream xsdStream,
                           int type)
                            throws PcmlException
        Constructs a ProgramCallDocument object. The PCML or XPCML document resource will be read from the specified input stream, and parsed using the XML schema definitions provided in the input XSD stream.
        Parameters:
        sys - The system on which to run the program.
        docName - The document resource name of the PCML document for the programs to be called. All PCML-related file extensions are assumed to be lowercase (for example, .pcml or .pcml.ser).
        docStream - The InputStream from which to read the contents of the document.
        loader - The ClassLoader that will be used when loading the DTD for PCML. This parameter can be null.
        xsdStream - An input stream that contains XML schema definitions that extend XPCML The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml". This parameter can be null.
        type - The type of data contained in docStream. Possible values are:
        • SERIALIZED - The docStream contains a serialized PCML or XPCML document.
        • SOURCE_PCML - The docStream contains a PCML document.
        • SOURCE_XPCML - The docStream contains an XPCML document.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • ProgramCallDocument

        public ProgramCallDocument()
                            throws PcmlException
        Constructs a ProgramCallDocument object. setSystem() and setDocument() must be called prior to using the object.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • ProgramCallDocument

        public ProgramCallDocument(java.lang.String docName)
                            throws PcmlException
        Constructs a ProgramCallDocument object. setSystem() must be called prior to using the object. The PCML or XPCML document resource will be loaded from the classpath. If the document is a PCML document, the classpath will first be searched for a serialized resource. XPCML documents cannot be serialized. If a serialized resource is not found, the classpath will be searched for a PCML or XPCML source file.
        Parameters:
        docName - The document resource name of the PCML document for the programs to be called. All PCML-related file extensions are assumed to be lowercase (for example, .pcml or .pcml.ser). The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • ProgramCallDocument

        public ProgramCallDocument(java.lang.String docName,
                           java.lang.ClassLoader loader)
                            throws XmlException
        Constructs a ProgramCallDocument object. setSystem() must be called prior to using the object. The PCML or XPCML document resource will be loaded from the classpath of the specified ClassLoader. If the document is a PCML document, the classpath will first be searched for a serialized resource. XPCML documents cannot be serialized. If a serialized resource is not found, the classpath will be searched for a PCML or XPCML source file.
        Parameters:
        docName - The document resource name of the PCML document for the programs to be called.
        loader - The ClassLoader that will be used when loading the specified document resource.
        Throws:
        XmlException
        PcmlException - when the specified PCML document cannot be found
    • Method Detail

      • clone

        public java.lang.Object clone()
        Clones the ProgramCallDocument and the objects contained in it. setSystem() and setDocument() must be called prior to using the object.
        Overrides:
        clone in class java.lang.Object
      • main

        public static void main(java.lang.String[] args)
        Provides a command line interface to ProgramCallDocument. See the class description. Note that XPCML documents cannot be serialized.
        Parameters:
        args -
      • callProgram

        public boolean callProgram(java.lang.String name)
                            throws PcmlException
        Calls the named program.
        Parameters:
        name - The name of the <program> element in the PCML document.
        Returns:
        true if the call is successful
        Throws:
        PcmlException - If an error occurs.
      • getErrno

        public int getErrno(java.lang.String name)
                     throws PcmlException
        Returns an "errno" value for the named service program element.

        The named program element must be defined as a service program entrypoint. The value returned is the "errno" value resulting from the most recent call to the program. If the program has not been called, zero is returned.

        Parameters:
        name - The name of the <program> element in the PCML document.
        Returns:
        The integer "errno" value for the named service program element.
        Throws:
        PcmlException - If an error occurs.
      • getDescriptor

        public static Descriptor getDescriptor(java.lang.String docName)
                                        throws PcmlException
        Returns a Descriptor for the specified PCML document. The PCML document resource will be loaded from the classpath. The classpath will first be searched for a serialized resource. If a serialized resource is not found, the classpath will be searched for a PCML source file.
        Parameters:
        docName - The document resource name of the PCML document for which the Descriptor is returned. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        Returns:
        The Descriptor for the <pcml> element of the named PCML file.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • getDescriptor

        public static Descriptor getDescriptor(java.lang.String docName,
                               java.io.InputStream xsdStream)
                                        throws PcmlException
        Returns a Descriptor for the specified XPCML document. The XPCML document resource will be loaded from the classpath.
        Parameters:
        docName - The document resource name of the XPCML document for which the Descriptor is returned. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        xsdStream - An input stream that contains XML schema definitions that extend XPCML
        Returns:
        The Descriptor for the <pcml> element of the named PCML file.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • getDescriptor

        public static Descriptor getDescriptor(java.lang.String docName,
                               java.lang.ClassLoader loader)
                                        throws PcmlException
        Returns a Descriptor for the specified PCML document. The PCML document resource will be loaded from the classpath. The classpath will first be searched for a serialized resource. If a serialized resource is not found, the classpath will be searched for a PCML source file.
        Parameters:
        docName - The document resource name of the PCML document for which the Descriptor is returned. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        loader - The ClassLoader that will be used when loading the specified document resource.
        Returns:
        The Descriptor for the <pcml> element of the named PCML file.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • getDescriptor

        public static Descriptor getDescriptor(java.lang.String docName,
                               java.lang.ClassLoader loader,
                               java.io.InputStream xsdStream)
                                        throws PcmlException
        Returns a Descriptor for the specified XPCML document. The XPCML document resource will be loaded from the classpath.
        Parameters:
        docName - The document resource name of the PCML document for which the Descriptor is returned. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        loader - The ClassLoader that will be used when loading the specified document resource.
        xsdStream - An input stream that contains XML schema definitions that extend XPCML.
        Returns:
        The Descriptor for the <pcml> element of the named PCML file.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • getDescriptor

        public Descriptor getDescriptor()
        Returns a Descriptor for the current PCML document.
        Returns:
        The Descriptor for the <pcml> element of the current PCML file or null if the PCML document has not be set.
      • getIntReturnValue

        public int getIntReturnValue(java.lang.String name)
                              throws PcmlException
        Returns an int return value for the named service program element.

        The named program element must be defined as a service program entrypoint. The value returned is the integer return value from the most recent call to the program. If the program has not been called, zero is returned.

        Parameters:
        name - The name of the <program> element in the PCML document.
        Returns:
        The integer return value for the named service program element.
        Throws:
        PcmlException - If an error occurs.
      • getIntValue

        public int getIntValue(java.lang.String name)
                        throws PcmlException
        Returns an int value for the named element.

        If the named element is String or a Number output value of a program, the value will be converted to an int.

        Parameters:
        name - The name of the <data> element in the PCML document.
        Returns:
        The integer value for the named element.
        Throws:
        PcmlException - If an error occurs.
      • getIntValue

        public int getIntValue(java.lang.String name,
                      int[] indices)
                        throws PcmlException
        Returns an int value for the named element given indices to the data element. If the data element is an array or is an element in a structure array, an index must be specified for each dimension of the data.

        If the named element is String or a Number output value of a program, the value will be converted to an int.

        Parameters:
        name - The name of the <data> element in the PCML document.
        indices -
        Returns:
        The integer value for the named element.
        Throws:
        PcmlException - If an error occurs.
      • getProgramCall

        public ProgramCall getProgramCall()
        Returns the ProgramCall object that was used in the most recent invocation of callProgram().
        Returns:
        The ProgramCall object; null if callProgram() has not been called.
      • getStringValue

        public java.lang.String getStringValue(java.lang.String name)
                                        throws PcmlException
        Returns a String value for the named element.

        If the named element is String or a Number output value of a program, the value will be converted to a String. The default bidi string type is assumed (BidiStringType.DEFAULT).

        Parameters:
        name - The name of the <data> element in the PCML document.
        Returns:
        string value of the named elements
        Throws:
        PcmlException - If an error occurs.
      • getStringValue

        public java.lang.String getStringValue(java.lang.String name,
                                      int type)
                                        throws PcmlException
        Returns a String value for the named element.

        This method is used when the string type cannot be determined until run-time. In those cases, the PCML document cannot be used to indicate the string type so this method is used to get the value using the string type that is specified.

        If the named element is String or a Number output value of a program, the value will be converted to a String.

        Parameters:
        name - The name of the <data> element in the PCML document.
        type - The bidi string type, as defined by the CDRA (Character Data Representation Architecture).
        Returns:
        string value of the named element
        Throws:
        PcmlException - If an error occurs.
        See Also:
        BidiStringType
      • getStringValue

        public java.lang.String getStringValue(java.lang.String name,
                                      int[] indices)
                                        throws PcmlException
        Returns a String value for the named element given indices to the data element. If the data element is an array or is an element in a structure array, an index must be specified for each dimension of the data. The default bidi string type is assumed (BidiStringType.DEFAULT).

        If the named element is String or a Number output value of a program, the value will be converted to a String.

        Parameters:
        name - The name of the <data> element in the PCML document.
        indices - An array of indices for setting the value of an element in an array.
        Returns:
        string valud for the names element
        Throws:
        PcmlException - If an error occurs.
      • getStringValue

        public java.lang.String getStringValue(java.lang.String name,
                                      int[] indices,
                                      int type)
                                        throws PcmlException
        Returns a String value for the named element given indices to the data element. If the data element is an array or is an element in a structure array, an index must be specified for each dimension of the data.

        This method is used when the string type cannot be determined until run-time. In those cases, the PCML document cannot be used to indicate the string type so this method is used to get the value using the string type that is specified.

        If the named element is String or a Number output value of a program, the value will be converted to a String.

        Parameters:
        name - The name of the <data> element in the PCML document.
        indices - An array of indices for setting the value of an element in an array.
        type - The bidi string type, as defined by the CDRA (Character Data Representation Architecture).
        Returns:
        string value of the named element
        Throws:
        PcmlException - If an error occurs.
        See Also:
        BidiStringType
      • getMessageList

        public AS400Message[] getMessageList(java.lang.String name)
                                      throws PcmlException
        Returns the list of IBM i system messages returned from running the program. An empty list is returned if the program has not been run yet.
        Parameters:
        name - The name of the <program> element in the PCML document.
        Returns:
        The array of messages returned by the system for the program.
        Throws:
        PcmlException - If an error occurs.
      • getOutputsize

        public int getOutputsize(java.lang.String name)
                          throws PcmlException
        Returns the number of bytes reserved for output for the named element.
        Parameters:
        name - The name of the <data> or <struct> element in the PCML document.
        Returns:
        The number of bytes reserved for output for the named element.
        Throws:
        PcmlException - If an error occurs.
      • getOutputsize

        public int getOutputsize(java.lang.String name,
                        int[] indices)
                          throws PcmlException
        Returns the number of bytes reserved for output for the named element and indices.
        Parameters:
        name - The name of the <data> or <struct> element in the PCML document.
        indices - An array of indices for accessing the output size of an element in an array.
        Returns:
        The number of bytes reserved for output for the named element.
        Throws:
        PcmlException - If an error occurs.
      • getValue

        public java.lang.Object getValue(java.lang.String name)
                                  throws PcmlException
        Returns the Java object value for the named element.

        If the named element is an output value of a program, the value will be converted from IBM i system data to a Java Object.

        The type of object returned depends on the description in the PCML document.

        PCML DescriptionObject Returned
        type=charString
        type=bytebyte[]
        type=int
        length=2
        precision=15
        Short
        type=int
        length=2
        precision=16
        Integer
        type=int
        length=4
        precision=31
        Integer
        type=int
        length=4
        precision=32
        Long
        type=int
        length=8
        precision=63
        Long
        type=int
        length=8
        precision=64
        BigInteger
        type=packedBigDecimal
        type=zonedBigDecimal
        type=float
        length=4
        Float
        type=float
        length=8
        Double
        type=datejava.sql.Date
        type=timejava.sql.Time
        type=timestampjava.sql.Timestamp
        Parameters:
        name - The name of the <data> element in the PCML document.
        Returns:
        The Java object value for the named <data> element in the PCML document.
        Throws:
        PcmlException - If an error occurs.
      • getValue

        public java.lang.Object getValue(java.lang.String name,
                                int[] indices)
                                  throws PcmlException
        Returns the Java object value for the named element given indices to the data element. If the data element is an array or is an element in a structure array, an index must be specified for each dimension of the data.

        If the named element is an output value of a program, the value will be converted from IBM i system data to a Java Object.

        The type of object returned depends on the description in the PCML document.

        PCML DescriptionObject Returned
        type=charString
        type=bytebyte[]
        type=int
        length=2
        precision=15
        Short
        type=int
        length=2
        precision=16
        Integer
        type=int
        length=4
        precision=31
        Integer
        type=int
        length=4
        precision=32
        Long
        type=int
        length=8
        precision=63
        Long
        type=int
        length=8
        precision=64
        BigInteger
        type=packedBigDecimal
        type=zonedBigDecimal
        type=float
        length=4
        Float
        type=float
        length=8
        Double
        type=datejava.sql.Date
        type=timejava.sql.Time
        type=timestampjava.sql.Timestamp
        Parameters:
        name - The name of the <data> element in the PCML document.
        indices - An array of indices for accessing the value of an element in an array.
        Returns:
        The Java object value for the named <data> element in the PCML document.
        Throws:
        PcmlException - If an error occurs.
      • serialize

        public void serialize()
                       throws PcmlException
        Deprecated. Use serialize(File) instead.
        Serializes the ProgramCallDocument. Note that XPCML documents cannot be serialized. The filename of the serialized file will be of the form
             docName.pcml.ser
             
        where docName.pcml.ser (lowercase) is the name of the document used to construct this object.
        Throws:
        PcmlException - If an error occurs.
      • serialize

        public void serialize(java.io.OutputStream outputStream)
                       throws java.io.IOException,
                              PcmlException
        Serializes the ProgramCallDocument to a stream.
        Parameters:
        outputStream - The output stream to which to serialize the object.
        Throws:
        java.io.IOException - If an error occurs while writing to the stream.
        PcmlException - If an error occurs while processing PCML.
      • serialize

        public void serialize(java.io.File file)
                       throws java.io.IOException,
                              XmlException
        Serializes the ProgramCallDocument to a file.
        Parameters:
        file - The file to which to serialize the object.
        Throws:
        java.io.IOException - If an error occurs while writing to the file.
        XmlException - If an error occurs while processing RFML.
      • setIntValue

        public void setIntValue(java.lang.String name,
                       int value)
                         throws PcmlException
        Sets the Java object value for the named element using a int input.

        The named element must be able to be set using a Integer object.

        Parameters:
        name - The name of the <data> element in the PCML document.
        value - The int value for the named element.
        Throws:
        PcmlException - If an error occurs.
      • setIntValue

        public void setIntValue(java.lang.String name,
                       int[] indices,
                       int value)
                         throws PcmlException
        Sets the Java object value for the named element using an int input value given indices to the data element.

        The named element must be able to be set using a Integer object.

        Parameters:
        name - The name of the <data> element in the PCML document.
        indices - An array of indices for setting the value of an element in an array.
        value - The int value for the named element.
        Throws:
        PcmlException - If an error occurs.
      • setStringValue

        public void setStringValue(java.lang.String name,
                          java.lang.String value)
                            throws PcmlException
        Sets the Java object value for the named element using a String input. The default bidi string type is assumed (BidiStringType.DEFAULT).
        Parameters:
        name - The name of the <data> element in the PCML document.
        value - The string value for the named element.
        Throws:
        PcmlException - If an error occurs.
      • setStringValue

        public void setStringValue(java.lang.String name,
                          java.lang.String value,
                          int type)
                            throws PcmlException
        Sets the Java object value for the named element using a String input.

        This method is used when the string type cannot be determined until run-time. In those cases, the PCML document cannot be used to indicate the string type so this method is used to set the value and the string type of the input value.

        Parameters:
        name - The name of the <data> element in the PCML document.
        value - The string value for the named element.
        type - The bidi string type, as defined by the CDRA (Character Data Representation Architecture).
        Throws:
        PcmlException - If an error occurs.
        See Also:
        BidiStringType
      • setStringValue

        public void setStringValue(java.lang.String name,
                          int[] indices,
                          java.lang.String value,
                          int type)
                            throws PcmlException
        Sets the Java object value for the named element using a String input value given indices to the data element.

        This method is used when the string type cannot be determined until run-time. In those cases, the PCML document cannot be used to indicate the string type so this method is used to set the value and the string type of the input value.

        Parameters:
        name - The name of the <data> element in the PCML document.
        indices - An array of indices for setting the value of an element in an array.
        value - The string value for the named element.
        type - The bidi string type, as defined by the CDRA (Character Data Representation Architecture).
        Throws:
        PcmlException - If an error occurs.
        See Also:
        BidiStringType
      • setCharArrayValue

        public void setCharArrayValue(java.lang.String name,
                             char[] value)
                               throws PcmlException
        Throws:
        PcmlException
      • setCharArrayValue

        public void setCharArrayValue(java.lang.String name,
                             char[] value,
                             int type)
                               throws PcmlException
        Throws:
        PcmlException
      • setCharArrayValue

        public void setCharArrayValue(java.lang.String name,
                             int[] indices,
                             char[] value,
                             int type)
                               throws PcmlException
        Throws:
        PcmlException
      • setDocument

        public void setDocument(java.lang.String docName)
                         throws PcmlException
        Sets the PCML or XPCML document resource. The PCML or XPCML document resource will be loaded from the classpath. The classpath will first be searched for a serialized resource. If a serialized resource is not found, the classpath will be searched for a PCML or XPCML source file.
        Parameters:
        docName - The document resource name of the PCML document for the programs to be called. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • setDocument

        public void setDocument(java.lang.String docName,
                       java.io.InputStream xsdStream)
                         throws PcmlException
        Sets the XPCML document resource. The XPCML document resource will be loaded from the classpath.
        Parameters:
        docName - The document resource name of the PCML document for the programs to be called. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        xsdStream - An input stream that contains XML schema definitions that extend XPCML
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • setDocument

        public void setDocument(java.lang.String docName,
                       java.lang.ClassLoader loader)
                         throws PcmlException
        Sets the PCML or XPCML document resource. The PCML or XPCML document resource will be loaded from the classpath. The classpath will first be searched for a serialized resource. If a serialized resource is not found, the classpath will be searched for a PCML or XPCML source file.
        Parameters:
        docName - The document resource name of the PCML document for the programs to be called. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        loader - The ClassLoader that will be used when loading the specified document resource.
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • setDocument

        public void setDocument(java.lang.String docName,
                       java.lang.ClassLoader loader,
                       java.io.InputStream xsdStream)
                         throws PcmlException
        Sets the PCML or XPCML document resource. The document resource will be loaded from the classpath.
        Parameters:
        docName - The document resource name of the PCML or XPCML document for the programs to be called. The resource name can be a package qualified name. For example, "com.myCompany.myPackage.myPcml"
        loader - The ClassLoader that will be used when loading the specified document resource.
        xsdStream - An input stream that contains XML schema definitions that extend XPCML
        Throws:
        PcmlException - when the specified PCML document cannot be found
      • setSystem

        public void setSystem(AS400 system)
        Sets the system on which to call programs.
        Parameters:
        system - The system on which to call programs.
      • setValue

        public void setValue(java.lang.String name,
                    java.lang.Object value)
                      throws PcmlException
        Sets the Java object value for the named element.

        If the input value provided is not an instance of the correct Java class for the defined data type, it will be converted to the correct Java class. For example, an element defined as "type=int length=2 precision=15", will be converted to a Java Short object. In this case the value specified must be an instance of Number or String.

        If the named element is an input value to a program, the value will be converted to IBM i system data when callProgram() is called.

        Parameters:
        name - The name of the <data> element in the PCML document.
        value - The java object value for the named element. The type of Object passed must be the correct type for the element definition or a String that can be converted to the correct type.
        Throws:
        PcmlException - If an error occurs.
      • setValue

        public void setValue(java.lang.String name,
                    int[] indices,
                    java.lang.Object value)
                      throws PcmlException
        Sets the Java object value for the named element given indices to the data element. If the data element is an array or is an element in a structure array, an index must be specified for each dimension of the data.

        If the input value provided is not an instance of the correct Java class for the defined data type, it will be converted to the correct Java class. For example, an element defined as "type=int length=2 precision=15", will be converted to a Java Short object. In this case the value specified must be an instance of Number or String.

        If the named element is an input value to a program, the value will be converted to IBM i system data when callProgram() is called.

        Parameters:
        name - The name of the <data> element in the PCML document.
        indices - An array of indices for setting the value of an element in an array.
        value - The java object value for the named element. The type of Object passed must be the correct type for the element definition or a String that can be converted to the correct type.
        Throws:
        PcmlException - If an error occurs.
      • setThreadsafeOverride

        public void setThreadsafeOverride(java.lang.String program,
                                 boolean threadsafe)
                                   throws PcmlException
        Allows the overriding of the threadsafe attribute of a program element.
        Parameters:
        program - The name of the <program> element in the PCML document.
        threadsafe - A boolean indicating whether the named program element should be considered thread safe (true) or not (false).
        Throws:
        PcmlException - If an error occurs.
      • getThreadsafeOverride

        public boolean getThreadsafeOverride(java.lang.String program)
                                      throws PcmlException
        Gets the value of the override of the threadsafe attribute of a program element.
        Parameters:
        program - The name of the <program> element in the PCML document.
        Returns:
        true if the program is threadsafe
        Throws:
        PcmlException - If an error occurs.
      • generateXPCML

        public void generateXPCML(java.lang.String pgmName,
                         java.io.OutputStream outputStream)
                           throws java.io.IOException,
                                  XmlException
        Generates XPCML representing the data associated with the passed-in program name. Note: XPCML cannot be generated from a serialized PCML file. XPCML is XML based on the XML schema defined in xpcml.xsd. XPCML is similar to PCML but allows for better validation of parameters and allows parameter data to be input and output within an XML document. PCML is data-less in that only parameter formats are input via PCML. In PCML, data values are set using the setValue methods of the ProgramCallDocument class, and data values are gotten using the getValue methods of ProgramCallDocument. In XPCML, data values can be specified directly within the XPCML source document, and data values can be output as XML using the generateXPCML method. Throws an XmlException if this object contains no data.
        Parameters:
        pgmName - The program to generate XPCML for
        outputStream - The output stream to which to write the text.
        Throws:
        java.io.IOException - If an error occurs while writing the data.
        XmlException - If an error occurs while processing XPCML.
      • generateXPCML

        public void generateXPCML(java.io.OutputStream outputStream)
                           throws java.io.IOException,
                                  XmlException
        Generates XPCML representing the data contained in the entire PCML node tree. Note: XPCML cannot be generated from a serialized PCML file. XPCML is XML based on the XML schema defined in xpcml.xsd. XPCML is similar to PCML but allows for better validation of parameters and allows parameter data to be input and output within an XML document. PCML is data-less in that only parameter formats are input via PCML. In PCML, data values are set using the setValue methods of the ProgramCallDocument class and data values are gotten using the getValue methods of ProgramCallDocument. In XPCML, data values can be specified directly within the XPCML document, and data values can be output as XML using the generateXPCML method. Throws an XmlException if this object contains no data.
        Parameters:
        outputStream - The output stream to which to write the text.
        Throws:
        java.io.IOException - If an error occurs while writing the data.
        XmlException - If an error occurs while processing XPCML.
      • generateXPCML

        public void generateXPCML(java.lang.String fileName)
                           throws java.io.IOException,
                                  XmlException
        Generates XPCML representing the data contained in the entire PCML node tree. Note: XPCML cannot be generated from a serialized PCML file. XPCML is XML based on the XML schema defined in xpcml.xsd. XPCML is similar to PCML but allows for better validation of parameters and allows parameter data to be input and output within an XML document. PCML is data-less in that only parameter formats are input via PCML. In PCML, data values are set using the setValue methods of the ProgramCallDocument class and data values are gotten using the getValue methods of ProgramCallDocument. In XPCML, data values can be specified directly within the XPCML document, and data values can be output as XML using the generateXPCML method. Throws an XmlException if this object contains no data.
        Parameters:
        fileName - The pathname of the file to which to write the text.
        Throws:
        java.io.IOException - If an error occurs while writing the data.
        XmlException - If an error occurs while processing XPCML.
      • generateXPCML

        public void generateXPCML(java.lang.String pgmName,
                         java.lang.String fileName)
                           throws java.io.IOException,
                                  XmlException
        Generates XPCML representing the data contained for the passed in program name. Note: XPCML cannot be generated from a serialized PCML file. XPCML is XML based on the XML schema defined in xpcml.xsd. XPCML is similar to PCML but allows for better validation of parameters and allows parameter data to be input and output within an XML document. PCML is data-less in that only parameter formats are input via PCML. In PCML, data values are set using the setValue methods of the ProgramCallDocument class and data values are gotten using the getValue methods of ProgramCallDocument. In XPCML, data values can be specified directly within the XPCML document, and data values can be output as XML using the generateXPCML method. Throws an XmlException if this object contains no data.
        Parameters:
        pgmName - The program name to generate XPCML for.
        fileName - The pathname of the file to which to write the text.
        Throws:
        java.io.IOException - If an error occurs while writing the data.
        XmlException - If an error occurs while processing XPCML.
      • setXsdName

        public void setXsdName(java.lang.String xsdName)
        Sets the XSD name that will appear in the generated <xpcml> tag from the generateXPCML() methods. If name is not set then "xpcml.xsd" will appear in <xpcml> tag. This allows the user to override the default and put in the name of their own xsd that was used in condensing the XPCML output.
        Parameters:
        xsdName - The XSD name to appear in the <xpcml> tag when XPCML is output using the generateXPCML method.
      • getXsdName

        public java.lang.String getXsdName()
        Returns the value of the XSD name to be used on the <xpcml> tag when generating XPCML.
        Returns:
        The String "xsdName" value for this program object.
      • transformPCMLToXPCML

        public static void transformPCMLToXPCML(java.io.InputStream pcmlStream,
                                java.io.OutputStream xpcmlStream)
                                         throws java.io.IOException,
                                                PcmlException,
                                                javax.xml.transform.TransformerException,
                                                org.xml.sax.SAXException
        Transforms a PCML stream to its equivalent XPCML stream. Throws an XmlException if this object contains no data.
        Parameters:
        pcmlStream - The PCML input stream.
        xpcmlStream - The output XPCML stream.
        Throws:
        java.io.IOException - If an error occurs while writing the data.
        PcmlException - If an error occurs while processing XPCML.
        javax.xml.transform.TransformerException
        org.xml.sax.SAXException
      • condenseXPCML

        public static void condenseXPCML(java.io.InputStream fullStream,
                         java.io.OutputStream xsdStream,
                         java.io.OutputStream condensedStream,
                         java.lang.String xsdStreamName)
                                  throws java.io.IOException,
                                         PcmlException,
                                         javax.xml.transform.TransformerException,
                                         org.xml.sax.SAXException
        Transforms a fully specified XPCML stream to a more condensed XPCML stream and an XSD stream representing the new type definitions created while condensing. Throws an XmlException if this object contains no data.
        Parameters:
        fullStream - The full XPCML input stream.
        xsdStream - The output xsd stream.
        condensedStream - The output condensed XPCML stream.
        xsdStreamName - The name of the xsd stream ("name.xsd") that will be created
        Throws:
        java.io.IOException - If an error occurs while writing the data.
        PcmlException - If an error occurs while processing XPCML.
        javax.xml.transform.TransformerException
        org.xml.sax.SAXException
      • setTimeOut

        public void setTimeOut(int timeOut)
      • getTimeout

        public int getTimeout()