use of org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit in project che by eclipse.
the class TypeNode method getChildrenImpl.
@Override
protected Promise<List<Node>> getChildrenImpl() {
return createFromAsyncRequest(callback -> {
List<Node> children = new ArrayList<>();
if (compilationUnit != null && type.isPrimary()) {
for (ImportDeclaration importDeclaration : compilationUnit.getImports()) {
createNodeForAllMatches(importDeclaration.getHandleIdentifier(), children);
}
for (Type subType : compilationUnit.getTypes()) {
if (subType == type) {
continue;
}
children.add(nodeFactory.create(subType, compilationUnit, classFile, matches));
}
}
createNodeForAllMatches(type.getHandleIdentifier(), children);
for (Initializer initializer : type.getInitializers()) {
createNodeForAllMatches(initializer.getHandleIdentifier(), children);
}
for (Field field : type.getFields()) {
createNodeForAllMatches(field.getHandleIdentifier(), children);
}
final List<Node> typeNodes = type.getTypes().stream().map(subType -> nodeFactory.create(subType, compilationUnit, classFile, matches)).collect(Collectors.toList());
children.addAll(typeNodes);
final List<Node> methodNodes = type.getMethods().stream().map(method -> nodeFactory.create(method, matches, compilationUnit, classFile)).collect(Collectors.toList());
children.addAll(methodNodes);
Collections.sort(children, new NodeComparator());
callback.onSuccess(children);
});
}
use of org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit in project che by eclipse.
the class JavaElementToDtoConverter method getPackageFragments.
private List<PackageFragment> getPackageFragments(IPackageFragmentRoot parent, String projectPath) throws JavaModelException {
List<PackageFragment> result = new ArrayList<>();
Set<Object> objects = childrens.get(parent);
if (objects == null) {
return result;
}
for (Object object : objects) {
if (object instanceof IPackageFragment) {
IPackageFragment packageFragment = (IPackageFragment) object;
PackageFragment fragment = DtoFactory.newDto(PackageFragment.class);
fragment.setProjectPath(projectPath);
fragment.setPath(packageFragment.getPath().toOSString());
fragment.setHandleIdentifier(packageFragment.getHandleIdentifier());
fragment.setElementName(packageFragment.getElementName());
fragment.setKind(packageFragment.getKind());
fragment.setDefaultPackage(packageFragment.isDefaultPackage());
List<CompilationUnit> compilationUnits = new ArrayList<>();
List<ClassFile> classFiles = new ArrayList<>();
addCompilationUnitsAndClassFiles(object, compilationUnits, classFiles);
fragment.setCompilationUnits(compilationUnits);
fragment.setClassFiles(classFiles);
result.add(fragment);
}
}
return result;
}
use of org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit in project che by eclipse.
the class FindReferencesTest method testSearchManagerFindUsage.
@Test
public void testSearchManagerFindUsage() throws Exception {
IJavaProject aProject = JUnitSourceSetup.getProject();
IPackageFragmentRoot root = ((JavaProject) aProject).getPackageFragmentRoot(new Path(JUnitSourceSetup.SRC_CONTAINER));
IPackageFragment packageFragment = root.createPackageFragment("che", true, null);
StringBuilder a = new StringBuilder();
a.append("package che;\n");
a.append("public class A{}\n");
ICompilationUnit compilationUnitA = packageFragment.createCompilationUnit("A.java", a.toString(), true, null);
StringBuilder b = new StringBuilder();
b.append("package che;\n");
b.append("import java.util.Comparator;\n");
b.append("import che.A;\n");
b.append("public class B extends A implements Comparator<A>{\n");
b.append(" private A a = null;\n");
b.append(" static{\n");
b.append(" A ddd = null;\n");
b.append(" }\n");
b.append(" @Override\n");
b.append(" public int compare(A o1, A o2) {\n");
b.append(" A bb = null;\n");
b.append(" return 0;\n");
b.append(" }\n");
b.append(" class SubB{\n");
b.append(" public A ccc = null;\n");
b.append(" }\n");
b.append("}\n");
b.append("class SubB2{\n");
b.append(" private final A foo = null;\n");
b.append("}\n");
packageFragment.createCompilationUnit("B.java", b.toString(), true, null);
SearchManager manager = new SearchManager();
FindUsagesResponse response = manager.findUsage(aProject, "che.A", 26);
Assertions.assertThat(response.getSearchElementLabel()).isEqualTo("A");
List<org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject> projects = response.getProjects();
Assertions.assertThat(projects).isNotNull().isNotEmpty().hasSize(1);
String expectedProjectPath = JUnitSourceSetup.getProject().getPath().toOSString();
org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject project = projects.get(0);
Assertions.assertThat(project.getName()).isEqualTo(JUnitSourceSetup.PROJECT_NAME);
Assertions.assertThat(project.getPath()).isEqualTo(expectedProjectPath);
Assertions.assertThat(project.getPackageFragmentRoots()).isNotNull().isNotEmpty().hasSize(1);
PackageFragmentRoot fragmentRoot = project.getPackageFragmentRoots().get(0);
Assertions.assertThat(fragmentRoot.getElementName()).isEqualTo(JUnitSourceSetup.SRC_CONTAINER);
Assertions.assertThat(fragmentRoot.getProjectPath()).isEqualTo(expectedProjectPath);
Assertions.assertThat(fragmentRoot.getPackageFragments()).isNotNull().isNotEmpty().hasSize(1);
PackageFragment fragment = fragmentRoot.getPackageFragments().get(0);
Assertions.assertThat(fragment.getElementName()).isEqualTo("che");
Assertions.assertThat(fragment.getProjectPath()).isEqualTo(expectedProjectPath);
Assertions.assertThat(fragment.getPath()).isEqualTo(expectedProjectPath + "/" + JUnitSourceSetup.SRC_CONTAINER + "/che");
Assertions.assertThat(fragment.getClassFiles()).isNotNull().isEmpty();
Assertions.assertThat(fragment.getCompilationUnits()).isNotNull().isNotEmpty().hasSize(1);
CompilationUnit compilationUnit = fragment.getCompilationUnits().get(0);
Assertions.assertThat(compilationUnit.getElementName()).isEqualTo("B.java");
Assertions.assertThat(compilationUnit.getPath()).isEqualTo(expectedProjectPath + "/" + JUnitSourceSetup.SRC_CONTAINER + "/che/B.java");
Assertions.assertThat(compilationUnit.getImports()).hasSize(1);
Assertions.assertThat(compilationUnit.getTypes()).hasSize(2);
}
use of org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit in project che by eclipse.
the class JavaElementToDtoConverter method addCompilationUnitsAndClassFiles.
private void addCompilationUnitsAndClassFiles(Object parent, List<CompilationUnit> compilationUnits, List<ClassFile> classFiles) throws JavaModelException {
Set<Object> childrens = this.childrens.get(parent);
for (Object children : childrens) {
if (children instanceof ICompilationUnit) {
ICompilationUnit unit = (ICompilationUnit) children;
CompilationUnit compilationUnit = DtoFactory.newDto(CompilationUnit.class);
compilationUnit.setElementName(unit.getElementName());
compilationUnit.setProjectPath(unit.getJavaProject().getPath().toOSString());
compilationUnit.setPath(unit.getResource().getFullPath().toOSString());
compilationUnit.setHandleIdentifier(unit.getHandleIdentifier());
compilationUnit.setLabel(JavaElementLabels.getElementLabel(unit, JavaElementLabels.ALL_DEFAULT));
compilationUnit.setImports(getImports(children));
compilationUnit.setTypes(getTypes(children));
compilationUnits.add(compilationUnit);
} else if (children instanceof IClassFile) {
ClassFile classFile = DtoFactory.newDto(ClassFile.class);
IClassFile clazz = (IClassFile) children;
classFile.setHandleIdentifier(clazz.getHandleIdentifier());
classFile.setElementName(clazz.getElementName());
classFile.setPath(clazz.getType().getFullyQualifiedName());
classFile.setLabel(JavaElementLabels.getElementLabel(clazz, JavaElementLabels.ALL_DEFAULT));
classFile.setProjectPath(clazz.getJavaProject().getPath().toOSString());
classFile.setType(getTypes(children).get(0));
classFiles.add(classFile);
}
}
}
use of org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit in project che by eclipse.
the class JavaNavigation method getCompilationUnitByPath.
/**
* Get the compilation unit representation of the java file.
*
* @param javaProject
* path to the project which is contained class file
* @param fqn
* fully qualified name of the class file
* @param isShowingInheritedMembers
* <code>true</code> iff inherited members are shown
* @return instance of {@link CompilationUnit}
* @throws JavaModelException
* when JavaModel has a failure
*/
public CompilationUnit getCompilationUnitByPath(IJavaProject javaProject, String fqn, boolean isShowingInheritedMembers) throws JavaModelException {
IType type = javaProject.findType(fqn);
CompilationUnit compilationUnit = DtoFactory.newDto(CompilationUnit.class);
ITypeRoot unit;
if (type.isBinary()) {
unit = type.getClassFile();
compilationUnit.setPath(((IClassFile) unit).getType().getFullyQualifiedName());
} else {
unit = type.getCompilationUnit();
compilationUnit.setProjectPath(unit.getJavaProject().getPath().toOSString());
compilationUnit.setPath(unit.getResource().getFullPath().toOSString());
}
compilationUnit.setElementName(unit.getElementName());
compilationUnit.setHandleIdentifier(unit.getHandleIdentifier());
compilationUnit.setLabel(org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(unit, org.eclipse.jdt.ui.JavaElementLabels.ALL_DEFAULT));
List<Type> types = new ArrayList<>(1);
Type dtoType = convertToDTOType(type);
dtoType.setPrimary(true);
types.add(dtoType);
compilationUnit.setTypes(types);
if (isShowingInheritedMembers) {
compilationUnit.setSuperTypes(calculateSuperTypes(type));
}
return compilationUnit;
}
Aggregations