Constant Field Values

Contents

org.fife.*

  • org.fife.ui.hex.swing.HexEditor 
    Modifier and Type Constant Field Value
    static final int DUMP_COLUMN_WIDTH 200
    public static final java.lang.String PROPERTY_ALTERNATE_COLUMN_BG "alternateColBG"
    public static final java.lang.String PROPERTY_ALTERNATE_ROW_BG "alternateRowBG"
    public static final java.lang.String PROPERTY_ASCII_DUMP_HIGHLIGHT_COLOR "asciiDumpHighlightColor"
    public static final java.lang.String PROPERTY_HIGHLIGHT_ASCII_DUMP "highlightAsciiDump"
    public static final java.lang.String PROPERTY_SHOW_GRID "showGrid"
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.HexEditorRowHeader 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexEditorRowHeader.CellRenderer 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexEditorRowHeader.RowHeaderBorder 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexEditorRowHeader.RowHeaderListModel 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexEditorTransferHandler 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.HexTable 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexTable.CellEditor 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexTable.CellRenderer 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.HexTableModel 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexTableModel.ByteChangedUndoableEdit 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L
  • org.fife.ui.hex.swing.org.fife.ui.hex.swing.HexTableModel.BytesReplacedUndoableEdit 
    Modifier and Type Constant Field Value
    private static final long serialVersionUID 1L

