@Override
  public void syncLibraries(IProgressMonitor... monitorWrap) {
    // TODO system routine libraries seems no use ,need to check more...
    // deploy system routine libraries
    if (GlobalServiceRegister.getDefault().isServiceRegistered(ILibraryManagerUIService.class)) {
      ILibraryManagerUIService libUiService =
          (ILibraryManagerUIService)
              GlobalServiceRegister.getDefault().getService(ILibraryManagerUIService.class);
      libUiService.initializeSystemLibs();
    }

    if (TalendCacheUtils.cleanComponentCache()) {
      repositoryBundleService.clearCache();
    }
    // Add a new system file, if exists, means all components libs are already setup, so no need to
    // do again.
    // if clean the component cache, it will automatically recheck all libs still.
    if (!repositoryBundleService.isInitialized()) {
      // 2. Components libraries
      if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentsService.class)) {
        repositoryBundleService.deployComponentsLibs(monitorWrap);
        repositoryBundleService.setInitialized();
      }
    }

    checkInstalledLibraries();

    // clean the temp library of job needed in .java\lib
    cleanLibs();

    log.debug(Messages.getString("JavaLibrariesService.synchronization")); // $NON-NLS-1$
    isLibSynchronized = true;
  }
 public static void saveResource() {
   if (isModified()) {
     String installLocation =
         new Path(Platform.getConfigurationLocation().getURL().getPath())
             .toFile()
             .getAbsolutePath();
     try {
       Resource resource = createComponentCacheResource(installLocation);
       resource.getContents().add(cache);
       EmfHelper.saveResource(cache.eResource());
     } catch (PersistenceException e1) {
       ExceptionHandler.process(e1);
     }
     ILibraryManagerService repositoryBundleService =
         (ILibraryManagerService)
             GlobalServiceRegister.getDefault().getService(ILibraryManagerService.class);
     repositoryBundleService.clearCache();
     if (GlobalServiceRegister.getDefault().isServiceRegistered(ILibrariesService.class)) {
       ILibrariesService libService =
           (ILibrariesService)
               GlobalServiceRegister.getDefault().getService(ILibrariesService.class);
       if (libService != null) {
         libService.syncLibraries();
       }
     }
     setModified(false);
   }
 }
 @Override
 public void checkInstalledLibraries() {
   Set<String> existLibraries = repositoryBundleService.list();
   List<String> modulesNeededNames = ModulesNeededProvider.getModulesNeededNames();
   ModulesNeededProvider.getUnUsedModules().clear();
   for (String library : existLibraries) {
     if (!modulesNeededNames.contains(library)) {
       ModulesNeededProvider.userAddUnusedModules("Unknown", library); // $NON-NLS-1$
     }
   }
 }
