# Example usage of JavaClass::Dependencies::Graph: Iterate all classes of a # classpath and construct the Java dependency graph.
- # Author
-
Peter Kofler
- # Copyright
-
Copyright © 2009, Peter Kofler.
- # License
# # === Steps #
# require 'javaclass/dsl/mixin' # require 'javaclass/dependencies/graph' # require 'javaclass/dependencies/class_node' # require 'javaclass/dependencies/yaml_serializer' # require 'javaclass/dependencies/graphml_serializer' #
# 1) create the classpath of a given location # cp = classpath(location) #
# dependencies = JavaClass::Dependencies::Graph.new
#
# 2) iterate all classes of the classpath # cp.values.each do |clazz| # next unless clazz.access_flags.public? #
# 3) add a JavaClass::Dependencies::ClassNode
for each class to the graph # dependencies.add(JavaClass::Dependencies::ClassNode.new(clazz)
) # end #
# 4) resolve all dependencies of all nodes in the graph. Now each class (Node) has a dependency to # all imported classes (Nodes). # dependencies.resolve_dependencies # puts “#{dependencies.to_a.size} classes loaded” #
# 5) save the result in various formats, e.g. GraphML or YAML, skipping outgoing edges information # JavaClass::Dependencies::GraphmlSerializer.new
(:edges => :no_text).save('class_dependencies', dependencies) # JavaClass::Dependencies::YamlSerializer.new
(:outgoing => :none).save('class_dependencies', dependencies)