/** * Returns the complete listing of supported tags for the given type and * member * * @param type * @param member * @return the list of supported tag names or the * {@link Collections#EMPTY_SET}, never <code>null</code> * @since 1.0.400 */ Set<String> getSupportedTagNames(int type, int member) { IApiJavadocTag[] tags = ApiPlugin.getJavadocTagManager().getTagsForType(type, member); if (tags.length > 0) { HashSet<String> valid = new HashSet<>(tags.length, 1); for (IApiJavadocTag tag : tags) { valid.add(tag.getTagName()); } return valid; } return Collections.EMPTY_SET; }
/** * @return The singleton instance of the {@link JavadocTagManager} */ public static JavadocTagManager getJavadocTagManager() { if (fgTagManager == null) { fgTagManager = new JavadocTagManager(); } return fgTagManager; }
/** * @return The complete set of tags names that this manager currently knows * about. */ public synchronized Set<String> getAllTagNames() { IApiJavadocTag[] tags = getAllTags(); HashSet<String> names = new HashSet<>(tags.length); for (IApiJavadocTag tag : tags) { names.add(tag.getTagName()); } return names; }
public boolean visit(Javadoc node) { Set tagnames = ApiPlugin.getJavadocTagManager().getAllTagNames(); List tags = node.tags(); if(fExistingTags == null) { fExistingTags = new HashMap(tags.size()); } TagElement tag = null; String name = null; for(Iterator iter = tags.iterator(); iter.hasNext();) { tag = (TagElement) iter.next(); name = tag.getTagName(); if(name == null) { continue; } if(tagnames.contains(name)) { //only add existing API tools tags fExistingTags.put(name, Boolean.valueOf(tag.fragments().isEmpty())); } } return false; } }
/** * Checks the annotation that appears on the given parent * * @param node the annotation * @param type the parent */ void checkEnum(MarkerAnnotation node, EnumDeclaration type) { String name = node.getTypeName().getFullyQualifiedName(); Item item = getItem(); if (fProcessedAnnotations.contains(name)) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.DUPLICATE_ANNOTATION_USE, IApiMarkerConstants.DUPLICATE_ANNOTATION_MARKER_ID, null); } else { Set<String> supported = ApiPlugin.getJavadocTagManager().getAnntationsForType(IApiJavadocTag.TYPE_ENUM, IApiJavadocTag.MEMBER_NONE); if (!supported.contains(name)) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.UNSUPPORTED_ANNOTATION_USE, IApiMarkerConstants.UNSUPPORTED_ANNOTATION_MARKER_ID, BuilderMessages.TagValidator_an_enum); } else if (!item.visible) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.UNSUPPORTED_ANNOTATION_USE, IApiMarkerConstants.UNSUPPORTED_ANNOTATION_MARKER_ID, BuilderMessages.TagValidator_enum_not_visible); } } fProcessedAnnotations.add(name); }
/** * Returns the {@link IApiJavadocTag} that has the given id or * <code>null</code> if there is no tag with the given id * * @param id the id of the tag to fetch * @return the {@link IApiJavadocTag} with the given id or <code>null</code> */ public synchronized IApiJavadocTag getTag(String id) { initializeJavadocTags(); return tagcache.get(id); }
/** * Returns the set of supported annotations for the given type and member * * @param type the type kind * @param member the member kind * @return the set of supported annotations or an empty set, never * <code>null</code> * @since 1.0.600 */ public synchronized Set<String> getAnntationsForType(int type, int member) { initializeAnnotations(); Set<String> values = fAnnotationCache.get(new Key(type, member)); if (values != null) { return values; } return Collections.EMPTY_SET; }
if (RestrictionModifiers.isReferenceRestriction(res)) { if (!containsRestrictionTag(tags, "@noreference")) { //$NON-NLS-1$ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_REFERENCE_TAG_ID); missing.add(tag.getCompleteTag(type, member)); if (RestrictionModifiers.isReferenceRestriction(res)) { if (!containsRestrictionTag(tags, "@noreference")) { //$NON-NLS-1$ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_REFERENCE_TAG_ID); missing.add(tag.getCompleteTag(type, member)); IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_OVERRIDE_TAG_ID); missing.add(tag.getCompleteTag(type, member)); if (RestrictionModifiers.isImplementRestriction(res)) { if (!containsRestrictionTag(tags, "@noimplement")) { //$NON-NLS-1$ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_IMPLEMENT_TAG_ID); missing.add(tag.getCompleteTag(type, member)); IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_INSTANTIATE_TAG_ID); missing.add(tag.getCompleteTag(type, member)); IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_EXTEND_TAG_ID); missing.add(tag.getCompleteTag(type, member));
@Override public IJavaCompletionProposal[] getCorrections(IInvocationContext context, IProblemLocation[] locations) throws CoreException { List<IJavaCompletionProposal> proposals = new ArrayList<>(); ICompilationUnit unit = context.getCompilationUnit(); IProject project = unit.getJavaProject().getProject(); if (!project.hasNature(ApiPlugin.NATURE_ID)) { return new IJavaCompletionProposal[0]; } IFile build = project.getFile("build.properties"); //$NON-NLS-1$ if (needsBuildPropertiesChange(build)) { for (IProblemLocation location : locations) { if (location.getProblemId() == IProblem.UndefinedType) { String[] args = location.getProblemArguments(); if (args.length == 1) { // only one argument in the missing annotation problem for (String arg : args) { String name = ApiPlugin.getJavadocTagManager().getQualifiedNameForAnnotation(arg); if (name != null) { proposals.add(new UnknownAnnotationQuickFix(unit, name)); } } } } } } return proposals.toArray(new IJavaCompletionProposal[proposals.size()]); }
@Override public boolean visit(Javadoc node) { Set<String> tagnames = ApiPlugin.getJavadocTagManager().getAllTagNames(); List<TagElement> tags = node.tags(); if (fExistingTags == null) { fExistingTags = new HashMap<>(tags.size()); } String name = null; for (TagElement tag : tags) { name = tag.getTagName(); if (name == null) { continue; } if (tagnames.contains(name)) { // only add existing API tools tags fExistingTags.put(name, Boolean.valueOf(tag.fragments().isEmpty())); } } return false; } }
/** * Checks the annotation that appears on the given parent * * @param node the annotation * @param type the parent */ void checkAnnotation(MarkerAnnotation node, AnnotationTypeDeclaration type) { String name = node.getTypeName().getFullyQualifiedName(); Item item = getItem(); if (fProcessedAnnotations.contains(name)) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.DUPLICATE_ANNOTATION_USE, IApiMarkerConstants.DUPLICATE_ANNOTATION_MARKER_ID, null); } else { Set<String> supported = ApiPlugin.getJavadocTagManager().getAnntationsForType(IApiJavadocTag.TYPE_ANNOTATION, IApiJavadocTag.MEMBER_NONE); if (!supported.contains(name)) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.UNSUPPORTED_ANNOTATION_USE, IApiMarkerConstants.UNSUPPORTED_ANNOTATION_MARKER_ID, BuilderMessages.TagValidator_an_annotation); } else if (!item.visible) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.UNSUPPORTED_ANNOTATION_USE, IApiMarkerConstants.UNSUPPORTED_ANNOTATION_MARKER_ID, BuilderMessages.TagValidator_annotation_not_visible); } } }
/** * Returns the complete listing of {@link IApiJavadocTag}s contained in the * manager or an empty array, never <code>null</code> * * @return the complete listing of tags in the manager or <code>null</code> */ public synchronized IApiJavadocTag[] getAllTags() { initializeJavadocTags(); if (tagcache == null) { return new IApiJavadocTag[0]; } Collection<IApiJavadocTag> values = tagcache.values(); return values.toArray(new IApiJavadocTag[values.size()]); }
break; IApiJavadocTag[] tags = ApiPlugin.getJavadocTagManager().getTagsForType(type, member); int tagcount = tags.length; if (tagcount > 0) {
} else { if (type.isInterface()) { Set<String> supported = ApiPlugin.getJavadocTagManager().getAnntationsForType(IApiJavadocTag.TYPE_INTERFACE, IApiJavadocTag.MEMBER_NONE); if (!supported.contains(name)) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.UNSUPPORTED_ANNOTATION_USE, IApiMarkerConstants.UNSUPPORTED_ANNOTATION_MARKER_ID, BuilderMessages.TagValidator_an_interface); Set<String> supported = ApiPlugin.getJavadocTagManager().getAnntationsForType(IApiJavadocTag.TYPE_CLASS, IApiJavadocTag.MEMBER_NONE); if (!supported.contains(name)) { createAnnotationProblem(item.typename, node, IElementDescriptor.TYPE, IApiProblem.UNSUPPORTED_ANNOTATION_USE, IApiMarkerConstants.UNSUPPORTED_ANNOTATION_MARKER_ID, BuilderMessages.TagValidator_a_class);
/** * Returns all of the java doc tags for a given kind of type and member. See * {@link IApiJavadocTag} for a complete listing of tag Java type and member * types. * * @param type one of <code>CLASS</code> or <code>INTERFACE</code> * @param member one of <code>METHOD</code> or <code>FIELD</code> or * <code>NONE</code> * @return an array of {@link IApiJavadocTag}s that apply to the specified * Java type or an empty array, never <code>null</code> */ public synchronized IApiJavadocTag[] getTagsForType(int type, int member) { initializeJavadocTags(); List<IApiJavadocTag> list = new ArrayList<>(); for (IApiJavadocTag tag : tags) { if (tag.isApplicable(type, member)) { list.add(tag); } } return list.toArray(new IApiJavadocTag[list.size()]); }
IApiJavadocTag[] tags = ApiPlugin.getJavadocTagManager().getTagsForType(type, member); int tagcount = tags.length; if(tagcount > 0) {
boolean isprivate = Flags.isPrivate(flags); boolean ispackage = Flags.isPackageDefault(flags); Set<String> supportedtags = ApiPlugin.getJavadocTagManager().getAnntationsForType(pkind, IApiJavadocTag.MEMBER_FIELD); switch (pkind) { case IApiJavadocTag.TYPE_ANNOTATION: {
/** * Returns the restriction modifier set on the javadoc tag with the given * name. If the manager has no entry for the specified tag name * <code>-1</code> is returned. * * @param tagname the name of the tag * @param type one of <code>CLASS</code> or <code>INTERFACE</code> * @param member one of <code>METHOD</code> or <code>FIELD</code> or * <code>NONE</code> * @return the restriction modifier for the given tag name or * {@link RestrictionModifiers#NO_RESTRICTIONS} if not found */ public synchronized int getRestrictionsForTag(String tagname, int type, int member) { if (tagname == null) { return RestrictionModifiers.NO_RESTRICTIONS; } initializeJavadocTags(); for (IApiJavadocTag tag : tags) { if (tag.getTagName().equals(tagname) && (tag.isApplicable(type, member))) { return tag.getRestrictionModifier(); } } return RestrictionModifiers.NO_RESTRICTIONS; } }
boolean isstatic = Flags.isStatic(flags); Item item = getItem(); Set<String> supportedtags = ApiPlugin.getJavadocTagManager().getAnntationsForType(pkind, isconstructor ? IApiJavadocTag.MEMBER_CONSTRUCTOR : IApiJavadocTag.MEMBER_METHOD); if (fProcessedAnnotations.contains(name)) { createAnnotationProblem(item.typename, node, IElementDescriptor.METHOD, IApiProblem.DUPLICATE_ANNOTATION_USE, IApiMarkerConstants.DUPLICATE_ANNOTATION_MARKER_ID, null);