org.acplt.oncrpc.apps.jrpcgen
Class jrpcgen

java.lang.Object
  |
  +--org.acplt.oncrpc.apps.jrpcgen.jrpcgen

public class jrpcgen
extends java.lang.Object

The class jrpcgen implements a Java-based rpcgen RPC protocol compiler. jrpcgen is a Java-based tool that generates source code of Java classes to implement an RPC protocol. The input to jrpcgen is a language similiar to C (but more probably much more similiar to FORTRAN) known as the RPC language (Remote Procedure Call Language).


Field Summary
static java.lang.String baseClassname
          Name of class containing global constants.
private static java.lang.String[] baseTypes
          Java base data types for which are XDR encoding and decoding helper methods available.
static java.lang.String clientClass
          Name of class containing the ONC/RPC client stubs.
static java.lang.String currentFilename
          Full name of the current source code file.
static java.io.Writer currentFileWriter
          Current FileWriter object receiving generated source code.
static java.io.PrintWriter currentPrintWriter
          Current PrintWriter object sitting on top of the currentFileWriter object receiving generated source code.
static boolean debug
          Enable diagnostic messages when parsing the x-file.
static java.io.File destinationDir
          Destination directory where to place the generated files.
static java.util.Hashtable globalIdentifiers
          Contains all global identifiers for type, structure and union specifiers as well as for constants and enumeration members.
static boolean noBackups
          Disable automatic backup of old source code files, if true.
static boolean noClient
          Do not generate source code for the client proxy stub if true.
static boolean noServer
          Do not generate source code for the server proxy stub if true.
static java.lang.String packageName
          Specifies package name for generated source code, if not null.
static boolean parseOnly
          Parse x-file only but do not create source code files if set to true.
static java.util.Vector programInfos
          Holds information about the remote program defined in the jrpcgen x-file.
static java.lang.String serverClass
          Name of class containing the ONC/RPC server stubs.
static java.lang.String startDate
          String containing date/time when a jrpcgen run was started.
static boolean verbose
          Verbosity flag.
static java.lang.String VERSION
          Current version of jrpcgen.
 
Constructor Summary
jrpcgen()
           
 
Method Summary
static JrpcgenEnDecodingInfo baseEnDecodingSyllable(JrpcgenDeclaration decl)
          Return the en-/decoding syllable XXX appropriate for a base data type including arrays of base data types.
static java.lang.String checkForEnumValue(java.lang.String value)
          Checks whether a given value references an identifier and then returns the qualified identifier (interface where the value is defined in) or simply the value in case of an integer literal.
static java.lang.String checkForSpecials(java.lang.String dataType)
          Checks whether a given data type identifier refers to an enumeration type and then returns Java's int data type instead.
static void closeJavaSourceFile()
          Closes the source code file previously opened with createJavaSourceFile.
static java.lang.String codingMethod(JrpcgenDeclaration decl, boolean encode)
          Return en- or decoding method appropriate for a struct or union member.
static java.io.PrintWriter createJavaSourceFile(java.lang.String classname)
          Creates a new source code file for a Java class based on its class name.
static void dumpClasses()
          Generate source code files for all structures, unions and enumerations as well as constants.
static void dumpClient(JrpcgenProgramInfo programInfo)
          Generate source code for the client stub proxy object.
static void dumpClientStubMethods(java.io.PrintWriter out, JrpcgenVersionInfo versionInfo)
          Generate source code for client-side stub methods for a particular remote program version.
static void dumpConstantAndDependency(java.io.PrintWriter out, JrpcgenConst c)
          Dump the value of a constant and optionally first dump all constants it depends on.
static void dumpConstants()
          Generate source code file containing all constants defined in the x-file as well as all implicitely defined constants, like program, version and procedure numbers, etc.
static void dumpEnum(JrpcgenEnum e)
          Generate a source code file containing all elements of an enumeration defined in a x-file.
