001 /*
002 * Copyright 2010-2013 JetBrains s.r.o.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 package org.jetbrains.jet.lang.resolve.java.provider;
018
019 import com.intellij.psi.PsiClass;
020 import com.intellij.psi.PsiPackage;
021 import org.jetbrains.annotations.NotNull;
022 import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
023
024 import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.KOTLIN;
025
026 public final class KotlinNamespacePsiDeclarationProvider extends ClassPsiDeclarationProviderImpl implements PackagePsiDeclarationProvider {
027 @NotNull
028 private final PsiPackage psiPackage;
029
030 public KotlinNamespacePsiDeclarationProvider(
031 @NotNull PsiPackage psiPackage,
032 @NotNull PsiClass psiClass,
033 @NotNull PsiClassFinder psiClassFinder
034 ) {
035 super(psiClass, true, psiClassFinder);
036 this.psiPackage = psiPackage;
037 }
038
039 @NotNull
040 @Override
041 public PsiPackage getPsiPackage() {
042 return psiPackage;
043 }
044
045 @NotNull
046 @Override
047 protected MembersCache buildMembersCache() {
048 MembersCache cacheWithMembers = super.buildMembersCache();
049 MembersCache.buildMembersByNameCache(cacheWithMembers, psiClassFinder, null, psiPackage, true, getDeclarationOrigin() == KOTLIN);
050 return cacheWithMembers;
051 }
052
053 @NotNull
054 @Override
055 public DeclarationOrigin getDeclarationOrigin() {
056 return KOTLIN;
057 }
058 }