コード例 #1
0
 private List<String> getExportPackages(IJavaProject iJavaProject)
     throws CoreException, JavaModelException, Exception {
   ArrayList<String> exportedPackagesList = new ArrayList<String>();
   IPackageFragment[] packages = iJavaProject.getPackageFragments();
   for (IPackageFragment iPackageFragment : packages) {
     iPackageFragment.getElementName();
     if (iPackageFragment.getKind() == IPackageFragmentRoot.K_SOURCE) {
       if (iPackageFragment.hasChildren()) {
         exportedPackagesList.add(iPackageFragment.getElementName());
       }
     }
   }
   return exportedPackagesList;
 }
コード例 #2
0
  private void checkForJavaDependencies(IPluginModelBase[] models, IProgressMonitor monitor) {
    try {
      if (!fProject.hasNature(JavaCore.NATURE_ID)) return;

      IJavaProject jProject = JavaCore.create(fProject);
      IPackageFragment[] packageFragments =
          PluginJavaSearchUtil.collectPackageFragments(models, jProject, true);
      monitor.beginTask("", packageFragments.length); // $NON-NLS-1$
      SearchEngine engine = new SearchEngine();
      for (int i = 0; i < packageFragments.length; i++) {
        if (monitor.isCanceled()) break;
        IPackageFragment pkgFragment = packageFragments[i];
        monitor.subTask(
            PDEUIMessages.DependencyExtentOperation_inspecting
                + " "
                + pkgFragment.getElementName()); // $NON-NLS-1$
        if (pkgFragment.hasChildren()) {
          IJavaElement[] children = pkgFragment.getChildren();
          for (int j = 0; j < children.length; j++) {
            if (monitor.isCanceled()) break;
            IJavaElement child = children[j];
            IType[] types = new IType[0];
            if (child instanceof IClassFile) {
              types = new IType[] {((IClassFile) child).getType()};
            } else if (child instanceof ICompilationUnit) {
              types = ((ICompilationUnit) child).getTypes();
            }
            if (types.length > 0)
              searchForTypesUsed(
                  engine, child, types, PluginJavaSearchUtil.createSeachScope(jProject));
          }
        }
        monitor.worked(1);
      }
    } catch (CoreException e) {
    } finally {
      monitor.done();
    }
  }
