Package org.glassfish.rmic.iiop
Class IDLGenerator
java.lang.Object
org.glassfish.rmic.iiop.Generator
org.glassfish.rmic.iiop.IDLGenerator
- All Implemented Interfaces:
Constants
,Generator
,Constants
,Constants
,RuntimeConstants
An IDL generator for rmic.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.glassfish.rmic.iiop.Generator
Generator.OutputType
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
private final boolean
private final boolean
private final boolean
private final boolean
private boolean
Fields inherited from interface org.glassfish.rmic.Constants
idRemote, idRemoteException
Fields inherited from interface org.glassfish.rmic.iiop.Constants
ATTRIBUTE_GET, ATTRIBUTE_GET_RW, ATTRIBUTE_IS, ATTRIBUTE_IS_RW, ATTRIBUTE_NONE, ATTRIBUTE_SET, ATTRIBUTE_WIRE_PREFIX, ERROR_SUFFIX, EX_SUFFIX, EXCEPTION_SUFFIX, idApplicationException, idBadMethodException, idBoolean, idBoxedIDL, idBoxedRMI, idByte, idChar, idClassDesc, idCorbaObject, idCorbaORB, idCorbaUserException, idDelegate, idDouble, idExtInputStream, idExtOutputStream, idFloat, idIDLEntity, idInputStream, idInt, idJavaIoExternalizable, idJavaIoIOException, IDL_ANY, IDL_BOOLEAN, IDL_BOXEDIDL_MODULE, IDL_BYTE, IDL_CHAR, IDL_CLASS, IDL_CLASS_MODULE, IDL_CONSTANT_STRING, IDL_CONSTRUCTOR, IDL_CORBA_MODULE, IDL_CORBA_OBJECT, IDL_DOUBLE, IDL_EXTERNALIZABLE, IDL_FILE_EXTENSION, IDL_FLOAT, IDL_IDLENTITY, IDL_INT, IDL_JAVA_IO_MODULE, IDL_JAVA_LANG_MODULE, IDL_JAVA_LANG_OBJECT, IDL_JAVA_RMI_MODULE, IDL_JAVA_RMI_REMOTE, IDL_KEYWORDS, IDL_LONG, IDL_NAME_SEPARATOR, IDL_ORG_OMG_CORBA_MODULE, IDL_ORG_OMG_CORBA_PORTABLE_MODULE, IDL_REPOSITORY_ID_PREFIX, IDL_REPOSITORY_ID_VERSION, IDL_SEQUENCE, IDL_SEQUENCE_MODULE, IDL_SERIALIZABLE, IDL_SHORT, IDL_STRING, IDL_VOID, idLong, idOutputStream, idPOAServantType, idPortableUnknownException, idRemarshalException, idReplyHandler, idShort, idStubBase, idSystemException, idTieBase, idTieInterface, idValueBase, idVoid, INDENT_STEP, NAME_SEPARATOR, SERIAL_VERSION_UID, SOURCE_FILE_EXTENSION, STATUS_INVALID, STATUS_PENDING, STATUS_VALID, TAB_SIZE, TM_CLASS, TM_COMPOUND, TM_INNER, TM_INTERFACE, TM_MASK, TM_NON_CONFORMING, TM_PRIMITIVE, TM_SPECIAL_CLASS, TM_SPECIAL_INTERFACE, TYPE_ABSTRACT, TYPE_ALL, TYPE_ANY, TYPE_ARRAY, TYPE_BOOLEAN, TYPE_BYTE, TYPE_CHAR, TYPE_CORBA_OBJECT, TYPE_DOUBLE, TYPE_FLOAT, TYPE_IMPLEMENTATION, TYPE_INT, TYPE_JAVA_RMI_REMOTE, TYPE_LONG, TYPE_MASK, TYPE_NC_CLASS, TYPE_NC_INTERFACE, TYPE_NONE, TYPE_REMOTE, TYPE_SHORT, TYPE_STRING, TYPE_VALUE, TYPE_VOID
Fields inherited from interface org.glassfish.rmic.tools.java.Constants
ABSTRACT, ACCM_CLASS, ACCM_FIELD, ACCM_INNERCLASS, ACCM_MEMBER, ACCM_METHOD, ADD, AND, ARRAY, ARRAYACCESS, ASGADD, ASGBITAND, ASGBITOR, ASGBITXOR, ASGDIV, ASGLSHIFT, ASGMUL, ASGREM, ASGRSHIFT, ASGSUB, ASGURSHIFT, ASSIGN, ATT_ALL, ATT_ALLCLASSES, ATT_CODE, BITAND, BITNOT, BITOR, BITXOR, BOOLEAN, BOOLEANVAL, BREAK, BYTE, BYTEVAL, CASE, CAST, CATCH, CHAR, CHARVAL, CLASS, COLON, COMMA, COMMENT, COND, CONST, CONTINUE, CONVERT, CS_BINARY, CS_CHECKED, CS_COMPILED, CS_NOTFOUND, CS_PARSED, CS_SOURCE, CS_UNDECIDED, CS_UNDEFINED, CT_BLOCK, CT_BRANCH_FALSE, CT_BRANCH_TRUE, CT_CASE, CT_FIKT_METHOD, CT_FIKT_RET, CT_FIRST_KIND, CT_LAST_KIND, CT_METHOD, CT_SWITH_WO_DEF, DEC, DECLARATION, DEFAULT, DIV, DO, DOUBLE, DOUBLEVAL, ELSE, EQ, ERROR, EXPR, EXPRESSION, EXTENDS, F_COVDATA, F_COVERAGE, F_DEBUG_LINES, F_DEBUG_SOURCE, F_DEBUG_VARS, F_DEPENDENCIES, F_DEPRECATION, F_DUMP, F_ERRORSREPORTED, F_OPT, F_OPT_INTERCLASS, F_PRINT_DEPENDENCIES, F_STRICTDEFAULT, F_VERBOSE, F_VERSION12, F_WARNINGS, FALSE, FIELD, FINAL, FINALLY, FLOAT, FLOATVAL, FOR, GE, GOTO, GT, idAppend, idClass, idClassInit, idClone, idCode, idConstantValue, idCoverageTable, idDeprecated, idDocumentation, IDENT, idExceptions, idFinallyReturnValue, idGetClass, idInit, idInnerClasses, idJavaIoSerializable, idJavaLang, idJavaLangClass, idJavaLangCloneable, idJavaLangError, idJavaLangException, idJavaLangObject, idJavaLangRuntimeException, idJavaLangString, idJavaLangStringBuffer, idJavaLangThrowable, idLength, idLineNumberTable, idLocalVariableTable, idNew, idNull, idSourceFile, idStar, idSuper, idSynthetic, idThis, idToString, idTYPE, idValueOf, IF, IMPLEMENTS, IMPORT, INC, INLINEMETHOD, INLINENEWINSTANCE, INLINERETURN, INSTANCEOF, INT, INTERFACE, INTVAL, LBRACE, LE, LENGTH, LONG, LONGVAL, LPAREN, LSHIFT, LSQBRACKET, LT, M_ABSTRACT, M_ANONYMOUS, M_DEPRECATED, M_FINAL, M_INLINEABLE, M_INTERFACE, M_LOCAL, M_NATIVE, M_PRIVATE, M_PROTECTED, M_PUBLIC, M_STATIC, M_STRICTFP, M_SYNCHRONIZED, M_SYNTHETIC, M_TRANSIENT, M_VOLATILE, MAXFILESIZE, MAXLINENUMBER, METHOD, MM_CLASS, MM_FIELD, MM_MEMBER, MM_METHOD, MUL, NATIVE, NE, NEG, NEW, NEWARRAY, NEWFROMNAME, NEWINSTANCE, NOT, NULL, opNames, opPrecedence, OR, PACKAGE, paraDeprecated, POS, POSTDEC, POSTINC, PREDEC, prefixAccess, prefixArray, prefixClass, prefixLoc, prefixThis, prefixVal, PREINC, PRIVATE, PROTECTED, PUBLIC, QUESTIONMARK, RBRACE, REM, RETURN, RPAREN, RSHIFT, RSQBRACKET, SEMICOLON, SHORT, SHORTVAL, SIG_INNERCLASS, SIGC_INNERCLASS, STAT, STATIC, STRICTFP, STRINGVAL, SUB, SUPER, SWITCH, SYNCHRONIZED, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_DOUBLE, TC_ERROR, TC_FLOAT, TC_INT, TC_LONG, TC_METHOD, TC_NULL, TC_SHORT, TC_VOID, THIS, THROW, THROWS, TM_ARRAY, TM_BOOLEAN, TM_BYTE, TM_CHAR, TM_DOUBLE, TM_ERROR, TM_FLOAT, TM_INT, TM_INT32, TM_INTEGER, TM_LONG, TM_METHOD, TM_NULL, TM_NUM32, TM_NUM64, TM_NUMBER, TM_REAL, TM_REFERENCE, TM_SHORT, TM_VOID, tracing, TRANSIENT, TRUE, TRY, TYPE, URSHIFT, VARDECLARATION, VOID, VOLATILE, WHEREOFFSETBITS, WHILE
Fields inherited from interface org.glassfish.rmic.tools.java.RuntimeConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_CLASS, CONSTANT_DOUBLE, CONSTANT_FIELD, CONSTANT_FLOAT, CONSTANT_INTEGER, CONSTANT_INTERFACEMETHOD, CONSTANT_INVOKEDYNAMIC, CONSTANT_LONG, CONSTANT_METHOD, CONSTANT_METHODHANDLE, CONSTANT_METHODTYPE, CONSTANT_NAMEANDTYPE, CONSTANT_STRING, CONSTANT_UNICODE, CONSTANT_UTF8, JAVA_DEFAULT_MINOR_VERSION, JAVA_DEFAULT_VERSION, JAVA_MAGIC, JAVA_MAX_SUPPORTED_MINOR_VERSION, JAVA_MAX_SUPPORTED_VERSION, JAVA_MIN_SUPPORTED_VERSION, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_breakpoint, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dead, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokedynamic, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_label, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_try, opc_wide, opcLengths, opcNames, SIG_ARRAY, SIG_BOOLEAN, SIG_BYTE, SIG_CHAR, SIG_CLASS, SIG_DOUBLE, SIG_ENDCLASS, SIG_ENDMETHOD, SIG_FLOAT, SIG_INT, SIG_LONG, SIG_METHOD, SIG_PACKAGE, SIG_SHORT, SIG_VOID, SIGC_ARRAY, SIGC_BOOLEAN, SIGC_BYTE, SIGC_CHAR, SIGC_CLASS, SIGC_DOUBLE, SIGC_ENDCLASS, SIGC_ENDMETHOD, SIGC_FLOAT, SIGC_INT, SIGC_LONG, SIGC_METHOD, SIGC_PACKAGE, SIGC_SHORT, SIGC_VOID, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
accumulateReferences
(Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash) Accumulate and filter all those types that are referenced by the given referenced types.protected void
addReference
(Type ref, Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash) Add reference for given type avoiding duplication.Get all referenced types of a given tyoe for which an IDL file needs to be generated.protected Vector
<CompoundType.Member> Collect constants for a type.protected Vector
<CompoundType.Member> Collect and sort data fields for a ValueType.protected void
getExceptions
(CompoundType.Method mth, Hashtable<String, CompoundType> excHash) Collect and filter thrown exceptions for a given pre-filtered method.protected String
getFileNameExtensionFor
(Generator.OutputType outputType) Return the file name extension for the given file name (e.g.protected String[]
Return the IDL module nesting of the given Type.protected void
getInheritance
(CompoundType ct, Hashtable<String, CompoundType> inhHash) Filter and add base class inheritance for a class typeprotected void
getInterfaces
(CompoundType ct, Hashtable<String, CompoundType> inhHash) Filter and collect non-duplicate inherited interfaces for a typeprotected void
getMemberReferences
(Vector<CompoundType.Member> datVec, Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash) Collect and filter type and array references from data membersprotected void
getMethodReferences
(Vector<CompoundType.Method> mthVec, Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash, Hashtable<String, CompoundType> excHash) Collect and filter type and array references from methodsprotected Vector
<CompoundType.Method> Collect and filter methods for a type.protected File
getOutputDirectory
(File destinationDir, Identifier id, BatchEnvironment environment) protected Identifier
Return an Identifier which contains the fully-qualified IDL filename for the given OutputType.protected Generator.OutputType[]
getOutputTypesFor
(CompoundType topType, HashSet<Type> alreadyChecked) Return an array of OutputTypes for the IDL files that need to be generated for the given top-level type.protected String
Return the global fully qualified IDL Name for a Type.protected String
Return the fully qualified Java Name for a Type.protected CompoundType
getTopType
(ClassDefinition cdef, ContextStack stack) Create and return a top-level type.protected boolean
Determine if IDL should be generated for a referenced type.protected boolean
isSpecialReference
(Type ref) Determine whether given Type is a special reference.boolean
Examine and consume command line arguments.protected boolean
parseNonConforming
(ContextStack stack) Return true if non-conforming types should be parsed.protected boolean
Return true if a new instance should be created for each class on the command line.protected void
stripJavaPackage
(CompoundType ct, Vector<String> vec) Strip Java #pragma prefix and/or -pkgPrefix prefix package names from given IDLEntity ct.protected boolean
translateJavaPackage
(CompoundType ct, Vector<String> vec) Apply user specified -idlModule translation to package names of given IDLEntity ct.protected String
Remove escape character ("_"), if any, from given Stringprotected void
Write an IDL Attributeprotected void
writeBanner
(Type t, int dim, boolean isException, IndentingWriter p) Write IDL banner into the output stream for a given Typeprotected void
Write valuetype for a boxed IDLEntity.protected void
writeBoxedRMIIncludes
(Hashtable<String, ArrayType> arrHash, IndentingWriter p) Write includes for boxedRMI valuetypes for IDL sequences.protected void
writeConstant
(CompoundType.Member constant, IndentingWriter p) Write an IDL constantprotected void
writeData
(CompoundType.Member data, IndentingWriter p) Write an IDL data memberprotected void
Write #endif bracket into the output streamprotected void
writeEpilog
(CompoundType t, Hashtable<String, CompoundType> refHash, IndentingWriter p) Write IDL epilog for a CompoundType.protected void
Write an exception.protected void
writeForwardReference
(ArrayType at, int dim, IndentingWriter p) Write forward reference for boxed valuetype for single dimension of IDL sequence.protected void
Write forward reference for given typeprotected void
writeForwardReferences
(Hashtable<String, CompoundType> refHash, IndentingWriter p) Write forward references for referenced interfaces and valuetypes ...but not if the reference is to a boxed IDLEntity,protected void
Write a hard-coded IDL typedef definition for the special case org.omg.CORBA.portable.IDLEntityprotected void
writeIDLEntityIncludes
(Hashtable<String, CompoundType> refHash, IndentingWriter p) Write #includes for boxed IDLEntity references.protected void
writeIfndef
(Type t, int dim, boolean isException, boolean isForward, IndentingWriter p) Write #ifndef guard into the output stream for a given Typeprotected void
Write an IDL interface definition for a Java implementation classprotected void
writeInclude
(Type t, int dim, boolean isThrown, IndentingWriter p) Write a #include.protected void
writeInclude
(Type t, String[] modNames, String tName, IndentingWriter p) Write a #include doing user specified -idlFile translation (if any) for IDLEntities.protected void
writeIncludes
(Hashtable<String, CompoundType> incHash, boolean isThrown, IndentingWriter p) Write #includesprotected void
Write #include for orb.idlprotected void
writeInheritedIncludes
(Hashtable<String, CompoundType> inhHash, IndentingWriter p) Write #includesprotected void
writeInherits
(Hashtable<String, CompoundType> inhHash, boolean forValuetype, IndentingWriter p) Write inheritance for an IDL interface or valuetype.protected void
Write a hard-coded IDL typedef definition for the special case java.io.Externalizable.protected void
Write a hard-coded IDL typedef definition for the special case java.io.Serializable.protected void
Write a hard-coded IDL typedef definition for the special case java.lang.Object.protected void
Write a hard-coded IDL typedef definition for the special case java.rmi.Remote.protected void
writeMethod
(CompoundType.Method method, IndentingWriter p) Write an IDL methodprotected void
writeModule1
(Type t, IndentingWriter p) Write Module start bracketing for the given type into the output streamprotected void
writeModule2
(Type t, IndentingWriter p) Write Module end bracketing for the given type into the output streamprotected void
writeNCType
(CompoundType type, IndentingWriter stream) Write an IDL valuetype definition for 1) a nonconforming Java class 2) a nonconforming Java interface (that is not an AbstractType)protected void
writeOutputFor
(Generator.OutputType ot, HashSet<Type> alreadyChecked, IndentingWriter p) Write the output for the given OutputFileName into the output stream.protected void
writeProlog
(CompoundType t, Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash, Hashtable<String, CompoundType> excHash, Hashtable<String, CompoundType> inhHash, IndentingWriter p) Write IDL prolog for a CompoundType.protected void
Write an IDL interface definition for either: 1) a conforming Java remote interface (RemoteType)..or 2) a non-conforming Java interface whose methods all throw java.rmi.RemoteException (AbstractType)protected void
Write #pragma to identify the repository ID of the given typeprotected void
Write boxedRMI valuetype for a single dimension of an IDL sequence indicated by the given OutputType.protected void
writeSpecial
(Type t, IndentingWriter p) Write special typedefprotected void
writeValue
(ValueType type, IndentingWriter outputStream) Write an IDL valuetype definition for a conforming Java class.Methods inherited from class org.glassfish.rmic.iiop.Generator
generate, postProcessFile
-
Field Details
-
valueMethods
private boolean valueMethods -
factory
private boolean factory -
ifHash
-
imHash
-
isThrown
private final boolean isThrown- See Also:
-
isException
private final boolean isException- See Also:
-
isForward
private final boolean isForward- See Also:
-
forValuetype
private final boolean forValuetype- See Also:
-
-
Constructor Details
-
IDLGenerator
public IDLGenerator()Default constructor for Main to use.
-
-
Method Details
-
getOutputDirectory
- Specified by:
getOutputDirectory
in classGenerator
-
requireNewInstance
protected boolean requireNewInstance()Return true if a new instance should be created for each class on the command line. Subclasses which return true should override newInstance() to return an appropriately constructed instance.- Specified by:
requireNewInstance
in classGenerator
-
parseNonConforming
Return true if non-conforming types should be parsed.- Specified by:
parseNonConforming
in classGenerator
- Parameters:
stack
- The context stack.
-
getTopType
Create and return a top-level type.- Specified by:
getTopType
in classGenerator
- Parameters:
cdef
- The top-level class definition.stack
- The context stack.- Returns:
- An RemoteType or null if is non-conforming.
-
getOutputId
Return an Identifier which contains the fully-qualified IDL filename for the given OutputType. The OutputType contains a filename string (not directory) and Type.- Overrides:
getOutputId
in classGenerator
- Parameters:
ot
- the OutputType for which directory nesting is to be defined.- Returns:
- the new identifier.
-
getFileNameExtensionFor
Return the file name extension for the given file name (e.g. ".java"). All files generated with the ".java" extension will be compiled. To change this behavior for ".java" files, override the compileJavaSourceFile method to return false.- Specified by:
getFileNameExtensionFor
in classGenerator
- Parameters:
outputType
- One of the items returned by getOutputTypesFor(...)
-
parseArgs
Examine and consume command line arguments.- Specified by:
parseArgs
in interfaceGenerator
- Overrides:
parseArgs
in classGenerator
- Parameters:
argv
- The command line arguments. Ignore null and unknown arguments. Set each consumed argument to null.main
- Report any errors using the main.error() methods.- Returns:
- true if no errors, false otherwise.
-
getOutputTypesFor
protected Generator.OutputType[] getOutputTypesFor(CompoundType topType, HashSet<Type> alreadyChecked) Return an array of OutputTypes for the IDL files that need to be generated for the given top-level type. OutputTypes contain filename string (not directory) and Type.- Specified by:
getOutputTypesFor
in classGenerator
- Parameters:
topType
- The type returned by getTopType().alreadyChecked
- A set of Types which have already been checked.- Returns:
- Array of OutputTypes to generate
-
getAllReferencesFor
Get all referenced types of a given tyoe for which an IDL file needs to be generated.- Parameters:
ct
- The given type.- Returns:
- Vector of Types for which IDL must be generated.
-
accumulateReferences
protected void accumulateReferences(Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash) Accumulate and filter all those types that are referenced by the given referenced types. Keep only those for which IDL is to be generated.- Parameters:
refHash
- Hashtable containing the given typesspcHash
- Hashtable containing referenced specials (IDL typedefs)arrHash
- Hashtable containing referenced arrays (dimensioned)
-
isIDLGeneratedFor
Determine if IDL should be generated for a referenced type. Do not generate IDL for a CORBA Object reference. It gets mapped to the original IDL or to Object (if exactly org.omg.CORBA.Object) Generate (boxed) IDL for an IDL Entity unless it is an IDL user exception, a ValueBase, an AbstractBase (or a CORBA Object). Do not generate IDL for Implementation classes..unless they inherit from multiple distinct remote interfaces- Parameters:
t
- The type to check.- Returns:
- true or false
-
writeOutputFor
protected void writeOutputFor(Generator.OutputType ot, HashSet<Type> alreadyChecked, IndentingWriter p) throws IOException Write the output for the given OutputFileName into the output stream. (The IDL mapping for java.lang.Class is generated from javax.rmi.CORBA.ClassDesc in the tools workspace)- Specified by:
writeOutputFor
in classGenerator
- Parameters:
ot
- One of the items returned by getOutputTypesFor(...)alreadyChecked
- A set of Types which have already been checked. Intended to be passed to Type.collectMatching(filter,alreadyChecked).p
- The output stream.- Throws:
IOException
-
writeImplementation
Write an IDL interface definition for a Java implementation class- Parameters:
t
- The current ImplementationTypep
- The output stream.- Throws:
IOException
-
writeNCType
Write an IDL valuetype definition for 1) a nonconforming Java class 2) a nonconforming Java interface (that is not an AbstractType)- Parameters:
type
- The current NC Type (NCClassType or NCInterfaceType)stream
- The output stream.- Throws:
IOException
-
writeRemote
Write an IDL interface definition for either: 1) a conforming Java remote interface (RemoteType)..or 2) a non-conforming Java interface whose methods all throw java.rmi.RemoteException (AbstractType)- Parameters:
t
- The current RemoteTypep
- The output stream.- Throws:
IOException
-
writeValue
Write an IDL valuetype definition for a conforming Java class. Methods and constructors are optional..controlled by -valueMethods flag- Parameters:
type
- The current ValueTypeoutputStream
- The output stream.- Throws:
IOException
-
writeProlog
protected void writeProlog(CompoundType t, Hashtable<String, CompoundType> refHash, Hashtable<String, throws IOExceptionCompoundType> spcHash, Hashtable<String, ArrayType> arrHash, Hashtable<String, CompoundType> excHash, Hashtable<String, CompoundType> inhHash, IndentingWriter p) Write IDL prolog for a CompoundType.- Parameters:
t
- The CompoundType.refHash
- Hashtable loaded with type references.spcHash
- Hashtable loaded with special type references.arrHash
- Hashtable loaded with array references.excHash
- Hashtable loaded with exceptions thrown.inhHash
- Hashtable loaded with inherited types.p
- The output stream.- Throws:
IOException
-
writeEpilog
protected void writeEpilog(CompoundType t, Hashtable<String, CompoundType> refHash, IndentingWriter p) throws IOExceptionWrite IDL epilog for a CompoundType.- Parameters:
t
- The CompoundType.refHash
- Hashtable loaded with type references.p
- The output stream.- Throws:
IOException
-
writeSpecial
Write special typedef- Parameters:
t
- A special Type.p
- The output stream.- Throws:
IOException
-
writeJavaIoSerializable
Write a hard-coded IDL typedef definition for the special case java.io.Serializable.- Parameters:
t
- The current Typep
- The output stream.- Throws:
IOException
-
writeJavaIoExternalizable
Write a hard-coded IDL typedef definition for the special case java.io.Externalizable.- Parameters:
t
- The current Typep
- The output stream.- Throws:
IOException
-
writeJavaLangObject
Write a hard-coded IDL typedef definition for the special case java.lang.Object.- Parameters:
t
- The current Typep
- The output stream.- Throws:
IOException
-
writeJavaRmiRemote
Write a hard-coded IDL typedef definition for the special case java.rmi.Remote.- Parameters:
t
- The current Typep
- The output stream.- Throws:
IOException
-
writeIDLEntity
Write a hard-coded IDL typedef definition for the special case org.omg.CORBA.portable.IDLEntity- Parameters:
t
- The current Typep
- The output stream.- Throws:
IOException
-
getInterfaces
Filter and collect non-duplicate inherited interfaces for a type- Parameters:
ct
- The current CompoundTypeinhHash
- Hashtable containing the inherited interfaces
-
getInheritance
Filter and add base class inheritance for a class type- Parameters:
ct
- The current CompoundTypeinhHash
- Hashtable containing inherited types
-
getMethodReferences
protected void getMethodReferences(Vector<CompoundType.Method> mthVec, Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash, Hashtable<String, CompoundType> excHash) Collect and filter type and array references from methods- Parameters:
mthVec
- Given Vector of methodsrefHash
- Hashtable for type referencesspcHash
- Hashtable for special type referencesarrHash
- Hashtable for array referencesexcHash
- Hashtable for exceptions thrown
-
getMemberReferences
protected void getMemberReferences(Vector<CompoundType.Member> datVec, Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash) Collect and filter type and array references from data members- Parameters:
datVec
- Given Vector of data membersrefHash
- Hashtable for type referencesspcHash
- Hashtable for special type referencesarrHash
- Hashtable for array references
-
addReference
protected void addReference(Type ref, Hashtable<String, CompoundType> refHash, Hashtable<String, CompoundType> spcHash, Hashtable<String, ArrayType> arrHash) Add reference for given type avoiding duplication. Sort into specials, arrays and regular references. Filter out types which are not required.- Parameters:
ref
- Given TyperefHash
- Hashtable for type referencesspcHash
- Hashtable for special type referencesarrHash
- Hashtable for array references
-
isSpecialReference
Determine whether given Type is a special reference. Special cases are: java.io.Serializable, java.io.Externalizable, java.lang.Object, java.rmi.Remote and org.omg.CORBA.portable.IDLEntity They are special because they have a hard-coded typedef defined in the spec.- Parameters:
ref
- A referenced Type- Returns:
- boolean indicating whether it's a special reference
-
getExceptions
Collect and filter thrown exceptions for a given pre-filtered method. Keep only 'checked' exception classes minus java.rmi.RemoteException and its subclasses- Parameters:
mth
- The current methodexcHash
- Hashtable containing non-duplicate thrown exceptions
-
getMethods
Collect and filter methods for a type. Remove any private or inherited methods.- Parameters:
ct
- The current CompoundType- Returns:
- Vector containing the methods
-
getConstants
Collect constants for a type. A valid constant is a "public final static" field with a compile-time constant value for a primitive type or String- Parameters:
ct
- The current CompoundType- Returns:
- Vector containing the constants
-
getData
Collect and sort data fields for a ValueType. Sort in Java (not IDL) Unicode name string lexicographic increasing order. Non-static, non-transient fields are mapped. If the type is a custom valuetype, only public fields are mapped.- Parameters:
t
- The current CompoundType- Returns:
- Vector containing the data fields
-
writeForwardReferences
protected void writeForwardReferences(Hashtable<String, CompoundType> refHash, IndentingWriter p) throws IOExceptionWrite forward references for referenced interfaces and valuetypes ...but not if the reference is to a boxed IDLEntity,- Parameters:
refHash
- Hashtable loaded with referenced typesp
- The output stream.- Throws:
IOException
-
writeForwardReference
Write forward reference for given type- Parameters:
t
- Given typep
- The output stream.- Throws:
IOException
-
writeForwardReference
Write forward reference for boxed valuetype for single dimension of IDL sequence. If the dimension is < 1 and the element is a CompoundType, write a forward declare for the element- Parameters:
at
- ArrayType for forward declaredim
- The dimension to writep
- The output stream.- Throws:
IOException
-
writeIDLEntityIncludes
protected void writeIDLEntityIncludes(Hashtable<String, CompoundType> refHash, IndentingWriter p) throws IOExceptionWrite #includes for boxed IDLEntity references.- Parameters:
refHash
- Hashtable loaded with referenced typesp
- The output stream.- Throws:
IOException
-
writeIncludes
protected void writeIncludes(Hashtable<String, CompoundType> incHash, boolean isThrown, IndentingWriter p) throws IOExceptionWrite #includes- Parameters:
incHash
- Hashtable loaded with Types to includeisThrown
- true if Types are thrown exceptionsp
- The output stream.- Throws:
IOException
-
writeBoxedRMIIncludes
protected void writeBoxedRMIIncludes(Hashtable<String, ArrayType> arrHash, IndentingWriter p) throws IOExceptionWrite includes for boxedRMI valuetypes for IDL sequences. Write only the maximum dimension found for an ArrayType.- Parameters:
arrHash
- Hashtable loaded with array typesp
- The output stream.- Throws:
IOException
-
writeInheritedIncludes
protected void writeInheritedIncludes(Hashtable<String, CompoundType> inhHash, IndentingWriter p) throws IOExceptionWrite #includes- Parameters:
inhHash
- Hashtable loaded with Types to includep
- The output stream.- Throws:
IOException
-
writeInclude
protected void writeInclude(Type t, int dim, boolean isThrown, IndentingWriter p) throws IOException Write a #include.- Parameters:
t
- Type to includedim
- The dimension to write if t is an array.isThrown
- boolean indicating if include is for thrown exception.p
- The output stream.- Throws:
IOException
-
writeInclude
protected void writeInclude(Type t, String[] modNames, String tName, IndentingWriter p) throws IOException Write a #include doing user specified -idlFile translation (if any) for IDLEntities.- Parameters:
t
- Type to include.modNames
- Preprocessed module names (default).tName
- Preprocessed Type name (default).p
- The output stream.- Throws:
IOException
-
getQualifiedName
Return the fully qualified Java Name for a Type. IDLEntity preprocessing done by getIDLModuleNames(t)- Parameters:
t
- Given Type- Returns:
- Array containing the original module nesting.
-
getQualifiedIDLName
Return the global fully qualified IDL Name for a Type. IDLEntity preprocessing done by getIDLModuleNames(t)- Parameters:
t
- Given Type- Returns:
- Array containing the original module nesting.
-
getIDLModuleNames
Return the IDL module nesting of the given Type. For IDLEntity CompoundTypes (or their arrays) apply any user specified -idlModule translation or, if none applicable, strip any package prefix. Add boxedIDL or boxedRMI modules if required.- Parameters:
t
- Given Type- Returns:
- Array containing the original module nesting.
-
translateJavaPackage
Apply user specified -idlModule translation to package names of given IDLEntity ct. Example: -idlModule foo.bar real::mod::nesting- Parameters:
ct
- CompoundType containing given IDLEntity.vec
- Returned Vector of translated IDL module names.- Returns:
- boolean true if any translation was done.
-
stripJavaPackage
Strip Java #pragma prefix and/or -pkgPrefix prefix package names from given IDLEntity ct. Strip any package prefix which may have been added by comparing with repository id. For example in Java package fake.omega: repid = IDL:phoney.pfix/omega/Juliet:1.0 gives { "omega" }- Parameters:
ct
- CompoundType containing given IDLEntity.vec
- Returned Vector of stripped IDL module names.
-
writeSequence
Write boxedRMI valuetype for a single dimension of an IDL sequence indicated by the given OutputType. The filename for the OutputType is of the form "seqn_elemName" where n is the dimension required.- Parameters:
ot
- Given OutputType.p
- The output stream.- Throws:
IOException
-
writeBoxedIDL
Write valuetype for a boxed IDLEntity.- Parameters:
t
- Given CompoundType representing the IDLEntity.p
- The output stream.- Throws:
IOException
-
writeException
Write an exception.- Parameters:
t
- Given ClassType representing the exception.p
- The output stream.- Throws:
IOException
-
writeRepositoryID
Write #pragma to identify the repository ID of the given type- Parameters:
t
- The given Type.p
- The output stream.- Throws:
IOException
-
writeInherits
protected void writeInherits(Hashtable<String, CompoundType> inhHash, boolean forValuetype, IndentingWriter p) throws IOExceptionWrite inheritance for an IDL interface or valuetype. Any class inheritance precedes any interface inheritance. For a valutype any inheritance from abstract interfaces then follows the "supports" keyword.- Parameters:
inhHash
- Hashtable loaded with inherited TypesforValuetype
- true if writing inheritance for a valuetypep
- The output stream.- Throws:
IOException
-
writeConstant
Write an IDL constant- Parameters:
constant
- The current CompoundType.Member constantp
- The output stream.- Throws:
IOException
-
writeData
Write an IDL data member- Parameters:
data
- The current CompoundType.Member data memberp
- The output stream.- Throws:
IOException
-
writeAttribute
Write an IDL Attribute- Parameters:
attr
- The current CompoundType.Method attributep
- The output stream.- Throws:
IOException
-
writeMethod
Write an IDL method- Parameters:
method
- The current CompoundType.Methodp
- The output stream.- Throws:
IOException
-
unEsc
Remove escape character ("_"), if any, from given String- Parameters:
name
- Given String- Returns:
- String with any escape character removed
-
writeBanner
protected void writeBanner(Type t, int dim, boolean isException, IndentingWriter p) throws IOException Write IDL banner into the output stream for a given Type- Parameters:
t
- The given Type.dim
- The dimension required if t is an ArrayType.isException
- true if writing an exception.p
- The output stream.- Throws:
IOException
-
writeIncOrb
Write #include for orb.idl- Parameters:
p
- The output stream.- Throws:
IOException
-
writeIfndef
protected void writeIfndef(Type t, int dim, boolean isException, boolean isForward, IndentingWriter p) throws IOException Write #ifndef guard into the output stream for a given Type- Parameters:
t
- The given Type.dim
- The dimension required if t is an ArrayType.isException
- true if writing an exception.isForward
- No #define needed if it's a forward declarep
- The output stream.- Throws:
IOException
-
writeEndif
Write #endif bracket into the output stream- Parameters:
p
- The output stream.- Throws:
IOException
-
writeModule1
Write Module start bracketing for the given type into the output stream- Parameters:
t
- The given Typep
- The output stream.- Throws:
IOException
-
writeModule2
Write Module end bracketing for the given type into the output stream- Parameters:
t
- The given Typep
- The output stream.- Throws:
IOException
-