diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java')
-rw-r--r-- | platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java | 54 |
1 files changed, 23 insertions, 31 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java index 1c7e768c7d83..4ff3ebba1ee9 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java @@ -34,6 +34,7 @@ import com.intellij.openapi.vfs.VirtualFileAdapter; import com.intellij.openapi.vfs.VirtualFileEvent; import com.intellij.openapi.vfs.newvfs.NewVirtualFile; import com.intellij.util.Alarm; +import com.intellij.util.SmartList; import com.intellij.util.UniqueFileNamesProvider; import com.intellij.util.containers.HashSet; import com.intellij.util.text.UniqueNameGenerator; @@ -51,7 +52,7 @@ import java.io.IOException; import java.util.*; public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme> extends AbstractSchemesManager<T, E> { - private static final Logger LOG = Logger.getInstance("#" + SchemesManagerFactoryImpl.class.getName()); + private static final Logger LOG = Logger.getInstance(SchemesManagerFactoryImpl.class); @NonNls private static final String DEFAULT_EXT = ".xml"; @@ -292,12 +293,13 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme } } + @NotNull private Collection<E> readSchemesFromProviders() { - Collection<E> result = new ArrayList<E>(); if (myProvider == null || !myProvider.isEnabled()) { - return result; + return Collections.emptyList(); } + Collection<E> result = new SmartList<E>(); for (String subPath : myProvider.listSubFiles(myFileSpec, myRoamingType)) { if (!subPath.equals(DELETED_XML)) { try { @@ -305,6 +307,7 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme if (subDocument != null) { E scheme = readScheme(subDocument); boolean fileRenamed = false; + assert scheme != null; T existing = findSchemeByName(scheme.getName()); if (existing != null && existing instanceof ExternalizableScheme) { String currentFileName = ((ExternalizableScheme)existing).getExternalInfo().getCurrentFileName(); @@ -315,7 +318,6 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme } } String fileName = checkFileNameIsFree(subPath, scheme.getName()); - if (!fileRenamed && !fileName.equals(subPath)) { deleteServerFiles(subPath); } @@ -325,7 +327,7 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme } } catch (Exception e) { - LOG.info("Cannot load data from IDEAServer: " + e.getLocalizedMessage()); + LOG.info("Cannot load data from stream provider: " + e.getLocalizedMessage()); } } } @@ -347,21 +349,22 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme }); } - private String checkFileNameIsFree(final String subPath, final String schemeName) { + @NotNull + private String checkFileNameIsFree(@NotNull String subPath, @NotNull String schemeName) { for (Scheme scheme : mySchemes) { if (scheme instanceof ExternalizableScheme) { - ExternalInfo externalInfo = ((ExternalizableScheme)scheme).getExternalInfo(); - String name = externalInfo.getCurrentFileName(); - if (name != null) { - String fileName = name + mySchemeExtension; - if (fileName.equals(subPath) && !Comparing.equal(schemeName, scheme.getName())) { - return createUniqueFileName(collectAllFileNames(), UniqueFileNamesProvider.convertName(schemeName)); + String name = ((ExternalizableScheme)scheme).getExternalInfo().getCurrentFileName(); + if (name != null && + !schemeName.equals(scheme.getName()) && + subPath.length() == (name.length() + mySchemeExtension.length()) && + subPath.startsWith(name) && + subPath.endsWith(mySchemeExtension)) { + return UniqueNameGenerator.generateUniqueName(UniqueFileNamesProvider.convertName(schemeName), collectAllFileNames()); /*VirtualFile oldFile = myVFSBaseDir.findChild(subPath); if (oldFile != null) { oldFile.copy(this, myVFSBaseDir, uniqueFileName + EXT); } externalInfo.setCurrentFileName(uniqueFileName);*/ - } } } } @@ -369,8 +372,9 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme return subPath; } + @NotNull private Collection<String> collectAllFileNames() { - HashSet<String> result = new HashSet<String>(); + Set<String> result = new THashSet<String>(); for (T scheme : mySchemes) { if (scheme instanceof ExternalizableScheme) { ExternalInfo externalInfo = ((ExternalizableScheme)scheme).getExternalInfo(); @@ -382,10 +386,6 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme return result; } - private static String createUniqueFileName(final Collection<String> strings, final String schemeName) { - return UniqueNameGenerator.generateUniqueName(schemeName, strings); - } - private void loadScheme(final E scheme, boolean forceAdd, final String name) { if (scheme != null && (!myDeletedNames.contains(scheme.getName()) || forceAdd)) { T existing = findSchemeByName(scheme.getName()); @@ -469,13 +469,6 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme } final E scheme = readScheme(document); if (scheme != null) { - if (scheme.getName() == null) { - String suggestedName = FileUtil.getNameWithoutExtension(file.getName()); - if (!"_".equals(suggestedName)) { - scheme.setName(suggestedName); - } - } - loadScheme(scheme, forceAdd, file.getName()); result.add(scheme); } @@ -653,8 +646,7 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme result = new SharedSchemeData(original, name, user, description); } else { - Document original = subDocument; - result = new SharedSchemeData(original, name, null, null); + result = new SharedSchemeData(subDocument, name, null, null); } return result; } @@ -673,8 +665,8 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme return false; } - private String getFileFullPath(final String subPath) { - return myFileSpec + "/" + subPath; + private String getFileFullPath(@NotNull String subPath) { + return myFileSpec + '/' + subPath; } @Override @@ -843,9 +835,9 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme deleteServerFiles(fileName); } - private void deleteServerFiles(final String fileName) { + private void deleteServerFiles(@NotNull String path) { if (myProvider != null && myProvider.isEnabled()) { - StorageUtil.deleteContent(myProvider, getFileFullPath(fileName), myRoamingType); + StorageUtil.delete(myProvider, getFileFullPath(path), myRoamingType); } } |