コード例 #3
0
  public List<IResource> exportArtifact(IProject project) throws Exception {
    List<IResource> exportResources = new ArrayList<IResource>();
    List<String> exportedPackageList = new ArrayList<String>();
    List<String> importededPackageList = new ArrayList<String>();

    ArchiveManipulator archiveManipulator = new ArchiveManipulator();
    NullProgressMonitor nullProgressMonitor = new NullProgressMonitor();
    BundlesDataInfo bundleData = new BundlesDataInfo();
    IFile bundleDataFile = project.getFile("bundles-data.xml");
    File tempProject = createTempProject();
    File libResources = createTempDir(tempProject, "lib_resources");
    MavenProject mavenProject =
        MavenUtils.getMavenProject(project.getFile("pom.xml").getLocation().toFile());

    if (bundleDataFile.exists()) {
      bundleData.deserialize(bundleDataFile);

      for (String lib : bundleData.getExportedPackageListsFromJar().keySet()) {
        IFile JarFile = project.getFile(lib);
        if (JarFile.exists()) {
          archiveManipulator.extract(JarFile.getLocation().toFile(), libResources);
          exportedPackageList.addAll(bundleData.getExportedPackageListsFromJar().get(lib));
        }
      }
      for (IProject lib : bundleData.getExportedPackageListsFromProject().keySet()) {
        if (lib.isOpen()) {
          lib.build(IncrementalProjectBuilder.FULL_BUILD, nullProgressMonitor);
          IJavaProject javaLibProject = JavaCore.create(lib);
          for (IPackageFragment pkg : javaLibProject.getPackageFragments()) {
            if (pkg.getKind() == IPackageFragmentRoot.K_SOURCE) {
              if (pkg.hasChildren()) {
                exportedPackageList.add(pkg.getElementName());
              }
            }
          }

          IPath outPutPath = getOutputPath(javaLibProject);
          // get resource location
          IPath resources = getResourcePath(lib);

          FileUtils.copyDirectoryContents(outPutPath.toFile(), libResources);
          if (resources.toFile().exists()) {
            FileUtils.copyDirectoryContents(resources.toFile(), libResources);
          }
        }
      }
      getPackages(exportedPackageList, mavenProject, "Export-Package");
      getPackages(importededPackageList, mavenProject, "Import-Package");
      BundleManifest manifest = new BundleManifest();
      manifest.setBundleName(project.getName());
      manifest.setBundleSymbolicName(project.getName());
      if (null != mavenProject.getModel().getDescription()
          && !"".equals(mavenProject.getModel().getDescription())) {
        manifest.setBundleDescription(mavenProject.getModel().getDescription());
      } else {
        manifest.setBundleDescription(project.getName());
      }
      if (null != mavenProject.getModel().getVersion()
          && !"".equals(mavenProject.getDescription())) {
        manifest.setBundleVersion(mavenProject.getModel().getVersion());
      } else {
        manifest.setBundleVersion("1.0.0");
      }
      if (null != bundleData.getFragmentHost() && !"".equals(bundleData.getFragmentHost())) {
        manifest.setFragmentHost(bundleData.getFragmentHost());
      }
      manifest.setExportPackagesList(exportedPackageList);
      if (importededPackageList.size() > 0) {
        manifest.setImportPackagesList(importededPackageList);
        manifest.setDynamicImports(false);
      }
      File metaInfDir = new File(libResources, "META-INF");
      if (!metaInfDir.exists()) metaInfDir.mkdir();
      File manifestFile = new File(metaInfDir, "MANIFEST.MF");
      FileUtils.createFile(manifestFile, manifest.toString());

      File tmpArchive = new File(tempProject, project.getName().concat(".jar"));
      archiveManipulator.archiveDir(tmpArchive.toString(), libResources.toString());

      IFile libArchive = getTargetArchive(project, "jar");
      FileUtils.copy(tmpArchive, libArchive.getLocation().toFile());
      exportResources.add((IResource) libArchive);

      // cleaning temp project
      // if(!org.apache.commons.io.FileUtils.deleteQuietly(tempProject.getLocation().toFile())){
      // tempProject.delete(true, getProgressMonitor());
    }

    TempFileUtils.cleanUp();
    return exportResources;
  }
  public boolean performFinish() {
    try {

      if (customMediatorModel.getSelectedOption().equals("new.mediator")) {
        project = createNewProject();
        IFolder srcFolder = ProjectUtils.getWorkspaceFolder(project, "src", "main", "java");
        JavaUtils.addJavaSupportAndSourceFolder(project, srcFolder);

        /*create the new Java project*/
        String className = customMediatorModel.getMediatorClassName();
        String packageName = customMediatorModel.getMediatorClassPackageName();
        IJavaProject iJavaProject = JavaCore.create(project);
        IPackageFragmentRoot root = iJavaProject.getPackageFragmentRoot(srcFolder);
        IPackageFragment sourcePackage = root.createPackageFragment(packageName, false, null);

        /*get the Mediator class template*/
        String template = CustomMediatorClassTemplate.getClassTemplete(packageName, className);
        ICompilationUnit cu =
            sourcePackage.createCompilationUnit(className + ".java", template, false, null);

        project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
        try {
          IEditorPart javaEditor = JavaUI.openInEditor(cu);
          JavaUI.revealInEditor(javaEditor, (IJavaElement) cu);
        } catch (Exception e) {
          log.error(e);
        }
      } else {
        project = customMediatorModel.getMediatorProject();
        project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
      }
      File pomfile = project.getFile("pom.xml").getLocation().toFile();
      getModel().getMavenInfo().setPackageName("bundle");
      if (!pomfile.exists()) {
        createPOM(pomfile);
        addDependancies(project);
      }
      MavenProject mavenProject = MavenUtils.getMavenProject(pomfile);
      boolean pluginExists =
          MavenUtils.checkOldPluginEntry(
              mavenProject, "org.apache.felix", "maven-bundle-plugin", "2.3.4");
      if (!pluginExists) {
        Plugin plugin =
            MavenUtils.createPluginEntry(
                mavenProject, "org.apache.felix", "maven-bundle-plugin", "2.3.4", true);

        Xpp3Dom configurationNode = MavenUtils.createMainConfigurationNode(plugin);
        Xpp3Dom instructionNode = MavenUtils.createXpp3Node("instructions");
        Xpp3Dom bundleSymbolicNameNode =
            MavenUtils.createXpp3Node(instructionNode, "Bundle-SymbolicName");
        Xpp3Dom bundleNameNode = MavenUtils.createXpp3Node(instructionNode, "Bundle-Name");
        ;
        Xpp3Dom exportPackageNode = MavenUtils.createXpp3Node(instructionNode, "Export-Package");
        Xpp3Dom dynamicImportNode =
            MavenUtils.createXpp3Node(instructionNode, "DynamicImport-Package");
        bundleSymbolicNameNode.setValue(project.getName());
        bundleNameNode.setValue(project.getName());
        if (customMediatorModel.getMediatorClassPackageName() != null
            && !customMediatorModel.getMediatorClassPackageName().trim().isEmpty()) {
          exportPackageNode.setValue(customMediatorModel.getMediatorClassPackageName());
        } else {
          IJavaProject javaProject = JavaCore.create(project);
          if (null != javaProject) {
            StringBuffer sb = new StringBuffer();
            for (IPackageFragment pkg : javaProject.getPackageFragments()) {
              if (pkg.getKind() == IPackageFragmentRoot.K_SOURCE) {
                if (pkg.hasChildren()) {
                  sb.append(pkg.getElementName()).append(",");
                }
              }
            }
            exportPackageNode.setValue(sb.toString().replaceAll(",$", ""));
          }
        }
        dynamicImportNode.setValue("*");
        configurationNode.addChild(instructionNode);
        MavenUtils.saveMavenProject(mavenProject, pomfile);
      }

      project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
      ProjectUtils.addNatureToProject(project, false, MEDIATOR_PROJECT_NATURE);
      MavenUtils.updateWithMavenEclipsePlugin(
          pomfile,
          new String[] {JDT_BUILD_COMMAND},
          new String[] {MEDIATOR_PROJECT_NATURE, JDT_PROJECT_NATURE});
      customMediatorModel.addToWorkingSet(project);
      project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
      refreshDistProjects();
    } catch (CoreException e) {
      log.error(e);
    } catch (Exception e) {
      log.error(e);
    }
    return true;
  }