1 package com
.intellij
.openapi
.roots
.impl
;
3 import com
.intellij
.openapi
.extensions
.ExtensionPointName
;
4 import com
.intellij
.openapi
.module
.Module
;
5 import com
.intellij
.openapi
.project
.Project
;
6 import com
.intellij
.openapi
.util
.Key
;
7 import com
.intellij
.openapi
.vfs
.VirtualFile
;
8 import com
.intellij
.util
.messages
.MessageBus
;
9 import org
.jetbrains
.annotations
.NotNull
;
10 import org
.jetbrains
.annotations
.Nullable
;
12 import java
.io
.IOException
;
15 * @author Gregory.Shrago
17 public interface FilePropertyPusher
<T
> {
18 ExtensionPointName
<FilePropertyPusher
> EP_NAME
= ExtensionPointName
.create("com.intellij.filePropertyPusher");
20 void initExtra(Project project
, MessageBus bus
, Engine languageLevelUpdater
);
22 Key
<T
> getFileDataKey();
23 boolean pushDirectoriesOnly();
28 T
getImmediateValue(Project project
, VirtualFile file
);
31 T
getImmediateValue(Module module
);
33 boolean acceptsFile(VirtualFile file
);
35 void persistAttribute(VirtualFile fileOrDir
, T value
) throws IOException
;
37 public interface Engine
{
39 void pushRecursively(final VirtualFile vile
, final Project project
);