Path: | lib/generated/examples/chart_class_dependencies.txt |
Last Update: | Sat May 30 00:44:04 +0200 2015 |
Example usage of JavaClass::Dependencies::Graph: Iterate all classes of a classpath and construct the Java dependency graph.
Author: | Peter Kofler |
Copyright: | Copyright (c) 2009, Peter Kofler. |
License: | BSD License |
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)