org.jrd.*

  • org.jrd.backend.data.cli.CliSwitches 
    Modifier and Type Constant Field Value
    public static final java.lang.String ADD_CLASS "-addclass"
    public static final java.lang.String ADD_CLASSES "-addclasses"
    public static final java.lang.String ADD_JAR "-addjar"
    public static final java.lang.String AGENT "-agent"
    public static final java.lang.String API "-api"
    public static final java.lang.String ATTACH "-attach"
    public static final java.lang.String BASE64 "-base64bytes"
    public static final java.lang.String BOOT_CLASS_LOADER "BOOT"
    public static final java.lang.String BYTES "-bytes"
    public static final java.lang.String COMPILE "-compile"
    public static final java.lang.String COMPLETION "-completion"
    public static final java.lang.String CONFIG "-config"
    public static final java.lang.String CP "-cp"
    public static final java.lang.String DECOMPILE "-decompile"
    public static final java.lang.String DEPS "-deps"
    public static final java.lang.String DETACH "-detach"
    public static final java.lang.String H "-h"
    public static final java.lang.String HELP "-help"
    public static final java.lang.String HEX "-hex"
    public static final java.lang.String INIT "-init"
    public static final java.lang.String LIST_AGENTS "-listagents"
    public static final java.lang.String LIST_CLASSES "-listclasses"
    public static final java.lang.String LIST_CLASSESBYTECODEVERSIONS "-listbytecodeversions"
    public static final java.lang.String LIST_CLASSESDETAILS "-listdetails"
    public static final java.lang.String LIST_CLASSESDETAILSBYTECODEVERSIONS "-listdetailsversions"
    public static final java.lang.String LIST_JVMS "-listjvms"
    public static final java.lang.String LIST_OVERRIDES "-listoverrides"
    public static final java.lang.String LIST_PLUGINS "-listplugins"
    public static final java.lang.String OVERWRITE "-overwrite"
    public static final java.lang.String P "-p"
    public static final java.lang.String PATCH "-patch"
    public static final java.lang.String R "-r"
    public static final java.lang.String REMOVE_OVERRIDES "-removeoverrides"
    public static final java.lang.String REVERT "-R"
    public static final java.lang.String SAVE_AS "-saveas"
    public static final java.lang.String SAVE_LIKE "-savelike"
    public static final java.lang.String SEARCH "-search"
    public static final java.lang.String SYSTEM_CLASS_LOADER "SYSTEM"
    public static final java.lang.String VERBOSE "-verbose"
    public static final java.lang.String VERSION "-version"
    public static final java.lang.String VERSIONS "-versions"
  • org.jrd.backend.data.cli.Help 
    Modifier and Type Constant Field Value
    public static final java.lang.String ADD_CLASS_FORMAT "-addclass <PUC> <FQN> <CLASS FILE>"
    private static final java.lang.String ADD_CLASS_TEXT "Add class is currently unable to add class, unless all its dependencies are already in running vm. Stdin used if no file."
    public static final java.lang.String ADD_CLASSES_FORMAT1 "-addclasses <PUC> (<CLASS FILE1>)^n [BOOT]"
    public static final java.lang.String ADD_CLASSES_FORMAT2 "-addclasses <PUC> (<FQN1> <CLASS FILE1>)^n [BOOT]"
    private static final java.lang.String ADD_CLASSES_TEXT1 "Will add all classes into jar, guess theirs FQN, and sent them into selected VM. If you are adding system classes, yo have to specify BOOT"
    private static final java.lang.String ADD_CLASSES_TEXT2 "Will add all classes into jar, set theirs FQN, and sent them into selected VM. If you are adding system classes, yo have to specify BOOT"
    public static final java.lang.String ADD_JAR_FORMAT "-addjar <PUC> <JAR FILE> [BOOT]"
    private static final java.lang.String ADD_JAR_TEXT "Will add all classes from jar into selected VM. If you are adding system classes, yo have to specify BOOT"
    public static final java.lang.String API_FORMAT "-api <PUC>"
    private static final java.lang.String API_TEXT "Will print out dynamic, real-to-time api which can be used to insert fields/methods to running vm"
    public static final java.lang.String ATTACH_FORMAT "-attach <PID>"
    static final java.lang.String ATTACH_TEXT "Will only attach the agent to selected pid. Prints out the port for future usage."
    public static final java.lang.String BASE_SHARED_FORMAT " <PUC> <CLASS REGEX>..."
    public static final java.lang.String BASE_SHARED_OPTIONAL_FORMAT " <PUC> [<CLASS REGEX>...]"
    public static final java.lang.String BASE64_FORMAT "-base64bytes <PUC> <CLASS REGEX>..."
    private static final java.lang.String BASE64_TEXT "Print Base64 encoded binary form of requested classes of a process."
    public static final java.lang.String BYTES_FORMAT "-bytes <PUC> <CLASS REGEX>..."
    private static final java.lang.String BYTES_TEXT "Print binary form of requested classes of a process"
    public static final java.lang.String COMPILE_FORMAT "-compile [-p <PLUGIN>] [-cp <PUC>] [-r] <PATH>..."
    public static final java.lang.String COMPLETION_FORMAT "-completion [<completion1, completion2,...>]"
    private static final java.lang.String COMPLETION_TEXT "Without parameter Will print available code completions. With parameter ofcoded completion names(delimited by \',\' or \' \'), will print details of that exact set of completion."
    public static final java.lang.String CONFIG_FORMAT "-config"
    private static final java.lang.String CONFIG_TEXT "Print path to main config file. In verbose mode prints file itself.."
    public static final java.lang.String DECOMPILE_FORMAT "-decompile <PUC> <PLUGIN> <CLASS REGEX>..."
    private static final java.lang.String DECOMPILE_TEXT "Decompile and print classes of a process with the specified decompiler plugin.\nJavap can be passed options by appending them without spaces: \'javap-v-public ...\' executes as \'javap -v -public ...\'"
    public static final java.lang.String DEPS_FORMAT "-deps <PUC> <CLASS REGEX>..."
    private static final java.lang.String DEPS_TEXT "Print all deps of the selected class(es)."
    public static final java.lang.String DETACH_FORMAT "-detach URL xor PORT xor PID"
    public static final java.lang.String HELP_FORMAT "-help, -h"
    private static final java.lang.String HELP_TEXT "Print this help text."
    public static final java.lang.String HEX_FORMAT "-hex"
    private static final java.lang.String HEX_TEXT "Switch all binary operations to work in hex-readbale format (including patching...)"
    public static final java.lang.String INIT_FORMAT "-init <PUC> <FQN>"
    private static final java.lang.String INIT_TEXT "Try to initialize a class in a running JVM (has no effect in FS VMs). Because class loading is lazy, the class you need might be missing, eg. java.lang.Override."
    private static final java.lang.String LAUNCHER_LINUX "./start.sh"
    private static final java.lang.String LAUNCHER_WINDOWS "start.bat"
    public static final java.lang.String LIST_AGENTS_FORMAT "-listagents"
    private static final java.lang.String LIST_AGENTS_TEXT "JRD keeps record off all local agents, dropping them once inaccessible.Use this to list known agents.\nYou can append -versions to get also version of agent (may be incompatible or not ours at all)"
    public static final java.lang.String LIST_CLASSES_FORMAT "-listclasses <PUC> [<CLASS REGEX>...]"
    private static final java.lang.String LIST_CLASSES_TEXT "List all loaded classes of a process, optionally filtering them.\nOnly \'-savelike exact\' or \'-savelike default\' are allowed as saving modifiers."
    public static final java.lang.String LIST_CLASSESBYTECODEVERSIONS_FORMAT "-listbytecodeversions <PUC> [<CLASS REGEX>...]"
    private static final java.lang.String LIST_CLASSESBYTECODEVERSIONS_TEXT "list all classes with bytecode version (slow!)"
    public static final java.lang.String LIST_CLASSESDETAILS_FORMAT "-listdetails <PUC> [<CLASS REGEX>...]"
    private static final java.lang.String LIST_CLASSESDETAILS_TEXT "Similar to -listclasses, only more details are printed about classes."
    public static final java.lang.String LIST_CLASSESDETAILSVERSIONS_FORMAT "-listdetailsversions <PUC> [<CLASS REGEX>...]"
    private static final java.lang.String LIST_CLASSESDETAILSVERSIONS_TEXT "list all classes with details and bytecode version (slow!)"
    public static final java.lang.String LIST_JVMS_FORMAT "-listjvms"
    private static final java.lang.String LIST_JVMS_TEXT "List all local Java processes and their PIDs."
    public static final java.lang.String LIST_OVERRIDES_FORMAT "-listoverrides <PUC>"
    private static final java.lang.String LIST_OVERRIDES_TEXT "List all currently overwritten classes"
    public static final java.lang.String LIST_PLUGINS_FORMAT "-listplugins"
    private static final java.lang.String LIST_PLUGINS_TEXT "List all currently configured decompiler plugins and their statuses."
    private static final java.lang.String NOTES_FQN "<FQN> is the fully qualified name of a class as per the Java Language Specification \u00a76.7."
    private static final java.lang.String NOTES_PUC "<PUC>, short for PidUrlClasspath, can be one of:"
    private static final java.lang.String NOTES_REGEX "When using <CLASS REGEX>, escape dollar signs \'$\' of inner classes to \'\\$\'; otherwise they mean the end-of-line."
    private static final java.lang.String NOTES_SAVE "<SAVE METHOD> can be one of:"
    private static final java.lang.String NOTES_SLASH "All options can be with either one or two leading slashes (\'-\')."
    public static final java.lang.String OVERWRITE_FORMAT "-overwrite <PUC> <FQN> [<CLASS FILE>]"
    private static final java.lang.String OVERWRITE_TEXT "Overwrite class of a process with new bytecode. If <CLASS FILE> is not set, standard input is used."
    public static final java.lang.String PATCH_FORMAT "-patch <PUC> <PLUGIN>xor<ADDITIONAL-SOURCE/CLASS-PATH (-hex) (-R)"
    private static final java.lang.String PATCH_TEXT "You may ignore plugin/path param in -hex mode.You can apply patch from STD-IN to classes in <PUC>. The patch can be on source, or on binary if -hex is provided\nThe header (+++/---) must contain dot-delimited FQN of class. All before / (or \\) is stripped. .class$/.java$ is omitted.\nSee gui for the examples.\nIf plugin is specified, runtime classpath is decompiled, patched, compiled (is not (de)compiled with -hex) and uploaded.\n If plugin is not specified, then source from additional-source-path is patched, compiled and uploaded.\nIf -hex is set, then binary from additional-class-path is patched and uploaded. In both cases, class is INIT before all.\nThis is a bit different from gui, where patch is patching just one file.\nIn cli can contain several files, and is moreover direct shortcut to init, bytes, (decompile,) patch,( detect bytecode level, compile,) upload.\nAs patch tool, -R will invert the patch\nFor debugging -savelike dir can be used to save patched and compiled output. -savelike fqn can be used to save patched sources"
    public static final java.lang.String REMOVE_OVERRIDES_FORMAT "-removeoverrides <PUC> removalRegex"
    private static final java.lang.String REMOVE_OVERRIDES_TEXT "remove all matching overwrittes of classes"
    public static final java.lang.String SAVE_AS_FORMAT "-saveas <PATH>"
    private static final java.lang.String SAVE_AS_TEXT "All outputs will be written to PATH instead of to standard output."
    public static final java.lang.String SAVE_LIKE_FORMAT "-savelike <SAVE METHOD>"
    private static final java.lang.String SAVE_LIKE_TEXT "Specify how saving will behave."
    public static final java.lang.String SEARCH_FORMAT "-search <PUC> <CLASS REGEX>... searchedSubstring true/false (with/without details)"
    private static final java.lang.String SEARCH_TEXT "Will search ascii/utf8 substring in regex-subset binaries in remote vm.\nTo search in decompiled classes use grep.You can misuses -hex to include bytecode level"
    public static final java.lang.String VERBOSE_FORMAT "-verbose"
    private static final java.lang.String VERBOSE_TEXT "All exceptions and some debugging strings will be printed to standard error."
    public static final java.lang.String VERSION_FORMAT "-version"
    private static final java.lang.String VERSION_TEXT "Print version project name, version and build timestamp."
  • org.jrd.backend.data.cli.utils.Saving 
    Modifier and Type Constant Field Value
    public static final java.lang.String DEFAULT "default"
    public static final java.lang.String DIR "dir"
    public static final java.lang.String EXACT "exact"
    public static final java.lang.String FQN "fqn"
  • org.jrd.frontend.frame.main.AgentsManager 
    Modifier and Type Constant Field Value
    private static final java.lang.String VM_TITLE "Known agents: "
  • org.jrd.frontend.frame.main.GlobalConsole 
    Modifier and Type Constant Field Value
    public static final java.lang.String CPLC_AC "ADDING_CLASS"
    public static final java.lang.String CPLC_DUPLICATED_CODE_VERBOSITY_CONSTANT "io.github.mkoncek.cplc.log-to-provider"
    public static final java.lang.String CPLC_IA "IGNORE_ARRAYS"
    public static final java.lang.String CPLC_IL "IGNORE_LAMBDAS"
    public static final java.lang.String CPLC_R "INTERESTING"
    public static final java.lang.String CPLC_SO "SKIPPING_OVER"
  • org.jrd.frontend.frame.main.MainFrameView 
    Modifier and Type Constant Field Value
    private static final java.lang.String DECOMPILER_CARD "decompilerView"
    public static final java.lang.String FS_VM_COMMAND "FS VM"
    public static final java.lang.String REMOTE_VM_ACTION "remote VM"
    private static final java.lang.String WELCOME_CARD "welcomePanel"
  • org.jrd.frontend.frame.main.OverridesManager 
    Modifier and Type Constant Field Value
    private static final java.lang.String VM_TITLE "Currently overridden classes in "
  • org.jrd.frontend.frame.main.decompilerview.BytecodeDecompilerView 
    Modifier and Type Constant Field Value
    private static final java.lang.String ATTACH_BUTTON_TEXT "Attach"
    private static final java.lang.String DETACH_BUTTON_TEXT "Detach"
  • org.jrd.frontend.frame.main.decompilerview.DecompilationController 
    Modifier and Type Constant Field Value
    public static final java.lang.String CLASSES_NOPE "Classes couldn\'t be loaded.Do you have agent configured?On JDK 9 and higher, did you run the target process with \'-Djdk.attach.allowAttachSelf=true\'? Or maybe agent is not loaded? Or bad agent?"

