replaced <code></code> with more concise {@code}
[idea/community.git] / platform / projectModel-api / src / com / intellij / openapi / components / Storage.java
1 /*
2  * Copyright 2000-2017 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.openapi.components;
17
18 import org.jetbrains.annotations.NonNls;
19
20 import java.lang.annotation.Retention;
21 import java.lang.annotation.RetentionPolicy;
22
23 /**
24  * @see <a href="http://www.jetbrains.org/intellij/sdk/docs/basics/persisting_state_of_components.html">Persisting States</a>
25  */
26 @Retention(RetentionPolicy.RUNTIME)
27 public @interface Storage {
28   /**
29    * @deprecated Use {@link #value()}.
30    */
31   @Deprecated
32   String file() default "";
33
34   /**
35    * Relative to component container configuration root path.
36    * Consider to use shorthand form - {@code @Storage("yourName.xml")} (when you need to specify only file path).
37    */
38   @NonNls
39   String value() default "";
40
41   /**
42    * If deprecated: Data will be removed on write. And ignored on read if (and only if) new storage exists.
43    */
44   boolean deprecated() default false;
45
46   /**
47    * Used by the Settings Repository plugin to determine how application-level settings should be shared between different IDE installations.
48    * You must not store components with different roaming types in one file ({@link #value()}).
49    */
50   RoamingType roamingType() default RoamingType.DEFAULT;
51
52   /**
53    * Class must have constructor {@code (String fileSpec, ComponentManager componentManager, StateStorageManager storageManager)}.
54    * {@code componentManager} parameter can have more concrete type - e.g. Module (if storage intended to support only one type).
55    */
56   Class<? extends StateStorage> storageClass() default StateStorage.class;
57
58   @SuppressWarnings("deprecation")
59   Class<? extends StateSplitter> stateSplitter() default StateSplitterEx.class;
60
61   /**
62    * @deprecated Not required and not used anymore.
63    */
64   @Deprecated
65   StorageScheme scheme() default StorageScheme.DEFAULT;
66
67   /**
68    * @deprecated Not required and not used anymore.
69    */
70   @Deprecated
71   String id() default "default";
72
73   // internal use only
74   boolean exclusive() default false;
75 }