cleanup
authorAlexey Kudravtsev <cdr@intellij.com>
Tue, 15 Nov 2016 14:29:59 +0000 (17:29 +0300)
committerAlexey Kudravtsev <cdr@intellij.com>
Wed, 16 Nov 2016 10:20:41 +0000 (13:20 +0300)
platform/core-impl/src/com/intellij/openapi/fileEditor/impl/LoadTextUtil.java
platform/core-impl/src/com/intellij/psi/impl/source/tree/LeafElement.java
platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java
platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/impl/FileTypesTest.java

index d82d030c83474bc5f393fbabe5eac1e0eda452da..2843c8bf0b6f44ea9a8c0d44dea567693898eb05 100644 (file)
@@ -98,17 +98,7 @@ public final class LoadTextUtil {
       detectedLineSeparator = "\n";
     }
 
-    CharSequence result;
-    if (buffer.length() == dst) {
-      result = buffer;
-    }
-    else {
-      // in Mac JDK CharBuffer.subSequence() signature differs from Oracle's
-      // more than that, the signature has changed between jd6 and jdk7,
-      // so use more generic CharSequence.subSequence() just in case
-      @SuppressWarnings("UnnecessaryLocalVariable") CharSequence seq = buffer;
-      result = seq.subSequence(0, dst);
-    }
+    CharSequence result = buffer.length() == dst ? buffer : buffer.subSequence(0, dst);
     return Pair.create(result, detectedLineSeparator);
   }
 
