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

Collapse All | Expand All

(-)model/org/eclipse/jdt/internal/core/SourceMapper.java (-1 / +4 lines)
Lines 1208-1214 Link Here
1208
		this.methodParameterNames = new char[1][][];
1216
		this.methodParameterNames = new char[1][][];
1209
		this.anonymousCounter = 0;
1217
		this.anonymousCounter = 0;
1210
1218
1211
		HashMap oldSourceRanges = (HashMap) this.sourceRanges.clone();
1219
		HashMap oldSourceRanges = null;
1220
		if (elementToFind != null) {
1221
			oldSourceRanges = (HashMap) this.sourceRanges.clone();
1222
		}
1212
		try {
1223
		try {
1213
			IProblemFactory factory = new DefaultProblemFactory();
1224
			IProblemFactory factory = new DefaultProblemFactory();
1214
			SourceElementParser parser = null;
1225
			SourceElementParser parser = null;
(-)model/org/eclipse/jdt/internal/core/ClassFile.java (-7 / +26 lines)
Lines 625-641 Link Here
625
 * @see Openable
625
 * @see Openable
626
 */
626
 */
627
protected IBuffer openBuffer(IProgressMonitor pm, Object info) throws JavaModelException {
627
protected IBuffer openBuffer(IProgressMonitor pm, Object info) throws JavaModelException {
628
	// Check the cache for the top-level type first
629
	IType sourceType = getSourceType();
630
	IBuffer buffer = getBufferManager().getBuffer(sourceType.getClassFile());
628
	SourceMapper mapper = getSourceMapper();
631
	SourceMapper mapper = getSourceMapper();
629
	if (mapper != null) {
632
	IBinaryType typeInfo = info instanceof IBinaryType ? (IBinaryType) info : null;
630
		return mapSource(mapper, info instanceof IBinaryType ? (IBinaryType) info : null);
633
	if (buffer == null) {
634
		if (mapper != null) {
635
			buffer = mapSource(mapper, typeInfo,	sourceType.getClassFile());
636
		}
631
	}
637
	}
632
	return null;
638
	return buffer;
633
}
639
}
634
private IBuffer mapSource(SourceMapper mapper, IBinaryType info) {
640
/** Loads the buffer via SourceMapper, and maps it in SourceMapper */
641
private IBuffer mapSource(SourceMapper mapper, IBinaryType info, IClassFile bufferOwner) {
635
	char[] contents = mapper.findSource(getType(), info);
642
	char[] contents = mapper.findSource(getType(), info);
636
	if (contents != null) {
643
	if (contents != null) {
637
		// create buffer
644
		// create buffer
638
		IBuffer buffer = BufferManager.createBuffer(this);
645
		IBuffer buffer = BufferManager.createBuffer(bufferOwner);
639
		if (buffer == null) return null;
646
		if (buffer == null) return null;
640
		BufferManager bufManager = getBufferManager();
647
		BufferManager bufManager = getBufferManager();
641
		bufManager.addBuffer(buffer);
648
		bufManager.addBuffer(buffer);
Lines 649-660 Link Here
649
		buffer.addBufferChangedListener(this);
656
		buffer.addBufferChangedListener(this);
650
657
651
		// do the source mapping
658
		// do the source mapping
652
		mapper.mapSource(getType(), contents, info);
659
		mapper.mapSource(getSourceType(), contents, info);
653
660
654
		return buffer;
661
		return buffer;
655
	} else {
662
	} else {
656
		// create buffer
663
		// create buffer
657
		IBuffer buffer = BufferManager.createNullBuffer(this);
664
		IBuffer buffer = BufferManager.createNullBuffer(bufferOwner);
658
		if (buffer == null) return null;
665
		if (buffer == null) return null;
659
		BufferManager bufManager = getBufferManager();
666
		BufferManager bufManager = getBufferManager();
660
		bufManager.addBuffer(buffer);
667
		bufManager.addBuffer(buffer);
Lines 674-679 Link Here
674
	else
681
	else
675
		return simpleName;
682
		return simpleName;
676
}
683
}
684
685
/** Returns the type of the top-level declaring class used to find the source code */
686
private IType getSourceType() {
687
	IType type = getType();
688
	IType enclosingType = type.getDeclaringType();
689
	while (enclosingType != null) {
690
		type = enclosingType;
691
		enclosingType = type.getDeclaringType();
692
	}
693
	return type;
694
}
695
677
/**
696
/**
678
 * Returns the Java Model representation of the given name
697
 * Returns the Java Model representation of the given name
679
 * which is provided in diet class file format, or <code>null</code>
698
 * which is provided in diet class file format, or <code>null</code>

Return to bug 285230