blob: ce33da62d595c8ea8e76dd3af605b712b67ae9b8 [file] [log] [blame]
/***************************************************************************************************
* Copyright (c) 2005 Eteration A.S. and others. All rights reserved. This program and the
* accompanying materials are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* Contributors: Eteration A.S. - initial API and implementation
**************************************************************************************************/
package org.eclipse.jst.j2ee.ejb.annotations.internal.xdoclet;
import java.util.Iterator;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.TagElement;
import org.eclipse.jdt.core.dom.TypeDeclaration;
public class XDoxletAnnotationUtil {
private static final String XDOCLET_EJB_BEAN_TAG = "@ejb.bean"; //$NON-NLS-1$
private static final String XDOCLET_WEB_TAG = "@web"; //$NON-NLS-1$
public static class XDocletFinder extends ASTVisitor {
boolean isXDocletBean = false;
boolean isXDocletWebBean = false;
public XDocletFinder(boolean visitDocTags) {
super(visitDocTags);
}
public boolean visit(TypeDeclaration type) {
if (type.getJavadoc() == null)
return true;
Iterator tags = type.getJavadoc().tags().iterator();
while (tags.hasNext()) {
TagElement element = (TagElement) tags.next();
if (XDOCLET_EJB_BEAN_TAG.equals(element.getTagName())) {
isXDocletBean=true;
return false;
}else if (element.getTagName() != null && element.getTagName().startsWith(XDOCLET_WEB_TAG)) {
isXDocletWebBean=true;
return false;
}
}
return true;
}
}
public static boolean isXDocletAnnotatedResource(IResource resource) {
ICompilationUnit compilationUnit = JavaCore.createCompilationUnitFrom((IFile) resource);
return isXDocletAnnotated(compilationUnit);
}
public static boolean isXDocletAnnotatedEjbClass(IJavaElement compilationUnit) {
if (compilationUnit != null && compilationUnit.getElementType() == IJavaElement.COMPILATION_UNIT){
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource((ICompilationUnit)compilationUnit);
CompilationUnit ast = (CompilationUnit) parser.createAST(null);
XDoxletAnnotationUtil.XDocletFinder docletFinder = new XDoxletAnnotationUtil.XDocletFinder(true);
ast.accept(docletFinder);
return docletFinder.isXDocletBean;
}
return false;
}
public static boolean isXDocletAnnotatedWebClass(IJavaElement compilationUnit) {
if (compilationUnit != null && compilationUnit.getElementType() == IJavaElement.COMPILATION_UNIT){
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource((ICompilationUnit)compilationUnit);
CompilationUnit ast = (CompilationUnit) parser.createAST(null);
XDoxletAnnotationUtil.XDocletFinder docletFinder = new XDoxletAnnotationUtil.XDocletFinder(true);
ast.accept(docletFinder);
return docletFinder.isXDocletWebBean;
}
return false;
}
public static boolean isXDocletAnnotated(IJavaElement compilationUnit) {
if (compilationUnit != null && compilationUnit.getElementType() == IJavaElement.COMPILATION_UNIT){
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource((ICompilationUnit)compilationUnit);
CompilationUnit ast = (CompilationUnit) parser.createAST(null);
XDoxletAnnotationUtil.XDocletFinder docletFinder = new XDoxletAnnotationUtil.XDocletFinder(true);
ast.accept(docletFinder);
return docletFinder.isXDocletWebBean || docletFinder.isXDocletBean ;
}
return false;
}
}