Search in sources :

Example 6 with RestrictedApi

use of com.google.errorprone.annotations.RestrictedApi in project error-prone by google.

the class RestrictedApiChecker method matchMethodInvocation.

@Override
public Description matchMethodInvocation(MethodInvocationTree tree, VisitorState state) {
    RestrictedApi annotation = ASTHelpers.getAnnotation(tree, RestrictedApi.class);
    if (annotation != null) {
        return checkRestriction(annotation, tree, state);
    }
    MethodSymbol methSymbol = ASTHelpers.getSymbol(tree);
    if (methSymbol == null) {
        // This shouldn't happen, but has. (See b/33758055)
        return Description.NO_MATCH;
    }
    // Try each super method for @RestrictedApi
    Optional<MethodSymbol> superWithRestrictedApi = ASTHelpers.findSuperMethods(methSymbol, state.getTypes()).stream().filter((t) -> ASTHelpers.hasAnnotation(t, RestrictedApi.class, state)).findFirst();
    if (!superWithRestrictedApi.isPresent()) {
        return Description.NO_MATCH;
    }
    return checkRestriction(ASTHelpers.getAnnotation(superWithRestrictedApi.get(), RestrictedApi.class), tree, state);
}
Also used : RestrictedApi(com.google.errorprone.annotations.RestrictedApi) MethodSymbol(com.sun.tools.javac.code.Symbol.MethodSymbol) TypeElement(javax.lang.model.element.TypeElement) NewClassTreeMatcher(com.google.errorprone.bugpatterns.BugChecker.NewClassTreeMatcher) ArrayList(java.util.ArrayList) MirroredTypesException(javax.lang.model.type.MirroredTypesException) VisitorState(com.google.errorprone.VisitorState) MethodInvocationTree(com.sun.source.tree.MethodInvocationTree) NewClassTree(com.sun.source.tree.NewClassTree) BugPattern(com.google.errorprone.BugPattern) Category(com.google.errorprone.BugPattern.Category) Matcher(com.google.errorprone.matchers.Matcher) Tree(com.sun.source.tree.Tree) JavacProcessingEnvironment(com.sun.tools.javac.processing.JavacProcessingEnvironment) Nullable(javax.annotation.Nullable) MethodInvocationTreeMatcher(com.google.errorprone.bugpatterns.BugChecker.MethodInvocationTreeMatcher) RestrictedApi(com.google.errorprone.annotations.RestrictedApi) JCCompilationUnit(com.sun.tools.javac.tree.JCTree.JCCompilationUnit) List(java.util.List) TypeMirror(javax.lang.model.type.TypeMirror) Matchers(com.google.errorprone.matchers.Matchers) Description(com.google.errorprone.matchers.Description) Annotation(java.lang.annotation.Annotation) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) SeverityLevel(com.google.errorprone.BugPattern.SeverityLevel) ASTHelpers(com.google.errorprone.util.ASTHelpers) MethodSymbol(com.sun.tools.javac.code.Symbol.MethodSymbol)

Example 7 with RestrictedApi

use of com.google.errorprone.annotations.RestrictedApi in project hbase by apache.

the class RSRpcServices method getRemoteClientIpAndPort.

/**
 * @return Remote client's ip and port else null if can't be determined.
 */
@RestrictedApi(explanation = "Should only be called in TestRSRpcServices and RSRpcServices", link = "", allowedOnPath = ".*(TestRSRpcServices|RSRpcServices).java")
static String getRemoteClientIpAndPort() {
    RpcCall rpcCall = RpcServer.getCurrentCall().orElse(null);
    if (rpcCall == null) {
        return HConstants.EMPTY_STRING;
    }
    InetAddress address = rpcCall.getRemoteAddress();
    if (address == null) {
        return HConstants.EMPTY_STRING;
    }
    // scanning than a hostname anyways.
    return Address.fromParts(address.getHostAddress(), rpcCall.getRemotePort()).toString();
}
Also used : RpcCall(org.apache.hadoop.hbase.ipc.RpcCall) InetAddress(java.net.InetAddress) RestrictedApi(com.google.errorprone.annotations.RestrictedApi)

Aggregations

RestrictedApi (com.google.errorprone.annotations.RestrictedApi)7 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Pattern (java.util.regex.Pattern)2 Path (org.apache.hadoop.fs.Path)2 BugPattern (com.google.errorprone.BugPattern)1 Category (com.google.errorprone.BugPattern.Category)1 SeverityLevel (com.google.errorprone.BugPattern.SeverityLevel)1 VisitorState (com.google.errorprone.VisitorState)1 MethodInvocationTreeMatcher (com.google.errorprone.bugpatterns.BugChecker.MethodInvocationTreeMatcher)1 NewClassTreeMatcher (com.google.errorprone.bugpatterns.BugChecker.NewClassTreeMatcher)1 Description (com.google.errorprone.matchers.Description)1 Matcher (com.google.errorprone.matchers.Matcher)1 Matchers (com.google.errorprone.matchers.Matchers)1 ASTHelpers (com.google.errorprone.util.ASTHelpers)1 MethodInvocationTree (com.sun.source.tree.MethodInvocationTree)1 NewClassTree (com.sun.source.tree.NewClassTree)1 Tree (com.sun.source.tree.Tree)1 MethodSymbol (com.sun.tools.javac.code.Symbol.MethodSymbol)1