e199072e5a00bfa6e04f02a9a685ac590e204388
[idea/community.git] / platform / extensions / src / com / intellij / openapi / extensions / PluginDescriptor.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.openapi.extensions;
3
4 import org.jetbrains.annotations.ApiStatus;
5 import org.jetbrains.annotations.NotNull;
6 import org.jetbrains.annotations.Nullable;
7
8 import java.io.File;
9 import java.nio.file.Path;
10 import java.util.Date;
11 import java.util.List;
12
13 public interface PluginDescriptor {
14   /**
15    * @return plugin id or null if the descriptor is the nested (optional dependency) descriptor
16    */
17   PluginId getPluginId();
18
19   ClassLoader getPluginClassLoader();
20
21   default boolean isBundled() {
22     return false;
23   }
24
25   /**
26    * @deprecated Use {@link #getPluginPath()}
27    */
28   @Deprecated
29   default File getPath() {
30     Path path = getPluginPath();
31     return path == null ? null : path.toFile();
32   }
33
34   Path getPluginPath();
35
36   @Nullable
37   String getDescription();
38
39   String getChangeNotes();
40
41   String getName();
42
43   @Nullable
44   String getProductCode();
45
46   @Nullable
47   Date getReleaseDate();
48
49   int getReleaseVersion();
50
51   boolean isLicenseOptional();
52
53   @NotNull
54   List<PluginId> getIncompatibleModuleIds();
55
56   /**
57    * @deprecated Do not use.
58    */
59   @Deprecated
60   default PluginId @NotNull [] getDependentPluginIds() {
61     return PluginId.EMPTY_ARRAY;
62   }
63
64   /**
65    * @deprecated Do not use.
66    */
67   @Deprecated
68   PluginId @NotNull [] getOptionalDependentPluginIds();
69
70   String getVendor();
71
72   String getVersion();
73
74   String getResourceBundleBaseName();
75
76   String getCategory();
77
78   String getVendorEmail();
79
80   String getVendorUrl();
81
82   String getUrl();
83
84   /**
85    * @deprecated doesn't make sense for installed plugins; use PluginNode#getDownloads
86    */
87   @Deprecated
88   @ApiStatus.ScheduledForRemoval(inVersion = "2021.1")
89   default String getDownloads() {
90     return null;
91   }
92
93   String getSinceBuild();
94
95   String getUntilBuild();
96
97   default boolean allowBundledUpdate() {
98     return false;
99   }
100
101   /**
102    * If true, this plugin is hidden from the list of installed plugins in Settings | Plugins.
103    */
104   default boolean isImplementationDetail() {
105     return false;
106   }
107
108   /**
109    * If true, this plugin requires restart even if it otherwise fulfills the requirements of dynamic plugins.
110    */
111   default boolean isRequireRestart() { return false; }
112
113   boolean isEnabled();
114
115   void setEnabled(boolean enabled);
116 }