From 74c7b09d3bd83be0b89b7b608785804f80379e8e Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 18 May 2012 19:07:32 +0200 Subject: [PATCH] ProjectRootContainerImpl -> projectModel-impl --- .../openapi/vfs/JarCopyingFileSystem.java | 23 +++++++++++++++++++ .../intellij/openapi/vfs/JarFileSystem.java | 4 +--- .../impl/ProjectRootContainerImpl.java | 13 ++++++----- 3 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 platform/core-api/src/com/intellij/openapi/vfs/JarCopyingFileSystem.java rename platform/{lang-impl => projectModel-impl}/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java (95%) diff --git a/platform/core-api/src/com/intellij/openapi/vfs/JarCopyingFileSystem.java b/platform/core-api/src/com/intellij/openapi/vfs/JarCopyingFileSystem.java new file mode 100644 index 000000000000..768884a2194e --- /dev/null +++ b/platform/core-api/src/com/intellij/openapi/vfs/JarCopyingFileSystem.java @@ -0,0 +1,23 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.vfs; + +/** + * @author yole + */ +public interface JarCopyingFileSystem { + void setNoCopyJarForPath(String pathInJar); +} diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/JarFileSystem.java b/platform/platform-api/src/com/intellij/openapi/vfs/JarFileSystem.java index 6251932479e6..4eb914886771 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/JarFileSystem.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/JarFileSystem.java @@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.util.zip.ZipFile; -public abstract class JarFileSystem extends NewVirtualFileSystem { +public abstract class JarFileSystem extends NewVirtualFileSystem implements JarCopyingFileSystem { @NonNls public static final String PROTOCOL = StandardFileSystems.JAR_PROTOCOL; @NonNls public static final String PROTOCOL_PREFIX = "jar://"; @NonNls public static final String JAR_SEPARATOR = StandardFileSystems.JAR_SEPARATOR; @@ -36,8 +36,6 @@ public abstract class JarFileSystem extends NewVirtualFileSystem { public abstract VirtualFile getVirtualFileForJar(@Nullable VirtualFile entryVFile); public abstract ZipFile getJarFile(VirtualFile entryVFile) throws IOException; - public abstract void setNoCopyJarForPath(String pathInJar); - @SuppressWarnings("MethodMayBeStatic") @Nullable public VirtualFile getJarRootForLocalFile(@NotNull VirtualFile virtualFile) { diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java similarity index 95% rename from platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java rename to platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java index 56c778826ff7..9fa2bc88d895 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,9 +27,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.util.WriteExternalException; -import com.intellij.openapi.vfs.JarFileSystem; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.vfs.*; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; import org.jdom.Element; @@ -194,9 +192,12 @@ public class ProjectRootContainerImpl implements JDOMExternalizable, ProjectRoot private static void setNoCopyJars(ProjectRoot root){ if (root instanceof SimpleProjectRoot){ String url = ((SimpleProjectRoot)root).getUrl(); - if (JarFileSystem.PROTOCOL.equals(VirtualFileManager.extractProtocol(url))){ + if (StandardFileSystems.JAR_PROTOCOL.equals(VirtualFileManager.extractProtocol(url))){ String path = VirtualFileManager.extractPath(url); - JarFileSystem.getInstance().setNoCopyJarForPath(path); + final VirtualFileSystem fileSystem = StandardFileSystems.jar(); + if (fileSystem instanceof JarCopyingFileSystem) { + ((JarCopyingFileSystem)fileSystem).setNoCopyJarForPath(path); + } } } else if (root instanceof CompositeProjectRoot){