org.kcc.*

  • org.kcc.wordsets.BytemanKeywords 
    Modifier and Type Constant Field Value
    public static final java.lang.String AFTERREAD_DESC " [ type .] field [count | ALL ] or $var-or-idx [count | ALL ] ; follwoing AT, An AFTER READ specification is identical to an AT READ specification except that it locates the trigger point after the getField or variable read operation."
    public static final java.lang.String AFTERWRITE_DESC "following AT, [ type .] field [count | ALL ] or $var-or-idx [count | ALL ] ; \n\n\nAT WRITE and AFTER WRITE specifiers are the same as the corresponding READ specifiers except that they correspond to assignments to the named field or named variable in the source code i.e. they identify putField or istore, dstore, etc instructions.\n\nNote that location AT WRITE $0 or, equivalently, AT WRITE $this will never match any candidate trigger method because the target object for an instance method invocation is never assigned.\n\nNote also that for a given local variable, localvar, location AT WRITE $localvar or, equivalently, AT WRITE $localvar 1 identifies the location immediately after the local variable is initialised i.e. it is treated as if it were specified as AFTER WRITE $localvar. This is necessary because the variable is not in scope until after it is initialised. This also ensures that the local variable which has been written can be safely accessed in the rule body.\n"
    private static final java.lang.String AS_TARGET "The AS TARGET clause tells the type checker to use the target type named in the CLASS or INTERFACE clause when type checking the expression $0 or $this. It also tells the type checker to resolve class names using the class loader of the target type."
    private static final java.lang.String AS_TRIGGER "\n\nBy contrast, if the rule uses AS TRIGGER semantics then when the rule is matched against class LinkedList that dynamic type will be used during typecheck to type expression $0 and type check would succeed. The same applies when the rule is matched against any other class that implements a method with signature append(Object). The rule will still fail to typecheck when the trigger class is ArrayList leading to a type error and disabling of injection for that case.\n\nThere are benefits to using the dynamic type scope established at the point of injection as well as the potential for errors as seen above. One common case where using AS TRIGGER semantics is preferable arises when the dynamically determined trigger classes belong to a child classloader of the target class. If AS TRIGGER semantics are used then the body of the rule can reference other classes defined by the child class loader. If AS TARGET semantics were used instead then those types would not be in scope. In many cases this is simply resolved by injecting direct into each specific subclass but cases do arise where it is easier to employ a single rule which relies on injection through an interface and/or down a class hierarchy.\n\nFor hysterical reasons, Byteman uses AS TRIGGER (dynamic) type scoping as the default semantics. However, it also supports AS TARGET (lexical) type scoping. In fact, you can mix and match the two approaches for individual rules or rule groups by inserting an AS TRIGGER or AS TARGET clause into your scripts. If the clause appears in the body of a rule, between the location (AT) and condition (IF) clauses, then it defines the type scope for that specific rule. If it appears at the top level, outside of a rule body then it (re-)defines the default type scope to be used for subsequent rules which do not provide their own declaration.\n"
    private static final java.lang.String COUNTER_DESC "Counters\n\nThe rule engine provides Counters which maintain global counts across independent rule triggerings. They can be created and initialised, read, incremented and decremented in order track and respond to the number of times various triggerings or firings have happened. Note that unlike CountDowns there are no special semantics associated with decrementing a Counter to zero. They may even have negative values. The API defined by the helper class is\n\n public boolean createCounter(Object o)\n public boolean createCounter(Object o, int count)\n public boolean deleteCounter(Object o)\n public int incrementCounter(Object o, int amount)\n public int incrementCounter(Object o)\n public int decrementCounter(Object o)\n public int readCounter(Object o)\n public int readCounter(Object o, boolean zero)\n\nAs before, Counters are identified by an arbitrary object. All methods are designed to be used in rule conditions or actions.\n\ncreateCounter can be called to create a new Counter associated with o. If argument count is not supplied then the value of the new Counter defaults to o. createCounter returns true if a new Counter was created and false if a Counter associated with o already exists. Note that the API is designed to ensure that race conditions between multiple threads trying to create a Counter from rule conditions can only have one winner.\n\ndeleteCounter can be called to delete any existing Counter associated with o. It returns true if the Counter was deleted and false if no Counter was associated with o. Note that the API is designed to ensure that race conditions between multiple threads trying to delete a Counter from rule conditions can only have one winner.\n\nincrementCounter can be called to increment the Counter associated with o. If no such Counter exists it will create one with value 0 before incrementing it. incrementCounter returns the new value of the Counter. If amount is omitted it defaults to 1.\n\ndecrementCounter is equivalent to calling incrementCounter(o, -1) i.e. it adds -1 to the value of the counter.\n\nreadCounter can be called to read the value of the Counter associated with o. If no such Counter exists it will create one with value 0. If the optional flag argument zero is passed as true the counter is atomically read and zeroed. zero defaults to false.\n"
    public static final java.lang.String ENTRY_DESC "Following AT, An AT ENTRY specifier normally locates the trigger point before the first executable instruction in the trigger method. An exception to this occurs in the case of a constructor method in which case the trigger point is located before the first instruction following the call to the super constructor or redirection call to an alternative constructor. This is necessary to ensure that rules do not attempt to bind and operate on the instance before it is constructed."
    public static final java.lang.String EXC_DESC "An AT EXCEPTION EXIT specifier identifies the point where a method returns control back to its caller via unhandled exceptional control flow. This can happen either because the method itself has thrown an exception or because it has called out to some other method which has thrown an exception. It can also happen when the method executes certain operations in the Java language, for example dereferencing a null object value or indexing beyond the end of an array.\n\nA rule injected with this location is triggered at the point where the exception would normally propagate back to the caller. Once rule execution completes then normally the exception flow resumes. However, the rule may subvert this resumed flow by executing a RETURN. It may also explicitly rethrow the original exception or throw some newly created exception by executing a THROW (n.b. if the latter is a checked exception then it must be declared as a possible exception by the trigger method).\n\nn.b. when several rules specify the same location the order of injection of trigger calls usually follows the order of the rules in their respective scripts. The exception to this is AFTER locations where the the order of injection is the reverse to the order of occurrence.\n\nn.b.b. when a location specifier (other than ENTRY or EXIT) is used with an overriding rule the rule code is only injected into the original method or overriding methods if the location matches the method in question. So, for example, if location AT READ myField 2 is employed then the rule will only be injected into implementations of the method which include two loads of field myField. Methods which do not match the location are ignored.\n\nn.b.b.b. for historical reasons CALL may be used as a synonym for INVOKE, RETURN may be used as a synonym for EXIT and the AT in an AT LINE specifier is optional.\n"
    private static final java.lang.String FLAG_DESC "Flags\n\nThe rule engine provides a simple mechanism for setting, testing and clearing global flags. The API defined by the helper class is\n\n public boolean flag(Object identifier)\n public boolean flagged(Object identifier)\n public boolean clear(Object identifier)\n\nAs before, Flags are identified by an arbitrary object. All three methods are designed to be used either in conditions or actions.\n\nflag can be called to ensure that the Flag identified by identifier is set. It returns true if the Flag was previously clear otherwise false. Note that the API is designed to ensure that race conditions between multiple threads trying to set a Flag from rule conditions can only have one winner.\n\nflagged tests whether the Flag identified by identifier is set. It returns true if the Flag is set otherwise false.\n\nclear can be called to ensure that the Flag identified by identifier is clear. It returns true if the Flag was previously set otherwise false. Note that the API is designed to ensure that race conditions between multiple threads trying to clear a Flag from rule conditions can only have one winner.\n"
    private static final java.lang.String HELPER_DESC "\n\nA rule can specify it\u2019s own helper class if it wants to extend, override or replace the set of built-in calls available for use in its event, condition or action. For example, in the following rule, class FailureTester is used as the helper class. Its boolean instance method doWrongState(CoordinatorEngine) is called from the condition to decide whether or not to throw a WrongStateException.\n\n # helper example\n RULE help yourself\n CLASS com.arjuna.wst11.messaging.engines.CoordinatorEngine\n METHOD commit\n HELPER com.arjuna.wst11.messaging.engines.FailureTester\n AT EXIT\n IF doWrongState($0)\n DO throw new WrongStateException()\n ENDRULE\n\nA helper class does not need to implement any special interface or inherit from any pre-defined class. It merely needs to provide instance methods to resolve the built-in calls which occur in the rule. The only limitations are\n\n your helper class must not be final\n\n Byteman needs to be able to subclass your helper in order to interface it to the rule execution engine\n\n your helper class must not be abstract\n\n Byteman needs to be able to instantiate your helper when the rule is triggered\n\n you must provide a suitable public constructor for your helper class\n\n by default Byteman will instantiate it using the empty constructor (i.e. the one with signature ())\n\n if you provide a constructor that accepts the rule as argument (i.e. with signature (org.jboss.byteman.agent.rule.Rule)) Byteman will use that for preference\n\nBy sub-classing the default helper it is possible to extend or override the default set of methods. For example, the following rule employs a helper which adds emphasis to the debug messages printed by the rule.\n\n # helper example 2\n RULE help yourself but rely on others\n CLASS com.arjuna.wst11.messaging.engines.CoordinatorEngine\n METHOD commit\n HELPER HelperSub\n AT ENTRY\n IF NOT flagged($this)\n DO debug(\"throwing wrong state\");\n flag($this);\n throw new WrongStateException()\n ENDRULE\n\n class HelperSub extends Helper\n {\n public HelperSub(Rule rule)\n {\n super(rule);\n }\n public boolean debug(String message)\n {\n super(\"!!! IMPORTANT EVENT !!! \" + message);\n }\n }\n\nThe rule is still able to employ the built-in methods flag and flagged defined by the default helper class.\n\nThe examples above use a HELPER line in the rule body to reset the helper for a specific rule. It is also possible to reset the helper for all subsequent rules in a file by adding a HELPER line outside of the scope of a rule. So, in the following example the first two rules use class HelperSub while the third one uses class YellowSub.\n\n HELPER HelperSub\n # helper example 3\n RULE helping hand\n . . .\n RULE I can\'t help myself\n . . .\n RULE help, I need somebody\n CLASS . . .\n METHOD . . .\n HELPER YellowSub\n . . .\n\n"
    public static final java.lang.String INVOKE_DESC "following AT [ type .] method [ ( argtypes ) ] [count | ALL ]\nAT INVOKE and AFTER INVOKE specifiers are like READ and WRITE specifiers except that they identify invocations of methods or constructors within the trigger method as the trigger point. The method may be identified using a bare method name or the name may be qualified by a, possibly package-qualified, type or by a descriptor. A descriptor consists of a comma-separated list of type names within brackets. The type names identify the types of the method parameters and may be prefixed with package qualifiers and employ array bracket pairs as suffixes."
    private static final java.lang.String LOP_SHARED "\nByteman provides the English language keywords listed below which can be used in place of the related standard Java operators (in brackets):\nOR (||), AND (&&), NOT (!), LE (< =), LT (<), EQ (==), NE (!=), GE (>=), GT (>), TIMES (*), DIVIDE (/), PLUS (+), MINUS (-), MOD (%), Keywords are recognised in either upper or lower (but not mixed) case.\nKeywords may clash with the same names where they they occur as legal Java identifiers in the target classes and methods specified in Byteman rules"
    private static final java.lang.String NEW_DESC "[ type ] [ [] ] * [count | ALL ]\n\n\nAT NEW and AFTER NEW specifiers identify locations in the target method where a new operation creates a Java object class or array class. An AT NEW rule is triggered before the object or array is allocated. An AFTER NEW rule is triggered after creation and initialization of the object or array.\n\nSelection of the NEW trigger location may be constrained by supplying a variety of optional arguments, a type name, one or more pairs of square braces and either an integer count or the keyword ALL. These arguments may all be specified independently and they each serve to select a more or less precise set of matches for points where the rule may be considered for injection into the target method.\n\nIf a type name is supplied injection is limited to points where an instance (or array) of the named type is created. The type name can be supplied without a package qualifier, in which case any new operation with a type sharing the same non-package qualified name will match.\n\nIf the type name is omitted then injection can occur at any point where an instance (or array) is created.\n\nNote that extends and implements relationships are ignored when matching. For example, if a rule specifies AT NEW Foo then the location will not be matched against operation new Foobar even if FooBar extends Foo. Similarly, when Foo implements IFoo specifying location AT NEW IFoo will not be matched. Indeed specifying any interface is a mistake. new operations always instantiate a specific class and never an interface. So, locations specifying an interface name will never match.\n\nIf one or more brace pairs are included then injection is limited to points in the method where an array with the equivalent number of dimensions is created. So, for example specifying AT NEW [][] will match any new operation where a 2d array is created, irrespective of what the array base type is, By contrast, specifying AT NEW int[] will only match a new operation where a 1d int array is created. If no braces are supplied then matches will be restricted to new operations where a Java object class (i.e. a non-array class) is instantiated.\n\nWhen there are multiple canidate injection points in a method an integer count may be supplied to pick a specific injection point (count defaults to 1 if it is left unspecified). Keyword ALL can be supplied to request injection at all matching injection points.\n"
    public static final java.lang.String READ_DESC "[type .] field [count | ALL ] or $var-or-idx [count | ALL ] ; follwoing AT, an AT READ specifier followed by a field name locates the trigger point before the first mention of an object field whose name matches the supplied field name i.e. it corresponds to the first occurred of a corresponding getField instruction in the bytecode. If a type is specified then the getField instruction will only be matched if the named field is declared by a class whose name matches the supplied type. If a count N is supplied then the Nth matching getField will be used as the trigger point. Note that the count identifies to the Nth textual occurence of the field access, not the Nth field access in a particular execution path at runtime. If the keyword ALL is specified in place of a count then the rule will be triggered at all matching getField calls. \n\nAn AT READ specifier followed by a $-prefixed local variable name, method parameter name or method parameter index locates the trigger point before the first instruction which reads the corresponding local or method parameter variable i.e. it corresponds to an iload, dload, aload etc instruction in the bytecode. If a count N is supplied then the Nth matching read will be used as the trigger point. Note that the count identifies to the Nth textual occurrence of a read of the variable, not the Nth access in a particular execution path at runtime. If the keyword ALL is specified in place of a count then the rule will be triggered before every read of the variable.\n\nNote that it is only possible to use local or parameter variable names such as $i, $this or $arg1 if the trigger method bytecode includes a local variable table, e.g. if it has been compiled with the -g flag. By contrast, it is always possible to refer to parameter variable read operations using the index notation $0, $1 etc (however, note that location AT READ $0 will only match where the trigger method is an instance method).\n"
    public static final java.lang.String SYNC_DESC "[ count | ALL ]\nAT SYNCHRONIZE and AT AFTER SYNCHRONIZE specifiers identify synchronization blocks in the target method, i.e. they correspond to MONITORENTER instructions in the bytecode. Note that AFTER SYNCHRONIZE identifies the point immediately after entry to the synchronized block rather than the point immediately after exit from the block."
    public static final java.lang.String THORW_DESC " [count | ALL ] \n An AT THROW specifier identifies a throw operation within the trigger method as the trigger point. The throw operation may be qualified by a, possibly package-qualified, typename identifying the lexical type of the thrown exception. If a count N is supplied then the location specifies the Nth textual occurrence of a throw. If the keyword ALL is specified in place of a count then the rule will be triggered at all matching occurrences of a throw."
    private static final java.lang.String TIMER_DESC "Timers\n\nThe rule engine provides Timers which allow measurement of elapsed time between triggerings. Timers can be created, read, reset and deleted via the following API\n\n public boolean createTimer(Object o)\n public long getElapsedTimeFromTimer(Object o)\n public long resetTimer(Object o)\n public boolean deleteTimer(Object o)\n\nAs before, Timers are identified by an arbitrary object. All methods are designed to be used in rule conditions or actions.\n\ncreateTimer can be called to create a new Timer associated with o. createTimer returns true if a new Timer was created and false if a Timer associated with o already exists.\n\ngetElapsedTimeFromTimer can be called to obtain the number of elapsed milliseconds since the Timer associated with o was created or since the last call to resetTimer. If no timer associated with o exists a new timer is created before returning the elapsed time.\n\nresetTimer can be called to zero the Timer associated with o. It returns the number of seconds since the Timer was created or since the last previous call to resetTimer If no timer associated with o exists a new timer is created before returning the elapsed time.\n\ndeleteTimer can be called to delete the Timer associated with o. deleteTimer returns true if a new Timer was deleted and false if no Timer associated with o exists.\n"
    public static final java.lang.String TRACE_CLOSE_DESC "(Object identifier, String filename)\ntraceClose closes the file associated with identifier and removes the association, returning true. If no open file is associated with identifier it returns false."
    public static final java.lang.String TRACE_DESC "(Object identifier, String filename) or (Object identifier)\ntrace prints message to file associated with identifier, returning true. If no open file is associated with identifier then a file will be opened and associated with identifier as if a call to trace had been made with no file name supplied. If identifier is omitted then the output is written to System.out.\nA caveat applies to the all trace* descriptions for three special cases. If identifier is null or the string \"out\", then trace and traceln write to System.out. If identifier is the string \"err\", then trace and traceln write to System.err. traceOpen and traceClose always return false immediately if identifier has any of these values. Calls to trace(message) and traceln(message) which omit identifier are implemented by calling, respectively, trace(\"out\", message) and traceln(\"out\", message)."
    public static final java.lang.String TRACE_OPEN_DESC "(Object identifier, String filename) or (Object identifier)\ntraceOpen opens the file identified by fileName and associates it with identifier, returning true. filename can be either a relative or absolute path. Relative file names are located relative to the current working directory of the JVM. If there is already a file associated with identifier then traceOpen immediately returns false. If a file with the given name already exists it is opened in append mode. If filename is omitted then a unique name is generated for the file which is guaranteed not to match any existing trace file in the current working directory."
    public static final java.lang.String TRACELN_DESC "(Object identifier, String filename) or (Object identifier)\ntraceln prints message to file associated with identifier and appends a newline to the file, returning true. If no open file is associated with identifier then a file will be opened and associated with identifier as if a call to trace had been made "
    public static final java.lang.String WRITE_DESC "following AT, [ type .] field [count | ALL ] or $var-or-idx [count | ALL ] ; \n\nAT WRITE and AFTER WRITE specifiers are the same as the corresponding READ specifiers except that they correspond to assignments to the named field or named variable in the source code i.e. they identify putField or istore, dstore, etc instructions.\n\nNote that location AT WRITE $0 or, equivalently, AT WRITE $this will never match any candidate trigger method because the target object for an instance method invocation is never assigned.\n\nNote also that for a given local variable, localvar, location AT WRITE $localvar or, equivalently, AT WRITE $localvar 1 identifies the location immediately after the local variable is initialised i.e. it is treated as if it were specified as AFTER WRITE $localvar. This is necessary because the variable is not in scope until after it is initialised. This also ensures that the local variable which has been written can be safely accessed in the rule body.\n"
  • org.kcc.wordsets.JrdApiKeywords 
    Modifier and Type Constant Field Value
    private static final java.lang.String CLAZZS "Clazzs fields and methods are bound to class.\nThey represents Class\' public static fields/methods, so you can access them globally.\nTheirs main reason is if you really needs two methods/fields of same name in several classes.\nThats why al those methods have Class clazz as first parameter - the owner class.\nNote, that this is usually not used, and you are usually ok with `Global` field/method.\n\n"
    private static final java.lang.String CLAZZS_FINAL " Unlike global, it is bound to class. Unlike Local, which is bound to instance of class, this one is bound to Class declaration. Otherwise same as Local/Global fake fields/methods\n"
    private static final java.lang.String CLAZZS_UNBOUND "\nThis call is lacking initial Class, and is trying to detect it.It is not always what you require\n"
    private static final java.lang.String GLOBAL "Global fields and methods are unbound.\nThey represents C/Pascal const wittou namesapce so you can access them globally.\nIt is simple pair name/value.\n\n"
    private static final java.lang.String INTRO "Unless you are running DCEVM jdk, most JVMs will not allow you to add field or methods.\nTo help with this issue, JRD have appi where you can store instances of objects (eg runnable:) or boxed primitive). and then reuse the.\nYou put them to the api via name and value, sometimes with parent class or instance, dependnign on api.\nIn implementation, those are simple hashmaps. But still it is 200% replacement for\nByteman\'s LinkMaps, CountDowns, Flags, Counters and Timers.\nWhen hesitating, feel free to decompile content of org.jrd.agent.api package.\n\nYou you usually need only SET and GEToRcREATE methods og Local/Global scope. Others are for special cases.\n\n"
    private static final java.lang.String LOCAL "Local fields and methods are bound to instacne of class - object.\nThey represents Class\' public fields/methods, so you can access them globally.\nTheirs main reason is as you would expect - to have field/method per instance.\nThats why al those methods have Object object as first parameter - the owner object.\n\n"
    private static final java.lang.String SAFE "This operation is thread-safe (synchronised).\n\n"
    private static final java.lang.String UNSAFE "This operation is NOT thread-safe. Oterwise same as its safe alignment\n"