Copyright (c) 2000, 2019 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:
Jesper Kamstrup Linnet (eclipse@kamstrup-linnet.dk) - initial API and implementation
(report 36180: Callers/Callees view)
Red Hat Inc - refactored to jdt.core.manipulation
/*******************************************************************************
* Copyright (c) 2000, 2019 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:
* Jesper Kamstrup Linnet (eclipse@kamstrup-linnet.dk) - initial API and implementation
* (report 36180: Callers/Callees view)
* Red Hat Inc - refactored to jdt.core.manipulation
*******************************************************************************/
package org.eclipse.jdt.internal.corext.callhierarchy;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.ITypeHierarchy;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.core.manipulation.JavaManipulationPlugin;
public class JavaImplementorFinder implements IImplementorFinder {
@Override
public Collection<IType> findImplementingTypes(IType type, IProgressMonitor progressMonitor) {
ITypeHierarchy typeHierarchy;
try {
typeHierarchy = type.newTypeHierarchy(progressMonitor);
IType[] implementingTypes = typeHierarchy.getAllClasses();
HashSet<IType> result = new HashSet<>(Arrays.asList(implementingTypes));
return result;
} catch (JavaModelException e) {
JavaManipulationPlugin.log(e);
}
return null;
}
@Override
public Collection<IType> findInterfaces(IType type, IProgressMonitor progressMonitor) {
ITypeHierarchy typeHierarchy;
try {
typeHierarchy = type.newSupertypeHierarchy(progressMonitor);
IType[] interfaces = typeHierarchy.getAllSuperInterfaces(type);
HashSet<IType> result = new HashSet<>(Arrays.asList(interfaces));
return result;
} catch (JavaModelException e) {
JavaManipulationPlugin.log(e);
}
return null;
}
}