Dynamic UNOIDL Reference Browser

From Apache OpenOffice Wiki
Revision as of 08:20, 30 July 2006 by Linbios (Talk | contribs)

Jump to: navigation, search

The Dynamic UNOIDL Reference Browser has been accepted as a Google Summer of Code project 2006 out the project ideas. This project page keeps you informed about the ongoing work on this project.

Student 
Lin Rongheng (ronghenglin at gmail.com)
Mentor 
Juergen Schmidt (juergen.schmidt at sun.com)


Abstract

The OpenOffice.org API is specified in UNOIDL (UNO Interface Definition Language). UNOIDL allows a language independent description of the API and language bindings/bridges allows the use of the same API from various languages where exactly such a language binding/bridge exists. But often it is difficult for users of the API to map the language independent UNOIDL reference documentation to their preferred and used programming language, e.g. Java or StarBasic. But exactly this would speed up their daily work, a Java programmer would like to have a Javadoc like reference of the API. The idea of a “Dynamic UNOIDL Reference Browser” is to develop a new concept for documenting IDL types in XML and a concept to provide a dynamically created representation for different languages.
That means in detail that the reference browser would dynamically create a piece of XML code from the IDL definition and the provided XML documentation string for the IDL type. An appropriate XSL transformation would convert the XML representation into the required language representation. For example a Java developer gets the correct Java mapping for an IDL interface type.
The dynamically approach has the advantage that we can (in a second step) analyze the navigation path to a type and can show context specific documentation. That can be very useful for generic types which have different meanings in different contexts. For example a return type of a generic type XEnumeration from function F of interface X. The generated documentation for XEnumeration would show exactly the info which is necessary to understand and use XEnumeration in the context of function F from interface X. It shows for example that the enumeration in this context always contains objects of type Y and even more information for more complex context dependent information.


Plan

There are several steps planned for this project:

  1. Setup a XML schema for UNOIDL type descriptions including type info and documents.
    MileStone : June 21. A XML schema setuped (done!)
  2. Define the output format for Java (Some javadoc like documentation) and provide XSLT to transform from XML to "the output format" dynamically
    MileStone : July 15. The transform is tested. (done!)
  3. Provide some GUI interface for a dynamic UNOIDL reference browser, containing a xhtml/html viewer and support of referenced types.
    MileStone : July 31. A GUI interface provided.(processing)
  4. Dynamical creation of UNOIDL XML files based on a UNO type library.
    MileStone : August 20. Finishing the dynamical reation.

Currently work

  1. Setup the environment for the openoffice UNO library using a Sun Java Studio Enterprise 8.(done!)
  2. write/run some type library demos to have a clear view about the UNOIDL types.(done!)
  3. Think about how to connect the UNOIDL types to the Schema.
    some understanding of the UNOTYPE (updated 2006-6-1 9:56 (GMT+8)) (done!)
  4. Give some schema demo for simple type.
    An alpha sample example of schema (updated 2006-6-1 14:00 (GMT+8)) (done!)
  5. Give a more detail schema for the UNOIDL types.
    more detail schema (updated 2006-6-12 14:40 (GMT+8)) (done!)
  6. Add the support of Module and Constant.A new version is being setuped. The version will add the support of the module and constant. Also , in the new version, I would separate the type into two kind: a "ref-type" and a "raw-type"(means the type define itself). I will post the new version in my blog as soon as possible. After the version , I would begin to test the xml files generated by the schema. And then, after fully tested, the schema part would be finished. (updated 2006-6-13 13:40 GMT+8)
  7. The new doc representation test. (first version of doc representation has begun. in this version, i test the xml to the xhtml and think about how to make the xhtml nice  :) soon I will link the page (updated 2006-6-14 23:36 GMT+8))
  8. I have some mis-understanding of the UNOIDL, so I have to change some UNOIDL type defines, such as "typeDef","Struct","Constant".(updated 2006-6-16 12:22 GMT+8)(done!)
  9. A new version of schema released . (updated 2006-6-16 13:40 GMT+8)
    Some new features
  10. A simple sample XSLT for the XML. ( a ugly doc represenation has been setuped, but it is so ugly... :( and the xslt is very simple, just finish the "interface" type. more will come soon )(updated 2006-6-19 13:44 GMT+8)
  11. A simple demo doc-representation for the transformation has been setuped. The demo is almost the same as java-doc. ( updated 2006-6-20 20:00 GMT+8)
  12. the additional java helper class is added. The class is to help the tranformation easier. (updated 2006 2006-06-21 9:00 GMT+8) (done!)
  13. A new doc-representation is setuped, together with the xslt file. :)
    a java-doc like represenation(updated 2006-06-21 21:49 GMT+8)
    yet another view
  14. The "Struct","Service","Enum","Module" doc-represenations are aslo setuped ! (updated 2006-06-22 14:54 GMT+8)
  15. All types doc-represenations are setuped. (updated 2006-06-27 13:00 GMT+8)
  16. The schema will be redefined, using relaxng.
    a tutorial of relaxng
  17. I will on a business travel to ChongQing. I will learn relaxng on the travel. And a redefined version may be setuped during the weekend. (updated 2006-06-27 17:00 GMT+8)
  18. Back from Chongqing.
  19. a relaxng based schema is setuped and being tested. :) (updated 2006-07-03 13:21 GMT+8)
  20. A new doc-representation based relaxng schema are setuped and tested (updated 2006-07-04 17:00 GMT+8)
  21. yet another schema is setuped based on the advice of mentor (updated 2006-07-06 16:40 GMT+8)
    yet another version of schema
  22. A fully review of the schema and the xslt. :) (updated 2006-07-07 12:12 GMT+8)
  23. A picture of the browser is setuped.refer to a first version picture(updated 2006-07-11 14:33 GMT+8)
  24. some ideas about the idl browser. We may use a opensource engine for the html rendering or write by ourselves. There are some opensource engine(eg, JRex,X-Smiles,etc...)(updated 2006-07-11 14:36 GMT+8)
  25. a demo idl browser ui is setuped. And the demo viewer is also setuped.
    the first version of demo idl browser(updated 2006-07-13 14:11 GMT+8)
  26. a idl browser with type browser supported are setuped. a new version support type browser(updated 2006-07-19 17:23 GMT+8)
  27. test the xslt for the mapping of java type.. ( processing ) (updated 2006-07-24 12:29 GMT+8)
  28. a not full test of xslt using the binary library of Ooo. (updated 2006-07-27 15:10 GMT+8)
  29. a full test of xslt using the binary library of Ooo. Besides, the openoffice version is updated to 2.0 (updated 2006-07-30 16:20 GMT+8)

Prepare to do

  1. A Image of the GUI.( done!)
  2. The design/Impl of browser GUI (processing )
  3. add the type-support from the library.

A Personal Blog

Bios Space may be updated everyday, Including some other interesting things that happened around.

Personal tools