JML

org.jmlspecs.jmlspec
Class JspPrettyPrinter

java.lang.Object
  extended byorg.multijava.util.Utils
      extended byorg.multijava.mjc.MjcPrettyPrinter
          extended byorg.jmlspecs.jmlspec.JspPrettyPrinter
All Implemented Interfaces:
Cloneable, Constants, Constants, MjcVisitor

public class JspPrettyPrinter
extends MjcPrettyPrinter

This class overrides some of the pretty-printer methods to produce a specification skeleton for the class AST begin walked.


Field Summary
protected  String ident
           
(package private)  boolean inInterface
           
(package private)  boolean interfaceIsPublic
           
(package private) static long modifiersToOmit
           
private  String non_null_decl_mod
           
protected  JspOptions options
          Alias to the command-line options structure.
protected  String originalName
           
 
Fields inherited from class org.multijava.mjc.MjcPrettyPrinter
forInit, modUtil, nl, p, pos, TAB_SIZE, WIDTH
 
Fields inherited from class org.multijava.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
Fields inherited from interface org.multijava.mjc.Constants
ACC_MODIFIER_FLAGS_MASK, ACC_NON_NULL, ACC_NON_NULL_BY_DEFAULT, ACC_NULLABLE, ACC_NULLABLE_BY_DEFAULT, ACC_PURE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, AMID_JAVA_MATH, AMID_MAX, AMID_SAFE_MATH, CMP_VERSION, IMPLICITLY_NON_NULL, JAV_ASSERTION_ERROR, JAV_CLASS, JAV_CLASSLOADER, JAV_CLASSNOTFOUND_EXCEPTION, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_NOCLASSDEFFOUND_ERROR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RMJ_RUNTIME_EXCEPTION, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_SERIALIZABLE, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_SUPER, JAV_THIS, JAV_THROWABLE, MJ_ANCHOR, NULLITY_MODS, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LAND, OPE_LE, OPE_LNOT, OPE_LOR, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_MAX, TID_SHORT, TID_VOID, UNIV_ARRAY_TMP, UNIV_TMP
 
Fields inherited from interface org.multijava.util.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, ATT_ANCHOR, ATT_BRIDGE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_DISPATCHER, ATT_EXCEPTIONS, ATT_GENERIC, ATT_GENERIC_FUNCTIONS, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_MM_BODY, ATT_REDIRECTOR, ATT_RMJ_GLUE, ATT_RMJ_SIGNATURE, ATT_RUNTIME_VISIBLE_ANNOTATIONS, ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATT_SIGNATURE, ATT_SOURCEFILE, ATT_SYNTHETIC, ATT_UNIVERSE_FIELD, ATT_UNIVERSE_METHOD, ATT_UNIVERSE_VERSION, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, 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_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_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_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_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_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_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc2_w, opc_ldc_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_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
JspPrettyPrinter(File file, ModifierUtility modUtil, JspOptions options, String originalName)
          construct a pretty printer object for java code
 
Method Summary
protected  void doDefaultConstructor(ArrayList methods)
          Checks if there are any constructors; if not adds a default constructor.
 boolean isVisible(long modifiers)
          Returns true if the given member modifier value makes the class member visible with the current options.specLevel() setting.
private  void printAnnotationStart()
          Print an annotations start.
private  void printClassAnnotationStart()
          Print an annotations start.
protected  void printClassModifiers(JClassDeclaration self, long modifiers)
           
 void printDeprecatedIfAppropriate(JMemberDeclaration self)
           
protected  void printInterfaceModifiers(JInterfaceDeclaration self, long modifiers)
           
protected  void visitClassBody(ArrayList inners, ArrayList methods, JPhylum[] fieldsAndInits)
           
 void visitClassDeclaration(JClassDeclaration self)
          prints a class declaration
 void visitCompilationUnit(JCompilationUnit self)
          prints a compilation unit
 void visitConstructorDeclaration(JConstructorDeclaration self)
          Adds an empty specification comment and does not print the body.
 void visitFieldDeclaration(JFieldDeclaration self)
          prints a field declaration without any initializer
 void visitFormalParameters(JFormalParameter self)
          prints a formal parameter, omitting "final" modifier
