org.eclipse.jdt.internal.codeassist.impl.AssistSourceField Maven / Gradle / Ivy
The newest version!
/*******************************************************************************
* Copyright (c) 2008, 2013 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.codeassist.impl;
import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.compiler.env.IElementInfo;
import org.eclipse.jdt.internal.compiler.lookup.Binding;
import org.eclipse.jdt.internal.core.JavaElement;
import org.eclipse.jdt.internal.core.ResolvedSourceField;
public class AssistSourceField extends ResolvedSourceField {
private final Map bindingCache;
private final Map infoCache;
private String uniqueKey;
private boolean isResolved;
public AssistSourceField(JavaElement parent, String name, Map bindingCache, Map infoCache) {
super(parent, name, null);
this.bindingCache = bindingCache;
this.infoCache = infoCache;
}
@Override
public IElementInfo getElementInfo(IProgressMonitor monitor) throws JavaModelException {
return this.infoCache.get(this);
}
@Override
public String getKey() {
if (this.uniqueKey == null) {
Binding binding = this.bindingCache.get(this);
if (binding != null) {
this.isResolved = true;
this.uniqueKey = new String(binding.computeUniqueKey());
} else {
this.isResolved = false;
try {
this.uniqueKey = getKey(this, false/*don't open*/);
} catch (JavaModelException e) {
// happen only if force open is true
return null;
}
}
}
return this.uniqueKey;
}
@Override
public boolean isResolved() {
getKey();
return this.isResolved;
}
@Override
protected void toStringInfo(int tab, StringBuilder buffer, Object info,boolean showResolvedInfo) {
super.toStringInfo(tab, buffer, info, showResolvedInfo && isResolved());
}
@Override
public AssistAnnotation getAnnotation(String annotationName) {
return new AssistAnnotation(this, annotationName, this.infoCache);
}
@Override
public AssistSourceType getType(String typeName, int count) {
return new AssistSourceType(this, typeName, this.bindingCache, this.infoCache, count);
}
}