[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [pde-dev] [api tools] Extensibility proposals and questions | 
Hi,
 
first of all, if 
there is a mailing list better suited for PDE Incubator API Tools, 
please point me there.
 
I see some potential 
to introduce extensibility to the api tools:
1. 
SourceContainer
  What classes have 
  to be taken into account?
  
    Currently this is done for bundles, jars and directories 
    by scanning the provided URL for .class files. And then filtering out what 
    is not considered 
    API.            
    For bundles using PDE code and thus relying on plugin 
    metadata (Exported-Packages), for jars and directories .internal in the 
    package name is used to determine non-API.
     
    Just for PDE use cases I would see more than one Container 
    implementation, e.g. target (analyse a full installation), updatesite (it 
    may be neccessary to analyse jars contained in jars) and 
    bundle.
    Other technologies may have other metadata to describe api 
    elements.
     
    I would propose 
    to establish an extension point to provide SourceContainers for a type that 
    can be set in the control.xml like
    <container 
    type="type-id" location="location-of-sources"/>. Additionally I would 
    allow container elements to have arbitrary child nodes so one can add type 
    specific data.
   
  Another question 
  would be what else has to be considered API?
  
    Shouldn't a 
    plugin api report contain extension points as api 
    elements?
    Other 
    technologies may have other non-java elements to be considered 
    api.
     
    To allow 
    technology specific non-java api elements 
    one possibility may be to allow SourceContainers to provide 
    special ApiReaders that produce IApiElements, the default one being a java 
    class analyser. Of course one would also have to provide compare and report 
    handling for those elements.
 
2. Api 
definition
  What is Api 
  breakage?
  For example if an 
  interface is not designed to be implemented by clients, addition of methods is 
  no breakage.
  Such an extension 
  would have to plug into both IApiElement creation and comparison. For example 
  one might define an annotation @DoNotImplement and annotate an interface with 
  it and add a method in the next version. During IApiElement creation this 
  additional information has to be stored, during comparison the Diff found by 
  the Comparator can be deleted before being passed to the 
  reporter.
 
What do you think? 
Any comments are welcome.
 
 
Why is there a 
ClassFileReader implemented in the api tools? Why not use the one in 
JDT?
As far as a I 
understood the DevGuide the reason is performance. Is the special parser 
significantly faster than the JDT parser?
To allow extenders 
to analyse additional data (like annotations) more information may be neccessary 
than currently provided by the specialized parser.
 
 
Kind 
regards,
Jan
 
Jan 
Lohre
Developer
SAP 
AG
Dietmar-Hopp-Allee
69190 Walldorf 
Germany
T   +49 6227 7 
43017
F   +49 6227 
78-43856
 
Sitz der 
Gesellschaft/Registered Office: Walldorf, Germany
Vorstand/SAP Executive 
Board:
Henning 
Kagermann(Sprecher/CEO), Shai Agassi, Léo Apotheker, Werner Brandt, Claus 
Heinrich, Gerhard Oswald, Peter Zencke
Vorsitzender des 
Aufsichtsrats/Chairperson of the SAP Supervisory Board: Hasso 
Plattner
Registergericht/Commercial 
Register: Mannheim
No HRB 350269
 
Diese E-Mail kann 
Betriebs- oder Geschäftsgeheimnisse oder sonstige vertrauliche Informationen 
enthalten. Sollten Sie diese E-Mail irrtümlich erhalten haben, ist Ihnen eine 
Kenntnissnahme des Inhalts, eine Vervielfältigung oder Weitergabe der E-Mail 
ausdrücklich untersagt. Bitte benachrichtigen Sie uns und vernichten Sie die 
empfangene E-Mail.
Vielen Dank.
 
This e-mail may contain 
trade secrets or privileged, undisclosed, or otherwise confidential information. 
If you have received this e-mail in error, you are hereby notified that any 
review, copying, or distribution of it is strictly prohibited. Please inform us 
immediatly and destroy the original transmittal.
Thank you for your 
cooperation