use of org.eclipse.jdt.core.IField in project che by eclipse.
the class MemberVisibilityAdjustor method computeOutgoingVisibilityThreshold.
/**
* Computes the visibility threshold for the referenced element.
*
* @param referencing the referencing element
* @param referenced the referenced element
* @param monitor the progress monitor to use
* @return the visibility keyword corresponding to the threshold, or <code>null</code> for default visibility
* @throws JavaModelException if the java elements could not be accessed
*/
private ModifierKeyword computeOutgoingVisibilityThreshold(final IJavaElement referencing, final IMember referenced, final IProgressMonitor monitor) throws JavaModelException {
Assert.isTrue(referencing instanceof ICompilationUnit || referencing instanceof IType || referencing instanceof IPackageFragment);
Assert.isTrue(referenced instanceof IType || referenced instanceof IField || referenced instanceof IMethod);
ModifierKeyword keyword = ModifierKeyword.PUBLIC_KEYWORD;
try {
//$NON-NLS-1$
monitor.beginTask("", 1);
monitor.setTaskName(RefactoringCoreMessages.MemberVisibilityAdjustor_checking);
final int referencingType = referencing.getElementType();
final int referencedType = referenced.getElementType();
switch(referencedType) {
case IJavaElement.TYPE:
{
final IType typeReferenced = (IType) referenced;
switch(referencingType) {
case IJavaElement.COMPILATION_UNIT:
{
final ICompilationUnit unit = (ICompilationUnit) referencing;
final ICompilationUnit referencedUnit = typeReferenced.getCompilationUnit();
if (referencedUnit != null && referencedUnit.equals(unit))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (referencedUnit != null && referencedUnit.getParent().equals(unit.getParent()))
keyword = null;
break;
}
case IJavaElement.TYPE:
{
keyword = thresholdTypeToType((IType) referencing, typeReferenced, monitor);
break;
}
case IJavaElement.PACKAGE_FRAGMENT:
{
final IPackageFragment fragment = (IPackageFragment) referencing;
if (typeReferenced.getPackageFragment().equals(fragment))
keyword = null;
break;
}
default:
Assert.isTrue(false);
}
break;
}
case IJavaElement.FIELD:
{
final IField fieldReferenced = (IField) referenced;
final ICompilationUnit referencedUnit = fieldReferenced.getCompilationUnit();
switch(referencingType) {
case IJavaElement.COMPILATION_UNIT:
{
final ICompilationUnit unit = (ICompilationUnit) referencing;
if (referencedUnit != null && referencedUnit.equals(unit))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (referencedUnit != null && referencedUnit.getParent().equals(unit.getParent()))
keyword = null;
break;
}
case IJavaElement.TYPE:
{
keyword = thresholdTypeToField((IType) referencing, fieldReferenced, monitor);
break;
}
case IJavaElement.PACKAGE_FRAGMENT:
{
final IPackageFragment fragment = (IPackageFragment) referencing;
if (fieldReferenced.getDeclaringType().getPackageFragment().equals(fragment))
keyword = null;
break;
}
default:
Assert.isTrue(false);
}
break;
}
case IJavaElement.METHOD:
{
final IMethod methodReferenced = (IMethod) referenced;
final ICompilationUnit referencedUnit = methodReferenced.getCompilationUnit();
switch(referencingType) {
case IJavaElement.COMPILATION_UNIT:
{
final ICompilationUnit unit = (ICompilationUnit) referencing;
if (referencedUnit != null && referencedUnit.equals(unit))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (referencedUnit != null && referencedUnit.getParent().equals(unit.getParent()))
keyword = null;
break;
}
case IJavaElement.TYPE:
{
keyword = thresholdTypeToMethod((IType) referencing, methodReferenced, monitor);
break;
}
case IJavaElement.PACKAGE_FRAGMENT:
{
final IPackageFragment fragment = (IPackageFragment) referencing;
if (methodReferenced.getDeclaringType().getPackageFragment().equals(fragment))
keyword = null;
break;
}
default:
Assert.isTrue(false);
}
break;
}
default:
Assert.isTrue(false);
}
} finally {
monitor.done();
}
return keyword;
}
use of org.eclipse.jdt.core.IField in project che by eclipse.
the class MemberVisibilityAdjustor method getVisibilityThreshold.
/**
* Computes the visibility threshold for the referenced element.
*
* @param referencing the referencing element
* @param referenced the referenced element
* @param monitor the progress monitor to use
* @return the visibility keyword corresponding to the threshold, or <code>null</code> for default visibility
* @throws JavaModelException if the java elements could not be accessed
*/
public ModifierKeyword getVisibilityThreshold(final IJavaElement referencing, final IMember referenced, final IProgressMonitor monitor) throws JavaModelException {
Assert.isTrue(!(referencing instanceof IInitializer));
Assert.isTrue(!(referenced instanceof IInitializer));
ModifierKeyword keyword = ModifierKeyword.PUBLIC_KEYWORD;
try {
//$NON-NLS-1$
monitor.beginTask("", 1);
monitor.setTaskName(RefactoringCoreMessages.MemberVisibilityAdjustor_checking);
final int referencingType = referencing.getElementType();
final int referencedType = referenced.getElementType();
switch(referencedType) {
case IJavaElement.TYPE:
{
final IType typeReferenced = (IType) referenced;
final ICompilationUnit referencedUnit = typeReferenced.getCompilationUnit();
switch(referencingType) {
case IJavaElement.TYPE:
{
keyword = thresholdTypeToType((IType) referencing, typeReferenced, monitor);
break;
}
case IJavaElement.FIELD:
case IJavaElement.METHOD:
{
final IMember member = (IMember) referencing;
if (typeReferenced.equals(member.getDeclaringType()))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (referencedUnit != null && referencedUnit.equals(member.getCompilationUnit()))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (typeReferenced.getPackageFragment().equals(member.getDeclaringType().getPackageFragment()))
keyword = null;
break;
}
case IJavaElement.PACKAGE_FRAGMENT:
{
final IPackageFragment fragment = (IPackageFragment) referencing;
if (typeReferenced.getPackageFragment().equals(fragment))
keyword = null;
break;
}
default:
Assert.isTrue(false);
}
break;
}
case IJavaElement.FIELD:
{
final IField fieldReferenced = (IField) referenced;
final ICompilationUnit referencedUnit = fieldReferenced.getCompilationUnit();
switch(referencingType) {
case IJavaElement.TYPE:
{
keyword = thresholdTypeToField((IType) referencing, fieldReferenced, monitor);
break;
}
case IJavaElement.FIELD:
case IJavaElement.METHOD:
{
final IMember member = (IMember) referencing;
if (fieldReferenced.getDeclaringType().equals(member.getDeclaringType()))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (referencedUnit != null && referencedUnit.equals(member.getCompilationUnit()))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (fieldReferenced.getDeclaringType().getPackageFragment().equals(member.getDeclaringType().getPackageFragment()))
keyword = null;
break;
}
case IJavaElement.PACKAGE_FRAGMENT:
{
final IPackageFragment fragment = (IPackageFragment) referencing;
if (fieldReferenced.getDeclaringType().getPackageFragment().equals(fragment))
keyword = null;
break;
}
default:
Assert.isTrue(false);
}
break;
}
case IJavaElement.METHOD:
{
final IMethod methodReferenced = (IMethod) referenced;
final ICompilationUnit referencedUnit = methodReferenced.getCompilationUnit();
switch(referencingType) {
case IJavaElement.TYPE:
{
keyword = thresholdTypeToMethod((IType) referencing, methodReferenced, monitor);
break;
}
case IJavaElement.FIELD:
case IJavaElement.METHOD:
{
final IMember member = (IMember) referencing;
if (methodReferenced.getDeclaringType().equals(member.getDeclaringType()))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (referencedUnit != null && referencedUnit.equals(member.getCompilationUnit()))
keyword = ModifierKeyword.PRIVATE_KEYWORD;
else if (methodReferenced.getDeclaringType().getPackageFragment().equals(member.getDeclaringType().getPackageFragment()))
keyword = null;
break;
}
case IJavaElement.PACKAGE_FRAGMENT:
{
final IPackageFragment fragment = (IPackageFragment) referencing;
if (methodReferenced.getDeclaringType().getPackageFragment().equals(fragment))
keyword = null;
break;
}
default:
Assert.isTrue(false);
}
break;
}
default:
Assert.isTrue(false);
}
} finally {
monitor.done();
}
return keyword;
}
use of org.eclipse.jdt.core.IField in project che by eclipse.
the class FieldProposalInfo method resolveMember.
/**
* Resolves the member described by the receiver and returns it if found.
* Returns <code>null</code> if no corresponding member can be found.
*
* @return the resolved member or <code>null</code> if none is found
* @throws org.eclipse.jdt.core.JavaModelException if accessing the java model fails
*/
@Override
protected IMember resolveMember() throws JavaModelException {
char[] declarationSignature = fProposal.getDeclarationSignature();
// TODO remove when https://bugs.eclipse.org/bugs/show_bug.cgi?id=84690 gets fixed
if (declarationSignature == null)
return null;
String typeName = SignatureUtil.stripSignatureToFQN(String.valueOf(declarationSignature));
IType type = fJavaProject.findType(typeName);
if (type != null) {
String name = String.valueOf(fProposal.getName());
IField field = type.getField(name);
if (field.exists())
return field;
}
return null;
}
use of org.eclipse.jdt.core.IField in project che by eclipse.
the class GetterSetterCompletionProposal method evaluateProposals.
public static void evaluateProposals(IType type, String prefix, int offset, int length, int relevance, Set<String> suggestedMethods, Collection<IJavaCompletionProposal> result) throws CoreException {
if (prefix.length() == 0) {
relevance--;
}
IField[] fields = type.getFields();
IMethod[] methods = type.getMethods();
for (int i = 0; i < fields.length; i++) {
IField curr = fields[i];
if (!JdtFlags.isEnum(curr)) {
String getterName = GetterSetterUtil.getGetterName(curr, null);
if (Strings.startsWithIgnoreCase(getterName, prefix) && !hasMethod(methods, getterName)) {
suggestedMethods.add(getterName);
int getterRelevance = relevance;
if (JdtFlags.isStatic(curr) && JdtFlags.isFinal(curr))
getterRelevance = relevance - 1;
result.add(new GetterSetterCompletionProposal(curr, offset, length, true, getterRelevance));
}
if (!JdtFlags.isFinal(curr)) {
String setterName = GetterSetterUtil.getSetterName(curr, null);
if (Strings.startsWithIgnoreCase(setterName, prefix) && !hasMethod(methods, setterName)) {
suggestedMethods.add(setterName);
result.add(new GetterSetterCompletionProposal(curr, offset, length, false, relevance));
}
}
}
}
}
use of org.eclipse.jdt.core.IField in project che by eclipse.
the class JavaElementLabelComposer method appendTypeLabel.
/**
* Appends the label for a type. Considers the T_* flags.
*
* @param type the element to render
* @param flags the rendering flags. Flags with names starting with 'T_' are considered.
*/
public void appendTypeLabel(IType type, long flags) {
if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED)) {
IPackageFragment pack = type.getPackageFragment();
if (!pack.isDefaultPackage()) {
appendPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS));
fBuffer.append('.');
}
}
IJavaElement parent = type.getParent();
if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.T_CONTAINER_QUALIFIED)) {
IType declaringType = type.getDeclaringType();
if (declaringType != null) {
appendTypeLabel(declaringType, JavaElementLabels.T_CONTAINER_QUALIFIED | (flags & QUALIFIER_FLAGS));
fBuffer.append('.');
}
int parentType = parent.getElementType();
if (parentType == IJavaElement.METHOD || parentType == IJavaElement.FIELD || parentType == IJavaElement.INITIALIZER) {
// anonymous or local
appendElementLabel(parent, 0);
fBuffer.append('.');
}
}
String typeName;
boolean isAnonymous = false;
if (type.isLambda()) {
//$NON-NLS-1$
typeName = "() -> {...}";
try {
String[] superInterfaceSignatures = type.getSuperInterfaceTypeSignatures();
if (superInterfaceSignatures.length > 0) {
typeName = typeName + ' ' + getSimpleTypeName(type, superInterfaceSignatures[0]);
}
} catch (JavaModelException e) {
//ignore
}
} else {
typeName = getElementName(type);
try {
isAnonymous = type.isAnonymous();
} catch (JavaModelException e1) {
// should not happen, but let's play safe:
isAnonymous = typeName.length() == 0;
}
if (isAnonymous) {
try {
if (parent instanceof IField && type.isEnum()) {
typeName = '{' + JavaElementLabels.ELLIPSIS_STRING + '}';
} else {
String supertypeName;
String[] superInterfaceSignatures = type.getSuperInterfaceTypeSignatures();
if (superInterfaceSignatures.length > 0) {
supertypeName = getSimpleTypeName(type, superInterfaceSignatures[0]);
} else {
supertypeName = getSimpleTypeName(type, type.getSuperclassTypeSignature());
}
typeName = Messages.format(JavaUIMessages.JavaElementLabels_anonym_type, supertypeName);
}
} catch (JavaModelException e) {
//ignore
typeName = JavaUIMessages.JavaElementLabels_anonym;
}
}
}
fBuffer.append(typeName);
if (getFlag(flags, JavaElementLabels.T_TYPE_PARAMETERS)) {
if (getFlag(flags, JavaElementLabels.USE_RESOLVED) && type.isResolved()) {
BindingKey key = new BindingKey(type.getKey());
if (key.isParameterizedType()) {
String[] typeArguments = key.getTypeArguments();
appendTypeArgumentSignaturesLabel(type, typeArguments, flags);
} else {
String[] typeParameters = Signature.getTypeParameters(key.toSignature());
appendTypeParameterSignaturesLabel(typeParameters, flags);
}
} else if (type.exists()) {
try {
appendTypeParametersLabels(type.getTypeParameters(), flags);
} catch (JavaModelException e) {
// ignore
}
}
}
// category
if (getFlag(flags, JavaElementLabels.T_CATEGORY) && type.exists()) {
try {
appendCategoryLabel(type, flags);
} catch (JavaModelException e) {
// ignore
}
}
// post qualification
if (getFlag(flags, JavaElementLabels.T_POST_QUALIFIED)) {
int offset = fBuffer.length();
fBuffer.append(JavaElementLabels.CONCAT_STRING);
IType declaringType = type.getDeclaringType();
if (declaringType == null && type.isBinary() && isAnonymous) {
// workaround for Bug 87165: [model] IType#getDeclaringType() does not work for anonymous binary type
String tqn = type.getTypeQualifiedName();
int lastDollar = tqn.lastIndexOf('$');
if (lastDollar != 1) {
//$NON-NLS-1$
String declaringTypeCF = tqn.substring(0, lastDollar) + ".class";
declaringType = type.getPackageFragment().getClassFile(declaringTypeCF).getType();
try {
ISourceRange typeSourceRange = type.getSourceRange();
if (declaringType.exists() && SourceRange.isAvailable(typeSourceRange)) {
IJavaElement realParent = declaringType.getTypeRoot().getElementAt(typeSourceRange.getOffset() - 1);
if (realParent != null) {
parent = realParent;
}
}
} catch (JavaModelException e) {
// ignore
}
}
}
if (declaringType != null) {
appendTypeLabel(declaringType, JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
int parentType = parent.getElementType();
if (parentType == IJavaElement.METHOD || parentType == IJavaElement.FIELD || parentType == IJavaElement.INITIALIZER) {
// anonymous or local
fBuffer.append('.');
appendElementLabel(parent, 0);
}
} else {
appendPackageFragmentLabel(type.getPackageFragment(), flags & QUALIFIER_FLAGS);
}
if (getFlag(flags, JavaElementLabels.COLORIZE)) {
fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
}
}
}
Aggregations