[facets API] mark some interfaces in Facets API as NonExtendable
[idea/community.git] / platform / lang-api / src / com / intellij / facet / pointers / FacetPointer.java
1 /*
2  * Copyright 2000-2009 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
17 package com.intellij.facet.pointers;
18
19 import com.intellij.facet.Facet;
20 import com.intellij.facet.FacetType;
21 import com.intellij.openapi.module.ModifiableModuleModel;
22 import com.intellij.openapi.project.Project;
23 import com.intellij.openapi.roots.ui.configuration.FacetsProvider;
24 import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
25 import org.jetbrains.annotations.ApiStatus;
26 import org.jetbrains.annotations.NotNull;
27 import org.jetbrains.annotations.Nullable;
28
29 /**
30  * @author nik
31  */
32 @ApiStatus.NonExtendable
33 public interface FacetPointer<F extends Facet> {
34
35   @NotNull
36   Project getProject();
37
38   @Nullable
39   F getFacet();
40
41   @NotNull
42   String getModuleName();
43
44   @NotNull
45   String getFacetName();
46
47   @NotNull
48   String getId();
49
50   @Nullable
51   FacetType<F, ?> getFacetType();
52
53   @Nullable
54   F findFacet(@NotNull ModulesProvider modulesProvider, @NotNull FacetsProvider facetsProvider);
55
56   @NotNull
57   String getFacetTypeId();
58
59   @NotNull
60   String getFacetName(@NotNull ModulesProvider modulesProvider, @NotNull FacetsProvider facetsProvider);
61
62   @NotNull 
63   String getModuleName(@Nullable ModifiableModuleModel moduleModel);
64 }