protected  void visitInterfaceBody(ArrayList methods, JPhylum[] fieldsAndInits, ArrayList inners)
           
 void visitInterfaceDeclaration(JInterfaceDeclaration self)
          prints an interface declaration
 void visitMethodDeclaration(JMethodDeclaration self)
          Adds an empty specification comment and does not print the body.
 void visitTLMethodBody(JBlock body)
           
 void visitTopLevelMethodDeclaration(MJTopLevelMethodDeclaration self)
          prints an external method declaration
 
Methods inherited from class org.multijava.mjc.MjcPrettyPrinter
acceptAll, close, newLine, print, print, print, print, print, print, print, setPos, toString, visitAddExpression, visitArgs, visitArrayAccessExpression, visitArrayDimsAndInit, visitArrayInitializer, visitArrayLengthExpression, visitAssertStatement, visitAssignmentExpression, visitBinaryExpression, visitBitwiseExpression, visitBlockStatement, visitBooleanLiteral, visitBreakStatement, visitByteLiteral, visitCastExpression, visitCatchClause, visitCharLiteral, visitClassBlock, visitClassExpression, visitClassOrGFImport, visitComment, visitComments, visitCompoundAssignmentExpression, visitCompoundStatement, visitCompoundStatement, visitConditionalAndExpression, visitConditionalExpression, visitConditionalOrExpression, visitConstructorBlock, visitContinueStatement, visitDivideExpression, visitDoStatement, visitDoubleLiteral, visitEmptyStatement, visitEqualityExpression, visitExplicitConstructorInvocation, visitExpressionListStatement, visitExpressionStatement, visitFieldExpression, visitFloatLiteral, visitForStatement, visitGenericFunctionDecl, visitIfStatement, visitInitializerDeclaration, visitInstanceofExpression, visitIntLiteral, visitJavadoc, visitLabeledStatement, visitLocalVariableExpression, visitLongLiteral, visitMathModeExpression, visitMethodCallExpression, visitMinusExpression, visitModuloExpression, visitMultExpression, visitNameExpression, visitNewAnonymousClassExpression, visitNewArrayExpression, visitNewObjectExpression, visitNullLiteral, visitOrdinalLiteral, visitPackageImport, visitPackageName, visitParenthesedExpression, visitPostfixExpression, visitPrefixExpression, visitRealLiteral, visitRelationalExpression, visitReturnStatement, visitShiftExpression, visitShortLiteral, visitStringLiteral, visitSuperExpression, visitSwitchGroup, visitSwitchLabel, visitSwitchStatement, visitSynchronizedStatement, visitThisExpression, visitThrowStatement, visitTryCatchStatement, visitTryFinallyStatement, visitTypeDeclarationStatement, visitTypeNameExpression, visitUnaryExpression, visitUnaryPromoteExpression, visitVariableDeclarationStatement, visitVariableDefinition, visitWarnExpression, visitWhileStatement
 
Methods inherited from class org.multijava.util.Utils
assertTrue, assertTrue, combineArrays, escapeString, escapeString, fail, fail, getFilePath, hasFlag, hasOtherFlags, parsePathParts, relativePathTo, splitQualifiedName, splitQualifiedName, stripJavaModifiers, stripNonJavaModifiers, stripPrivateModifier, unescapeString, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

options

protected JspOptions options
Alias to the command-line options structure.


originalName

protected String originalName

ident

protected String ident

inInterface

boolean inInterface

interfaceIsPublic

boolean interfaceIsPublic

modifiersToOmit

static final long modifiersToOmit

non_null_decl_mod

private final String non_null_decl_mod
Constructor Detail

JspPrettyPrinter

public JspPrettyPrinter(File file,
                        ModifierUtility modUtil,
                        JspOptions options,
                        String originalName)
construct a pretty printer object for java code

