javaclass 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +188 -194
  3. data/Readme.txt +33 -29
  4. data/examples/generate_class_lists.rb +16 -9
  5. data/history.txt +15 -4
  6. data/javaclass.gemspec +10 -8
  7. data/lib/generated/examples/chart_class_dependencies.txt +35 -0
  8. data/lib/generated/examples/chart_module_dependencies.txt +43 -0
  9. data/lib/generated/examples/check_interface_names.txt +36 -0
  10. data/lib/generated/examples/count_classes_in_modules.txt +31 -0
  11. data/lib/generated/examples/cumulative_dependencies.txt +28 -0
  12. data/lib/generated/examples/find_all_imported_types.txt +38 -0
  13. data/lib/generated/examples/find_incoming_dependency_graph.txt +73 -0
  14. data/lib/generated/examples/find_layers_of_modules.txt +70 -0
  15. data/lib/generated/examples/find_referenced_modules.txt +41 -0
  16. data/lib/generated/examples/find_unreferenced_classes.txt +66 -0
  17. data/lib/generated/examples/generate_class_lists.txt +53 -0
  18. data/lib/generated/examples/show_jar_api.txt +64 -0
  19. data/lib/generated/examples/simple_usage.txt +38 -0
  20. data/lib/javaclass/classfile/access_flag_constants.rb +32 -5
  21. data/lib/javaclass/classfile/access_flags.rb +39 -20
  22. data/lib/javaclass/classfile/attributes/attributes.rb +134 -0
  23. data/lib/javaclass/classfile/class_access_flags.rb +37 -0
  24. data/lib/javaclass/classfile/class_file_attributes.rb +62 -0
  25. data/lib/javaclass/classfile/class_version.rb +0 -1
  26. data/lib/javaclass/classfile/constant_pool.rb +17 -11
  27. data/lib/javaclass/classfile/constants/single_reference.rb +53 -0
  28. data/lib/javaclass/classfile/fields.rb +37 -0
  29. data/lib/javaclass/classfile/java_class_header.rb +22 -13
  30. data/lib/javaclass/classfile/java_class_header_shortcuts.rb +6 -2
  31. data/lib/javaclass/classfile/methods.rb +37 -0
  32. data/lib/javaclass/classlist/jar_searcher.rb +38 -4
  33. data/lib/javaclass/classpath/temporary_unpacker.rb +1 -1
  34. data/lib/javaclass/string_hexdump.rb +1 -1
  35. data/license.txt +7 -7
  36. data/test/data/access_flags/{AccessFlagsTestInner$1.class → AccessFlagsTestAnonym$1.class} +0 -0
  37. data/test/data/access_flags/{AccessFlagsTestInner.class → AccessFlagsTestAnonym.class} +0 -0
  38. data/test/data/access_flags/AccessFlagsTestAnonym.java +9 -0
  39. data/test/data/access_flags/AccessFlagsTestPublic_javap.txt +1 -0
  40. data/test/data/constant_pool/Java8_JavaFX_Animation$1_Tag15.class +0 -0
  41. data/test/data/constant_pool/Java9_Activation_module-info_Tag20.class +0 -0
  42. data/test/data/jar_searcher/JarClassListTest.jar +0 -0
  43. data/test/data/jar_searcher/PublicClass.java +44 -1
  44. data/test/data/jar_searcher/make.bat +1 -2
  45. data/test/{test_access_flags.rb → test_class_access_flags.rb} +91 -93
  46. data/test/test_class_file_attributes.rb +57 -0
  47. data/test/test_constant_pool.rb +31 -0
  48. data/test/test_jar_searcher.rb +40 -7
  49. data/test/test_javaclass_api.rb +2 -2
  50. data/test/test_string_hexdump.rb +4 -1
  51. data/test/ts_all_tests.rb +4 -2
  52. metadata +100 -116
  53. data/test/data/access_flags/AccessFlagsTestInner$2.class +0 -0
  54. data/test/data/access_flags/AccessFlagsTestInner.java +0 -13
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1d2365f0669ad709753366f66070bd05668c73becda0c878e94d346337d1a3cb
4
+ data.tar.gz: 3157e8329a20c00a28e14f9c23c7b21e07984aef67ff83cbc8e0b6cff5ea1cae
5
+ SHA512:
6
+ metadata.gz: f0879048da8004e427b7d8d48125f13a041059e8e3ae537ab4a72b2a48b9ca012880ddfbe427d49d32c9dd5d205448e8f36d461a1194c17c9b3d6dbc4e094201
7
+ data.tar.gz: 548019c98321c52573b6c239b456c7a9fb048f2a3900ca6d5987a494d5568aeffc22923783b656a821092d05292f5bd7f6ec1b98620ff374b9244c4f1c8a08ed
data/Rakefile CHANGED
@@ -1,194 +1,188 @@
1
- require 'net/http'
2
- require 'rubygems'
3
- require 'rubygems/gem_runner' # install and uninstall
4
- require 'rubygems/package_task'
5
- require 'rake'
6
- require 'rake/clean' # for clean/clobber
7
- require 'rake/testtask'
8
- require 'rake/packagetask'
9
- require File.dirname(__FILE__) + '/dev/example_task'
10
-
11
- # Test, package and publish functions.
12
- # Author:: Peter Kofler
13
- # See:: http://rake.rubyforge.org/files/doc/rakefile_rdoc.html
14
- # Acknowledgement:: Building this Rake file was supported as System One Research Day. Thank you System One for funding Open Source :-)
15
-
16
- RDOC_DIR = 'html'
17
- RDOC_REPO = 'api'
18
-
19
- gemspec = eval(IO.readlines('javaclass.gemspec').join)
20
- full_gem_name = "#{gemspec.name}-#{gemspec.version}"
21
-
22
- desc 'Validates the gemspec'
23
- task :validate_gem do
24
- gemspec.validate
25
- end
26
-
27
- desc 'Displays the current version'
28
- task :version do
29
- puts gemspec.version
30
- end
31
-
32
- # :test
33
- Rake::TestTask.new do |t|
34
- t.test_files = gemspec.test_files
35
- t.warning = true
36
- # t.verbose = false is default
37
- end
38
-
39
- begin
40
- require 'rcov/rcovtask'
41
-
42
- # :rcov
43
- Rcov::RcovTask.new do |t|
44
- t.test_files = gemspec.test_files
45
- t.warning = true
46
- t.rcov_opts << "--sort=coverage"
47
- t.rcov_opts << "--only-uncovered"
48
- end
49
-
50
- rescue LoadError
51
- # skip if not installed
52
- warn("rcov not installed. coverage not available. #{$!}")
53
- end
54
-
55
- desc 'Find missing test methods with ZenTest'
56
- task :zentest do
57
- files = gemspec.files.find_all { |f| f =~ /^#{gemspec.require_path}.*\.rb$/ } + gemspec.test_files
58
- output = `ruby -I#{gemspec.require_path} -e "require 'rubygems'; load(Gem.bin_path('ZenTest', 'zentest'))" #{files.join(' ')}`
59
- puts output.gsub(/^#.*\n/, '') # skip all ZenTest comments
60
- end
61
-
62
- # :gem
63
- Gem::PackageTask.new(gemspec) do |pkg|
64
- pkg.need_zip = true
65
- end
66
-
67
- # :package, :clobber_package, :repackage
68
- Rake::PackageTask.new(gemspec.name, gemspec.version) do |pkg|
69
- #pkg.need_tar = true - no compress in tar on unxutils in Windows
70
- #pkg.need_tar_gz = true - no compress in tar on unxutils in Windows
71
- pkg.need_zip = true
72
- pkg.package_files.include gemspec.files
73
- end
74
-
75
- desc 'Install the gem locally'
76
- task :install_gem => :package do
77
- Gem::GemRunner.new.run ['install', "pkg/#{full_gem_name}"]
78
- end
79
-
80
- desc 'Uninstall the gem'
81
- task :uninstall_gem do
82
- Gem::GemRunner.new.run ['uninstall', gemspec.name]
83
- end
84
-
85
- # Helper method to execute Mercurial with the _params_ array.
86
- # The +hg+ executable must be in the path.
87
- def hg(params)
88
- puts `hg #{params.join(' ')}`
89
- end
90
-
91
- desc 'Tag current version in Hg'
92
- task :tag do
93
- hg ['tag', '-f', "-m \"Released gem version #{gemspec.version}\"", "#{full_gem_name}"]
94
- # hg ['push']
95
- puts 'Tag created. Don\'t forget to push'
96
- puts 'hg push'
97
- end
98
-
99
- # internal - desc 'Release the gem to Rubygems'
100
- task :release_rubygems => :package do
101
- puts "Releasing #{full_gem_name} to Rubygems"
102
- Gem::GemRunner.new.run ['push', "pkg/#{full_gem_name}.gem"]
103
- end
104
-
105
- desc 'Package and upload gem to Rubygems'
106
- task :publish_gem => [:clobber_package, :example, :package, :release_rubygems]
107
-
108
- # :example, :clobber_example, :reexample
109
- example_task_lib = Rake::ExampleTask.new do |example|
110
- example.example_files.include 'examples/**/*.rb'
111
- end
112
- task :clobber_rdoc => [:clobber_example]
113
- task :rdoc => [:example]
114
- task :package => [:example]
115
-
116
- begin
117
- require 'rdoc/task'
118
- SomeRDocTask = RDoc::Task
119
- rescue LoadError
120
- require 'rake/rdoctask'
121
- SomeRDocTask = Rake::RDocTask
122
- end
123
-
124
- # :rdoc, :clobber_rdoc, :rerdoc
125
- SomeRDocTask.new do |rdoc|
126
- rdoc.rdoc_dir = RDOC_DIR # 'html' is default anyway
127
- rdoc.title = "#{full_gem_name} Documentation"
128
- rdoc.main = 'Readme.txt'
129
-
130
- # examples are generated later and not necessarily available at definition time
131
- examples = example_task_lib.conversion_pairs.map { |a| a[1] }
132
-
133
- rdoc.rdoc_files.include(*examples)
134
- rdoc.rdoc_files.include('lib/**/*.rb', *gemspec.extra_rdoc_files)
135
- end
136
-
137
- # Helper method to add target="_parent" to all external links in _file_ html.
138
- def add_href_parent(file)
139
- lines = IO.readlines(file).collect do |line|
140
- if line =~ /(href=(?:'|")https?:\/\/)/
141
- "#{$`}target=\"_parent\" #{$1}#{$'}"
142
- else
143
- line
144
- end
145
- end
146
- File.open(file, 'w') { |f| f.print lines.join }
147
- end
148
-
149
- desc 'Fix the RDoc hrefs in framesets'
150
- task :fix_rdoc => [:rdoc] do
151
- Dir["#{RDOC_DIR}/**/*.html"].each { |file| add_href_parent(file) }
152
- end
153
-
154
- # Helper method to add the gem version _dir_ into index _file_ to frameset links.
155
- def add_frameset_version(file, dir)
156
- lines = IO.readlines(file).collect do |line|
157
- if line =~ /(frame src=")/
158
- "#{$`}#{$1}#{dir}/#{$'}"
159
- else
160
- line
161
- end
162
- end
163
- File.open(file, 'w') { |f| f.print lines.join }
164
- end
165
-
166
- desc 'Publish the RDoc files to repository'
167
- task :publish_rdoc => [:clobber_rdoc, :fix_rdoc] do
168
- puts "Releasing #{full_gem_name} to API"
169
- remote_repo = "https://bitbucket.org/pkofler/#{HG_PROJECT}.#{RDOC_REPO}/"
170
- remote_dir = "#{gemspec.version}"
171
-
172
- FileUtils.rm_r RDOC_REPO rescue nil
173
- hg ['clone', remote_repo, RDOC_REPO]
174
-
175
- FileUtils.rm_r "#{RDOC_REPO}/#{remote_dir}" rescue nil
176
- FileUtils.cp_r RDOC_DIR, "#{RDOC_REPO}/#{remote_dir}"
177
-
178
- # modify index, update redirect in frameset
179
- file = "#{RDOC_REPO}/index.html"
180
- FileUtils.cp "#{RDOC_REPO}/#{remote_dir}/index.html", file
181
- add_frameset_version(file, remote_dir)
182
-
183
- hg ['addremove', '-q', "-R #{RDOC_REPO}"]
184
- hg ['ci', "-m \"Update Rdoc for version #{gemspec.version}\"", "-R #{RDOC_REPO}"]
185
- hg ['tag', '-f', "-m \"Released gem version #{gemspec.version}\"", "-R #{RDOC_REPO}", "#{full_gem_name}"]
186
- # hg ['push', "-R #{RDOC_REPO}"]
187
- puts 'API site created. Don\'t forget to push'
188
- puts "hg push -R #{RDOC_REPO}"
189
- end
190
-
191
- # :clean :clobber
192
- CLOBBER.include(RDOC_REPO, 'ClassLists', 'fullClassList*.txt')
193
-
194
- task :default => :test
1
+ require 'net/http'
2
+ require 'rubygems'
3
+ require 'rubygems/gem_runner' # install and uninstall
4
+ require 'rubygems/package_task'
5
+ require 'rake'
6
+ require 'rake/clean' # for clean/clobber
7
+ require 'rake/testtask'
8
+ require 'rake/packagetask'
9
+ require File.dirname(__FILE__) + '/dev/example_task'
10
+
11
+ # Test, package and publish functions.
12
+ # Author:: Peter Kofler
13
+ # See:: http://rake.rubyforge.org/files/doc/rakefile_rdoc.html
14
+ # Acknowledgement:: Building this Rake file was supported as System One Research Day. Thank you System One for funding Open Source :-)
15
+
16
+ RDOC_DIR = 'html'
17
+ RDOC_REPO = 'api'
18
+
19
+ gemspec = eval(IO.readlines('javaclass.gemspec').join)
20
+ full_gem_name = "#{gemspec.name}-#{gemspec.version}"
21
+
22
+ desc 'Validates the gemspec'
23
+ task :validate_gem do
24
+ gemspec.validate
25
+ end
26
+
27
+ desc 'Displays the current version'
28
+ task :version do
29
+ puts gemspec.version
30
+ end
31
+
32
+ # :test
33
+ Rake::TestTask.new do |t|
34
+ t.test_files = gemspec.test_files
35
+ t.warning = true
36
+ # t.verbose = false is default
37
+ end
38
+
39
+ begin
40
+ require 'rcov/rcovtask'
41
+
42
+ # :rcov
43
+ Rcov::RcovTask.new do |t|
44
+ t.test_files = gemspec.test_files
45
+ t.warning = true
46
+ t.rcov_opts << "--sort=coverage"
47
+ t.rcov_opts << "--only-uncovered"
48
+ end
49
+
50
+ rescue LoadError
51
+ # skip if not installed
52
+ # warn("rcov not installed. coverage not available. #{$!}")
53
+ end
54
+
55
+ desc 'Find missing test methods with ZenTest'
56
+ task :zentest do
57
+ files = gemspec.files.find_all { |f| f =~ /^#{gemspec.require_path}.*\.rb$/ } + gemspec.test_files
58
+ output = `ruby -I#{gemspec.require_path} -e "require 'rubygems'; load(Gem.bin_path('ZenTest', 'zentest'))" #{files.join(' ')}`
59
+ puts output.gsub(/^#.*\n/, '') # skip all ZenTest comments
60
+ end
61
+
62
+ # :gem
63
+ Gem::PackageTask.new(gemspec) do |pkg|
64
+ pkg.need_zip = true
65
+ end
66
+
67
+ # :package, :clobber_package, :repackage
68
+ Rake::PackageTask.new(gemspec.name, gemspec.version) do |pkg|
69
+ #pkg.need_tar = true - no compress in tar on unxutils in Windows
70
+ #pkg.need_tar_gz = true - no compress in tar on unxutils in Windows
71
+ pkg.need_zip = true
72
+ pkg.package_files.include gemspec.files
73
+ end
74
+
75
+ desc 'Install the gem locally'
76
+ task :install_gem => :package do
77
+ Gem::GemRunner.new.run ['install', "pkg/#{full_gem_name}"]
78
+ end
79
+
80
+ desc 'Uninstall the gem'
81
+ task :uninstall_gem do
82
+ Gem::GemRunner.new.run ['uninstall', gemspec.name]
83
+ end
84
+
85
+ # Helper method to execute Git with the _params_ array.
86
+ # The +git+ executable must be in the path.
87
+ def git(params)
88
+ puts `git #{params.join(' ')}`
89
+ end
90
+
91
+ desc 'Tag current version in Git'
92
+ task :tag do
93
+ git ['tag', "#{full_gem_name}"]
94
+ # git ['push']
95
+ puts 'Tag created. Don\'t forget to push'
96
+ end
97
+
98
+ # internal - desc 'Release the gem to Rubygems'
99
+ task :release_rubygems => :package do
100
+ puts "Releasing #{full_gem_name} to Rubygems"
101
+ Gem::GemRunner.new.run ['push', "pkg/#{full_gem_name}.gem"]
102
+ end
103
+
104
+ desc 'Package and upload gem to Rubygems'
105
+ task :publish_gem => [:clobber_package, :example, :package, :release_rubygems]
106
+
107
+ # :example, :clobber_example, :reexample
108
+ example_task_lib = Rake::ExampleTask.new do |example|
109
+ example.example_files.include 'examples/**/*.rb'
110
+ end
111
+ task :clobber_rdoc => [:clobber_example]
112
+ task :rdoc => [:example]
113
+ task :package => [:example]
114
+
115
+ begin
116
+ require 'rdoc/task'
117
+ SomeRDocTask = RDoc::Task
118
+ rescue LoadError
119
+ require 'rake/rdoctask'
120
+ SomeRDocTask = Rake::RDocTask
121
+ end
122
+
123
+ # :rdoc, :clobber_rdoc, :rerdoc
124
+ SomeRDocTask.new do |rdoc|
125
+ rdoc.rdoc_dir = RDOC_DIR # 'html' is default anyway
126
+ rdoc.title = "#{full_gem_name} Documentation"
127
+ rdoc.main = 'Readme.txt'
128
+
129
+ # examples are generated later and not necessarily available at definition time
130
+ examples = example_task_lib.conversion_pairs.map { |a| a[1] }
131
+
132
+ rdoc.rdoc_files.include(*examples)
133
+ rdoc.rdoc_files.include('lib/**/*.rb', *gemspec.extra_rdoc_files)
134
+ end
135
+
136
+ # Helper method to add target="_parent" to all external links in _file_ html.
137
+ def add_href_parent(file)
138
+ lines = IO.readlines(file).collect do |line|
139
+ if line =~ /(href=(?:'|")https?:\/\/)/
140
+ "#{$`}target=\"_parent\" #{$1}#{$'}"
141
+ else
142
+ line
143
+ end
144
+ end
145
+ File.open(file, 'w') { |f| f.print lines.join }
146
+ end
147
+
148
+ desc 'Fix the RDoc hrefs in framesets'
149
+ task :fix_rdoc => [:rdoc] do
150
+ Dir["#{RDOC_DIR}/**/*.html"].each { |file| add_href_parent(file) }
151
+ end
152
+
153
+ # Helper method to add the gem version _dir_ into index _file_ to frameset links.
154
+ def add_frameset_version(file, dir)
155
+ lines = IO.readlines(file).collect do |line|
156
+ if line =~ /(frame src=")/
157
+ "#{$`}#{$1}#{dir}/#{$'}"
158
+ else
159
+ line
160
+ end
161
+ end
162
+ File.open(file, 'w') { |f| f.print lines.join }
163
+ end
164
+
165
+ desc 'Publish the RDoc files to repository'
166
+ task :publish_rdoc => [:clobber_rdoc, :fix_rdoc] do
167
+ puts "Releasing #{full_gem_name} API"
168
+ version_dir = "#{gemspec.version}"
169
+
170
+ FileUtils.rm_r RDOC_REPO rescue nil
171
+ FileUtils.mkdir RDOC_REPO
172
+
173
+ FileUtils.rm_r "#{RDOC_REPO}/#{version_dir}" rescue nil
174
+ FileUtils.cp_r RDOC_DIR, "#{RDOC_REPO}/#{version_dir}"
175
+
176
+ # modify index, update redirect in frameset
177
+ file = "#{RDOC_REPO}/index.html"
178
+ FileUtils.cp "#{RDOC_REPO}/#{version_dir}/index.html", file
179
+ add_frameset_version(file, version_dir)
180
+
181
+ puts 'API created. Copy to hosting\4_bitbucket.org\api'
182
+ puts 'API created. Don\'t forget to upload'
183
+ end
184
+
185
+ # :clean :clobber
186
+ CLOBBER.include(RDOC_REPO, 'ClassLists', 'fullClassList*.txt')
187
+
188
+ task :default => :test
data/Readme.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  javaclass-rb
2
- by {Peter 'Code Cop' Kofler}[http://www.code-cop.org/]
2
+ by {Peter 'Code Cop' Kofler}[https://www.code-cop.org/]
3
3
 
4
- * {Homepage (Bitbucket)}[https://bitbucket.org/pkofler/javaclass-rb]
4
+ * {Homepage (GitHub)}[https://github.com/codecop/javaclass-rb]
5
5
  * email peter dot kofler at code minus cop dot org
6
6
 
7
7
  == Description
@@ -27,52 +27,56 @@ which might be the base for some serious static code analysis tools. (I
27
27
  sudo gem install javaclass
28
28
 
29
29
  * {Gem Hosting}[http://rubygems.org/gems/javaclass]
30
- * {Download of tarballs and gems}[https://bitbucket.org/pkofler/javaclass-rb/downloads]
30
+ * {Download of tar balls and gems}[https://www.code-cop.org/download/javaclass-rb/]
31
31
 
32
32
  == Documentation
33
33
 
34
34
  Module JavaClass is the entry point for basic functions. All advanced functions are
35
- available in Object through the JavaClass::Dsl::Mixin. The main class or the parser
36
- is JavaClass::ClassFile::JavaClassHeader which provides access to all information
37
- of a Java class file.
35
+ available in Object through the JavaClass::Dsl::Mixin. The main class or the parser
36
+ is JavaClass::ClassFile::JavaClassHeader which provides access to all information
37
+ of a Java class file.
38
38
 
39
- * {API RDoc}[http://www.code-cop.org/api/javaclass-rb/]
39
+ * {API RDoc}[https://www.code-cop.org/api/javaclass-rb/]
40
40
 
41
- I tried hard to rdoc all classes and public methods, so just {read it}[http://www.code-cop.org/api/javaclass-rb/].
41
+ I tried hard to rdoc all classes and public methods, so just {read it}[https://www.code-cop.org/api/javaclass-rb/].
42
42
 
43
43
  == Usage
44
44
 
45
- See the various examples in the examples folder of the gem.
45
+ See the various examples in the examples folder of the gem.
46
46
 
47
47
  * {Basic Usage}[link:/files/lib/generated/examples/simple_usage_txt.html]
48
- * {Number of classes in modules/JARs}[link:/files/lib/generated/examples/count_classes_in_modules_txt.html]
49
- * {Check names of all interfaces}[link:/files/lib/generated/examples/check_interface_names_txt.html]
50
- * {All imported types}[link:/files/lib/generated/examples/find_all_imported_types_txt.html]
51
- * {Cumulative dependencies of a class}[link:/files/lib/generated/examples/cumulative_dependencies_txt.html]
52
- * {Find (un)referenced JARs}[link:/files/lib/generated/examples/find_referenced_modules_txt.html]
53
- * {Find unused classes}[link:/files/lib/generated/examples/find_unreferenced_classes_txt.html]
54
- * {Extract and chart dependencies between classes}[link:/files/lib/generated/examples/chart_class_dependencies_txt.html]
55
- * {Extract and chart dependency info between modules}[link:/files/lib/generated/examples/chart_module_dependencies_txt.html]
56
- * {Generate lists of JDK classes}[link:/files/lib/generated/examples/generate_class_lists_txt.html]
57
- * {List content of a (Maven) JAR}[link:/files/lib/generated/examples/show_jar_api_txt.html]
58
-
59
- There is some experimental logic to recognize Java class name literals in Ruby
60
- which are mapped to JavaClass::JavaQualifiedName. Packages have to be suffixed
61
- with ".*" to be recognized. See JavaClass::Dsl::JavaNameFactory for its usage.
48
+ * Classes in modules/Jars, classpath
49
+ * {Number of classes in modules/JARs}[link:/files/lib/generated/examples/count_classes_in_modules_txt.html]
50
+ * {List content of a (Maven) JAR}[link:/files/lib/generated/examples/show_jar_api_txt.html]
51
+ * {Generate lists of JDK classes}[link:/files/lib/generated/examples/generate_class_lists_txt.html]
52
+ * {Check names of all interfaces}[link:/files/lib/generated/examples/check_interface_names_txt.html]
53
+ * Dependencies to other classes
54
+ * {All imported types}[link:/files/lib/generated/examples/find_all_imported_types_txt.html]
55
+ * {Cumulative dependencies of a class}[link:/files/lib/generated/examples/cumulative_dependencies_txt.html]
56
+ * {Find (un)referenced JARs}[link:/files/lib/generated/examples/find_referenced_modules_txt.html]
57
+ * {Find unused classes}[link:/files/lib/generated/examples/find_unreferenced_classes_txt.html]
58
+ * {Extract and chart dependencies between classes}[link:/files/lib/generated/examples/chart_class_dependencies_txt.html]
59
+ * {Extract and chart dependency info between modules}[link:/files/lib/generated/examples/chart_module_dependencies_txt.html]
60
+ * {Find classes that are accessed from outside the module}[link:/files/lib/generated/examples/find_incoming_dependency_graph_txt.html]
61
+ * {Based on dependencies, sort modules into layers}[link:/files/lib/generated/examples/find_layers_of_modules_txt.html]
62
+
63
+ There is some experimental logic to recognize Java class name literals in Ruby
64
+ which are mapped to JavaClass::JavaQualifiedName. Packages have to be suffixed
65
+ with ".*" to be recognized. See JavaClass::Dsl::JavaNameFactory for its usage.
62
66
 
63
67
  == Dependencies
64
68
 
65
- * Ruby 1.8.7 (also tested under 1.9.3, 2.0.0 and 2.1.6)
66
- * {rubyzip}[https://github.com/rubyzip/rubyzip] 0.9.1 (also tested with 0.9.6.1, 0.9.9, 1.0.0 and 1.1.7)
69
+ * Ruby 1.8.7 (also tested 1.9.3, 2.0, 2.1 to 2.7)
70
+ * {rubyzip}[https://github.com/rubyzip/rubyzip] 0.9.1 (also tested 0.9.6.1, 0.9.9, 1.0.0, 1.1.7, 1.3.0, 2.3.0)
67
71
  * Originally Ruby 1.8.6 with rubyzip 0.9.1
68
72
 
69
73
  == References
70
74
 
71
- * {The Java class file lifestyle}[http://www.javaworld.com/javaworld/jw-07-1996/jw-07-classfile.html], JavaWorld 1996.
72
- * {The class File Format}[http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html], The Java Virtual Machine Specification, Second Edition.
73
- * {Similar Project by unageanu}[http://github.com/unageanu/javaclass], GitHub 2010.
75
+ * The Java class file lifestyle, JavaWorld 1996.
76
+ * The class File Format, The Java Virtual Machine Specification, Second Edition.
77
+ * {Similar Project by unageanu}[http://github.com/unageanu/javaclass], GitHub 2010.
74
78
 
75
79
  == License
76
80
 
77
81
  Typically the licenses listed for the project are that of the project itself, and not of dependencies.
78
- * {BSD License}[http://www.opensource.org/licenses/bsd-license.php], it's enclosed in {license.txt}[link:/files/license_txt.html].
82
+ * {The 2-Clause BSD License}[http://www.opensource.org/licenses/bsd-license.php], it's enclosed in {license.txt}[link:/files/license_txt.html].