本文整理汇总了Java中com.sun.tools.classfile.Dependency类的典型用法代码示例。如果您正苦于以下问题:Java Dependency类的具体用法?Java Dependency怎么用?Java Dependency使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Dependency类属于com.sun.tools.classfile包,在下文中一共展示了Dependency类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: findClass
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
/**
* Returns an optional archive containing the given Location
*/
public Optional<Archive> findClass(Dependency.Location location) {
String name = location.getName();
int i = name.lastIndexOf('/');
String pn = i > 0 ? name.substring(0, i).replace('/', '.') : "";
Archive archive = packageToModule.get(pn);
if (archive != null) {
return archive.contains(name + ".class")
? Optional.of(archive)
: Optional.empty();
}
if (packageToUnnamedModule.containsKey(pn)) {
return packageToUnnamedModule.get(pn).stream()
.filter(a -> a.contains(name + ".class"))
.findFirst();
}
return Optional.empty();
}
示例2: accepts
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
@Override
public boolean accepts(Dependency d) {
if (d.getOrigin().equals(d.getTarget()))
return false;
// filter same package dependency
String pn = d.getTarget().getPackageName();
if (filterSamePackage && d.getOrigin().getPackageName().equals(pn)) {
return false;
}
// filter if the target package matches the given filter
if (filterPattern != null && filterPattern.matcher(pn).matches()) {
return false;
}
// filter if the target matches the given filtered package name or regex
return filter != null ? filter.accepts(d) : true;
}
示例3: JdepsFilter
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
private JdepsFilter(Dependency.Filter filter,
Pattern filterPattern,
boolean filterSamePackage,
boolean filterSameArchive,
boolean findJDKInternals,
Pattern includePattern,
Pattern includeSystemModules,
Set<String> requires) {
this.filter = filter;
this.filterPattern = filterPattern;
this.filterSamePackage = filterSamePackage;
this.filterSameArchive = filterSameArchive;
this.findJDKInternals = findJDKInternals;
this.includePattern = includePattern;
this.includeSystemModules = includeSystemModules;
this.requires = requires;
}
示例4: build
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
public JdepsFilter build() {
Dependency.Filter filter = null;
if (regex != null)
filter = Dependencies.getRegexFilter(regex);
else if (!targetPackages.isEmpty()) {
filter = Dependencies.getPackageFilter(targetPackages, false);
}
return new JdepsFilter(filter,
filterPattern,
filterSamePackage,
filterSameArchive,
findJDKInterals,
includePattern,
includeSystemModules,
requires);
}
示例5: accepts
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
@Override
public boolean accepts(Dependency d) {
if (d.getOrigin().equals(d.getTarget())) {
return false;
}
String pn = d.getTarget().getPackageName();
if (options.filterSamePackage && d.getOrigin().getPackageName().equals(pn)) {
return false;
}
if (filterPattern != null && filterPattern.matcher(pn).matches()) {
return false;
}
return filter != null ? filter.accepts(d) : true;
}
示例6: analyzeDependencies
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
/**
* Analyze the dependencies of all classes in the given JAR file. The
* method updates knownTypes and unknownRefs as part of the analysis.
*/
static void analyzeDependencies(Path jarpath) throws Exception {
System.out.format("Analyzing %s%n", jarpath);
try (JarFile jf = new JarFile(jarpath.toFile())) {
Enumeration<JarEntry> entries = jf.entries();
while (entries.hasMoreElements()) {
JarEntry e = entries.nextElement();
String name = e.getName();
if (name.endsWith(".class")) {
ClassFile cf = ClassFile.read(jf.getInputStream(e));
for (Dependency d : finder.findDependencies(cf)) {
String origin = toClassName(d.getOrigin().getName());
String target = toClassName(d.getTarget().getName());
// origin is now known
unknownRefs.remove(origin);
knownTypes.add(origin);
// if the target is not known then record the reference
if (!knownTypes.contains(target)) {
Set<String> refs = unknownRefs.get(target);
if (refs == null) {
// first time seeing this unknown type
refs = new HashSet<>();
unknownRefs.put(target, refs);
}
refs.add(origin);
}
}
}
}
}
}
示例7: parse
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
private Set<Location> parse(Archive archive, Finder finder, String name)
throws IOException
{
ClassFile cf = archive.reader().getClassFile(name);
if (cf == null) {
throw new IllegalArgumentException(archive.getName() +
" does not contain " + name);
}
if (cf.access_flags.is(AccessFlags.ACC_MODULE))
return Collections.emptySet();
Set<Location> targets = new HashSet<>();
String cn;
try {
cn = cf.getName().replace('/', '.');
} catch (ConstantPoolException e) {
throw new Dependencies.ClassFileError(e);
}
if (!finder.accept(archive, cn, cf.access_flags))
return targets;
// tests if this class matches the -include
if (!filter.matches(cn))
return targets;
// skip checking filter.matches
for (Dependency d : finder.findDependencies(cf)) {
if (filter.accepts(d)) {
targets.add(d.getTarget());
archive.addClass(d.getOrigin(), d.getTarget());
} else {
// ensure that the parsed class is added the archive
archive.addClass(d.getOrigin());
}
parsedClasses.putIfAbsent(d.getOrigin(), archive);
}
return targets;
}
示例8: JdepsFilter
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
private JdepsFilter(Dependency.Filter filter,
Pattern filterPattern,
boolean filterSamePackage,
boolean filterSameArchive,
boolean findJDKInternals,
Pattern includePattern,
Set<String> requires) {
this.filter = filter;
this.filterPattern = filterPattern;
this.filterSamePackage = filterSamePackage;
this.filterSameArchive = filterSameArchive;
this.findJDKInternals = findJDKInternals;
this.includePattern = includePattern;
this.requires = requires;
}
示例9: build
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
public JdepsFilter build() {
Dependency.Filter filter = null;
if (regex != null)
filter = Dependencies.getRegexFilter(regex);
else if (!targetPackages.isEmpty()) {
filter = Dependencies.getPackageFilter(targetPackages, false);
}
return new JdepsFilter(filter,
filterPattern,
filterSamePackage,
filterSameArchive,
findJDKInterals,
includePattern,
requires);
}
示例10: parse
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
private Set<Location> parse(Archive archive, Finder finder, String name)
throws IOException
{
ClassFile cf = archive.reader().getClassFile(name);
if (cf == null) {
throw new IllegalArgumentException(archive.getName() + " does not contain " + name);
}
Set<Location> targets = new HashSet<>();
String cn;
try {
cn = cf.getName().replace('/', '.');
} catch (ConstantPoolException e) {
throw new Dependencies.ClassFileError(e);
}
if (!finder.accept(archive, cn, cf.access_flags))
return targets;
// tests if this class matches the -include
if (!filter.matches(cn))
return targets;
// skip checking filter.matches
for (Dependency d : finder.findDependencies(cf)) {
if (filter.accepts(d)) {
targets.add(d.getTarget());
archive.addClass(d.getOrigin(), d.getTarget());
} else {
// ensure that the parsed class is added the archive
archive.addClass(d.getOrigin());
}
parsedClasses.putIfAbsent(d.getOrigin(), archive);
}
return targets;
}
示例11: getDependencyFilter
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
private Dependency.Filter getDependencyFilter() {
if (options.regex != null) {
return Dependencies.getRegexFilter(Pattern.compile(options.regex));
} else if (options.packageNames.size() > 0) {
return Dependencies.getPackageFilter(options.packageNames, false);
} else {
return new Dependency.Filter() {
@Override
public boolean accepts(Dependency dependency) {
return !dependency.getOrigin().equals(dependency.getTarget());
}
};
}
}
示例12: findDependencies
import com.sun.tools.classfile.Dependency; //导入依赖的package包/类
@Override
public Iterable<? extends Dependency> findDependencies(ClassFile classfile) {
return finder.findDependencies(classfile);
}