IDEA-157763 Settings repository for IDE: unit tests
[idea/community.git] / platform / configuration-store-impl / src / StreamProviderWrapper.java
1 package com.intellij.configurationStore;
2
3 import com.intellij.openapi.components.RoamingType;
4 import kotlin.jvm.functions.Function1;
5 import kotlin.jvm.functions.Function3;
6 import org.jetbrains.annotations.NotNull;
7 import org.jetbrains.annotations.Nullable;
8
9 import java.io.InputStream;
10
11 /**
12  * @author Alexander Lobas
13  */
14 public class StreamProviderWrapper implements StreamProvider {
15   private StreamProvider myStreamProvider;
16
17   @Nullable
18   public static StreamProvider getOriginalProvider(@Nullable StreamProvider provider) {
19     if (provider instanceof StreamProviderWrapper) {
20       return ((StreamProviderWrapper)provider).myStreamProvider;
21     }
22     return null;
23   }
24
25   public StreamProvider getStreamProvider() {
26     return myStreamProvider;
27   }
28
29   public void setStreamProvider(@Nullable StreamProvider streamProvider) {
30     myStreamProvider = streamProvider;
31   }
32
33   @Override
34   public boolean getEnabled() {
35     return myStreamProvider != null && myStreamProvider.getEnabled();
36   }
37
38   @Override
39   public boolean isApplicable(@NotNull String fileSpec, @NotNull RoamingType roamingType) {
40     return getEnabled() && myStreamProvider.isApplicable(fileSpec, roamingType);
41   }
42
43   @Nullable
44   @Override
45   public InputStream read(@NotNull String fileSpec, @NotNull RoamingType roamingType) {
46     return myStreamProvider.read(fileSpec, roamingType);
47   }
48
49   @Override
50   public void processChildren(@NotNull String path,
51                               @NotNull RoamingType roamingType,
52                               @NotNull Function1<? super String, Boolean> filter,
53                               @NotNull Function3<? super String, ? super InputStream, ? super Boolean, Boolean> processor) {
54     myStreamProvider.processChildren(path, roamingType, filter, processor);
55   }
56
57   @Override
58   public void write(@NotNull String fileSpec, @NotNull byte[] content, int size, @NotNull RoamingType roamingType) {
59     myStreamProvider.write(fileSpec, content, size, roamingType);
60   }
61
62   @Override
63   public void delete(@NotNull String fileSpec, @NotNull RoamingType roamingType) {
64     myStreamProvider.delete(fileSpec, roamingType);
65   }
66 }