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

COVERAGE SUMMARY FOR SOURCE FILE [ApiProblem.java]

nameclass, %method, %block, %line, %
ApiProblem.java100% (1/1)100% (32/32)97%  (590/610)98%  (178.1/182)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ApiProblem100% (1/1)100% (32/32)97%  (590/610)98%  (178.1/182)
argumentsEqual (String []): boolean 100% (1/1)64%  (27/42)71%  (7.1/10)
equals (Object): boolean 100% (1/1)93%  (67/72)95%  (20/21)
ApiProblem (String, String, String [], String [], Object [], int, int, int, i... 100% (1/1)100% (60/60)100% (21/21)
argumentsHashcode (String []): int 100% (1/1)100% (26/26)100% (6/6)
getApiBaselineProblemKindName (int): String 100% (1/1)100% (6/6)100% (3/3)
getApiComponentResolutionProblemKindName (int): String 100% (1/1)100% (6/6)100% (3/3)
getCategory (): int 100% (1/1)100% (5/5)100% (1/1)
getCharEnd (): int 100% (1/1)100% (3/3)100% (1/1)
getCharStart (): int 100% (1/1)100% (3/3)100% (1/1)
getDescriptorKind (int): String 100% (1/1)100% (14/14)100% (7/7)
getElementKind (): int 100% (1/1)100% (7/7)100% (1/1)
getExtraMarkerAttributeIds (): String [] 100% (1/1)100% (22/22)100% (5/5)
getExtraMarkerAttributeValues (): Object [] 100% (1/1)100% (22/22)100% (5/5)
getFlags (): int 100% (1/1)100% (7/7)100% (1/1)
getId (): int 100% (1/1)100% (3/3)100% (1/1)
getKind (): int 100% (1/1)100% (7/7)100% (1/1)
getLineNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getMessage (): String 100% (1/1)100% (10/10)100% (3/3)
getMessageArguments (): String [] 100% (1/1)100% (9/9)100% (3/3)
getMessageid (): int 100% (1/1)100% (7/7)100% (1/1)
getProblemCategory (int): String 100% (1/1)100% (16/16)100% (8/8)
getProblemElementKind (int, int): String 100% (1/1)100% (10/10)100% (4/4)
getProblemFlagsName (int, int): String 100% (1/1)100% (31/31)100% (15/15)
getProblemKind (int, int): String 100% (1/1)100% (22/22)100% (8/8)
getResourcePath (): String 100% (1/1)100% (3/3)100% (1/1)
getSeverity (): int 100% (1/1)100% (10/10)100% (3/3)
getTagsProblemKindName (int): String 100% (1/1)100% (10/10)100% (5/5)
getTypeName (): String 100% (1/1)100% (3/3)100% (1/1)
getUsageProblemKindName (int): String 100% (1/1)100% (22/22)100% (11/11)
getVersionProblemKindName (int): String 100% (1/1)100% (16/16)100% (8/8)
hashCode (): int 100% (1/1)100% (26/26)100% (4/4)
toString (): String 100% (1/1)100% (107/107)100% (18/18)

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.problems;
12 
13import org.eclipse.core.runtime.Path;
14import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin;
15import org.eclipse.pde.api.tools.internal.provisional.descriptors.IElementDescriptor;
16import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem;
17import org.eclipse.pde.api.tools.internal.util.Util;
18 
19/**
20 * A description of an api problem
21 * 
22 * @since 1.0.0
23 */
24public class ApiProblem implements IApiProblem {
25 
26        /**
27         * Human readable message for the problem
28         * TODO should not be passed in  by user, should be derived (lazily loaded)
29         */
30        private String fMessage = null;
31        /**
32         * The resource path for this problem
33         */
34        private String fResourcePath = null;
35        /**
36         * The qualified type name for this problem
37         */
38        private String fTypeName = null;
39        /**
40         * The composite id of the problem. Contains the category, 
41         * element kind, kind, and flags for a specific problem
42         */
43        private int fId = 0;
44        /**
45         * The listing of extra argument ids for the problem
46         */
47        private String[] fExtraArgumentIds = null;
48        /**
49         * The listing of corresponding arguments for the problem
50         */
51        private Object[] fExtraArguments = null;
52        /**
53         * The listing of arguments used to fill localized messages
54         */
55        private String[] fMessageArguments = null;
56        /**
57         * The line number the problem occurred on
58         */
59        private int fLineNumber = -1;
60        /**
61         * The start of a character selection range
62         */
63        private int fCharStart = -1;
64        /**
65         * The end of a character selection range
66         */
67        private int fCharEnd = -1;
68        
69        /**
70         * Masks to get the original bits out of the id
71         */
72        public static final int CATEGORY_MASK = 0xF0000000;
73        public static final int ELEMENT_KIND_MASK = 0x0F000000;
74        public static final int KIND_MASK = 0x00F00000;
75        public static final int FLAGS_MASK = 0x000FF000;
76        public static final int MESSAGE_MASK = 0x00000FFF;
77        
78        /**
79         * Constant representing the name of the 'compatibilityStatus' attribute on API problem
80         * for the compatibility category.
81         * Value is: <code>compatibilityStatus</code>
82         */
83        public static final String COMPATIBILITY_STATUS = "compatibilityStatus"; //$NON-NLS-1$
84 
85        /**
86         * Constructor
87         * @param resource the resource this problem occurs on / in
88         * @param typeName the qualified type name this problem occurs on / in
89         * @param messageargs arguments to be passed into a localized message for the problem
90         * @param argumentids the ids of arguments passed into the problem
91         * @param arguments the arguments that correspond to the listing of ids
92         * @param linenumber the line this problem occurred on
93         * @param charstart the char selection start position
94         * @param charend the char selection end position
95         * @param severity the severity level of the problem
96         * @param id the id of the problem
97         */
98        public ApiProblem(String path, String typeName, String[] messageargs, String[] argumentids, Object[] arguments, int linenumber, int charstart, int charend, int id) {
99                this.fResourcePath = path;
100                this.fTypeName = typeName;
101                this.fId = id;
102                this.fExtraArgumentIds = argumentids;
103                this.fExtraArguments = arguments;
104                this.fLineNumber = linenumber;
105                this.fCharStart = charstart;
106                this.fCharEnd = charend;
107                this.fMessageArguments = messageargs;
108        }
109        
110        /* (non-Javadoc)
111         * @see org.eclipse.pde.api.tools.internal.provisional.IApiProblem#getId()
112         */
113        public int getId() {
114                return fId;
115        }
116        
117        /* (non-Javadoc)
118         * @see org.eclipse.pde.api.tools.internal.provisional.IApiProblem#getCategory()
119         */
120        public int getCategory() {
121                return (fId & CATEGORY_MASK);
122        }
123 
124        /* (non-Javadoc)
125         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getMessageid()
126         */
127        public int getMessageid() {
128                return (fId & MESSAGE_MASK) >> OFFSET_MESSAGE;
129        }
130        
131        /* (non-Javadoc)
132         * @see org.eclipse.pde.api.tools.internal.provisional.IApiProblem#getFlags()
133         */
134        public int getFlags() {
135                return (fId & FLAGS_MASK) >> OFFSET_FLAGS;
136        }
137 
138        /* (non-Javadoc)
139         * @see org.eclipse.pde.api.tools.internal.provisional.IApiProblem#getKind()
140         */
141        public int getKind() {
142                return (fId & KIND_MASK) >> OFFSET_KINDS;
143        }
144 
145        /* (non-Javadoc)
146         * @see org.eclipse.pde.api.tools.internal.provisional.IApiProblem#getMessage()
147         */
148        public String getMessage() {
149                if(fMessage == null) {
150                        fMessage = ApiProblemFactory.getLocalizedMessage(this);
151                }
152                return fMessage;
153        }
154 
155        /* (non-Javadoc)
156         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getResourcePath()
157         */
158        public String getResourcePath() {
159                return fResourcePath;
160        }
161        
162        /* (non-Javadoc)
163         * @see org.eclipse.pde.api.tools.internal.provisional.IApiProblem#getSeverity()
164         */
165        public int getSeverity() {
166                if(ApiPlugin.isRunningInFramework()) {
167                        return ApiPlugin.getDefault().getSeverityLevel(ApiProblemFactory.getProblemSeverityId(this), null);
168                }
169                return ApiPlugin.SEVERITY_WARNING;
170        }
171        
172        /* (non-Javadoc)
173         * @see org.eclipse.pde.api.tools.internal.provisional.IApiProblem#getElementKind()
174         */
175        public int getElementKind() {
176                return (fId & ELEMENT_KIND_MASK) >> OFFSET_ELEMENT;
177        }
178        
179        /* (non-Javadoc)
180         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getLineNumber()
181         */
182        public int getLineNumber() {
183                return fLineNumber;
184        }
185        
186        /* (non-Javadoc)
187         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getCharStart()
188         */
189        public int getCharStart() {
190                return fCharStart;
191        }
192        
193        /* (non-Javadoc)
194         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getCharEnd()
195         */
196        public int getCharEnd() {
197                return fCharEnd;
198        }
199 
200        /* (non-Javadoc)
201         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getExtraMarkerAttributeNames()
202         */
203        public String[] getExtraMarkerAttributeIds() {
204                if(fExtraArguments == null || fExtraArgumentIds == null) {
205                        return new String[0];
206                }
207                if(fExtraArgumentIds.length != fExtraArguments.length) {
208                        return new String[0];
209                }
210                return fExtraArgumentIds;
211        }
212        
213        /* (non-Javadoc)
214         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getExtraMarkerAttributeValues()
215         */
216        public Object[] getExtraMarkerAttributeValues() {
217                if(fExtraArguments == null || fExtraArgumentIds == null) {
218                        return new String[0];
219                }
220                if(fExtraArgumentIds.length != fExtraArguments.length) {
221                        return new String[0];
222                }
223                return fExtraArguments;
224        }
225        
226        /* (non-Javadoc)
227         * @see org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem#getMessageArguments()
228         */
229        public String[] getMessageArguments() {
230                if(fMessageArguments == null) {
231                        return new String[0];
232                }
233                return fMessageArguments;
234        }
235        
236        public boolean equals(Object obj) {
237                if(obj instanceof IApiProblem) {
238                        IApiProblem problem = (IApiProblem) obj;
239                        if (problem.getId() == fId && argumentsEqual(problem.getMessageArguments())) {
240                                String resourcePath = problem.getResourcePath();
241                                if (resourcePath == null) {
242                                        if (this.fResourcePath != null) {
243                                                return false;
244                                        }
245                                } else if (this.fResourcePath == null) {
246                                        return false;
247                                } else if (!new Path(resourcePath).equals(new Path(fResourcePath))) {
248                                        return false;
249                                }
250                                String typeName = problem.getTypeName();
251                                if (typeName == null) {
252                                        if (this.fTypeName != null) {
253                                                return false;
254                                        }
255                                        return true;
256                                } else if (this.fTypeName == null) {
257                                        return false;
258                                }
259                                return typeName.equals(this.fTypeName);
260                        }
261                        return false;
262                }
263                return super.equals(obj);
264        }
265        /**
266         * Compares the complete list of message arguments
267         * @param arguments
268         * @return true if all of the arguments are equal, false otherwise
269         */
270        private boolean argumentsEqual(String[] arguments) {
271                String[] currentArguments = getMessageArguments();
272                if((currentArguments == null && arguments != null) ||
273                        (currentArguments != null && arguments == null)) {
274                        return false;
275                }
276                boolean equal = true;
277                if(currentArguments.length != arguments.length) {
278                        return false;
279                }
280                for(int i = 0; i < currentArguments.length; i++) {
281                        equal &= currentArguments[i].equals(arguments[i]);
282                }
283                return equal;
284        }
285        
286        /**
287         * Returns the deep hash code of the complete listing of message arguments
288         * @param arguments
289         * @return the hash code of the message arguments
290         */
291        private int argumentsHashcode(String[] arguments) {
292                if(fMessageArguments == null) {
293                        return 0;
294                }
295                int hashcode = 0;
296                for(int i = 0; i < fMessageArguments.length; i++) {
297                        hashcode += fMessageArguments[i].hashCode();
298                }
299                return hashcode;
300        }
301        
302        /* (non-Javadoc)
303         * @see java.lang.Object#toString()
304         */
305        public String toString() {
306                StringBuffer buffer = new StringBuffer();
307                buffer.append("Api problem: "); //$NON-NLS-1$
308                buffer.append(fResourcePath != null ? fResourcePath : "no path").append("\n"); //$NON-NLS-1$//$NON-NLS-2$
309                buffer.append("\tseverity: "); //$NON-NLS-1$
310                buffer.append(Util.getSeverity(getSeverity())).append("\n"); //$NON-NLS-1$
311                buffer.append("\tcategory: "); //$NON-NLS-1$
312                buffer.append(ApiProblem.getProblemCategory(getCategory())).append("\n"); //$NON-NLS-1$
313                buffer.append("\telement kind: "); //$NON-NLS-1$
314                buffer.append(ApiProblem.getProblemElementKind(getCategory(), getElementKind())).append("\n"); //$NON-NLS-1$
315                buffer.append("\tkind: "); //$NON-NLS-1$
316                buffer.append(ApiProblem.getProblemKind(getCategory(), getKind())).append("\n"); //$NON-NLS-1$
317                buffer.append("\tflags: "); //$NON-NLS-1$
318                buffer.append(ApiProblem.getProblemFlagsName(getCategory(), getFlags())).append("\n"); //$NON-NLS-1$
319                buffer.append("\tmessage id: "); //$NON-NLS-1$
320                buffer.append(getMessageid());
321                buffer.append("\n\tmessage:"); //$NON-NLS-1$
322                buffer.append(getMessage());
323                return buffer.toString();
324        }        
325        
326        /* (non-Javadoc)
327         * @see java.lang.Object#hashCode()
328         */
329        public int hashCode() {
330                return getId()
331                        + (fResourcePath != null ? fResourcePath.hashCode() : 0)
332                        + argumentsHashcode(fMessageArguments)
333                        + (fTypeName != null ? fTypeName.hashCode() : 0);
334        }
335 
336        public String getTypeName() {
337                return this.fTypeName;
338        }
339 
340        /**
341         * Returns the string representation of an element descriptor type or <code>null</code>
342         * if the kind is unknown
343         * @param kind
344         * @return the string of the kind or <code>null</code>
345         */
346        public static String getDescriptorKind(int kind) {
347                switch(kind) {
348                        case IElementDescriptor.PACKAGE: {
349                                return "PACKAGE";         //$NON-NLS-1$
350                        }
351                        case IElementDescriptor.FIELD: {
352                                return "FIELD"; //$NON-NLS-1$
353                        }
354                        case IElementDescriptor.METHOD: {
355                                return "METHOD"; //$NON-NLS-1$
356                        }
357                        case IElementDescriptor.TYPE: {
358                                return "REFERENCE_TYPE"; //$NON-NLS-1$
359                        }
360                        case IElementDescriptor.RESOURCE: {
361                                return "RESOURCE"; //$NON-NLS-1$
362                        }
363                }
364                return Util.UNKNOWN_ELEMENT_KIND;
365        }
366 
367        /**
368         * Returns the string representation of the kind of since tab
369         * api problem
370         * @param kind
371         * @return the string for the since tag api problem kind
372         */
373        public static String getTagsProblemKindName(int kind) {
374                switch(kind) {
375                        case IApiProblem.SINCE_TAG_INVALID: return "INVALID_SINCE_TAGS"; //$NON-NLS-1$
376                        case IApiProblem.SINCE_TAG_MALFORMED: return "MALFORMED_SINCE_TAGS"; //$NON-NLS-1$
377                        case IApiProblem.SINCE_TAG_MISSING: return "MISSING_SINCE_TAGS"; //$NON-NLS-1$
378                }
379                return Util.UNKNOWN_KIND;
380        }
381 
382        /**
383         * Returns the string representation of the kind of usage problem for 
384         * an {@link IApiProblem} kind
385         * @param kind
386         * @return the string for the usage api problem kind
387         */
388        public static String getUsageProblemKindName(int kind) {
389                switch(kind) {
390                        case IApiProblem.ILLEGAL_EXTEND: return "ILLEGAL_EXTEND"; //$NON-NLS-1$
391                        case IApiProblem.ILLEGAL_IMPLEMENT: return "ILLEGAL_IMPLEMENT"; //$NON-NLS-1$
392                        case IApiProblem.ILLEGAL_INSTANTIATE: return "ILLEGAL_INSTANTIATE"; //$NON-NLS-1$
393                        case IApiProblem.ILLEGAL_REFERENCE: return "ILLEGAL_REFERENCE"; //$NON-NLS-1$
394                        case IApiProblem.ILLEGAL_OVERRIDE: return "ILLEGAL_OVERRIDE"; //$NON-NLS-1$
395                        case IApiProblem.API_LEAK: return "API_LEAK"; //$NON-NLS-1$
396                        case IApiProblem.UNSUPPORTED_TAG_USE: return "UNSUPPORTED_TAG_USE"; //$NON-NLS-1$
397                        case IApiProblem.INVALID_REFERENCE_IN_SYSTEM_LIBRARIES: return "INVALID_REFERENCE_IN_SYSTEM_LIBRARIES"; //$NON-NLS-1$
398                        case IApiProblem.UNUSED_PROBLEM_FILTERS: return "UNUSED_PROBLEM_FILTERS"; //$NON-NLS-1$
399                }
400                return Util.UNKNOWN_KIND;
401        }
402 
403        /**
404         * Returns the string representation of the version problem kind.
405         * @param kind
406         * @return the string of the version API problem kind
407         */
408        public static String getVersionProblemKindName(int kind) {
409                switch(kind) {
410                        case IApiProblem.MINOR_VERSION_CHANGE: return "MINOR_VERSION_CHANGE"; //$NON-NLS-1$
411                        case IApiProblem.MAJOR_VERSION_CHANGE: return "MAJOR_VERSION_CHANGE"; //$NON-NLS-1$
412                        case IApiProblem.MAJOR_VERSION_CHANGE_NO_BREAKAGE: return "MAJOR_VERSION_CHANGE_NO_BREAKAGE"; //$NON-NLS-1$
413                        case IApiProblem.MINOR_VERSION_CHANGE_NO_NEW_API: return "MINOR_VERSION_CHANGE_NO_NEW_API"; //$NON-NLS-1$
414                        case IApiProblem.REEXPORTED_MAJOR_VERSION_CHANGE: return "REEXPORTED_MAJOR_VERSION_CHANGE"; //$NON-NLS-1$
415                        case IApiProblem.REEXPORTED_MINOR_VERSION_CHANGE: return "REEXPORTED_MINOR_VERSION_CHANGE"; //$NON-NLS-1$
416                }
417                return Util.UNKNOWN_KIND;
418        }
419 
420        /**
421         * Returns the string representation of the API profile problem kind
422         * @param kind
423         * @return the string of the API profile problem kind
424         */
425        public static String getApiComponentResolutionProblemKindName(int kind) {
426                switch(kind) {
427                        case IApiProblem.API_COMPONENT_RESOLUTION: {
428                                return "API_COMPONENT_RESOLUTION"; //$NON-NLS-1$
429                        }
430                }
431                return Util.UNKNOWN_KIND;
432        }
433 
434        /**
435         * Returns the string representation of the API profile problem kind
436         * @param kind
437         * @return the string of the API profile problem kind
438         */
439        public static String getApiBaselineProblemKindName(int kind) {
440                switch(kind) {
441                        case IApiProblem.API_BASELINE_MISSING: return "API_BASELINE_MISSING"; //$NON-NLS-1$
442                }
443                return Util.UNKNOWN_KIND;
444        }
445 
446        /**
447         * Returns the string representation of the kind of an
448         * {@link IApiProblem}, given its category
449         * @param category
450         * @param kind
451         * @return the string of the {@link IApiProblem} kind
452         */
453        public static String getProblemKind(int category, int kind) {
454                switch(category) {
455                        case IApiProblem.CATEGORY_COMPATIBILITY: {
456                                return Util.getDeltaKindName(kind);
457                        }
458                        case IApiProblem.CATEGORY_SINCETAGS: {
459                                return ApiProblem.getTagsProblemKindName(kind);
460                        }
461                        case IApiProblem.CATEGORY_USAGE: {
462                                return ApiProblem.getUsageProblemKindName(kind);
463                        }
464                        case IApiProblem.CATEGORY_VERSION: {
465                                return ApiProblem.getVersionProblemKindName(kind);
466                        }
467                        case IApiProblem.CATEGORY_API_BASELINE: {
468                                return ApiProblem.getApiBaselineProblemKindName(kind);
469                        }
470                        case IApiProblem.CATEGORY_API_COMPONENT_RESOLUTION: {
471                                return ApiProblem.getApiComponentResolutionProblemKindName(kind);
472                        }
473                }
474                return Util.UNKNOWN_KIND;
475        }
476 
477        /**
478         * Return the string representation of the flags for a problem
479         * @param category
480         * @param flags
481         * @return the string for the problem flags
482         */
483        public static String getProblemFlagsName(int category, int flags) {
484                switch(category) {
485                        case IApiProblem.CATEGORY_COMPATIBILITY:  {
486                                return Util.getDeltaFlagsName(flags);
487                        }
488                        case IApiProblem.CATEGORY_SINCETAGS:
489                        case IApiProblem.CATEGORY_USAGE:
490                        case IApiProblem.CATEGORY_VERSION:
491                        case IApiProblem.CATEGORY_API_BASELINE:
492                        case IApiProblem.CATEGORY_API_COMPONENT_RESOLUTION: {
493                                switch(flags) {
494                                        case IApiProblem.LEAK_EXTENDS: {
495                                                return "LEAK_EXTENDS"; //$NON-NLS-1$
496                                        }
497                                        case IApiProblem.LEAK_FIELD: {
498                                                return "LEAK_FIELD"; //$NON-NLS-1$
499                                        }
500                                        case IApiProblem.LEAK_IMPLEMENTS: {
501                                                return "LEAK_IMPLEMENTS"; //$NON-NLS-1$
502                                        }
503                                        case IApiProblem.LEAK_METHOD_PARAMETER: {
504                                                return "LEAK_METHOD_PARAMETER"; //$NON-NLS-1$
505                                        }
506                                        case IApiProblem.LEAK_CONSTRUCTOR_PARAMETER: {
507                                                return "LEAK_CONSTRUCTOR_PARAMETER"; //$NON-NLS-1$
508                                        }
509                                        case IApiProblem.LEAK_RETURN_TYPE: {
510                                                return "LEAK_RETURN_TYPE"; //$NON-NLS-1$
511                                        }
512                                        case IApiProblem.CONSTRUCTOR_METHOD: {
513                                                return "CONSTRUCTOR_METHOD"; //$NON-NLS-1$
514                                        }
515                                        case IApiProblem.NO_FLAGS: {
516                                                return "NO_FLAGS"; //$NON-NLS-1$
517                                        }
518                                        case IApiProblem.INDIRECT_REFERENCE: {
519                                                return "INDIRECT_REFERENCE"; //$NON-NLS-1$
520                                        }
521                                        case IApiProblem.METHOD: {
522                                                return "METHOD"; //$NON-NLS-1$
523                                        }
524                                        case IApiProblem.FIELD: {
525                                                return "FIELD"; //$NON-NLS-1$
526                                        }
527                                }
528                        }
529                }
530                return Util.UNKNOWN_FLAGS;
531        }
532 
533        /**
534         * Returns the string representation of the element kind of an
535         * {@link IApiProblem}, given its category
536         * @param category
537         * @param kind
538         * @return the string of the {@link IApiProblem} element kind 
539         */
540        public static String getProblemElementKind(int category, int kind) {
541                switch(category) {
542                        case IApiProblem.CATEGORY_COMPATIBILITY:
543                        case IApiProblem.CATEGORY_SINCETAGS: {
544                                return Util.getDeltaElementType(kind);
545                        }
546                        case IApiProblem.CATEGORY_USAGE:
547                        case IApiProblem.CATEGORY_VERSION:
548                        case IApiProblem.CATEGORY_API_BASELINE:
549                        case IApiProblem.CATEGORY_API_COMPONENT_RESOLUTION: {
550                                return ApiProblem.getDescriptorKind(kind);
551                        }
552                }
553                return Util.UNKNOWN_KIND;
554        }
555 
556        /**
557         * Returns a string representation of the category of an api problem
558         * @param category
559         * @return the string of the api problem category
560         */
561        public static String getProblemCategory(int category) {
562                switch(category) {
563                        case IApiProblem.CATEGORY_COMPATIBILITY :
564                                return "COMPATIBILITY"; //$NON-NLS-1$
565                        case IApiProblem.CATEGORY_SINCETAGS :
566                                return "SINCETAGS"; //$NON-NLS-1$
567                        case IApiProblem.CATEGORY_USAGE :
568                                return "USAGE"; //$NON-NLS-1$
569                        case IApiProblem.CATEGORY_VERSION :
570                                return "VERSION"; //$NON-NLS-1$
571                        case IApiProblem.CATEGORY_API_BASELINE :
572                                return "API_BASELINE"; //$NON-NLS-1$
573                        case IApiProblem.CATEGORY_API_COMPONENT_RESOLUTION :
574                                return "API_COMPONENT_RESOLUTION"; //$NON-NLS-1$
575                        default :
576                                return "UNKNOWN_CATEGORY"; //$NON-NLS-1$
577                }
578        }
579}

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