private static boolean hasGuiPackage(TypeJavaSymbol superTypeSymbol) { String fullyQualifiedName = superTypeSymbol.getFullyQualifiedName(); return fullyQualifiedName.startsWith("javax.swing.") || fullyQualifiedName.startsWith("java.awt."); }
private boolean hasGuiPackage(TypeJavaSymbol superTypeSymbol) { String fullyQualifiedName = superTypeSymbol.getFullyQualifiedName(); return fullyQualifiedName.startsWith("javax.swing.") || fullyQualifiedName.startsWith("java.awt."); }
private static boolean hasGuiPackage(TypeJavaSymbol superTypeSymbol) { String fullyQualifiedName = superTypeSymbol.getFullyQualifiedName(); return fullyQualifiedName.startsWith("javax.swing.") || fullyQualifiedName.startsWith("java.awt."); }
if (owner != null) { String name = Convert.innerClassName(Convert.shortName(owner.getFullyQualifiedName()), shortName); symbol = new JavaSymbol.TypeJavaSymbol(classFlags, name, owner, bytecodeName); } else {
/** * This method reads constant values in bytecode. It should be called when resolving semantics from source. */ @CheckForNull public Object constantValue(Symbol owner, String constantName) { if (constantValues.containsKey(owner)) { return constantValues.get(owner).get(constantName); } if (owner.isTypeSymbol()) { JavaSymbol.TypeJavaSymbol typeSymbol = (JavaSymbol.TypeJavaSymbol) owner; String bytecodeName = typeSymbol.getFullyQualifiedName(); byte[] bytes = classLoader.getBytesForClass(bytecodeName); if (bytes != null) { Map<String, Object> valuesByFieldName = new HashMap<>(); ClassReader classReader = new ClassReader(bytes); classReader.accept( new ClassVisitor(ASM_API_VERSION) { @Override public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) { valuesByFieldName.put(name, value); return super.visitField(access, name, descriptor, signature, value); } }, ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); constantValues.put(typeSymbol, valuesByFieldName); return valuesByFieldName.get(constantName); } } return null; }
/** * This method reads constant values in bytecode. It should be called when resolving semantics from source. */ @CheckForNull public Object constantValue(Symbol owner, String constantName) { if (constantValues.containsKey(owner)) { return constantValues.get(owner).get(constantName); } if (owner.isTypeSymbol()) { JavaSymbol.TypeJavaSymbol typeSymbol = (JavaSymbol.TypeJavaSymbol) owner; String bytecodeName = typeSymbol.getFullyQualifiedName(); byte[] bytes = classLoader.getBytesForClass(bytecodeName); if (bytes != null) { Map<String, Object> valuesByFieldName = new HashMap<>(); ClassReader classReader = new ClassReader(bytes); classReader.accept( new ClassVisitor(ASM_API_VERSION) { @Override public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) { valuesByFieldName.put(name, value); return super.visitField(access, name, descriptor, signature, value); } }, ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); constantValues.put(typeSymbol, valuesByFieldName); return valuesByFieldName.get(constantName); } } return null; }
private static Optional<String> matchFunctionalInterface(Type type) { JavaType javaType = (JavaType) type; if (!javaType.isParameterized()) { return Optional.empty(); } ParametrizedTypeJavaType ptjt = (ParametrizedTypeJavaType) javaType; if (hasAnyUnknownParameterType(ptjt)) { return Optional.empty(); } switch (ptjt.getSymbol().getFullyQualifiedName()) { case "java.util.function.Function": return handleFunctionInterface(ptjt); case "java.util.function.BiFunction": return handleBiFunctionInterface(ptjt); case "java.util.function.BiConsumer": return handleBiConsumerInterface(ptjt); case "java.util.function.Supplier": return handleSupplier(ptjt); case "java.util.function.Consumer": case "java.util.function.Predicate": case "java.util.function.UnaryOperator": case "java.util.function.BinaryOperator": return handleSingleParameterFunctions(ptjt); default: return Optional.empty(); } }
private static Optional<String> matchFunctionalInterface(Type type) { JavaType javaType = (JavaType) type; if (!javaType.isParameterized()) { return Optional.empty(); } ParametrizedTypeJavaType ptjt = (ParametrizedTypeJavaType) javaType; if (hasAnyUnknownParameterType(ptjt)) { return Optional.empty(); } switch (ptjt.getSymbol().getFullyQualifiedName()) { case "java.util.function.Function": return handleFunctionInterface(ptjt); case "java.util.function.BiFunction": return handleBiFunctionInterface(ptjt); case "java.util.function.BiConsumer": return handleBiConsumerInterface(ptjt); case "java.util.function.Supplier": return handleSupplier(ptjt); case "java.util.function.Consumer": case "java.util.function.Predicate": case "java.util.function.UnaryOperator": case "java.util.function.BinaryOperator": return handleSingleParameterFunctions(ptjt); default: return Optional.empty(); } }
@CheckForNull private static Object resolveIdentifier(IdentifierTree tree) { Symbol symbol = tree.symbol(); if (!symbol.isVariableSymbol()) { return null; } JavaSymbol.VariableJavaSymbol javaSymbol = (JavaSymbol.VariableJavaSymbol) symbol; JavaSymbol owner = javaSymbol.owner(); if (owner.isTypeSymbol()) { JavaSymbol.TypeJavaSymbol ownerType = (JavaSymbol.TypeJavaSymbol) owner; if ("java.lang.Boolean".equals(ownerType.getFullyQualifiedName())) { if ("TRUE".equals(javaSymbol.getName())) { return Boolean.TRUE; } else if ("FALSE".equals(javaSymbol.getName())) { return Boolean.FALSE; } } } return javaSymbol.constantValue().orElse(null); }
@CheckForNull private static Object resolveIdentifier(IdentifierTree tree) { Symbol symbol = tree.symbol(); if (!symbol.isVariableSymbol()) { return null; } JavaSymbol.VariableJavaSymbol javaSymbol = (JavaSymbol.VariableJavaSymbol) symbol; JavaSymbol owner = javaSymbol.owner(); if (owner.isTypeSymbol()) { JavaSymbol.TypeJavaSymbol ownerType = (JavaSymbol.TypeJavaSymbol) owner; if ("java.lang.Boolean".equals(ownerType.getFullyQualifiedName())) { if ("TRUE".equals(javaSymbol.getName())) { return Boolean.TRUE; } else if ("FALSE".equals(javaSymbol.getName())) { return Boolean.FALSE; } } } return javaSymbol.constantValue().orElse(null); }
@Override public boolean is(String fullyQualifiedName) { return isTagged(BOT) || fullyQualifiedName.equals(symbol.getFullyQualifiedName()); }
@Override public boolean is(String fullyQualifiedName) { return isTagged(BOT) || fullyQualifiedName.equals(symbol.getFullyQualifiedName()); }
@Override public String fullyQualifiedName() { return symbol.getFullyQualifiedName(); }
@Override public boolean is(String fullyQualifiedName) { return isTagged(BOT) || fullyQualifiedName.equals(symbol.getFullyQualifiedName()); }
private String formFullName(JavaSymbol symbol) { if(symbol.isTypeSymbol()) { return ((JavaSymbol.TypeJavaSymbol) symbol).getFullyQualifiedName(); } return formFullName(symbol.name, symbol.owner); }
@Override public boolean is(String fullyQualifiedName) { return isTagged(BOT) || fullyQualifiedName.equals(symbol.getFullyQualifiedName()); }
@Override public String fullyQualifiedName() { return symbol.getFullyQualifiedName(); }
@Override public String fullyQualifiedName() { return symbol.getFullyQualifiedName(); }
@Override public String fullyQualifiedName() { return symbol.getFullyQualifiedName(); }
private String formFullName(JavaSymbol symbol) { if(symbol.isTypeSymbol()) { return ((JavaSymbol.TypeJavaSymbol) symbol).getFullyQualifiedName(); } return formFullName(symbol.name, symbol.owner); }