Title: Elastic JavaDoc
1Elastic JavaDoc
by
Kasper B. Graversen
Supervisor Kasper Østerbye
2Introduction Y
- JavaDoc is a tool shipped with the Java Language
which extracts comments from sourcecode and
generates a static HTML presentation. Semantics
in the comments are specified with a handful of
different _at_tag tags. - Elastic JavaDoc (EJD) is our system based on
JavaDoc. EJD, however, enables dynamic
presentations and sets forth a language for users
to create their own presentations.
3Motivation d
- Make the documentation tailored to the users
frequently changing needs - both by ordering
schemes and reducing information to the
essentials - Make the Doc. useable for more roles in the
development process (ie. project managers) - Handle bookkeeping documentation ie. change
request, bugs, todos - Customize design and layout by using colors and
to some extend replacing text with pictures (ie.
a bomb instead of the title bug)
4Architecture v
- Traditional hypertext model data, links
presentation separated, and applied with
user-preferences.
Output on screen
Presentation layer
Links
User preferences
Raw data in database tables
5The presentation 1 G
- Presentations are done with EJD custom tags for
information production and HTML tags for
formatting the presentation. - The linking is specified using EJD custom tags
which are translated to HTML links using
javascript (to enable one link to affect several
frames).
6The presentation 2 G
- Almost non-programming environment
- Associations rather than pointers
- No variables, pointers, methods or logic
operations - The EJD tags are grouped in four types of tags
- iterators of structures in the Java language
- ifs for branching
- linktags for internal and external links
- information tags which print information (method
name, method return type, )
7The presentation 2a G
- Information tags are used directly within its
iterator, rather than using explicit pointers - ltmethoditeratorgt
- ltmethodreturnType/gt ltmethodnamegt
- lt/methoditeratorgt
- rather than
- ltmethoditerator namefoogt
- ltmethodreturnType reffoo/gt ltmethodname
reffoogt - lt/methoditeratorgt
8The presentation 3 G
- Printing a list of methods in a class where the
color - of the method name determine its access modifier
- ltclassiteratorgt
- All methods in class ltclassname/gt ltbrgt
- ltmethoditeratorgt
- ltmethodif-publicgtltfont colorgreengtlt/methodi
f-publicgt - ltmethodif-privategtltfont colorredgtlt/methodif
-privategt -
- ltmethodname/gt
- lt/fontgt
- ltbrgt
- lt/methoditeratorgt
- lt/classiteratorgt
9The presentation 4 G
- An incomplete list of EJD custom tags
- ltclaceiteratorgt (clace class and interface)
- ltclassifgt ltinterfaceifgt ltimplementsinterfaceite
ratorgt ltmethoditeratorgt ltfielditeratorgt
ltclacedoc-iteratorgt - ltclaceinPackage/gt ltclaceif-isStaticgt
ltclaceif-isFinalgt ltclacefinal/gt
ltclaceaccessModifier/gt ltclaceif-privategt - ltclaceif-protectedgt ltclaceif-packagegt
ltclaceif-publicgt ltclacename/gt
ltclacedisplayName/gt ltclacesourcecode/gt - ltclassifgt
- ltconstructoriteratorgt ltclasssuperclass/gt
ltclassif-isAbstractgt ltclassabstract/gt - ltinterfaceifgt (empty)
- ltconstructoriteratorgt
- ltthrowsiteratorgt ltparameteriteratorgt
ltconstructordoc-iteratorgt ltconstructoraccessModi
fier/gt - ltconstructorif-privategt ltconstructorif-protected
gt ltconstructorif-packagegt ltconstructorif-publicgt
- ltconstructorname/gt ltconstructordisplayName/gt
ltconstructorinClass/gt ltconstructorsourcecode/gt - ltmethoditeratorgt
- ltthrowsiteratorgt ltmethoddoc-iteratorgt
ltmethodif-isSynchronizedgt ltmethodsynchronized/gt
- ltmethodif-isAbstractgt ltmethodabstract/gt
ltmethodif-isStaticgt ltmethodstatic/gt
ltmethodif-isFinalgt
10The Database E
TABLE Class id inPackage superclass
isAbstract isStatic
isFinal accessModifier name -----
------------ -------------
----------- -------- --------
------------------- ------- 1
java.util java.lang.Object
1 0 0
public AbstractCollection
18 java.util
java.util.AbstractCollection 1 0
0 public
AbstractList 38 java.util
java.lang.Object 0
0 0 private
AbstractList.Itr 48 java.util
java.util.AbstractList.Itr 0
0 0 private
AbstractList.ListItr
TABLE Method id Synthetic Synchronized
Abstract Static isFinal
accessModifier returnType name
inClace -- ----------- ----------------
---------- -------- ---------
------------------ ------------ ------
--------- 3 0 0
1 0 0
public Iterator
iterator java.util.AbstractCollection 4
0 0 1
0 0 public
int size
java.util.AbstractCollection 5 0
0 0 0
0 public
boolean isEmpty java.util.AbstractColl
ection 6 0 0
0 0 0
public boolean contains
java.util.AbstractCollection 7 0
0 0
0 0 public
Object toArray java.util.AbstractCo
llection 8 0 0
0 0 0
public Object
toArray java.util.AbstractCollection 9 0
0 0
0 0 public
boolean add
java.util.AbstractCollection
TABLE Field id isSynthetic isTransient
isVolatile isStatic isFinal
accessModifier type name
inClace -- -------------
------------- ------------ ---------
-------- ------------------ ------
------ ---------
36 1 1
0 0 0
protected int
modCount java.util.AbstractList 44
0 0 0
0 0 package
int cursor
java.util.AbstractList.Itr 45 0
0 0
0 0 package
int lastRet
java.util.AbstractList.Itr 73 0
0 0 0
0 private
int offset
java.util.SubList 74 0 0
0 0
0 private int
size
java.util.SubList 94 1
1 0 0
0 private
Set keySet
java.util.AbstractMap 95 1 1
0 0
0 private
Collection values
java.util.AbstractMap 139 1 1
0 0
0 private Object
elementData java.util.ArrayList
11Screen grabs E
Her vises et screengrab af systemet set I en
browser
12Technologies usedQ
- Database
- Servlets and JSP (Java for web)
- A plugin for the JavaDoc tool (made in Java)
13Linking 1 p-.,
- By using javascript, a link can affect more
frames - The link tag is the biggest EJD tags, but the
specifications are necessary
ltclaceiteratorgt ltnavlinkgt
ltnavpart source"/methodConst-list.jsp"
target"mclist"gt ltnavparam
entity"clacename"gtltclacename/gtlt/navparamgt
lt/navpartgt ltnavpart
source"/info.jsp" target"info"gt
ltnavparam entity"clacename"gtltclacename/gtlt/navp
aramgt lt/navpartgt ltclacedisplayName/gt
lt/navlinkgt ltbrgt lt/claceiteratorgt
The target JSP page
The frame to change
A link to a frame
The link text
14Linking 1 p-.,
- By using javascript, a link can affect more
frames - The link tag is the biggest EJD tags, but the
specifications are necessary
ltclaceiteratorgt ltnavlinkgt
ltnavpart source"/methodConst-list.jsp"
target"mclist"gt ltnavparam
entity"clacename"gtltclacename/gtlt/navparamgt
lt/navpartgt ltnavpart
source"/info.jsp" target"info"gt
ltnavparam entity"clacename"gtltclacename/gtlt/navp
aramgt lt/navpartgt ltclacedisplayName/gt
lt/navlinkgt ltbrgt lt/claceiteratorgt
The target JSP page
The frame to change
A link to a frame
The link text
15Internals of EJD T-.,
- By using javascript, a link can affect more
frames - The link tag is the biggest EJD tags, but the
specifications are necessary