static void dumpFiles()
          Create the source code files based on the parsed information from the x-file.
static void dumpServer(JrpcgenProgramInfo programInfo)
           
static void dumpServerStubMethodCall(java.io.PrintWriter out, JrpcgenProcedureInfo proc)
           
static void dumpServerStubMethods(java.io.PrintWriter out, JrpcgenVersionInfo versionInfo)
           
static void dumpStruct(JrpcgenStruct s)
          Generate a source code file containing all elements of a struct defined in a x-file.
static void dumpTypedef(JrpcgenDeclaration d)
          Generate a source code file containing a wrapper class for a typedef defined in a x-file.
static void dumpUnion(JrpcgenUnion u)
          Generate a source code file containing all elements of a union defined in a x-file.
static void main(java.lang.String[] args)
          The main part of jrpcgen where all things start.
static void printHelp()
          Print the help message describing the available command line options.
static java.lang.String xdrBaseType(java.lang.String type)
          NOTE: "opaque" is considered like "byte" to be a base type...
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

VERSION

public static final java.lang.String VERSION
Current version of jrpcgen.

startDate

public static final java.lang.String startDate
String containing date/time when a jrpcgen run was started. This string is used in the headers of the generated source code files.

globalIdentifiers

public static java.util.Hashtable globalIdentifiers
Contains all global identifiers for type, structure and union specifiers as well as for constants and enumeration members. This static attribute is directly manipulated by parser.

noBackups

public static boolean noBackups
Disable automatic backup of old source code files, if true.

programInfos

public static java.util.Vector programInfos
Holds information about the remote program defined in the jrpcgen x-file.

debug

public static boolean debug
Enable diagnostic messages when parsing the x-file.

verbose

public static boolean verbose
Verbosity flag. If true, then jrpcgen will report about the steps it is taking when generating all the source code files.

parseOnly

public static boolean parseOnly
Parse x-file only but do not create source code files if set to true.

destinationDir

public static java.io.File destinationDir
Destination directory where to place the generated files.

currentFileWriter

public static java.io.Writer currentFileWriter
Current FileWriter object receiving generated source code.

currentPrintWriter

public static java.io.PrintWriter currentPrintWriter
Current PrintWriter object sitting on top of the currentFileWriter object receiving generated source code.

currentFilename

public static java.lang.String currentFilename
Full name of the current source code file.

packageName

public static java.lang.String packageName
Specifies package name for generated source code, if not null. If null, then no package statement is emitted.

baseClassname

public static java.lang.String baseClassname
Name of class containing global constants. It is derived from the filename with the extension (".x") and path removed.

noClient

public static boolean noClient
Do not generate source code for the client proxy stub if true.

noServer

public static boolean noServer
Do not generate source code for the server proxy stub if true.

serverClass

public static java.lang.String serverClass
Name of class containing the ONC/RPC server stubs.

clientClass

public static java.lang.String clientClass
Name of class containing the ONC/RPC client stubs.

baseTypes

private static java.lang.String[] baseTypes
Java base data types for which are XDR encoding and decoding helper methods available.
Constructor Detail

jrpcgen

public jrpcgen()
Method Detail

printHelp

public static void printHelp()
Print the help message describing the available command line options.

createJavaSourceFile

public static java.io.PrintWriter createJavaSourceFile(java.lang.String classname)
Creates a new source code file for a Java class based on its class name. If an old version of the source file exists, it is renamed first. The backup will have the same name as the original file with "~" appended.
Parameters:
classname - Name of Java class to generate. Must not contain a file extension -- especially ".java" is invalid. When the source code file is created, ".java" is appended automatically.
Returns:
PrintWriter to send source code to.

closeJavaSourceFile

public static void closeJavaSourceFile()
Closes the source code file previously opened with createJavaSourceFile. This method writes a trailer before closing the file.

dumpConstantAndDependency

public static void dumpConstantAndDependency(java.io.PrintWriter out,
                                             JrpcgenConst c)
