show_jar_api.txt

Path: lib/generated/examples/show_jar_api.txt
Last Update: Sat May 30 00:44:04 +0200 2015

Generate a JavaClass::ClassList, which contains all class of a given JAR in the local Maven repository. Use JavaClass::Classpath::MavenArtefact to identify and (possibly download) the JAR under question.

Author:Peter Kofler
Copyright:Copyright (c) 2009, Peter Kofler.
License:BSD License

Usage

 require 'javaclass/classlist/jar_searcher'
 require 'javaclass/classpath/maven_artefact'
 require 'javaclass/classlist/list'

Define configuration for some Maven artefacts

 JARS = [ JavaClass::Classpath::MavenArtefact.new('commons-lang', 'commons-lang', '2.6'),, ... ]

For all artefacts listed in JARS, load classes and write list files.

 JARS.each do |artefact|

1) create a new JavaClass::ClassList::List to contain the classes of this JAR

   list = JavaClass::ClassList::List.new

2) create a JavaClass::ClassList::JarSearcher

   searcher = JavaClass::ClassList::JarSearcher.new
   searcher.skip_package_classes = true

3) create the classpath of the artefact‘s JAR

   artefact.download_if_needed
   classpath = artefact.classpath

4) scan the JAR and add classes to the list

   searcher.add_list_from_classpath(artefact.version, classpath, list)

5) save the list to a file named "Commons Lang 2.6.txt" (after the artefact)

   File.open("#{artefact.title} #{artefact.version}.txt", "w") do |f|
     # print title
     f.print "*** #{artefact.title}\n"

     list.packages.each { |pkg|
       f.print "\n"
       # print package name
       f.print "* #{pkg.name}\n"

       # print class names
       pkg.classes.each { |c| f.print "   #{c.name}\n" }
     }
   end

   puts "processed #{artefact.name}"
 end

6) the generated file looks like

 *** Commons Lang

 * org.apache.commons.lang
    ArrayUtils
    BitField
    ...

 * org.apache.commons.lang.builder
    CompareToBuilder
    EqualsBuilder
    HashCodeBuilder
    ...

[Validate]