Package Torello.JavaDoc
Class Method
- java.lang.Object
-
- Torello.JavaDoc.Declaration
-
- Torello.JavaDoc.Callable
-
- Torello.JavaDoc.Method
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.lang.Comparable<Method>
public class Method extends Callable implements java.io.Serializable, java.lang.Comparable<Method>, java.lang.Cloneable
Similar tojava.lang.reflect
This class is heavily used internally, and can be used (if needed) to modify Java Doc Web-Pages, programmatically.
HTML Processors that sort the Web-Page "Summary-Tables" will provide instances of this class to your Summary-Sorter Handler methods. Summary-Sorter handlers usually implement theSummarySorterHelper
interface; please review that class for more about sorting Java-Doc Page Summary Tables.
The HTML Processors that upgrade Web-Page "Detail Elements" also rely heavily on this class. Please review the class:ReflHTML
for more information about Java-Doc Web-Page Detail Sections.Reflection Class: Holds all information extracted from'.java'
Source-Files about Method's identified in that file.
Instances of this Class are Obtained From:
Use of the Reflection-HTML API is *NOT REQUIRED* to perform a standard Java Doc HTML File Upgrade. This "extra API" allows for programmatic modification of Java Doc HTML. This class contains quite a bit of reflected information, and furthermore, here there is a hook to the Native Java Parser Reflection Class.ReflHTML
&SummaryTableHTML
ClassMethod
allows for storing the name, definition and modifiers list of a method.
Reflection-Classes Inheritance-Diagram
Native JDK API Hook:
All reflection classes above, also contain an additional (transient
, non-Serializable
) field that hooks into the native Java Tree-Parser Tools available in JDK Packagecom.sun.source.tree.*
If a more in-depth Code-Analysis is needed, the JDK's AST's have full and complete Parses of your Source-Code that can facilitate almost any analysis.- See Also:
- Serialized Form
Hi-Lited Source-Code:- View Here: Torello/JavaDoc/Method.java
- Open New Browser-Tab: Torello/JavaDoc/Method.java
File Size: 15,756 Bytes Line Count: 366 '\n' Characters Found
-
-
Field Summary
Serializable ID Modifier and Type Field static long
serialVersionUID
Reflection & Inspection final-String(s) Modifier and Type Field String
returnType
String
returnTypeJOW
Source-Parser Library-Hook References (Transient / Not Serializable) Modifier and Type Field MethodTree
methodTree
-
Fields inherited from class Torello.JavaDoc.Callable
autoFindID, exceptions, parameterAnnotations, parameterNames, parameterTypes, parameterTypesJOW
-
Fields inherited from class Torello.JavaDoc.Declaration
annotations, body, entity, id, jdComment, location, modifiers, name, signature
-
-
Constructor Summary
Public Constructors that are Intended for Internal-Use, Only Constructor Method(MethodTree mt, TreeUtils util)
Method(Torello.JDUInternal.DATA_RECORDS.MainLoopData.CallableSignature cSig)
Method(Torello.JDUInternal.DATA_RECORDS.MainLoopData.CallableSignature cSig, Method mFromSourceParser)
-
Method Summary
Methods: interface java.lang.Comparable Modifier and Type Method int
compareTo(Method m)
Methods: class java.lang.Object Modifier and Type Method boolean
equals(Method other)
String
toString()
String
toString(int flags)
-
Methods inherited from class Torello.JavaDoc.Callable
getParameterAnnotations, getParameterType, getParameterTypeJOW, hasAnnotatedParameters, numAnnotatedParameters, numParameters
-
-
-
-
Field Detail
-
serialVersionUID
public static final long serialVersionUID
This fulfils the SerialVersion UID requirement for all classes that implement Java'sinterface java.io.Serializable
. Using theSerializable
Implementation offered by java is very easy, and can make saving program state when debugging a lot easier. It can also be used in place of more complicated systems like "hibernate" to store data as well.- See Also:
- Constant Field Values
- Code:
- Exact Field Declaration Expression:
public static final long serialVersionUID = 1;
-
returnType
public final java.lang.String returnType
The return type of themethod
, as aString
. If this is a method with a'void'
return-type, this shall be "void".
NOTE: The parsed return-type will include the full-package name of the returned class (or interface), if themethod
returns a class or interface.
-
returnTypeJOW
public final java.lang.String returnTypeJOW
The return type of themethod
, as aString
.
JOW: Just One Word
If theString's
in a type-as-String
contain complicated or intricate detailed information, and all you need is a simple identifier, theJOW-String
stores the type-as-String
with allpackage-name
andgeneric-parameters
(if they were present / included) stripped from theString
. Furthermore, if the type was originally an inner-class, even the containing class-name is removed from theJOW-String
.
If a parameter to aMethod
, or the type of aField
had the (fully-qualified) type-name:java.util.stream.Stream.Builder<String>
, theJOW-String
would simply have the word"Builder"
.
NOTE: If the type, itself, is an array of any kind, the array-brackets will be included in thisString
-name.Output Single-Word, Type-String Input Type "Entry"
"java.util.Map.Entry<K, V>"
"Vector"
"java.util.Vector<E>"
"Vector"
"Vector<TagNode>"
"Vector"
"Vector<Vector<TagNode>>"
"Vector"
"java.util.Vector<Vector<TagNode>>"
"String"
"String"
"String"
"java.lang.String"
"String[]"
"java.lang.String[]"
"Integer"
"Integer"
"Integer[]"
"java.lang.Integer[]"
"String[]"
"String..."
"String[]"
"java.lang.String..."
NOTE: You may view theStringParse
class' methodsremoveGeneric
, andtypeToJavaIdentifier
for more information.
-
methodTree
public final transient com.sun.source.tree.MethodTree methodTree
Hook Reference to Sun/Oracle Parser-Refletion Class
Though this class offers a streamlined set of reflection features, the Native Oracle Library Reflection-Classes offer a detailed AST interface into the standard Java Compiler. If you would like to use these Tree's to provide further code analysis on your Java-Doc Pages, this field is provided as a convenience for such purposes.
If a user decides to make use of the native Sun/OracleMethodTree
instance that was used to build thisMethod
instance, it may be retrieved from thistransient
field.
-
-
Method Detail
-
toString
public java.lang.String toString()
Generates aString
of thismethod
, with most information included.
NOTE: This will not return every piece of information contained by this class. For example, both the method body, and any possible JavaDoc Comments are not included. For a more enhancedtoString()
version, call the one that accepts flags.- Overrides:
toString
in classCallable
- Returns:
- A printable
String
of this method. - See Also:
PF
,toString(int)
,StrCSV.toCSV(String[], boolean, boolean, Integer)
- Code:
- Exact Method Body:
return "Name: [" + name + "]\n" + "Signature: [" + StrPrint.abbrevEndRDSF(signature, MAX_STR_LEN, true) + "]\n" + "Modifiers: [" + StrCSV.toCSV(modifiers, true, true, null) + "]\n" + printedParameterNamesTS() + printedParameterTypesTS() + "Return Type: [" + returnType + "]\n" + printedExceptionsTS() + // This will **NEVER** be null - unless 'this' instance was built from an HTML File, // rather than a source-code file. Instances like that are only used temporarily, and // are garbage collected instantly. Do this check anyway (just in case). "Location: " + ((this.location == null) ? "null" : ('[' + this.location.quickSummary() + ']'));
-
toString
public java.lang.String toString(int flags)
This class expects a flags that has been masked using the constant (public, static, final int
) fields of classPF
. Please view this class for more information about the flags available for modifying the return-value of thistoString()
method.- Overrides:
toString
in classCallable
- Parameters:
flags
- These are the toString flags from class PF ("Print Flags"). View available flags listed in classPF
.- Returns:
- A printable
String
of this method, with comment information included as well. - See Also:
StrCSV.toCSV(String[], boolean, boolean, Integer)
,toString()
,PF
- Code:
- Exact Method Body:
boolean color = (flags & UNIX_COLORS) > 0; Ret2<Boolean, Boolean> jow = jowFlags(flags); return printedName("Method", 20, color) + printedSignature(20, color) + printedModifiers(20) + printedParamNames() + printedParamTypes(jow) + printedReturnType(jow, color) + printedExceptions() + printedLocation(20, color, (flags & BRIEF_LOCATION) > 0) + // The previous method does not add a '\n' end to the end of the returned string // These are both optional, they add a '\n' AT THE BEGINNING if one of them is included printedComments(20, color, (flags & JAVADOC_COMMENTS) > 0) + printedCallableBody(flags);
-
compareTo
public int compareTo(Method m)
Java'sinterface Comparable<T>
requirements. This does a very simple comparison using the two method'sname
field. If the name comparison will not suffice in making a decision, then the number of parameters, and parameter-types are used to making the sort-decision.- Specified by:
compareTo
in interfacejava.lang.Comparable<Method>
- Parameters:
m
- Any otherMethod
to be compared to'this' Method
- Returns:
- An integer that fulfils Java's
interface Comparable<Method> public boolean compareTo(Method m)
method requirements. - Code:
- Exact Method Body:
// Identical References if (this == m) return 0; // Sorting by ignoring case is best - usually for the looks of a list // NOTE: Returning '0' is bad, because a TreeSet will remove duplicate-elements. This // means two different meethods with the same name would not "fit" into a treeset. int ret = this.name.compareToIgnoreCase(m.name); if (ret != 0) return ret; // Try to identify a different without ignoring case. ret = this.name.compareTo(m.name); if (ret != 0) return ret; ret = this.numParameters() - m.numParameters(); if (ret != 0) return ret; for (int i=0; i < this.parameterTypesJOW.size(); i++) { ret = this.parameterTypesJOW.get(i).compareTo(m.parameterTypesJOW.get(i)); if (ret != 0) return ret; } return 0;
-
equals
public boolean equals(Method other)
This should be called an "atypical version" of the usualequals(Object other)
method. This version of equals merely compares the name and parameters-list of the method. The presumption here is that the definition of a 'method' only has meaning - at all - inside the context of aclass, interface,
orenumerated-type
where that method is defined. Since inside any'.java'
source-code file, there may only be one method with a given name and parameter-list, this shall returnTRUE
whenever the method being compared has the same name and parameter types as'this'
does.- Parameters:
other
- This may be any othermethod
. It is strongly suggested that this be amethod
defined in the same'.java'
source-code file as'this' method
.- Returns:
- This method returns
TRUE
when'this'
instance ofMethod
has both the samepublic final Sting name
and the same parameter-list as'other'
. - Code:
- Exact Method Body:
// The method's must have the same name! if (! this.name.equals(other.name)) return false; // If the number of parameters in the 'other' instance of Method differ from the number // of parameters in 'this' Method, then return FALSE immediately. It cannot be a match. if (this.numParameters() != other.numParameters()) return false; // If both of these have zero parameters, and their names have matched, return true // immediately if (this.numParameters() == 0) return true; // If any of the parameter-names are different, break immediately and return false; for (int i=0; i < this.parameterNames.size(); i++) if (! this.parameterNames.get(i).equals(other.parameterNames.get(i))) return false; // If the parameter-types listed by the javadoc '.html' file differ from the parameter // types listed in the original '.java' source-code file, then break immediately. // // NOTE: The "package-information" for the FULL CLASS OR INTERFACE NAME is not always // available. for (int i=0; i < this.parameterTypesJOW.size(); i++) if (! this.parameterTypesJOW.get(i).equals(other.parameterTypesJOW.get(i))) return false; // ALL TEST PASSED return true;
-
-