@@ -142,13 +132,9 @@ public final class LoadTextUtil {
 
   @NotNull
   public static Charset detectCharsetAndSetBOM(@NotNull VirtualFile virtualFile, @NotNull byte[] content) {
-    return doDetectCharsetAndSetBOM(virtualFile, content, true).getFirst();
+    return doDetectCharsetAndSetBOM(virtualFile, content, true, virtualFile.getFileType()).getFirst();
   }
 
-  @NotNull
-  private static Pair.NonNull<Charset, byte[]> doDetectCharsetAndSetBOM(@NotNull VirtualFile virtualFile, @NotNull byte[] content, boolean saveBOM) {
-    return doDetectCharsetAndSetBOM(virtualFile, content, saveBOM, virtualFile.getFileType());
-  }
   @NotNull
   private static Pair.NonNull<Charset, byte[]> doDetectCharsetAndSetBOM(@NotNull VirtualFile virtualFile, @NotNull byte[] content, boolean saveBOM, @NotNull FileType fileType) {
     @NotNull Charset charset = virtualFile.isCharsetSet() ? virtualFile.getCharset() : detectCharset(virtualFile, content,fileType);
index 73d53ea2219899d8b67500dc5198ed6091e43ddf..42ac369162059ff3990196d54662b5752c6bb556 100644 (file)
@@ -64,16 +64,17 @@ public abstract class LeafElement extends TreeElement {
   @NotNull
   @Override
   public String getText() {
-    if (myText.length() > 1000 && !(myText instanceof String)) { // e.g. a large text file
-      String text = SoftReference.dereference(getUserData(CACHED_TEXT));
-      if (text == null) {
-        text = myText.toString();
-        putUserData(CACHED_TEXT, new SoftReference<String>(text));
+    CharSequence text = myText;
+    if (text.length() > 1000 && !(text instanceof String)) { // e.g. a large text file
+      String cachedText = SoftReference.dereference(getUserData(CACHED_TEXT));
+      if (cachedText == null) {
+        cachedText = text.toString();
+        putUserData(CACHED_TEXT, new SoftReference<String>(cachedText));
       }
-      return text;
+      return cachedText;
     }
 
-    return myText.toString();
+    return text.toString();
   }
 
   public char charAt(int position) {
@@ -99,10 +100,10 @@ public abstract class LeafElement extends TreeElement {
   @Override
   public boolean textContains(char c) {
     final CharSequence text = myText;
-    final int len = myText.length();
+    final int len = text.length();
 
     if (len > TEXT_MATCHES_THRESHOLD) {
-      char[] chars = CharArrayUtil.fromSequenceWithoutCopying(myText);
+      char[] chars = CharArrayUtil.fromSequenceWithoutCopying(text);
       if (chars != null) {
         for (char aChar : chars) {
           if (aChar == c) return true;
@@ -121,8 +122,7 @@ public abstract class LeafElement extends TreeElement {
   @Override
   protected int textMatches(@NotNull CharSequence buffer, int start) {
     assert start >= 0 : start;
-    final CharSequence text = myText;
-    return leafTextMatches(text, buffer, start);
+    return leafTextMatches(myText, buffer, start);
   }
 
   static int leafTextMatches(@NotNull CharSequence text, @NotNull CharSequence buffer, int start) {
index 15cf174e5225ca466427d95280cc708844c8459e..fdd1f8147939b2a4cd697893042926ace78db844 100644 (file)
@@ -80,11 +80,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
-@State(
-  name = "FileTypeManager",
-  storages = @Storage("filetypes.xml"),
-  additionalExportFile = FileTypeManagerImpl.FILE_SPEC
-)
+@State(name = "FileTypeManager", storages = @Storage("filetypes.xml"), additionalExportFile = FileTypeManagerImpl.FILE_SPEC )
 public class FileTypeManagerImpl extends FileTypeManagerEx implements PersistentStateComponent<Element>, ApplicationComponent, Disposable {
   private static final Logger LOG = Logger.getInstance(FileTypeManagerImpl.class);
 
@@ -229,25 +225,22 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements Persistent
     bus.connect().subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener.Adapter() {
       @Override
       public void after(@NotNull List<? extends VFileEvent> events) {
-        Collection<VirtualFile> files = ContainerUtil.map2Set(events, new Function<VFileEvent, VirtualFile>() {
-          @Override
-          public VirtualFile fun(VFileEvent event) {
-            VirtualFile file = event instanceof VFileCreateEvent ? /* avoid expensive find child here */ null : event.getFile();
-            VirtualFile filtered = file != null && wasAutoDetectedBefore(file) && isDetectable(file) ? file : null;
-            if (toLog()) {
-              log("F: after() VFS event " + event +
-                  "; filtered file: " + filtered +
-                  " (file: " + file +
-                  "; wasAutoDetectedBefore(file): " + (file == null ? null : wasAutoDetectedBefore(file)) +
-                  "; isDetectable(file): " + (file == null ? null : isDetectable(file)) +
-                  "; file.getLength(): " + (file == null ? null : file.getLength()) +
-                  "; file.isValid(): " + (file == null ? null : file.isValid()) +
-                  "; file.is(VFileProperty.SPECIAL): " + (file == null ? null : file.is(VFileProperty.SPECIAL)) +
-                  "; packedFlags.get(id): " + (file instanceof VirtualFileWithId ? readableFlags(packedFlags.get(((VirtualFileWithId)file).getId())) : null) +
-                  "; file.getFileSystem():" + (file == null ? null : file.getFileSystem()) + ")");
-            }
-            return filtered;
+        Collection<VirtualFile> files = ContainerUtil.map2Set(events, (Function<VFileEvent, VirtualFile>)event -> {
+          VirtualFile file = event instanceof VFileCreateEvent ? /* avoid expensive find child here */ null : event.getFile();
+          VirtualFile filtered = file != null && wasAutoDetectedBefore(file) && isDetectable(file) ? file : null;
+          if (toLog()) {
+            log("F: after() VFS event " + event +
+                "; filtered file: " + filtered +
+                " (file: " + file +
+                "; wasAutoDetectedBefore(file): " + (file == null ? null : wasAutoDetectedBefore(file)) +
+                "; isDetectable(file): " + (file == null ? null : isDetectable(file)) +
+                "; file.getLength(): " + (file == null ? null : file.getLength()) +
+                "; file.isValid(): " + (file == null ? null : file.isValid()) +
+                "; file.is(VFileProperty.SPECIAL): " + (file == null ? null : file.is(VFileProperty.SPECIAL)) +
+                "; packedFlags.get(id): " + (file instanceof VirtualFileWithId ? readableFlags(packedFlags.get(((VirtualFileWithId)file).getId())) : null) +
+                "; file.getFileSystem():" + (file == null ? null : file.getFileSystem()) + ")");
           }
+          return filtered;
         });
         files.remove(null);
         if (toLog()) {
@@ -352,7 +345,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements Persistent
   }
 
   private static void log(String message) {
-    System.out.println(message + " - "+Thread.currentThread());
+    LOG.debug(message + " - "+Thread.currentThread());
   }
 
   private final BoundedTaskExecutor reDetectExecutor = new BoundedTaskExecutor("FileTypeManager redetect pool", PooledThreadExecutor.INSTANCE, 1, this);
@@ -655,14 +648,8 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements Persistent
   // writes AUTO_DETECTED_AS_TEXT_MASK, AUTO_DETECTED_AS_BINARY_MASK bits only
   // protected for Upsource
   protected void writeFlagsToCache(@NotNull VirtualFile file, int flags) {
-    DataOutputStream stream = autoDetectedAttribute.writeAttribute(file);
-    try {
-      try {
-        stream.writeByte(flags & (AUTO_DETECTED_AS_TEXT_MASK | AUTO_DETECTED_AS_BINARY_MASK));
-      }
-      finally {
-        stream.close();
-      }
+    try (DataOutputStream stream = autoDetectedAttribute.writeAttribute(file)) {
+      stream.writeByte(flags & (AUTO_DETECTED_AS_TEXT_MASK | AUTO_DETECTED_AS_BINARY_MASK));
     }
     catch (IOException e) {
       LOG.error(e);
@@ -766,12 +753,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements Persistent
       if (toLog()) {
         log("F: processFirstBytes(): inputStream.read() returned "+n+"; retrying with read action. stream="+ streamInfo(stream));
       }
-      n = ApplicationManager.getApplication().runReadAction(new ThrowableComputable<Integer, IOException>() {
-        @Override
-        public Integer compute() throws IOException {
-          return stream.read(bytes, 0, length);
-        }
-      });
+      n = ApplicationManager.getApplication().runReadAction((ThrowableComputable<Integer, IOException>)() -> stream.read(bytes, 0, length));
       if (toLog()) {
         log("F: processFirstBytes(): under read action inputStream.read() returned "+n+"; stream="+ streamInfo(stream));
       }
index 578e2084f7fba1d0b3c8da4d5e07f8a08aeee70c..cd2d300105475ae415b4402e49d5e5def6a16bb4 100644 (file)
@@ -586,7 +586,7 @@ public class FileTypesTest extends PlatformTestCase {
       file.putUserData(FileTypeManagerImpl.DETECTED_FROM_CONTENT_FILE_TYPE_KEY, null);
 
       ensureRedetected(file, detectorCalled);
-      assertTrue(file.getFileType().toString(), file.getFileType() == stuffType);
+      assertSame(file.getFileType().toString(), file.getFileType(), stuffType);
       log("T: ------");
     }
     finally {