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
017package org.jetbrains.jet.asJava;
018
019import com.intellij.psi.*;
020import com.intellij.psi.impl.light.AbstractLightClass;
021import com.intellij.psi.impl.light.LightEmptyImplementsList;
022import com.intellij.psi.impl.light.LightModifierList;
023import com.intellij.psi.javadoc.PsiDocComment;
024import org.jetbrains.annotations.NonNls;
025import org.jetbrains.annotations.NotNull;
026import org.jetbrains.annotations.Nullable;
027import org.jetbrains.jet.plugin.JetLanguage;
028
029/**
030 * This class contains method that are straightforward, and only would pollute the actual implementation
031 */
032public abstract class KotlinLightClassForPackageBase extends AbstractLightClass {
033
034    private final PsiModifierList modifierList;
035    private final LightEmptyImplementsList implementsList;
036
037    public KotlinLightClassForPackageBase(PsiManager manager) {
038        super(manager, JetLanguage.INSTANCE);
039        this.modifierList = new LightModifierList(manager, JetLanguage.INSTANCE, PsiModifier.PUBLIC, PsiModifier.FINAL);
040        this.implementsList = new LightEmptyImplementsList(manager);
041    }
042
043    @Nullable
044    @Override
045    public PsiModifierList getModifierList() {
046        return modifierList;
047    }
048
049    @Override
050    public boolean hasModifierProperty(@NonNls @NotNull String name) {
051        return modifierList.hasModifierProperty(name);
052    }
053
054    @Override
055    public boolean isDeprecated() {
056        return false;
057    }
058
059    @Override
060    public boolean isInterface() {
061        return false;
062    }
063
064    @Override
065    public boolean isAnnotationType() {
066        return false;
067    }
068
069    @Override
070    public boolean isEnum() {
071        return false;
072    }
073
074    @Nullable
075    @Override
076    public PsiClass getContainingClass() {
077        return null;
078    }
079
080    @Override
081    public boolean hasTypeParameters() {
082        return false;
083    }
084
085    @NotNull
086    @Override
087    public PsiTypeParameter[] getTypeParameters() {
088        return PsiTypeParameter.EMPTY_ARRAY;
089    }
090
091    @Nullable
092    @Override
093    public PsiTypeParameterList getTypeParameterList() {
094        return null;
095    }
096
097    @Nullable
098    @Override
099    public PsiDocComment getDocComment() {
100        return null;
101    }
102
103    @Nullable
104    @Override
105    public PsiReferenceList getImplementsList() {
106        return implementsList;
107    }
108
109    @NotNull
110    @Override
111    public PsiClassType[] getImplementsListTypes() {
112        return PsiClassType.EMPTY_ARRAY;
113    }
114
115    @Nullable
116    @Override
117    public PsiReferenceList getExtendsList() {
118        // TODO: Find a way to return just Object
119        return super.getExtendsList();
120    }
121
122    @NotNull
123    @Override
124    public PsiClassType[] getExtendsListTypes() {
125        // TODO see getExtendsList()
126        return super.getExtendsListTypes();
127    }
128
129    @Nullable
130    @Override
131    public PsiClass getSuperClass() {
132        // TODO see getExtendsList()
133        return super.getSuperClass();
134    }
135
136    @NotNull
137    @Override
138    public PsiClass[] getSupers() {
139        // TODO see getExtendsList()
140        return super.getSupers();
141    }
142
143    @NotNull
144    @Override
145    public PsiClassType[] getSuperTypes() {
146        // TODO see getExtendsList()
147        return super.getSuperTypes();
148    }
149
150    @Override
151    public PsiClass[] getInterfaces() {
152        return PsiClass.EMPTY_ARRAY;
153    }
154
155    @NotNull
156    @Override
157    public PsiClass[] getInnerClasses() {
158        return PsiClass.EMPTY_ARRAY;
159    }
160
161    @NotNull
162    @Override
163    public PsiClassInitializer[] getInitializers() {
164        return PsiClassInitializer.EMPTY_ARRAY;
165    }
166
167    @NotNull
168    @Override
169    public PsiClass[] getAllInnerClasses() {
170        return PsiClass.EMPTY_ARRAY;
171    }
172
173    @Nullable
174    @Override
175    public PsiClass findInnerClassByName(@NonNls String name, boolean checkBases) {
176        return null;
177    }
178}