/******************************************************************************* * Copyright (c) 2005, 2007 BEA Systems, Inc. * 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 * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * tyeung@bea.com - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.apt.core.internal.declaration; import java.lang.annotation.Annotation; import java.util.Collection; import java.util.Collections; import org.eclipse.jdt.core.IPackageFragment; import com.sun.mirror.declaration.AnnotationMirror; import com.sun.mirror.declaration.AnnotationTypeDeclaration; import com.sun.mirror.declaration.ClassDeclaration; import com.sun.mirror.declaration.EnumDeclaration; import com.sun.mirror.declaration.InterfaceDeclaration; import com.sun.mirror.declaration.Modifier; import com.sun.mirror.declaration.PackageDeclaration; import com.sun.mirror.util.DeclarationVisitor; import com.sun.mirror.util.SourcePosition; /** * For packages that have no binding. E.g. Packages with no * classes, like "java.lang", or possibly "" (the default package). */ public class PackageDeclarationImplNoBinding implements PackageDeclaration { private final IPackageFragment[] fragments; public PackageDeclarationImplNoBinding(final IPackageFragment[] fragments) { this.fragments = fragments; } public String getQualifiedName() { return fragments[0].getElementName(); } public Collection<ClassDeclaration> getClasses() { return Collections.emptyList(); } public Collection<EnumDeclaration> getEnums() { return Collections.emptyList(); } public Collection<InterfaceDeclaration> getInterfaces() { return Collections.emptyList(); } public Collection<AnnotationTypeDeclaration> getAnnotationTypes() { return Collections.emptyList(); } public String getDocComment() { // Packages have no comments return null; } public Collection<AnnotationMirror> getAnnotationMirrors() { return Collections.emptyList(); } public <A extends Annotation> A getAnnotation(Class<A> arg0) { return null; } public Collection<Modifier> getModifiers() { // Packages do not have modifiers return Collections.emptyList(); } public String getSimpleName() { String components = getQualifiedName(); int dotIndex = components.indexOf("."); //$NON-NLS-1$ if (dotIndex < 0) return components; return components.substring(dotIndex + 1); } public SourcePosition getPosition() { // non-source, we do not have a source position return null; } public void accept(final DeclarationVisitor visitor) { visitor.visitDeclaration(this); visitor.visitPackageDeclaration(this); } }