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

Collapse All | Expand All

(-)src/org/eclipse/pde/api/tools/internal/ProjectApiDescription.java (-4 / +12 lines)
Lines 306-312 Link Here
306
					}
306
					}
307
					IPackageDescriptor packageDescriptor = Factory.packageDescriptor(fragments[j].getElementName());
307
					IPackageDescriptor packageDescriptor = Factory.packageDescriptor(fragments[j].getElementName());
308
					// visit package
308
					// visit package
309
					ManifestNode pkgNode = findNode(packageDescriptor, isInsertOnResolve(packageDescriptor));
309
					ManifestNode pkgNode = findNode(packageDescriptor, false);
310
					if (pkgNode != null) {
310
					if (pkgNode != null) {
311
						IApiAnnotations annotations = resolveAnnotations(pkgNode, packageDescriptor);
311
						IApiAnnotations annotations = resolveAnnotations(pkgNode, packageDescriptor);
312
						if (visitor.visitElement(packageDescriptor, annotations)) {
312
						if (visitor.visitElement(packageDescriptor, annotations)) {
Lines 348-354 Link Here
348
	 */
348
	 */
349
	private void visit(ApiDescriptionVisitor visitor, IType type) {
349
	private void visit(ApiDescriptionVisitor visitor, IType type) {
350
		IElementDescriptor element = getElementDescriptor(type);
350
		IElementDescriptor element = getElementDescriptor(type);
351
		ManifestNode typeNode = findNode(element, isInsertOnResolve(element));
351
		ManifestNode typeNode = findNode(element, false);
352
		if (typeNode != null) {
352
		if (typeNode != null) {
353
			IApiAnnotations annotations = resolveAnnotations(typeNode, element);
353
			IApiAnnotations annotations = resolveAnnotations(typeNode, element);
354
			if (visitor.visitElement(element, annotations)) {
354
			if (visitor.visitElement(element, annotations)) {
Lines 365-372 Link Here
365
	 * @see org.eclipse.pde.api.tools.internal.ApiDescription#isInsertOnResolve(org.eclipse.pde.api.tools.internal.provisional.descriptors.IElementDescriptor)
365
	 * @see org.eclipse.pde.api.tools.internal.ApiDescription#isInsertOnResolve(org.eclipse.pde.api.tools.internal.provisional.descriptors.IElementDescriptor)
366
	 */
366
	 */
367
	protected boolean isInsertOnResolve(IElementDescriptor elementDescriptor) {
367
	protected boolean isInsertOnResolve(IElementDescriptor elementDescriptor) {
368
		return elementDescriptor.getElementType() != IElementDescriptor.T_METHOD &&
368
		switch (elementDescriptor.getElementType()) {
369
				elementDescriptor.getElementType() != IElementDescriptor.T_FIELD;
369
			case IElementDescriptor.T_METHOD:
370
			case IElementDescriptor.T_FIELD:
371
				return false;
372
			case IElementDescriptor.T_REFERENCE_TYPE:
373
				// no need to insert member types
374
				return ((IReferenceTypeDescriptor) elementDescriptor).getEnclosingType() == null;
375
			default:
376
				return true;
377
		}
370
	}
378
	}
371
	
379
	
372
	/* (non-Javadoc)
380
	/* (non-Javadoc)
(-)src/org/eclipse/pde/api/tools/internal/ApiDescription.java (-4 / +4 lines)
Lines 284-293 Link Here
284
	 * and a node is not present. Default visibility for packages is API, and for types is inherited.
284
	 * and a node is not present. Default visibility for packages is API, and for types is inherited.
285
	 * 
285
	 * 
286
	 * @param element element
286
	 * @param element element
287
	 * @param insert whether to insert a new node
287
	 * @param write <code>true</code> if setting a node, <code>false</code> if getting a node
288
	 * @return manifest node or <code>null</code>
288
	 * @return manifest node or <code>null</code>
289
	 */
289
	 */
290
	protected ManifestNode findNode(IElementDescriptor element, boolean insert) {
290
	protected ManifestNode findNode(IElementDescriptor element, boolean write) {
291
		IElementDescriptor[] path = element.getPath();
291
		IElementDescriptor[] path = element.getPath();
292
		Map map = fPackageMap;
292
		Map map = fPackageMap;
293
		ManifestNode parentNode = null;
293
		ManifestNode parentNode = null;
Lines 297-303 Link Here
297
			parentNode = node;
297
			parentNode = node;
298
			node = (ManifestNode) map.get(current);
298
			node = (ManifestNode) map.get(current);
299
			if (node == null) {
299
			if (node == null) {
300
				if (insert) {
300
				if (write || (isInsertOnResolve(current))) {
301
					node = createNode(parentNode, current);
301
					node = createNode(parentNode, current);
302
					if (node != null) {
302
					if (node != null) {
303
						map.put(current, node);
303
						map.put(current, node);
Lines 320-326 Link Here
320
	 * @see org.eclipse.pde.api.tools.model.component.IApiDescription#resolveAPIDescription(java.lang.String, org.eclipse.pde.api.tools.model.component.IElementDescriptor)
320
	 * @see org.eclipse.pde.api.tools.model.component.IApiDescription#resolveAPIDescription(java.lang.String, org.eclipse.pde.api.tools.model.component.IElementDescriptor)
321
	 */
321
	 */
322
	public IApiAnnotations resolveAnnotations(IElementDescriptor element) {
322
	public IApiAnnotations resolveAnnotations(IElementDescriptor element) {
323
		ManifestNode node = findNode(element, isInsertOnResolve(element));
323
		ManifestNode node = findNode(element, false);
324
		if (node != null) {
324
		if (node != null) {
325
			return resolveAnnotations(node, element);
325
			return resolveAnnotations(node, element);
326
		}
326
		}

Return to bug 233731