javaclass 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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].