javaclass 0.0.3 → 0.0.4
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.
- data/Rakefile +67 -56
- data/Readme.txt +42 -39
- data/example_task.rb +172 -0
- data/examples/check_interface_names.rb +44 -0
- data/examples/corpus.rb +19 -0
- data/examples/count_classes_in_modules.rb +38 -0
- data/examples/cumulative_dependencies.rb +39 -0
- data/examples/find_all_imported_types.rb +44 -0
- data/examples/find_referenced_modules.rb +53 -0
- data/examples/find_unreferenced_classes.rb +65 -0
- data/examples/generate_class_lists.rb +67 -43
- data/examples/profiler_scratchpad.rb +33 -0
- data/examples/simple_usage.rb +42 -0
- data/history.txt +29 -7
- data/javaclass.gemspec +31 -0
- data/lib/javaclass/adder_tree.rb +92 -0
- data/lib/javaclass/analyse/dependencies.rb +52 -0
- data/lib/javaclass/{metric/metrics.txt → analyse/ideas.txt} +2 -2
- data/lib/javaclass/analyse/transitive_dependencies.rb +52 -0
- data/lib/javaclass/classfile/access_flag_constants.rb +24 -0
- data/lib/javaclass/classfile/access_flags.rb +49 -26
- data/lib/javaclass/classfile/class_format_error.rb +37 -0
- data/lib/javaclass/classfile/class_magic.rb +16 -8
- data/lib/javaclass/classfile/class_version.rb +19 -25
- data/lib/javaclass/classfile/constant_pool.rb +110 -45
- data/lib/javaclass/classfile/constants/base.rb +33 -12
- data/lib/javaclass/classfile/constants/double_reference.rb +55 -41
- data/lib/javaclass/classfile/constants/single_reference.rb +29 -21
- data/lib/javaclass/classfile/constants/value.rb +43 -33
- data/lib/javaclass/classfile/java_class_header.rb +72 -46
- data/lib/javaclass/classfile/java_class_header_as_java_name.rb +33 -0
- data/lib/javaclass/classfile/java_class_header_shortcuts.rb +19 -0
- data/lib/javaclass/classfile/references.rb +21 -19
- data/lib/javaclass/classlist/class_entry.rb +26 -27
- data/lib/javaclass/classlist/jar_searcher.rb +34 -25
- data/lib/javaclass/classlist/list.rb +31 -31
- data/lib/javaclass/classlist/package_entry.rb +25 -24
- data/lib/javaclass/classpath/any_classpath.rb +48 -0
- data/lib/javaclass/classpath/class_not_found_error.rb +20 -0
- data/lib/javaclass/classpath/classpaths.txt +2 -2
- data/lib/javaclass/classpath/composite_classpath.rb +56 -54
- data/lib/javaclass/classpath/convention_classpath.rb +38 -0
- data/lib/javaclass/classpath/eclipse_classpath.rb +74 -0
- data/lib/javaclass/classpath/factory.rb +65 -0
- data/lib/javaclass/classpath/file_classpath.rb +47 -0
- data/lib/javaclass/classpath/folder_classpath.rb +42 -44
- data/lib/javaclass/classpath/jar_classpath.rb +91 -52
- data/lib/javaclass/classpath/java_home_classpath.rb +24 -13
- data/lib/javaclass/classpath/maven_classpath.rb +44 -0
- data/lib/javaclass/classpath/temporary_unpacker.rb +111 -0
- data/lib/javaclass/classpath/tracking_classpath.rb +144 -0
- data/lib/javaclass/classscanner/ideas.txt +3 -0
- data/lib/javaclass/classscanner/imported_types.rb +29 -0
- data/lib/javaclass/classscanner/scanners.rb +29 -0
- data/lib/javaclass/delegate_directive.rb +15 -0
- data/lib/javaclass/dsl/caching_classpath.rb +38 -0
- data/lib/javaclass/dsl/classpath_analysers.rb +27 -0
- data/lib/javaclass/dsl/java_name_factory.rb +79 -0
- data/lib/javaclass/dsl/loader.rb +42 -0
- data/lib/javaclass/dsl/loading_classpath.rb +53 -0
- data/lib/javaclass/dsl/mixin.rb +54 -0
- data/lib/javaclass/gems/zip_file.rb +154 -0
- data/lib/javaclass/java_language.rb +50 -0
- data/lib/javaclass/java_name.rb +329 -55
- data/lib/javaclass/java_name_scanner.rb +95 -0
- data/lib/javaclass/resources/iso_3166_countries.txt +240 -0
- data/lib/javaclass/resources/jdk0_packages.txt +6 -0
- data/lib/javaclass/resources/jdk1_packages.txt +6 -0
- data/lib/javaclass/resources/jdk2_packages.txt +4 -0
- data/lib/javaclass/resources/jdk3_packages.txt +6 -0
- data/lib/javaclass/resources/jdk4_packages.txt +22 -0
- data/lib/javaclass/resources/jdk5_packages.txt +5 -0
- data/lib/javaclass/resources/jdk6_packages.txt +7 -0
- data/lib/javaclass/resources/jdk7_packages.txt +0 -0
- data/lib/javaclass/resources/jdk_packages.txt +53 -0
- data/lib/javaclass/resources/reserved_words.txt +50 -0
- data/lib/javaclass/string_hexdump.rb +76 -0
- data/lib/javaclass/string_ux.rb +21 -10
- data/lib/javaclass.rb +16 -41
- data/license.txt +28 -0
- data/planned.txt +13 -0
- data/test/data/Object_102.class +0 -0
- data/test/data/Runnable_102.class +0 -0
- data/test/data/access_flags/AccessFlagsTestAnnotation.class +0 -0
- data/test/data/access_flags/AccessFlagsTestAnnotation.java +3 -0
- data/test/data/access_flags/AccessFlagsTestEnum$1.class +0 -0
- data/test/data/access_flags/AccessFlagsTestEnum.class +0 -0
- data/test/data/access_flags/AccessFlagsTestEnum.java +6 -0
- data/test/data/access_flags/AccessFlagsTestInner$1.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner$2.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner.java +13 -0
- data/test/data/access_flags/AccessFlagsTestPackage.class +0 -0
- data/test/data/access_flags/AccessFlagsTestPackage.java +1 -1
- data/test/data/api/packagename/AccessFlagsTestPublic.class +0 -0
- data/test/data/class_version/ClassVersionTest17.class +0 -0
- data/test/data/class_version/make.bat +6 -2
- data/test/data/eclipse_classpath/classes/ClassVersionTest12.class +0 -0
- data/test/data/eclipse_classpath/lib/JarClasspathTest.jar +0 -0
- data/test/data/eclipse_classpath/test-classes/ClassVersionTest13.class +0 -0
- data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/ClassVersionTest10.class +0 -0
- data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/package/ClassVersionTest11.class +0 -0
- data/test/data/jar_classpath/JarClasspathTest.jar +0 -0
- data/test/data/jar_classpath/JarClasspathTest.zip +0 -0
- data/test/data/jar_classpath/JarClasspathTestManifest.jar +0 -0
- data/test/data/jar_classpath/JarClasspathTestMultiManifest.jar +0 -0
- data/test/data/jar_classpath/make.bat +6 -2
- data/test/data/jar_searcher/BrokenRunnable_102.class +0 -0
- data/test/data/java_home_classpath/jdk118/lib/classes.zip +0 -0
- data/test/data/java_name_scanner/META-INF/MANIFEST.MF +12 -0
- data/test/data/java_name_scanner/plugin.xml +18 -0
- data/test/data/maven_classpath/module/pom.xml +8 -0
- data/test/data/maven_classpath/module/target/classes/ClassVersionTest12.class +0 -0
- data/test/data/maven_classpath/pom.xml +8 -0
- data/test/data/maven_classpath/target/classes/ClassVersionTest10.class +0 -0
- data/test/data/maven_classpath/target/test-classes/ClassVersionTest11.class +0 -0
- data/test/data/transitive_dependencies/A.class +0 -0
- data/test/data/transitive_dependencies/A.java +5 -0
- data/test/data/transitive_dependencies/B.class +0 -0
- data/test/data/transitive_dependencies/B.java +3 -0
- data/test/data/transitive_dependencies/C.class +0 -0
- data/test/data/transitive_dependencies/C.java +3 -0
- data/test/data/transitive_dependencies/Start.class +0 -0
- data/test/data/transitive_dependencies/Start.java +4 -0
- data/test/data/transitive_dependencies/make.bat +3 -0
- data/test/data/zip_file/commons-math-2.2-broken.zip +0 -0
- data/test/data/zip_file/regenerated-with-7zip.zip +0 -0
- data/test/data/zip_file/regenerated-with-jar.zip +0 -0
- data/test/dot_classpath.rb +33 -0
- data/test/logging_folder_classpath.rb +19 -0
- data/test/setup.rb +1 -1
- data/test/test_access_flags.rb +58 -32
- data/test/test_adder_tree.rb +78 -0
- data/test/test_any_classpath.rb +39 -0
- data/test/test_base.rb +9 -7
- data/test/test_caching_classpath.rb +41 -0
- data/test/test_class_entry.rb +60 -60
- data/test/test_class_magic.rb +31 -0
- data/test/test_class_version.rb +25 -25
- data/test/test_composite_classpath.rb +22 -23
- data/test/test_constant_pool.rb +37 -13
- data/test/test_convention_classpath.rb +39 -0
- data/test/test_eclipse_classpath.rb +73 -0
- data/test/test_factory.rb +61 -0
- data/test/test_folder_classpath.rb +26 -10
- data/test/test_imported_types.rb +34 -0
- data/test/test_jar_classpath.rb +29 -14
- data/test/test_jar_searcher.rb +27 -14
- data/test/test_java_class_header.rb +22 -10
- data/test/test_java_class_header_as_java_name.rb +41 -0
- data/test/test_java_home_classpath.rb +17 -11
- data/test/test_java_name.rb +204 -64
- data/test/test_java_name_factory.rb +52 -0
- data/test/test_java_name_scanner.rb +24 -0
- data/test/test_javaclass_api.rb +43 -0
- data/test/test_list.rb +58 -44
- data/test/test_load_directive.rb +34 -0
- data/test/test_maven_classpath.rb +46 -0
- data/test/test_package_entry.rb +27 -22
- data/test/test_references.rb +14 -14
- data/test/test_string_hexdump.rb +24 -0
- data/test/test_string_ux.rb +18 -106
- data/test/test_tracking_classpath.rb +112 -0
- data/test/test_transitive_dependencies.rb +31 -0
- data/test/test_unpacking_jar_classpath.rb +43 -0
- data/test/test_zip_file.rb +33 -0
- data/test/ts_all_tests.rb +80 -18
- data/thanks.txt +2 -0
- metadata +151 -22
- data/lib/javaclass/classpath/port_ClassPathEntry.java +0 -202
- data/lib/javaclass/classpath/port_ClassPathEntryFactory.java +0 -311
- data/lib/javaclass/classpath/port_DirectoryRepository.java +0 -24
- data/lib/javaclass/metric/ccd.rb +0 -68
- data/lib/javaclass/metric/class_usage.rb +0 -41
- data/test/test_javaclass.rb +0 -22
@@ -1,311 +0,0 @@
|
|
1
|
-
package at.kugel.tool.classes;
|
2
|
-
|
3
|
-
// Kugel's "Java Code & Tools Library", Copyright (c) 1999-2004, Theossos Comp Group
|
4
|
-
import java.io.File;
|
5
|
-
import java.io.IOException;
|
6
|
-
import java.security.InvalidParameterException;
|
7
|
-
import java.util.Enumeration;
|
8
|
-
import java.util.List;
|
9
|
-
import java.util.StringTokenizer;
|
10
|
-
import java.util.Vector;
|
11
|
-
import java.util.zip.ZipEntry;
|
12
|
-
import java.util.zip.ZipFile;
|
13
|
-
|
14
|
-
import at.kugel.util.io.WildcardSearch;
|
15
|
-
|
16
|
-
/**
|
17
|
-
* Factory to get the CPEs (Class Path Entries) from a system path, given path or archive.
|
18
|
-
* @author Kugel, <i>Theossos Comp Group</i>
|
19
|
-
* @version 1.00 - 13.03.2004
|
20
|
-
*/
|
21
|
-
public final class ClassPathEntryFactory
|
22
|
-
{
|
23
|
-
|
24
|
-
/**
|
25
|
-
* 0 = no output, 1 = system path, 2 = archives and directories, 3 = statistics, 5 = duplicates.
|
26
|
-
*/
|
27
|
-
private final int debugLevel = 3;
|
28
|
-
|
29
|
-
private static final String CLASS_EXTENSION = ClassPathEntry.CLASS_EXTENSION;
|
30
|
-
private boolean dropInnerClasses = true;
|
31
|
-
private boolean dropPackageClasses = true;
|
32
|
-
|
33
|
-
private long numberEntries;
|
34
|
-
private long numberDuplicatedEntries;
|
35
|
-
|
36
|
-
private void resetStatistics()
|
37
|
-
{
|
38
|
-
numberEntries = 0;
|
39
|
-
numberDuplicatedEntries = 0;
|
40
|
-
}
|
41
|
-
|
42
|
-
private void printStatistics()
|
43
|
-
{
|
44
|
-
if (dropPackageClasses)
|
45
|
-
{
|
46
|
-
|
47
|
-
System.out.println(" Found " + numberEntries + " new and " + numberDuplicatedEntries + " duplicated public classes");
|
48
|
-
|
49
|
-
}
|
50
|
-
else
|
51
|
-
{
|
52
|
-
|
53
|
-
System.out.println(" Found " + numberEntries + " new and " + numberDuplicatedEntries + " duplicated classes");
|
54
|
-
|
55
|
-
}
|
56
|
-
}
|
57
|
-
|
58
|
-
private void addEntryToList(final ClassPathEntry cpe, List<ClassPathEntry> pClassList2Add)
|
59
|
-
{
|
60
|
-
if (dropInnerClasses && cpe.isInner)
|
61
|
-
{
|
62
|
-
return;
|
63
|
-
}
|
64
|
-
if (dropPackageClasses && cpe.isPublic == -1)
|
65
|
-
{
|
66
|
-
return;
|
67
|
-
}
|
68
|
-
|
69
|
-
if (!pClassList2Add.contains(cpe))
|
70
|
-
{
|
71
|
-
numberEntries++;
|
72
|
-
pClassList2Add.add(cpe);
|
73
|
-
|
74
|
-
}
|
75
|
-
else
|
76
|
-
{
|
77
|
-
|
78
|
-
numberDuplicatedEntries++;
|
79
|
-
|
80
|
-
if (debugLevel >= 5)
|
81
|
-
{
|
82
|
-
final int i = pClassList2Add.indexOf(cpe);
|
83
|
-
final ClassPathEntry duplicated = pClassList2Add.get(i);
|
84
|
-
duplicated.setDuplicated(true);
|
85
|
-
System.out.println(" Duplicate class: " + cpe + " in " + duplicated.origin + " and " + cpe.origin);
|
86
|
-
}
|
87
|
-
}
|
88
|
-
}
|
89
|
-
|
90
|
-
public void readAllClassesFromDirectory(File pClassPathBase, List<ClassPathEntry> pClassList2Add)
|
91
|
-
{
|
92
|
-
if (debugLevel >= 2)
|
93
|
-
{
|
94
|
-
System.out.println(" * Reading classes from directory " + pClassPathBase);
|
95
|
-
resetStatistics();
|
96
|
-
}
|
97
|
-
|
98
|
-
final Vector<File> foundElements = new Vector<File>();
|
99
|
-
|
100
|
-
WildcardSearch.getFiles(pClassPathBase.getPath() + File.separatorChar + "*" + CLASS_EXTENSION, true, foundElements);
|
101
|
-
for (final File file : foundElements)
|
102
|
-
{
|
103
|
-
final ClassPathEntry cpe = ClassPathEntry.createFromClassFile(pClassPathBase, file);
|
104
|
-
|
105
|
-
addEntryToList(cpe, pClassList2Add);
|
106
|
-
}
|
107
|
-
|
108
|
-
foundElements.removeAllElements();
|
109
|
-
|
110
|
-
if (debugLevel >= 3)
|
111
|
-
{
|
112
|
-
printStatistics();
|
113
|
-
}
|
114
|
-
}
|
115
|
-
|
116
|
-
public void readAllClassesFromZip(File pZipFile, List<ClassPathEntry> pClassList2Add) throws IOException
|
117
|
-
{
|
118
|
-
if (debugLevel >= 2)
|
119
|
-
{
|
120
|
-
System.out.println(" * Reading classes from archive " + pZipFile);
|
121
|
-
resetStatistics();
|
122
|
-
}
|
123
|
-
|
124
|
-
final ZipFile zf = new ZipFile(pZipFile);
|
125
|
-
for (final Enumeration<? extends ZipEntry> en = zf.entries(); en.hasMoreElements();)
|
126
|
-
{
|
127
|
-
final ZipEntry entry = en.nextElement();
|
128
|
-
|
129
|
-
if (entry.getName().endsWith(CLASS_EXTENSION))
|
130
|
-
{
|
131
|
-
final ClassPathEntry cpe = ClassPathEntry.createFromZipEntry(pZipFile, entry);
|
132
|
-
addEntryToList(cpe, pClassList2Add);
|
133
|
-
}
|
134
|
-
|
135
|
-
}
|
136
|
-
|
137
|
-
if (debugLevel >= 3)
|
138
|
-
{
|
139
|
-
printStatistics();
|
140
|
-
}
|
141
|
-
}
|
142
|
-
|
143
|
-
public void readAllZipsFromDirectory(File pClassPathBase, List<ClassPathEntry> pClassList2Add) throws IOException
|
144
|
-
{
|
145
|
-
if (debugLevel >= 2)
|
146
|
-
{
|
147
|
-
System.out.println(" * Reading jars from directory " + pClassPathBase);
|
148
|
-
resetStatistics();
|
149
|
-
}
|
150
|
-
|
151
|
-
final Vector<File> foundElements = new Vector<File>();
|
152
|
-
|
153
|
-
WildcardSearch.getFiles(pClassPathBase.getPath() + File.separatorChar + "*.jar", true, foundElements);
|
154
|
-
for (final File entry : foundElements)
|
155
|
-
{
|
156
|
-
readAllClassesFromZip(entry, pClassList2Add);
|
157
|
-
}
|
158
|
-
foundElements.removeAllElements();
|
159
|
-
|
160
|
-
WildcardSearch.getFiles(pClassPathBase.getPath() + File.separatorChar + "*.zip", true, foundElements);
|
161
|
-
for (final File entry : foundElements)
|
162
|
-
{
|
163
|
-
readAllClassesFromZip(entry, pClassList2Add);
|
164
|
-
}
|
165
|
-
foundElements.removeAllElements();
|
166
|
-
}
|
167
|
-
|
168
|
-
public void readAllFromClassPath(String pPath, List<ClassPathEntry> pClassList2Add) throws IOException
|
169
|
-
{
|
170
|
-
final StringTokenizer pathTokenizer = new StringTokenizer(pPath, File.pathSeparator);
|
171
|
-
while (pathTokenizer.hasMoreTokens())
|
172
|
-
{
|
173
|
-
final String path = pathTokenizer.nextToken();
|
174
|
-
|
175
|
-
if (path.endsWith(".zip") || path.endsWith(".jar"))
|
176
|
-
{
|
177
|
-
final File zipFile = new File(path);
|
178
|
-
if (zipFile.exists() && zipFile.isFile() && zipFile.canRead())
|
179
|
-
{
|
180
|
-
readAllClassesFromZip(zipFile, pClassList2Add);
|
181
|
-
}
|
182
|
-
else
|
183
|
-
{
|
184
|
-
if (debugLevel >= 2)
|
185
|
-
{
|
186
|
-
System.out.println("WARNING: archive " + path + " from classpath not found");
|
187
|
-
}
|
188
|
-
}
|
189
|
-
|
190
|
-
}
|
191
|
-
else
|
192
|
-
{
|
193
|
-
|
194
|
-
final File directoryFile = new File(path);
|
195
|
-
if (directoryFile.exists() && directoryFile.isDirectory())
|
196
|
-
{
|
197
|
-
readAllClassesFromDirectory(directoryFile, pClassList2Add);
|
198
|
-
}
|
199
|
-
else
|
200
|
-
{
|
201
|
-
if (debugLevel >= 2)
|
202
|
-
{
|
203
|
-
System.out.println("WARNING: directory " + path + " from classpath not found");
|
204
|
-
}
|
205
|
-
}
|
206
|
-
|
207
|
-
}
|
208
|
-
}
|
209
|
-
}
|
210
|
-
|
211
|
-
private void readAllFromSystemClassPath(String name, List<ClassPathEntry> pClassList2Add) throws IOException
|
212
|
-
{
|
213
|
-
final String p = System.getProperty(name);
|
214
|
-
|
215
|
-
if (debugLevel >= 1)
|
216
|
-
{
|
217
|
-
System.out.println("Working on path " + name + " (" + p + ")");
|
218
|
-
}
|
219
|
-
|
220
|
-
if (p != null && p.length() > 0)
|
221
|
-
{
|
222
|
-
if (name.endsWith(".dirs"))
|
223
|
-
{
|
224
|
-
readAllZipsFromDirectory(new File(p), pClassList2Add);
|
225
|
-
|
226
|
-
}
|
227
|
-
else if (name.endsWith(".path"))
|
228
|
-
{
|
229
|
-
readAllFromClassPath(p, pClassList2Add);
|
230
|
-
|
231
|
-
}
|
232
|
-
else
|
233
|
-
{
|
234
|
-
throw new InvalidParameterException("no path or directory system property given");
|
235
|
-
}
|
236
|
-
}
|
237
|
-
}
|
238
|
-
|
239
|
-
public void readAllFromSystemClassPaths(List<ClassPathEntry> pClassList2Add) throws IOException
|
240
|
-
{
|
241
|
-
readAllFromSystemClassPath("sun.boot.class.path", pClassList2Add);
|
242
|
-
readAllFromSystemClassPath("java.endorsed.dirs", pClassList2Add);
|
243
|
-
readAllFromSystemClassPath("java.ext.dirs", pClassList2Add);
|
244
|
-
readAllFromSystemClassPath("java.class.path", pClassList2Add);
|
245
|
-
}
|
246
|
-
|
247
|
-
public void readAllFromUserClassPaths(String p, List<ClassPathEntry> pClassList2Add) throws IOException
|
248
|
-
{
|
249
|
-
if (debugLevel >= 1)
|
250
|
-
{
|
251
|
-
System.out.println("Working on user input (" + p + ")");
|
252
|
-
}
|
253
|
-
|
254
|
-
final File userFile = new File(p);
|
255
|
-
if (p.indexOf(File.pathSeparator) > -1)
|
256
|
-
{
|
257
|
-
// this is a pathlist
|
258
|
-
readAllFromClassPath(p, pClassList2Add);
|
259
|
-
|
260
|
-
}
|
261
|
-
else if (userFile.isDirectory())
|
262
|
-
{
|
263
|
-
// may be a WEB-INF clone - read all zips and jars
|
264
|
-
readAllZipsFromDirectory(userFile, pClassList2Add);
|
265
|
-
// but also may be a single class list
|
266
|
-
readAllClassesFromDirectory(userFile, pClassList2Add);
|
267
|
-
|
268
|
-
}
|
269
|
-
else
|
270
|
-
{
|
271
|
-
// must be a file - a zip
|
272
|
-
readAllClassesFromZip(userFile, pClassList2Add);
|
273
|
-
}
|
274
|
-
|
275
|
-
}
|
276
|
-
|
277
|
-
public boolean isDropInnerClasses()
|
278
|
-
{
|
279
|
-
return dropInnerClasses;
|
280
|
-
}
|
281
|
-
|
282
|
-
public void setDropInnerClasses(boolean b)
|
283
|
-
{
|
284
|
-
dropInnerClasses = b;
|
285
|
-
}
|
286
|
-
|
287
|
-
public boolean isDropPackageClasses()
|
288
|
-
{
|
289
|
-
return dropPackageClasses;
|
290
|
-
}
|
291
|
-
|
292
|
-
public void setDropPackageClasses(boolean b)
|
293
|
-
{
|
294
|
-
dropPackageClasses = b;
|
295
|
-
}
|
296
|
-
|
297
|
-
// /** Just for testing. */
|
298
|
-
// public static void main(String[] args) throws IOException
|
299
|
-
// {
|
300
|
-
// final ClassPathEntryFactory fac = new ClassPathEntryFactory();
|
301
|
-
// final List<ClassPathEntry> list = new ArrayList<ClassPathEntry>();
|
302
|
-
//
|
303
|
-
// System.out.println("*** reading ***");
|
304
|
-
// fac.readAllFromSystemClassPaths(list);
|
305
|
-
// System.out.println("*** sorting ***");
|
306
|
-
// Collections.sort(list);
|
307
|
-
//
|
308
|
-
// System.out.println("found " + list.size() + " classes.");
|
309
|
-
// }
|
310
|
-
|
311
|
-
}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Abstraction of a place where to find the physical class files for a given full class name. This must also configure
|
3
|
-
* the <code>org.apache.bcel.Repository</code> to use the right repository for BCEL automatic class loading, i.e. for
|
4
|
-
* interfaces.
|
5
|
-
*/
|
6
|
-
|
7
|
-
|
8
|
-
public List<String> getAllClassNames(boolean skipInnerClasses)
|
9
|
-
{
|
10
|
-
final List<String> result = new ArrayList<String>();
|
11
|
-
|
12
|
-
for (final String name : filesInRepository.keySet())
|
13
|
-
{
|
14
|
-
if (skipInnerClasses && name.indexOf('$') != -1)
|
15
|
-
{
|
16
|
-
continue;
|
17
|
-
}
|
18
|
-
result.add(name);
|
19
|
-
}
|
20
|
-
|
21
|
-
Collections.sort(result);
|
22
|
-
return result;
|
23
|
-
}
|
24
|
-
|
data/lib/javaclass/metric/ccd.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
# add the lib to the load path
|
2
|
-
$:.unshift File.join(File.dirname(__FILE__), 'lib')
|
3
|
-
|
4
|
-
# TODO cleanup this code fragment and make a proper class
|
5
|
-
|
6
|
-
require 'javaclass'
|
7
|
-
include JavaClass
|
8
|
-
|
9
|
-
def process_class(name, already=[], intend=0)
|
10
|
-
file_name = 'C:\JavaDev\classes\\' + name.gsub(/\./,'\\') + '.class'
|
11
|
-
return if !FileTest.exist? file_name
|
12
|
-
# p file_name
|
13
|
-
clazz = JavaClass.parse(file_name)
|
14
|
-
# p clazz
|
15
|
-
puts " "*intend + clazz.this_class
|
16
|
-
|
17
|
-
imported = clazz.references.used_classes.collect { |c| c.to_s }.sort
|
18
|
-
new_used = imported - already
|
19
|
-
already << new_used
|
20
|
-
already.flatten!
|
21
|
-
new_used.find_all { |c| c =~ /at\/spardat\// }.each do |c|
|
22
|
-
process_class(c, already, intend+1)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def process_package(folder, already=[], intend=0)
|
27
|
-
file_name = 'C:\JavaDev\classes\\' + folder.gsub(/\./,'\\')
|
28
|
-
cwd = Dir.getwd
|
29
|
-
Dir.chdir file_name
|
30
|
-
files = Dir['*']
|
31
|
-
files.each do |c|
|
32
|
-
if c =~ /\.class$/
|
33
|
-
process_class(folder + '.' + c[/^[^.]+/], already, intend)
|
34
|
-
elsif FileTest.directory? c
|
35
|
-
puts " "*intend+ '-----'
|
36
|
-
process_package(folder + '.' + c, already, intend)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
Dir.chdir cwd
|
40
|
-
end
|
41
|
-
|
42
|
-
# total = []
|
43
|
-
# #process_class('at/spardat/krimiaps/service/client/service/impl/ClientSmeSearchServiceImpl', total)
|
44
|
-
# #process_class('at/spardat/krimiaps/service/client/service/impl/ClientPrivateSearchServiceImpl', total)
|
45
|
-
#
|
46
|
-
# # --- common
|
47
|
-
# #process_package('at.spardat.krimicee.common', total) #
|
48
|
-
# #process_package('at.spardat.krimiaps.common', total) # -> 79 ok
|
49
|
-
# #process_package('at.spardat.common', total) # 146, in sich, koennte nach common
|
50
|
-
# #process_package('at.spardat.integrator', total) #
|
51
|
-
# # DatabaseAwareComponent -> ganze DB
|
52
|
-
# #process_package('at.spardat.krimicee.util', total)
|
53
|
-
# # ItoTestApsSchema -> ganze DB
|
54
|
-
# # process_package('at.spardat.krimicee.lib', total)
|
55
|
-
# # KrimiLock -> ganze DB
|
56
|
-
#
|
57
|
-
# #process_package('at.spardat.krimicee.dom', total)
|
58
|
-
# #process_package('at.spardat.krimicee.db', total)
|
59
|
-
# # KrimiLoanService, PrintHelper ->
|
60
|
-
# #process_package('at.spardat.krimicee.dao', total)
|
61
|
-
# #process_package('at.spardat.krimicee.dao', total)
|
62
|
-
# #process_package('at.spardat.krimicee.entity', total)
|
63
|
-
# #process_package('at.spardat.krimicee.entity', total)
|
64
|
-
# #process_package('at.spardat.krimicee.eo', total)
|
65
|
-
# #process_package('at.spardat.krimicee.sql', total)
|
66
|
-
# #process_package('at.spardat.krimicee.model', total) # 1647
|
67
|
-
#
|
68
|
-
# puts total.size
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# add the lib to the load path
|
2
|
-
$:.unshift File.join(File.dirname(__FILE__), 'lib')
|
3
|
-
|
4
|
-
# TODO cleanup this code fragment and make a proper class
|
5
|
-
|
6
|
-
require 'javaclass'
|
7
|
-
include JavaClass
|
8
|
-
|
9
|
-
JDK_PACKAGES = %w| java javax.accessibility javax.activity javax.crypto javax.imageio javax.jnlp javax.management
|
10
|
-
javax.naming javax.net javax.print javax.rmi javax.script javax.security.auth javax.security.cert
|
11
|
-
javax.security.sasl javax.sound.midi javax.sound.sampled javax.sql javax.swing javax.transaction
|
12
|
-
javax.xml org.ietf.jgss org.w3c.dom org.xml.sax|.collect { |pkg| /^#{pkg}\./ }
|
13
|
-
|
14
|
-
def in_jdk?(name)
|
15
|
-
JDK_PACKAGES.find { |regex| name =~ regex } != nil
|
16
|
-
end
|
17
|
-
|
18
|
-
def imported_types(classes)
|
19
|
-
own_classes = classes.names.collect { |name| name.gsub('/', '.').sub(/\.class$/, '')}.sort
|
20
|
-
|
21
|
-
imported = classes.names.collect do |name|
|
22
|
-
clazz = JavaClassHeader.new(classes.load_binary(name))
|
23
|
-
clazz.references.used_classes.collect { |c| c.to_s.gsub('/', '.') }
|
24
|
-
end.flatten.uniq.sort
|
25
|
-
|
26
|
-
imported.reject { |name| in_jdk?(name) } - own_classes
|
27
|
-
end
|
28
|
-
|
29
|
-
# TODO detect and read spring XML configs?
|
30
|
-
|
31
|
-
classes = JavaClass::Classpath::FolderClasspath.new("./target/classes")
|
32
|
-
own = classes.names.collect { |name| name.gsub('/', '.').sub(/\.class$/, '')}.sort
|
33
|
-
used = imported_types(classes)
|
34
|
-
puts "---------- used types"
|
35
|
-
puts used
|
36
|
-
|
37
|
-
test_classes = JavaClass::Classpath::FolderClasspath.new("./target/test-classes")
|
38
|
-
test = imported_types(test_classes) - own - used
|
39
|
-
puts "---------- for tests"
|
40
|
-
puts test
|
41
|
-
|
data/test/test_javaclass.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/setup'
|
2
|
-
require 'javaclass'
|
3
|
-
|
4
|
-
module TestJavaClass
|
5
|
-
|
6
|
-
class TestJavaClassFacade < Test::Unit::TestCase # ZenTest SKIP
|
7
|
-
|
8
|
-
def test_class_full_classpath
|
9
|
-
cp = JavaClass.full_classpath("#{TEST_DATA_PATH}/java_home_classpath/jre-ext",
|
10
|
-
"#{TEST_DATA_PATH}/jar_classpath/JarClasspathTestManifest.jar#{File::PATH_SEPARATOR}#{TEST_DATA_PATH}/folder_classpath/JarClasspathTestFolder")
|
11
|
-
elem = cp.elements
|
12
|
-
assert_equal(5, elem.size)
|
13
|
-
assert_equal("#{TEST_DATA_PATH}/java_home_classpath/jre-ext/lib/rt.jar", elem[0].to_s)
|
14
|
-
assert_equal("#{TEST_DATA_PATH}/java_home_classpath/jre-ext/lib/ext/ext.jar", elem[1].to_s)
|
15
|
-
assert_equal("#{TEST_DATA_PATH}/jar_classpath/JarClasspathTestManifest.jar", elem[2].to_s)
|
16
|
-
assert_equal("#{TEST_DATA_PATH}/jar_classpath/JarClasspathTest.jar", elem[3].to_s)
|
17
|
-
assert_equal("#{TEST_DATA_PATH}/folder_classpath/JarClasspathTestFolder", elem[4].to_s)
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|