Parameters:
file - the file into which the code is generated
Method Detail

isVisible

public boolean isVisible(long modifiers)
Returns true if the given member modifier value makes the class member visible with the current options.specLevel() setting.


visitCompilationUnit

public void visitCompilationUnit(JCompilationUnit self)
Description copied from class: MjcPrettyPrinter
prints a compilation unit

Specified by:
visitCompilationUnit in interface MjcVisitor
Overrides:
visitCompilationUnit in class MjcPrettyPrinter

visitClassDeclaration

public void visitClassDeclaration(JClassDeclaration self)
Description copied from class: MjcPrettyPrinter
prints a class declaration

Specified by:
visitClassDeclaration in interface MjcVisitor
Overrides:
visitClassDeclaration in class MjcPrettyPrinter

visitInterfaceDeclaration

public void visitInterfaceDeclaration(JInterfaceDeclaration self)
Description copied from class: MjcPrettyPrinter
prints an interface declaration

Specified by:
visitInterfaceDeclaration in interface MjcVisitor
Overrides:
visitInterfaceDeclaration in class MjcPrettyPrinter

printInterfaceModifiers

protected void printInterfaceModifiers(JInterfaceDeclaration self,
                                       long modifiers)
Overrides:
printInterfaceModifiers in class MjcPrettyPrinter

printClassModifiers

protected void printClassModifiers(JClassDeclaration self,
                                   long modifiers)
Overrides:
printClassModifiers in class MjcPrettyPrinter

visitClassBody

protected void visitClassBody(ArrayList inners,
                              ArrayList methods,
                              JPhylum[] fieldsAndInits)
Overrides:
visitClassBody in class MjcPrettyPrinter

doDefaultConstructor

protected void doDefaultConstructor(ArrayList methods)
Checks if there are any constructors; if not adds a default constructor.


visitInterfaceBody

protected void visitInterfaceBody(ArrayList methods,
                                  JPhylum[] fieldsAndInits,
                                  ArrayList inners)
Overrides:
visitInterfaceBody in class MjcPrettyPrinter

printAnnotationStart

private void printAnnotationStart()
Print an annotations start.


printClassAnnotationStart

private void printClassAnnotationStart()
Print an annotations start.


visitMethodDeclaration

public void visitMethodDeclaration(JMethodDeclaration self)
Adds an empty specification comment and does not print the body.

Specified by:
visitMethodDeclaration in interface MjcVisitor
Overrides:
visitMethodDeclaration in class MjcPrettyPrinter

visitConstructorDeclaration

public void visitConstructorDeclaration(JConstructorDeclaration self)
Adds an empty specification comment and does not print the body.

Specified by:
visitConstructorDeclaration in interface MjcVisitor
Overrides:
visitConstructorDeclaration in class MjcPrettyPrinter

visitTopLevelMethodDeclaration

public void visitTopLevelMethodDeclaration(MJTopLevelMethodDeclaration self)
prints an external method declaration

Specified by:
visitTopLevelMethodDeclaration in interface MjcVisitor
Overrides:
visitTopLevelMethodDeclaration in class MjcPrettyPrinter

visitTLMethodBody

public void visitTLMethodBody(JBlock body)
Overrides:
visitTLMethodBody in class MjcPrettyPrinter

visitFieldDeclaration

public void visitFieldDeclaration(JFieldDeclaration self)
prints a field declaration without any initializer

Specified by:
visitFieldDeclaration in interface MjcVisitor
Overrides:
visitFieldDeclaration in class MjcPrettyPrinter

visitFormalParameters

public void visitFormalParameters(JFormalParameter self)
prints a formal parameter, omitting "final" modifier

Specified by:
visitFormalParameters in interface MjcVisitor
Overrides:
visitFormalParameters in class MjcPrettyPrinter

printDeprecatedIfAppropriate

public void printDeprecatedIfAppropriate(JMemberDeclaration self)

JML

JML is Copyright (C) 1998-2002 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This release depends on code from the MultiJava project and is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.