Bug 225078 - [tcf][api] Add API markup to TCF Javadocs where extend / implement is allowed
Summary: [tcf][api] Add API markup to TCF Javadocs where extend / implement is allowed
Status: RESOLVED FIXED
Alias: None
Product: TCF
Classification: Tools
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P2 enhancement (vote)
Target Milestone: 0.2   Edit
Assignee: Eugene Tarassov CLA
QA Contact: Martin Oberhuber CLA
URL:
Whiteboard:
Keywords: api
Depends on:
Blocks:
 
Reported: 2008-04-01 08:38 EDT by Martin Oberhuber CLA
Modified: 2013-06-05 08:01 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Oberhuber CLA 2008-04-01 08:38:02 EDT
As TCF API is becoming more mature, it's very important that we document what classes the client is allowed to extend or instantiate, and what interfaces the client is allowed to implement (or just use).

Eclipse SDK 3.4M6 comes with API Tooling that defines new Javadoc tags for this markup. Content assist is available for these, so you can just @no<Ctrl+Space> to add the tag:
  @noextend, @noimplement, @noinstantiate, @noreference
See 
  http://wiki.eclipse.org/API_Javadoc_tags
  http://wiki.eclipse.org/API_Tooling_User_Guide
  http://wiki.eclipse.org/Api_Tooling

As example, in order to assure binary compatibility with future incarnations of TCF, any class or interface that just declares constants must be marked @noextend because otherwise addition of constants could lead to binary API breakage when a client subclasses that class and adds a method with the same name as an added field in the base class.
  http://wiki.eclipse.org/Evolving_Java-based_APIs

Therefore, e.g. 
  ErrorCodes should be an interface with @noimplement
  Base64 should be @noextend @noinstantiate
  IChannel should be @noimplement with a hint that clients should extend 
     AbstractChannel instead
  ...
Comment 1 Eugene Tarassov CLA 2008-06-26 18:02:49 EDT
Fixed
Comment 2 Martin Oberhuber CLA 2008-06-27 08:44:12 EDT
FYI,

"@noextend" is not required on final classes like TCFFileInputStream because they cannot be extended anyways. I would suggest removing the APIDoc keyword from there again.
Comment 3 Doug Schaefer CLA 2011-05-17 10:50:34 EDT
Moving bugs to new home for IP log.
Comment 4 Martin Oberhuber CLA 2013-06-05 06:28:08 EDT
Bulk change: Marking all bugs from the TM era (until June 2011) target 0.3