Dump the value of a constant and optionally first dump all constants it depends on.

dumpConstants

public static void dumpConstants()
Generate source code file containing all constants defined in the x-file as well as all implicitely defined constants, like program, version and procedure numbers, etc. This method creates a public interface with the constants as public static final integers.

dumpEnum

public static void dumpEnum(JrpcgenEnum e)
Generate a source code file containing all elements of an enumeration defined in a x-file.
Parameters:
e - Description of XDR enumeration.

xdrBaseType

public static java.lang.String xdrBaseType(java.lang.String type)
NOTE: "opaque" is considered like "byte" to be a base type... FIXME: char/byte?

baseEnDecodingSyllable

public static JrpcgenEnDecodingInfo baseEnDecodingSyllable(JrpcgenDeclaration decl)
Return the en-/decoding syllable XXX appropriate for a base data type including arrays of base data types.
Parameters:
decl - declaration of a member of RPC struct or union.
Returns:
null, if the declaration does not specify a base data type. Otherwise a three-element String array, with [0] containing the type syllable for base type (including arrays), [1] containing parameter options when encoding (like maximum sizes, etc), and [2] containing options for decoding.

codingMethod

public static java.lang.String codingMethod(JrpcgenDeclaration decl,
                                            boolean encode)
Return en- or decoding method appropriate for a struct or union member.

checkForSpecials

public static java.lang.String checkForSpecials(java.lang.String dataType)
Checks whether a given data type identifier refers to an enumeration type and then returns Java's int data type instead. In case of the pseudo-type "opaque" return Java's byte data type. For all other data types, the data type identifier is returned unaltered.
Parameters:
dataType - data type identifier to check.

checkForEnumValue

public static java.lang.String checkForEnumValue(java.lang.String value)
Checks whether a given value references an identifier and then returns the qualified identifier (interface where the value is defined in) or simply the value in case of an integer literal.
Parameters:
value - Either an identifier to resolve or an integer literal.
Returns:
Integer literal or qualified identifier.

dumpStruct

public static void dumpStruct(JrpcgenStruct s)
Generate a source code file containing all elements of a struct defined in a x-file.
Parameters:
s - Description of XDR struct.

dumpUnion

public static void dumpUnion(JrpcgenUnion u)
Generate a source code file containing all elements of a union defined in a x-file.
Parameters:
u - Description of XDR union.

dumpTypedef

public static void dumpTypedef(JrpcgenDeclaration d)
Generate a source code file containing a wrapper class for a typedef defined in a x-file.
Parameters:
d - Description of XDR typedef.

dumpClasses

public static void dumpClasses()
Generate source code files for all structures, unions and enumerations as well as constants. All constants, which do not belong to enumerations, are emitted to a single interface.

dumpClientStubMethods

public static void dumpClientStubMethods(java.io.PrintWriter out,
                                         JrpcgenVersionInfo versionInfo)
Generate source code for client-side stub methods for a particular remote program version.
Parameters:
out - Printer writer to send source code to.
versionInfo - Information about the remote program version for which source code is to be generated.

dumpClient

public static void dumpClient(JrpcgenProgramInfo programInfo)
Generate source code for the client stub proxy object. This client stub proxy object is then used by client applications to make remote procedure (aka method) calls to an ONC/RPC server.

dumpServerStubMethodCall

public static void dumpServerStubMethodCall(java.io.PrintWriter out,
                                            JrpcgenProcedureInfo proc)

dumpServerStubMethods

public static void dumpServerStubMethods(java.io.PrintWriter out,
                                         JrpcgenVersionInfo versionInfo)

dumpServer

public static void dumpServer(JrpcgenProgramInfo programInfo)

dumpFiles

public static void dumpFiles()
Create the source code files based on the parsed information from the x-file.

main

public static void main(java.lang.String[] args)
The main part of jrpcgen where all things start.