class moved
[idea/community.git] / java / java-impl / src / com / intellij / codeInspection / concurrencyAnnotations / JCiPExternalLibraryResolver.java
1 /*
2  * Copyright 2000-2015 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.codeInspection.concurrencyAnnotations;
17
18 import com.intellij.openapi.roots.ExternalLibraryDescriptor;
19 import com.intellij.codeInsight.daemon.quickFix.ExternalLibraryResolver;
20 import com.intellij.openapi.module.Module;
21 import com.intellij.util.PathUtil;
22 import com.intellij.util.ThreeState;
23 import net.jcip.annotations.GuardedBy;
24 import org.jetbrains.annotations.NotNull;
25 import org.jetbrains.annotations.Nullable;
26
27 import java.util.Collections;
28 import java.util.List;
29
30 /**
31  * @author nik
32  */
33 public class JCiPExternalLibraryResolver extends ExternalLibraryResolver {
34   private static final ExternalLibraryDescriptor JDCIP_LIBRARY_DESCRIPTOR =
35     new ExternalLibraryDescriptor("net.jcip", "jcip-annotations", null) {
36       @NotNull
37       @Override
38       public List<String> getLibraryClassesRoots() {
39         return Collections.singletonList(PathUtil.getJarPathForClass(GuardedBy.class));
40       }
41
42       @Override
43       public String getPresentableName() {
44         return "jcip-annotations.jar";
45       }
46     };
47
48   @Nullable
49   @Override
50   public ExternalClassResolveResult resolveClass(@NotNull String shortClassName, @NotNull ThreeState isAnnotation, @NotNull Module contextModule) {
51     if (JCiPUtil.isJCiPAnnotation(shortClassName) && isAnnotation == ThreeState.YES) {
52       return new ExternalClassResolveResult("net.jcip.annotations." + shortClassName, JDCIP_LIBRARY_DESCRIPTOR);
53     }
54     return null;
55   }
56
57   @Nullable
58   @Override
59   public ExternalLibraryDescriptor resolvePackage(@NotNull String packageName) {
60     if (packageName.equals("net.jcip.annotations")) {
61       return JDCIP_LIBRARY_DESCRIPTOR;
62     }
63     return null;
64   }
65 }