View | Details | Raw Unified | Return to bug 185950 | Differences between
and this patch

Collapse All | Expand All

(-)model/org/eclipse/jdt/internal/core/BufferManager.java (+9 lines)
Lines 72-77 Link Here
72
			owner, 
72
			owner, 
73
			element.isReadOnly());
73
			element.isReadOnly());
74
}
74
}
75
public static IBuffer createNullBuffer(IOpenable owner) {
76
	IJavaElement element = (IJavaElement)owner;
77
	IResource resource = element.getResource();
78
	return 
79
		new NullBuffer(
80
			resource instanceof IFile ? (IFile)resource : null, 
81
			owner, 
82
			element.isReadOnly());
83
}
75
/**
84
/**
76
 * Returns the open buffer associated with the given owner,
85
 * Returns the open buffer associated with the given owner,
77
 * or <code>null</code> if the owner does not have an open
86
 * or <code>null</code> if the owner does not have an open
(-)model/org/eclipse/jdt/internal/core/Openable.java (+3 lines)
Lines 258-263 Link Here
258
			// try to (re)open a buffer
258
			// try to (re)open a buffer
259
			buffer = openBuffer(null, info);
259
			buffer = openBuffer(null, info);
260
		}
260
		}
261
		if (buffer instanceof NullBuffer) {
262
			return null;
263
		}
261
		return buffer;
264
		return buffer;
262
	} else {
265
	} else {
263
		return null;
266
		return null;
(-)model/org/eclipse/jdt/internal/core/ClassFile.java (-7 / +16 lines)
Lines 354-360 Link Here
354
		// .class file not on classpath, create a new buffer to be nice (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=41444)
354
		// .class file not on classpath, create a new buffer to be nice (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=41444)
355
		Object info = ((ClassFile) getClassFile()).getBinaryTypeInfo((IFile) getResource());
355
		Object info = ((ClassFile) getClassFile()).getBinaryTypeInfo((IFile) getResource());
356
		IBuffer buffer = openBuffer(null, info);
356
		IBuffer buffer = openBuffer(null, info);
357
		if (buffer != null)
357
		if (buffer != null && !(buffer instanceof NullBuffer))
358
			return buffer;
358
			return buffer;
359
		if (status.getCode() == IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH)
359
		if (status.getCode() == IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH)
360
			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)
360
			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)
Lines 633-653 Link Here
633
		if (buffer == null) return null;
633
		if (buffer == null) return null;
634
		BufferManager bufManager = getBufferManager();
634
		BufferManager bufManager = getBufferManager();
635
		bufManager.addBuffer(buffer);
635
		bufManager.addBuffer(buffer);
636
		
636
637
		// set the buffer source
637
		// set the buffer source
638
		if (buffer.getCharacters() == null){
638
		if (buffer.getCharacters() == null){
639
			buffer.setContents(contents);
639
			buffer.setContents(contents);
640
		}
640
		}
641
		
641
642
		// listen to buffer changes
642
		// listen to buffer changes
643
		buffer.addBufferChangedListener(this);	
643
		buffer.addBufferChangedListener(this);
644
				
644
645
		// do the source mapping
645
		// do the source mapping
646
		mapper.mapSource(getType(), contents, info);
646
		mapper.mapSource(getType(), contents, info);
647
		
647
648
		return buffer;
649
	} else {
650
		// create buffer
651
		IBuffer buffer = BufferManager.createNullBuffer(this);
652
		if (buffer == null) return null;
653
		BufferManager bufManager = getBufferManager();
654
		bufManager.addBuffer(buffer);
655
656
		// listen to buffer changes
657
		buffer.addBufferChangedListener(this);
648
		return buffer;
658
		return buffer;
649
	}
659
	}
650
	return null;
651
}
660
}
652
/* package */ static String simpleName(char[] className) {
661
/* package */ static String simpleName(char[] className) {
653
	if (className == null)
662
	if (className == null)
(-)model/org/eclipse/jdt/internal/core/NullBuffer.java (+28 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
12
package org.eclipse.jdt.internal.core;
13
14
import org.eclipse.core.resources.IFile;
15
import org.eclipse.jdt.core.IOpenable;
16
17
/**
18
 * @author othomann
19
 *
20
 */
21
public class NullBuffer extends Buffer {
22
	/**
23
	 * Creates a new null buffer on an underlying resource.
24
	 */
25
	public NullBuffer(IFile file, IOpenable owner, boolean readOnly) {
26
		super(file, owner, readOnly);
27
	}
28
}

Return to bug 185950