blob: 35638f0503c06773315c945b07516743d0e1b255 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2010 Oracle. 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:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.core.internal.utility.jdt;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.dom.BodyDeclaration;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.jdt.AbstractType;
import org.eclipse.jpt.common.core.utility.jdt.AnnotationEditFormatter;
import org.eclipse.jpt.common.core.utility.jdt.Member;
import org.eclipse.jpt.common.core.utility.jdt.ModifiedDeclaration;
import org.eclipse.jpt.common.utility.CommandExecutor;
/**
* Adapt and extend a JDT member with simplified annotation handling.
*/
public abstract class JDTMember extends JDTAnnotatedElement
implements Member
{
/** this will be null for the primary type */
private final AbstractType declaringType;
/**
* members can occur more than once in non-compiling source;
* count starts at 1; the primary type will have occurrence 1
*/
private final int occurrence;
// ********** constructors **********
protected JDTMember(
AbstractType declaringType,
String name,
int occurrence,
ICompilationUnit compilationUnit,
CommandExecutor modifySharedDocumentCommandExecutor) {
this(declaringType, name, occurrence, compilationUnit, modifySharedDocumentCommandExecutor, DefaultAnnotationEditFormatter.instance());
}
protected JDTMember(
AbstractType declaringType,
String name,
int occurrence,
ICompilationUnit compilationUnit,
CommandExecutor modifySharedDocumentCommandExecutor,
AnnotationEditFormatter annotationEditFormatter) {
super(name, compilationUnit, modifySharedDocumentCommandExecutor, annotationEditFormatter);
this.declaringType = declaringType;
this.occurrence = occurrence;
}
//covariant override
public abstract BodyDeclaration getBodyDeclaration(CompilationUnit astRoot);
// ********** Member implementation **********
@Override
public ModifiedDeclaration getModifiedDeclaration(CompilationUnit astRoot) {
return new JDTModifiedDeclaration(this.getBodyDeclaration(astRoot));
}
public boolean matches(String memberName, int occur) {
return memberName.equals(this.getName()) && (occur == this.occurrence);
}
// ********** internal **********
protected int getOccurrence() {
return this.occurrence;
}
/**
* this will return null for a top-level type
*/
protected AbstractType getDeclaringType() {
return this.declaringType;
}
}