Package org.glassfish.rmic.iiop
Class IDLGenerator
- java.lang.Object
-
- org.glassfish.rmic.iiop.Generator
-
- org.glassfish.rmic.iiop.IDLGenerator
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.glassfish.rmic.iiop.Generator
Generator.OutputType
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
factory
private boolean
forValuetype
private java.util.Hashtable<java.lang.String,java.lang.String>
ifHash
private java.util.Hashtable<java.lang.String,java.lang.String>
imHash
private boolean
isException
private boolean
isForward
private boolean
isThrown
private boolean
valueMethods
-
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 Constructor Description IDLGenerator()
Default constructor for Main to use.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
accumulateReferences(java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.String,ArrayType> arrHash)
Accumulate and filter all those types that are referenced by the given referenced types.protected void
addReference(Type ref, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.String,ArrayType> arrHash)
Add reference for given type avoiding duplication.protected java.util.Vector<Type>
getAllReferencesFor(CompoundType ct)
Get all referenced types of a given tyoe for which an IDL file needs to be generated.protected java.util.Vector<CompoundType.Member>
getConstants(CompoundType ct)
Collect constants for a type.protected java.util.Vector<CompoundType.Member>
getData(CompoundType t)
Collect and sort data fields for a ValueType.protected void
getExceptions(CompoundType.Method mth, java.util.Hashtable<java.lang.String,CompoundType> excHash)
Collect and filter thrown exceptions for a given pre-filtered method.protected java.lang.String
getFileNameExtensionFor(Generator.OutputType outputType)
Return the file name extension for the given file name (e.g.protected java.lang.String[]
getIDLModuleNames(Type t)
Return the IDL module nesting of the given Type.protected void
getInheritance(CompoundType ct, java.util.Hashtable<java.lang.String,CompoundType> inhHash)
Filter and add base class inheritance for a class typeprotected void
getInterfaces(CompoundType ct, java.util.Hashtable<java.lang.String,CompoundType> inhHash)
Filter and collect non-duplicate inherited interfaces for a typeprotected void
getMemberReferences(java.util.Vector<CompoundType.Member> datVec, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.String,ArrayType> arrHash)
Collect and filter type and array references from data membersprotected void
getMethodReferences(java.util.Vector<CompoundType.Method> mthVec, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.String,ArrayType> arrHash, java.util.Hashtable<java.lang.String,CompoundType> excHash)
Collect and filter type and array references from methodsprotected java.util.Vector<CompoundType.Method>
getMethods(CompoundType ct)
Collect and filter methods for a type.protected java.io.File
getOutputDirectory(java.io.File destinationDir, Identifier id, BatchEnvironment environment)
protected Identifier
getOutputId(Generator.OutputType ot)
Return an Identifier which contains the fully-qualified IDL filename for the given OutputType.protected Generator.OutputType[]
getOutputTypesFor(CompoundType topType, java.util.HashSet<Type> alreadyChecked)
Return an array of OutputTypes for the IDL files that need to be generated for the given top-level type.protected java.lang.String
getQualifiedIDLName(Type t)
Return the global fully qualified IDL Name for a Type.protected java.lang.String
getQualifiedName(Type t)
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
isIDLGeneratedFor(CompoundType t)
Determine if IDL should be generated for a referenced type.protected boolean
isSpecialReference(Type ref)
Determine whether given Type is a special reference.boolean
parseArgs(java.lang.String[] argv, Main main)
Examine and consume command line arguments.protected boolean
parseNonConforming(ContextStack stack)
Return true if non-conforming types should be parsed.protected boolean
requireNewInstance()
Return true if a new instance should be created for each class on the command line.protected void
stripJavaPackage(CompoundType ct, java.util.Vector<java.lang.String> vec)
Strip Java #pragma prefix and/or -pkgPrefix prefix package names from given IDLEntity ct.protected boolean
translateJavaPackage(CompoundType ct, java.util.Vector<java.lang.String> vec)
Apply user specified -idlModule translation to package names of given IDLEntity ct.protected java.lang.String
unEsc(java.lang.String name)
Remove escape character ("_"), if any, from given Stringprotected void
writeAttribute(CompoundType.Method attr, IndentingWriter p)
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
writeBoxedIDL(CompoundType t, IndentingWriter p)
Write valuetype for a boxed IDLEntity.protected void
writeBoxedRMIIncludes(java.util.Hashtable<java.lang.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
writeEndif(IndentingWriter p)
Write #endif bracket into the output streamprotected void
writeEpilog(CompoundType t, java.util.Hashtable<java.lang.String,CompoundType> refHash, IndentingWriter p)
Write IDL epilog for a CompoundType.protected void
writeException(ClassType t, IndentingWriter p)
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
writeForwardReference(Type t, IndentingWriter p)
Write forward reference for given typeprotected void
writeForwardReferences(java.util.Hashtable<java.lang.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
writeIDLEntity(Type t, IndentingWriter p)
Write a hard-coded IDL typedef definition for the special case org.omg.CORBA.portable.IDLEntityprotected void
writeIDLEntityIncludes(java.util.Hashtable<java.lang.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
writeImplementation(ImplementationType t, IndentingWriter p)
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, java.lang.String[] modNames, java.lang.String tName, IndentingWriter p)
Write a #include doing user specified -idlFile translation (if any) for IDLEntities.protected void
writeIncludes(java.util.Hashtable<java.lang.String,CompoundType> incHash, boolean isThrown, IndentingWriter p)
Write #includesprotected void
writeIncOrb(IndentingWriter p)
Write #include for orb.idlprotected void
writeInheritedIncludes(java.util.Hashtable<java.lang.String,CompoundType> inhHash, IndentingWriter p)
Write #includesprotected void
writeInherits(java.util.Hashtable<java.lang.String,CompoundType> inhHash, boolean forValuetype, IndentingWriter p)
Write inheritance for an IDL interface or valuetype.protected void
writeJavaIoExternalizable(Type t, IndentingWriter p)
Write a hard-coded IDL typedef definition for the special case java.io.Externalizable.protected void
writeJavaIoSerializable(Type t, IndentingWriter p)
Write a hard-coded IDL typedef definition for the special case java.io.Serializable.protected void
writeJavaLangObject(Type t, IndentingWriter p)
Write a hard-coded IDL typedef definition for the special case java.lang.Object.protected void
writeJavaRmiRemote(Type t, IndentingWriter p)
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, java.util.HashSet<Type> alreadyChecked, IndentingWriter p)
Write the output for the given OutputFileName into the output stream.protected void
writeProlog(CompoundType t, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.String,ArrayType> arrHash, java.util.Hashtable<java.lang.String,CompoundType> excHash, java.util.Hashtable<java.lang.String,CompoundType> inhHash, IndentingWriter p)
Write IDL prolog for a CompoundType.protected void
writeRemote(RemoteType t, IndentingWriter p)
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
writeRepositoryID(Type t, IndentingWriter p)
Write #pragma to identify the repository ID of the given typeprotected void
writeSequence(Generator.OutputType ot, IndentingWriter p)
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 Detail
-
valueMethods
private boolean valueMethods
-
factory
private boolean factory
-
ifHash
private java.util.Hashtable<java.lang.String,java.lang.String> ifHash
-
imHash
private java.util.Hashtable<java.lang.String,java.lang.String> imHash
-
isThrown
private final boolean isThrown
- See Also:
- Constant Field Values
-
isException
private final boolean isException
- See Also:
- Constant Field Values
-
isForward
private final boolean isForward
- See Also:
- Constant Field Values
-
forValuetype
private final boolean forValuetype
- See Also:
- Constant Field Values
-
-
Method Detail
-
getOutputDirectory
protected java.io.File getOutputDirectory(java.io.File destinationDir, Identifier id, BatchEnvironment environment)
- 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
protected boolean parseNonConforming(ContextStack stack)
Return true if non-conforming types should be parsed.- Specified by:
parseNonConforming
in classGenerator
- Parameters:
stack
- The context stack.
-
getTopType
protected CompoundType getTopType(ClassDefinition cdef, ContextStack stack)
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
protected Identifier getOutputId(Generator.OutputType ot)
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
protected java.lang.String getFileNameExtensionFor(Generator.OutputType outputType)
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
public boolean parseArgs(java.lang.String[] argv, Main main)
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, java.util.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
protected java.util.Vector<Type> getAllReferencesFor(CompoundType ct)
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(java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.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
protected boolean isIDLGeneratedFor(CompoundType t)
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, java.util.HashSet<Type> alreadyChecked, IndentingWriter p) throws java.io.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:
java.io.IOException
-
writeImplementation
protected void writeImplementation(ImplementationType t, IndentingWriter p) throws java.io.IOException
Write an IDL interface definition for a Java implementation class- Parameters:
t
- The current ImplementationTypep
- The output stream.- Throws:
java.io.IOException
-
writeNCType
protected void writeNCType(CompoundType type, IndentingWriter stream) throws java.io.IOException
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:
java.io.IOException
-
writeRemote
protected void writeRemote(RemoteType t, IndentingWriter p) throws java.io.IOException
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:
java.io.IOException
-
writeValue
protected void writeValue(ValueType type, IndentingWriter outputStream) throws java.io.IOException
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:
java.io.IOException
-
writeProlog
protected void writeProlog(CompoundType t, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.String,ArrayType> arrHash, java.util.Hashtable<java.lang.String,CompoundType> excHash, java.util.Hashtable<java.lang.String,CompoundType> inhHash, IndentingWriter p) throws java.io.IOException
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:
java.io.IOException
-
writeEpilog
protected void writeEpilog(CompoundType t, java.util.Hashtable<java.lang.String,CompoundType> refHash, IndentingWriter p) throws java.io.IOException
Write IDL epilog for a CompoundType.- Parameters:
t
- The CompoundType.refHash
- Hashtable loaded with type references.p
- The output stream.- Throws:
java.io.IOException
-
writeSpecial
protected void writeSpecial(Type t, IndentingWriter p) throws java.io.IOException
Write special typedef- Parameters:
t
- A special Type.p
- The output stream.- Throws:
java.io.IOException
-
writeJavaIoSerializable
protected void writeJavaIoSerializable(Type t, IndentingWriter p) throws java.io.IOException
Write a hard-coded IDL typedef definition for the special case java.io.Serializable.- Parameters:
t
- The current Typep
- The output stream.- Throws:
java.io.IOException
-
writeJavaIoExternalizable
protected void writeJavaIoExternalizable(Type t, IndentingWriter p) throws java.io.IOException
Write a hard-coded IDL typedef definition for the special case java.io.Externalizable.- Parameters:
t
- The current Typep
- The output stream.- Throws:
java.io.IOException
-
writeJavaLangObject
protected void writeJavaLangObject(Type t, IndentingWriter p) throws java.io.IOException
Write a hard-coded IDL typedef definition for the special case java.lang.Object.- Parameters:
t
- The current Typep
- The output stream.- Throws:
java.io.IOException
-
writeJavaRmiRemote
protected void writeJavaRmiRemote(Type t, IndentingWriter p) throws java.io.IOException
Write a hard-coded IDL typedef definition for the special case java.rmi.Remote.- Parameters:
t
- The current Typep
- The output stream.- Throws:
java.io.IOException
-
writeIDLEntity
protected void writeIDLEntity(Type t, IndentingWriter p) throws java.io.IOException
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:
java.io.IOException
-
getInterfaces
protected void getInterfaces(CompoundType ct, java.util.Hashtable<java.lang.String,CompoundType> inhHash)
Filter and collect non-duplicate inherited interfaces for a type- Parameters:
ct
- The current CompoundTypeinhHash
- Hashtable containing the inherited interfaces
-
getInheritance
protected void getInheritance(CompoundType ct, java.util.Hashtable<java.lang.String,CompoundType> inhHash)
Filter and add base class inheritance for a class type- Parameters:
ct
- The current CompoundTypeinhHash
- Hashtable containing inherited types
-
getMethodReferences
protected void getMethodReferences(java.util.Vector<CompoundType.Method> mthVec, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.String,ArrayType> arrHash, java.util.Hashtable<java.lang.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(java.util.Vector<CompoundType.Member> datVec, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.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, java.util.Hashtable<java.lang.String,CompoundType> refHash, java.util.Hashtable<java.lang.String,CompoundType> spcHash, java.util.Hashtable<java.lang.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
protected boolean isSpecialReference(Type ref)
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
protected void getExceptions(CompoundType.Method mth, java.util.Hashtable<java.lang.String,CompoundType> excHash)
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
protected java.util.Vector<CompoundType.Method> getMethods(CompoundType ct)
Collect and filter methods for a type. Remove any private or inherited methods.- Parameters:
ct
- The current CompoundType- Returns:
- Vector containing the methods
-
getConstants
protected java.util.Vector<CompoundType.Member> getConstants(CompoundType ct)
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
protected java.util.Vector<CompoundType.Member> getData(CompoundType t)
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(java.util.Hashtable<java.lang.String,CompoundType> refHash, IndentingWriter p) throws java.io.IOException
Write 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:
java.io.IOException
-
writeForwardReference
protected void writeForwardReference(Type t, IndentingWriter p) throws java.io.IOException
Write forward reference for given type- Parameters:
t
- Given typep
- The output stream.- Throws:
java.io.IOException
-
writeForwardReference
protected void writeForwardReference(ArrayType at, int dim, IndentingWriter p) throws java.io.IOException
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:
java.io.IOException
-
writeIDLEntityIncludes
protected void writeIDLEntityIncludes(java.util.Hashtable<java.lang.String,CompoundType> refHash, IndentingWriter p) throws java.io.IOException
Write #includes for boxed IDLEntity references.- Parameters:
refHash
- Hashtable loaded with referenced typesp
- The output stream.- Throws:
java.io.IOException
-
writeIncludes
protected void writeIncludes(java.util.Hashtable<java.lang.String,CompoundType> incHash, boolean isThrown, IndentingWriter p) throws java.io.IOException
Write #includes- Parameters:
incHash
- Hashtable loaded with Types to includeisThrown
- true if Types are thrown exceptionsp
- The output stream.- Throws:
java.io.IOException
-
writeBoxedRMIIncludes
protected void writeBoxedRMIIncludes(java.util.Hashtable<java.lang.String,ArrayType> arrHash, IndentingWriter p) throws java.io.IOException
Write 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:
java.io.IOException
-
writeInheritedIncludes
protected void writeInheritedIncludes(java.util.Hashtable<java.lang.String,CompoundType> inhHash, IndentingWriter p) throws java.io.IOException
Write #includes- Parameters:
inhHash
- Hashtable loaded with Types to includep
- The output stream.- Throws:
java.io.IOException
-
writeInclude
protected void writeInclude(Type t, int dim, boolean isThrown, IndentingWriter p) throws java.io.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:
java.io.IOException
-
writeInclude
protected void writeInclude(Type t, java.lang.String[] modNames, java.lang.String tName, IndentingWriter p) throws java.io.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:
java.io.IOException
-
getQualifiedName
protected java.lang.String getQualifiedName(Type t)
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
protected java.lang.String getQualifiedIDLName(Type t)
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
protected java.lang.String[] getIDLModuleNames(Type t)
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
protected boolean translateJavaPackage(CompoundType ct, java.util.Vector<java.lang.String> vec)
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
protected void stripJavaPackage(CompoundType ct, java.util.Vector<java.lang.String> vec)
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
protected void writeSequence(Generator.OutputType ot, IndentingWriter p) throws java.io.IOException
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:
java.io.IOException
-
writeBoxedIDL
protected void writeBoxedIDL(CompoundType t, IndentingWriter p) throws java.io.IOException
Write valuetype for a boxed IDLEntity.- Parameters:
t
- Given CompoundType representing the IDLEntity.p
- The output stream.- Throws:
java.io.IOException
-
writeException
protected void writeException(ClassType t, IndentingWriter p) throws java.io.IOException
Write an exception.- Parameters:
t
- Given ClassType representing the exception.p
- The output stream.- Throws:
java.io.IOException
-
writeRepositoryID
protected void writeRepositoryID(Type t, IndentingWriter p) throws java.io.IOException
Write #pragma to identify the repository ID of the given type- Parameters:
t
- The given Type.p
- The output stream.- Throws:
java.io.IOException
-
writeInherits
protected void writeInherits(java.util.Hashtable<java.lang.String,CompoundType> inhHash, boolean forValuetype, IndentingWriter p) throws java.io.IOException
Write 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:
java.io.IOException
-
writeConstant
protected void writeConstant(CompoundType.Member constant, IndentingWriter p) throws java.io.IOException
Write an IDL constant- Parameters:
constant
- The current CompoundType.Member constantp
- The output stream.- Throws:
java.io.IOException
-
writeData
protected void writeData(CompoundType.Member data, IndentingWriter p) throws java.io.IOException
Write an IDL data member- Parameters:
data
- The current CompoundType.Member data memberp
- The output stream.- Throws:
java.io.IOException
-
writeAttribute
protected void writeAttribute(CompoundType.Method attr, IndentingWriter p) throws java.io.IOException
Write an IDL Attribute- Parameters:
attr
- The current CompoundType.Method attributep
- The output stream.- Throws:
java.io.IOException
-
writeMethod
protected void writeMethod(CompoundType.Method method, IndentingWriter p) throws java.io.IOException
Write an IDL method- Parameters:
method
- The current CompoundType.Methodp
- The output stream.- Throws:
java.io.IOException
-
unEsc
protected java.lang.String unEsc(java.lang.String name)
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 java.io.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:
java.io.IOException
-
writeIncOrb
protected void writeIncOrb(IndentingWriter p) throws java.io.IOException
Write #include for orb.idl- Parameters:
p
- The output stream.- Throws:
java.io.IOException
-
writeIfndef
protected void writeIfndef(Type t, int dim, boolean isException, boolean isForward, IndentingWriter p) throws java.io.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:
java.io.IOException
-
writeEndif
protected void writeEndif(IndentingWriter p) throws java.io.IOException
Write #endif bracket into the output stream- Parameters:
p
- The output stream.- Throws:
java.io.IOException
-
writeModule1
protected void writeModule1(Type t, IndentingWriter p) throws java.io.IOException
Write Module start bracketing for the given type into the output stream- Parameters:
t
- The given Typep
- The output stream.- Throws:
java.io.IOException
-
writeModule2
protected void writeModule2(Type t, IndentingWriter p) throws java.io.IOException
Write Module end bracketing for the given type into the output stream- Parameters:
t
- The given Typep
- The output stream.- Throws:
java.io.IOException
-
-