private void pullInDependencies(ModuleIdentifier modID, File modDir) {
    // Load the module configuration file.
    File modJsonFile = new File(modDir, MOD_JSON_FILE);
    ModuleInfo info = loadModuleInfo(modID, modJsonFile);

    // Pull in all dependencies according to the "includes" and "deploys" fields.
    ModuleFields fields = info.fields();
    List<String> mods = new ArrayList<>();

    // Add "includes" modules.
    String sincludes = fields.getIncludes();
    if (sincludes != null) {
      String[] includes = parseIncludes(sincludes);
      if (includes != null) {
        mods.addAll(Arrays.asList(includes));
      }
    }

    // Add "deploys" modules.
    String sdeploys = fields.getDeploys();
    if (sdeploys != null) {
      String[] deploys = parseIncludes(sdeploys);
      if (deploys != null) {
        mods.addAll(Arrays.asList(deploys));
      }
    }

    // Iterate through "includes" and "deploys" and attempt to move them
    // into the module directory if they can be found. Note that this
    // requires that the modules be installed. It does not check remote
    // repositories since it's assumed that remote repositories can be
    // access from any node to which the module goes.
    if (!mods.isEmpty()) {
      File internalModsDir = new File(modDir, "mods");
      if (!internalModsDir.exists()) {
        if (!internalModsDir.mkdir()) {
          throw new PlatformManagerException("Failed to create directory " + internalModsDir);
        }
      }

      for (String moduleName : mods) {
        File internalModDir = new File(internalModsDir, moduleName);
        if (!internalModDir.exists()) {
          ModuleIdentifier childModID = new ModuleIdentifier(moduleName);
          File includeModDir = locateModule(childModID);
          if (includeModDir != null) {
            vertx.fileSystem().copySync(includeModDir.getAbsolutePath(), internalModDir.getAbsolutePath(), true);
            pullInDependencies(childModID, internalModDir);
          }
        }
      }
    }
  }
private void pullInDependencies ( ModuleIdentifier modID , File modDir ) { File modJsonFile = new File ( modDir , MOD_JSON_FILE ) ; ModuleInfo info = loadModuleInfo ( modID , modJsonFile ) ; ModuleFields fields = info . fields ( ) ; List < String > mods = new ArrayList < > ( ) ; String sincludes = fields . getIncludes ( ) ; if ( sincludes != null ) { String [ ] includes = parseIncludes ( sincludes ) ; if ( includes != null ) { mods . addAll ( Arrays . asList ( includes ) ) ; } } String sdeploys = fields . getDeploys ( ) ; if ( sdeploys != null ) { String [ ] deploys = parseIncludes ( sdeploys ) ; if ( deploys != null ) { mods . addAll ( Arrays . asList ( deploys ) ) ; } } if ( ! mods . isEmpty ( ) ) { File internalModsDir = new File ( modDir , "mods" ) ; if ( ! internalModsDir . exists ( ) ) { if ( ! internalModsDir . mkdir ( ) ) { throw new PlatformManagerException ( "Failed to create directory " + internalModsDir ) ; } } for ( String moduleName : mods ) { File internalModDir = new File ( internalModsDir , moduleName ) ; if ( ! internalModDir . exists ( ) ) { ModuleIdentifier childModID = new ModuleIdentifier ( moduleName ) ; File includeModDir = locateModule ( childModID ) ; if ( includeModDir != null ) { vertx . fileSystem ( ) . copySync ( includeModDir . getAbsolutePath ( ) , internalModDir . getAbsolutePath ( ) , true ) ; pullInDependencies ( childModID , internalModDir ) ; } } } } }
Pulls in all dependencies for a module.