private static void populateClasses( final Shell shell, final IParent parent, final List<IType> types, final Filter filter) { try { for (final IJavaElement element : parent.getChildren()) { if (element instanceof IType) { final IType type = (IType) element; if (type.isClass() && type.isStructureKnown() && !type.isAnonymous() && !type.isLocal() && !Flags.isAbstract(type.getFlags()) && Flags.isPublic(type.getFlags()) && (filter == null || filter.accept(type))) { types.add(type); } } else if (element instanceof IParent && !element.getPath().toString().contains("/test/") && (!(element instanceof IPackageFragmentRoot) || !((IPackageFragmentRoot) element).isExternal())) { populateClasses(shell, (IParent) element, types, filter); } } } catch (final JavaModelException e) { Activator.error(e); } }
private static void populateResources( final Shell shell, final IContainer container, final List<IResource> resources) { try { for (final IResource resource : container.members()) { if (resource instanceof IContainer) { populateResources(shell, (IContainer) resource, resources); } else { resources.add(resource); } } } catch (final Exception e) { Activator.error(e); } }
public static void updateMavenDependencies( final List<Dependency> dependencies, final IProject project) throws CoreException { final IFile pomIFile = project.getProject().getFile("pom.xml"); final File pomFile = new File(pomIFile.getLocationURI()); final org.apache.maven.model.Model pom = MavenPlugin.getMaven().readModel(pomFile); // Check if dependency already in the pom final List<Dependency> missingDependencies = new ArrayList<>(); for (final Dependency dependency : dependencies) { boolean found = false; for (final org.apache.maven.model.Dependency pomDependency : pom.getDependencies()) { if (pomDependency.getGroupId().equalsIgnoreCase(dependency.getGroupId()) && pomDependency.getArtifactId().equalsIgnoreCase(dependency.getArtifactId())) { // check for correct version if (!pomDependency.getVersion().equalsIgnoreCase(dependency.getVersion())) { pomDependency.setVersion(dependency.getVersion()); } found = true; break; } } if (!found) { missingDependencies.add(dependency); } } for (final Dependency dependency : missingDependencies) { final org.apache.maven.model.Dependency pomDependency = new org.apache.maven.model.Dependency(); pomDependency.setGroupId(dependency.getGroupId()); pomDependency.setArtifactId(dependency.getArtifactId()); pomDependency.setVersion(dependency.getVersion()); pom.addDependency(pomDependency); } if (!missingDependencies.isEmpty()) { try (final OutputStream stream = new BufferedOutputStream(new FileOutputStream(pomFile))) { MavenPlugin.getMaven().writeModel(pom, stream); pomIFile.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); } catch (final Exception e) { Activator.error(e); } } }