Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 66497 Details for
Bug 185950
[performance] opening class file without source attachement is too slow
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Proposed fix
patch_185950_2.txt (text/plain), 4.93 KB, created by
Olivier Thomann
on 2007-05-09 11:36:42 EDT
(
hide
)
Description:
Proposed fix
Filename:
MIME Type:
Creator:
Olivier Thomann
Created:
2007-05-09 11:36:42 EDT
Size:
4.93 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: model/org/eclipse/jdt/internal/core/BufferManager.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BufferManager.java,v >retrieving revision 1.27 >diff -u -r1.27 BufferManager.java >--- model/org/eclipse/jdt/internal/core/BufferManager.java 6 Mar 2007 02:38:49 -0000 1.27 >+++ model/org/eclipse/jdt/internal/core/BufferManager.java 9 May 2007 15:34:57 -0000 >@@ -72,6 +72,15 @@ > owner, > element.isReadOnly()); > } >+public static IBuffer createNullBuffer(IOpenable owner) { >+ IJavaElement element = (IJavaElement)owner; >+ IResource resource = element.getResource(); >+ return >+ new NullBuffer( >+ resource instanceof IFile ? (IFile)resource : null, >+ owner, >+ element.isReadOnly()); >+} > /** > * Returns the open buffer associated with the given owner, > * or <code>null</code> if the owner does not have an open >Index: model/org/eclipse/jdt/internal/core/Openable.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Openable.java,v >retrieving revision 1.111 >diff -u -r1.111 Openable.java >--- model/org/eclipse/jdt/internal/core/Openable.java 29 Mar 2006 03:08:47 -0000 1.111 >+++ model/org/eclipse/jdt/internal/core/Openable.java 9 May 2007 15:34:57 -0000 >@@ -258,6 +258,9 @@ > // try to (re)open a buffer > buffer = openBuffer(null, info); > } >+ if (buffer instanceof NullBuffer) { >+ return null; >+ } > return buffer; > } else { > return null; >Index: model/org/eclipse/jdt/internal/core/ClassFile.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFile.java,v >retrieving revision 1.134 >diff -u -r1.134 ClassFile.java >--- model/org/eclipse/jdt/internal/core/ClassFile.java 6 Mar 2007 02:38:49 -0000 1.134 >+++ model/org/eclipse/jdt/internal/core/ClassFile.java 9 May 2007 15:34:57 -0000 >@@ -354,7 +354,7 @@ > // .class file not on classpath, create a new buffer to be nice (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=41444) > Object info = ((ClassFile) getClassFile()).getBinaryTypeInfo((IFile) getResource()); > IBuffer buffer = openBuffer(null, info); >- if (buffer != null) >+ if (buffer != null && !(buffer instanceof NullBuffer)) > return buffer; > if (status.getCode() == IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH) > return null; // don't throw a JavaModelException to be able to open .class file outside the classpath (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=138507) >@@ -633,21 +633,30 @@ > if (buffer == null) return null; > BufferManager bufManager = getBufferManager(); > bufManager.addBuffer(buffer); >- >+ > // set the buffer source > if (buffer.getCharacters() == null){ > buffer.setContents(contents); > } >- >+ > // listen to buffer changes >- buffer.addBufferChangedListener(this); >- >+ buffer.addBufferChangedListener(this); >+ > // do the source mapping > mapper.mapSource(getType(), contents, info); >- >+ >+ return buffer; >+ } else { >+ // create buffer >+ IBuffer buffer = BufferManager.createNullBuffer(this); >+ if (buffer == null) return null; >+ BufferManager bufManager = getBufferManager(); >+ bufManager.addBuffer(buffer); >+ >+ // listen to buffer changes >+ buffer.addBufferChangedListener(this); > return buffer; > } >- return null; > } > /* package */ static String simpleName(char[] className) { > if (className == null) >Index: model/org/eclipse/jdt/internal/core/NullBuffer.java >=================================================================== >RCS file: model/org/eclipse/jdt/internal/core/NullBuffer.java >diff -N model/org/eclipse/jdt/internal/core/NullBuffer.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ model/org/eclipse/jdt/internal/core/NullBuffer.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,28 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+ >+package org.eclipse.jdt.internal.core; >+ >+import org.eclipse.core.resources.IFile; >+import org.eclipse.jdt.core.IOpenable; >+ >+/** >+ * @author othomann >+ * >+ */ >+public class NullBuffer extends Buffer { >+ /** >+ * Creates a new null buffer on an underlying resource. >+ */ >+ public NullBuffer(IFile file, IOpenable owner, boolean readOnly) { >+ super(file, owner, readOnly); >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 185950
:
66295
|
66397
| 66497