@Override public Boolean visitType(TypeElement element, Void p) { switch (element.getNestingKind()) { case MEMBER: return accessibleMember(element); case TOP_LEVEL: return accessibleModifiers(element); case ANONYMOUS: case LOCAL: return false; default: throw new AssertionError(); } }
private static boolean isElementAccessibleFrom(Element element, Optional<String> packageName) { return element.accept(new ElementAccessibilityVisitor(packageName), null); }
@Override public Boolean visitExecutable(ExecutableElement element, Void p) { return accessibleMember(element); }
/** Returns true if the given element can be referenced from any package. */ static boolean isElementPubliclyAccessible(Element element) { return element.accept(new ElementAccessibilityVisitor(), null); }
boolean accessibleMember(Element element) { if (!element.getEnclosingElement().accept(this, null)) { return false; } return accessibleModifiers(element); }
/** Returns true if the given element can be referenced from code in the given package. */ //TODO(gak): account for protected static boolean isElementAccessibleFrom(Element element, String packageName) { return element.accept(new ElementAccessibilityVisitor(packageName), null); }
@Override public Boolean visitVariable(VariableElement element, Void p) { ElementKind kind = element.getKind(); checkArgument(kind.isField(), "checking a variable that isn't a field: %s", kind); return accessibleMember(element); } }