Example #4
0
    @Override
    public Map<ModuleNeeded, File> getFilesToShare(IProgressMonitor monitor) {
      Map<ModuleNeeded, File> files = new HashMap<ModuleNeeded, File>();
      SubMonitor mainSubMonitor = SubMonitor.convert(monitor, 1);
      mainSubMonitor.setTaskName(Messages.getString("ShareLibsJob.getFilesToShare")); // $NON-NLS-1$
      final List<ModuleNeeded> modulesNeeded =
          new ArrayList<ModuleNeeded>(ModulesNeededProvider.getModulesNeeded());
      ILibraryManagerService librariesService =
          (ILibraryManagerService)
              GlobalServiceRegister.getDefault().getService(ILibraryManagerService.class);
      Set<String> filePaths = new HashSet<String>();
      for (ModuleNeeded module : modulesNeeded) {
        if (monitor.isCanceled()) {
          return null;
        }

        // only deploy libraries with group id org.talend.libraries
        MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(module.getMavenUri());
        if (parseMvnUrl == null
            || !MavenConstants.DEFAULT_LIB_GROUP_ID.equals(parseMvnUrl.getGroupId())) {
          continue;
        }

        final String jarPathFromMaven =
            librariesService.getJarPathFromMaven(module.getMavenUriSnapshot());
        if (jarPathFromMaven == null) {
          continue;
        }
        File jarFile = new File(jarPathFromMaven);
        if (jarFile.exists()) {
          if (!filePaths.contains(jarPathFromMaven)) {
            files.put(module, jarFile);
          }
          filePaths.add(jarPathFromMaven);
        }
      }
      mainSubMonitor.worked(1);
      return files;
    }
 /** DOC ycbai Comment method "initializeSystemLibs". */
 public void initializeSystemLibs() {
   if (!initialized) {
     ILibraryManagerService libManagerService = null;
     if (GlobalServiceRegister.getDefault().isServiceRegistered(ILibraryManagerService.class)) {
       libManagerService =
           (ILibraryManagerService)
               GlobalServiceRegister.getDefault().getService(ILibraryManagerService.class);
     }
     for (IConfigurationElement current : configurationElements) {
       String bundleName = current.getContributor().getName();
       Bundle bundle = Platform.getBundle(bundleName);
       Enumeration entryPaths = bundle.getEntryPaths(LIB_FOLDER);
       if (entryPaths == null) {
         continue;
       }
       while (entryPaths.hasMoreElements()) {
         Object entryPath = entryPaths.nextElement();
         if (entryPath != null && entryPath instanceof String) {
           String path = (String) entryPath;
           if (path.endsWith(FileExtensions.JAR_FILE_SUFFIX)) {
             URL entry = bundle.getEntry(path);
             if (entry != null && libManagerService != null) {
               try {
                 URL fileUrl = FileLocator.toFileURL(entry);
                 libManagerService.deploy(fileUrl.toURI());
               } catch (Exception e) {
                 log.warn("Cannot deploy: " + bundleName + path);
                 continue;
               }
             }
           }
         }
       }
     }
     initialized = true;
   }
 }
  /**
   * look for all the required modules for a given bundle, and let the user decide to download it.
   * this method is blocked until the dialog box is closed.
   *
   * @param jarMissingEvent, must never be null
   */
  protected void showMissingModuleDialog(final JarMissingEvent jarMissingEvent) {
    if (allModulesNeededExtensionsForPlugin == null) {
      this.allModulesNeededExtensionsForPlugin =
          ModulesNeededProvider.getAllModulesNeededExtensionsForPlugin();
    }
    List<ModuleNeeded> requiredModulesForBundle =
        ModulesNeededProvider.filterRequiredModulesForBundle(
            jarMissingEvent.getBundleSymbolicName(), allModulesNeededExtensionsForPlugin);
    final List<String> requiredJars = new ArrayList<String>(requiredModulesForBundle.size());
    // filter the jar that are already installed
    for (ModuleNeeded module : requiredModulesForBundle) {
      String moduleName = module.getModuleName();
      // if jar does not exist at expected folder then check if it is registered in the Studio
      if (!new File(jarMissingEvent.getExpectedLibFolder(), moduleName).exists()) {
        // check that library is already available and registered but not deployed to lib/java.
        try {
          if (librariesService != null
              && (librariesService.getLibraryStatus(moduleName)
                  == ELibraryInstallStatus.INSTALLED)) {
            // lib exist so deploy it
            List<ModuleNeeded> allModuleNeeded =
                ModulesNeededProvider.getModulesNeededForName(moduleName);
            for (ModuleNeeded sameModule : allModuleNeeded) {
              String moduleLocation = sameModule.getModuleLocaion();
              if (sameModule.getStatus() == ELibraryInstallStatus.INSTALLED
                  && moduleLocation != null
                  && !moduleLocation.isEmpty()) {
                URI uri = new URI(moduleLocation);
                URL url = FileLocator.toFileURL(uri.toURL());
                if ("file".equals(url.getProtocol())) { // $NON-NLS-1$
                  libraryManagerService.deploy(url.toURI(), null);
                } // else not a file so keep going
                break;
              } // else not an installed module or no url so keep so keep looking
            }
          } // else no installed so keep going and ask the user
        } catch (BusinessException e) {
          log.warn("Could not get installade status for library:" + moduleName, e);
        } catch (URISyntaxException e) {
          log.warn("Could not get installade status for library:" + moduleName, e);
        } catch (IOException e) {
          log.warn("Could not get installade status for library:" + moduleName, e);
        }
      }
      if (!new File(jarMissingEvent.getExpectedLibFolder(), moduleName).exists()) {
        requiredJars.add(moduleName);
      } // else jar already installed to filter it by ignoring it.
    }
    if (!requiredJars.isEmpty()) {
      Display.getDefault()
          .syncExec(
              new Runnable() {

                @Override
                public void run() {
                  ExternalModulesInstallDialogWithProgress dialog =
                      new ExternalModulesInstallDialogWithProgress(
                          PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
                          Messages.getString(
                              "ExternalModulesInstallDialog_Title_Missing_jars_for_plugin"), //$NON-NLS-1$
                          Messages.getString(
                              "ExternalModulesInstallDialog_description_jars_to_be_installed_in"),
                          SWT.APPLICATION_MODAL); //$NON-NLS-1$
                  dialog.showDialog(true, requiredJars.toArray(new String[requiredJars.size()]));
                }
              });
    } // else there is not extension point defining the required bundles so do not ask the user
      // ignor.
  }