EMMA Coverage Report (generated Thu Nov 26 15:54:18 CST 2009)
[all classes][org.eclipse.pde.api.tools.internal.builder]

COVERAGE SUMMARY FOR SOURCE FILE [AbstractIllegalTypeReference.java]

nameclass, %method, %block, %line, %
AbstractIllegalTypeReference.java100% (1/1)90%  (9/10)81%  (100/124)86%  (24.9/29)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class AbstractIllegalTypeReference100% (1/1)90%  (9/10)81%  (100/124)86%  (24.9/29)
getQualifiedMessageArgs (IReference): String [] 0%   (0/1)0%   (0/17)0%   (0/3)
getSourceRange (IType, IDocument, IReference): Position 100% (1/1)79%  (19/24)86%  (6/7)
isProblem (IReference): boolean 100% (1/1)93%  (25/27)98%  (4.9/5)
AbstractIllegalTypeReference (): void 100% (1/1)100% (8/8)100% (2/2)
addIllegalType (IReferenceTypeDescriptor, String): void 100% (1/1)100% (8/8)100% (2/2)
considerReference (IReference): boolean 100% (1/1)100% (13/13)100% (4/4)
getElementType (IReference): int 100% (1/1)100% (2/2)100% (1/1)
getMessageArgs (IReference): String [] 100% (1/1)100% (17/17)100% (3/3)
getProblemFlags (IReference): int 100% (1/1)100% (2/2)100% (1/1)
isIllegalType (IReference): boolean 100% (1/1)100% (6/6)100% (1/1)

1/*******************************************************************************
2 * Copyright (c) 2008, 2009 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 *******************************************************************************/
11package org.eclipse.pde.api.tools.internal.builder;
12 
13import java.util.HashMap;
14import java.util.Map;
15 
16import org.eclipse.core.runtime.CoreException;
17import org.eclipse.jdt.core.ISourceRange;
18import org.eclipse.jdt.core.IType;
19import org.eclipse.jface.text.BadLocationException;
20import org.eclipse.jface.text.IDocument;
21import org.eclipse.jface.text.Position;
22import org.eclipse.pde.api.tools.internal.provisional.builder.IReference;
23import org.eclipse.pde.api.tools.internal.provisional.descriptors.IElementDescriptor;
24import org.eclipse.pde.api.tools.internal.provisional.descriptors.IReferenceTypeDescriptor;
25import org.eclipse.pde.api.tools.internal.provisional.model.IApiMember;
26import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem;
27 
28 
29/**
30 * Base implementation of a problem detector for type references
31 * 
32 * @since 1.1
33 * @noextend This class is not intended to be subclassed by clients.
34 */
35public abstract class AbstractIllegalTypeReference extends AbstractProblemDetector {
36 
37        /**
38         * Map of fully qualified type names to associated component IDs that
39         * represent illegal references 
40         */
41        private Map fIllegalTypes = new HashMap();
42        
43        /**
44         * Adds the given type as not to be extended.
45         * 
46         * @param type a type that is marked no extend
47         * @param componentId the component the type is located in
48         */
49        void addIllegalType(IReferenceTypeDescriptor type, String componentId) {
50                fIllegalTypes.put(type.getQualifiedName(), componentId);
51        }        
52        
53        /* (non-Javadoc)
54         * @see org.eclipse.pde.api.tools.internal.provisional.search.IApiProblemDetector#considerReference(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
55         */
56        public boolean considerReference(IReference reference) {
57                if (fIllegalTypes.containsKey(reference.getReferencedTypeName())) {
58                        retainReference(reference);
59                        return true;
60                }
61                return false;
62        }        
63        
64        /**
65         * Returns if the mapping contains the referenced type name
66         * @param reference
67         * @return true of the mapping contains the key false otherwise
68         */
69        protected boolean isIllegalType(IReference reference) {
70                return fIllegalTypes.containsKey(reference.getReferencedTypeName());
71        }
72        
73        /* (non-Javadoc)
74         * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#isProblem(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
75         */
76        protected boolean isProblem(IReference reference) {
77                if(!super.isProblem(reference)) {
78                        return false;
79                }
80                IApiMember type = reference.getResolvedReference();
81                Object componentId = fIllegalTypes.get(type.getName());
82                return componentId != null && type.getApiComponent().getId().equals(componentId);
83        }
84        /* (non-Javadoc)
85         * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#getSourceRange(org.eclipse.jdt.core.IType, org.eclipse.jface.text.IDocument, org.eclipse.pde.api.tools.internal.provisional.model.IReference)
86         */
87        protected Position getSourceRange(IType type, IDocument doc, IReference reference) throws CoreException, BadLocationException {
88                ISourceRange range = type.getNameRange();
89                Position pos = null;
90                if(range != null) {
91                        pos = new Position(range.getOffset(), range.getLength());
92                }
93                if(pos == null) {
94                        return defaultSourcePosition(type, reference);
95                }
96                return pos; 
97        }        
98        
99        /* (non-Javadoc)
100         * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#getElementType(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
101         */
102        protected int getElementType(IReference reference) {
103                return IElementDescriptor.TYPE;
104        }
105        
106        /* (non-Javadoc)
107         * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#getMessageArgs(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
108         */
109        protected String[] getMessageArgs(IReference reference) throws CoreException {
110                return new String[] {
111                                getSimpleTypeName(reference.getResolvedReference()), 
112                                getSimpleTypeName(reference.getMember())};
113        }
114 
115        /* (non-Javadoc)
116         * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#getQualifiedMessageArgs(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
117         */
118        protected String[] getQualifiedMessageArgs(IReference reference) throws CoreException {
119                return new String[] {
120                                getQualifiedTypeName(reference.getResolvedReference()), 
121                                getQualifiedTypeName(reference.getMember())};
122        }
123        
124        /* (non-Javadoc)
125         * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#getProblemFlags(org.eclipse.pde.api.tools.internal.provisional.model.IReference)
126         */
127        protected int getProblemFlags(IReference reference) {
128                return IApiProblem.NO_FLAGS;
129        }
130}

[all classes][org.eclipse.pde.api.tools.internal.builder]
EMMA 2.0.5312 EclEmma Fix 1 (C) Vladimir Roubtsov