Example #1
0
 @Override
 public void resolveModule(
     final ArtifactResult artifact,
     final Module module,
     final ModuleImport moduleImport,
     LinkedList<Module> dependencyTree,
     List<PhasedUnits> phasedUnitsOfDependencies,
     boolean forCompiledModule) {
   if (!clLoaded) {
     clLoaded = true;
     // If we haven't loaded the language module yet, we need to load it first
     if (!("ceylon.language".equals(artifact.name())
         && artifact.artifact().getName().endsWith(".js"))) {
       if (clmod == null) {
         ArtifactContext ac =
             new ArtifactContext(
                 "ceylon.language", module.getLanguageModule().getVersion(), ".js");
         ac.setFetchSingleArtifact(true);
         ac.setThrowErrorIfMissing(true);
         ArtifactResult lmar = getContext().getRepositoryManager().getArtifactResult(ac);
         resolveModule(
             lmar,
             module.getLanguageModule(),
             null,
             dependencyTree,
             phasedUnitsOfDependencies,
             forCompiledModule);
       } else {
         loadModuleFromMap(
             artifact,
             module,
             moduleImport,
             dependencyTree,
             phasedUnitsOfDependencies,
             forCompiledModule,
             clmod);
       }
     }
     // Then we continue loading whatever they asked for first.
   }
   // Create a similar artifact but with .js extension
   File js = artifact.artifact();
   if (module instanceof JsonModule && js.getName().endsWith(".js")) {
     if (((JsonModule) module).getModel() != null) {
       return;
     }
     if (js.exists() && js.isFile() && js.canRead()) {
       try {
         Map<String, Object> model = loadMetamodel(js);
         if (model != null) {
           loadModuleFromMap(
               artifact,
               module,
               moduleImport,
               dependencyTree,
               phasedUnitsOfDependencies,
               forCompiledModule,
               model);
         }
       } catch (IOException ex) {
         // nothing to do here, will attempt reading .src
       }
     }
   }
   super.resolveModule(
       artifact,
       module,
       moduleImport,
       dependencyTree,
       phasedUnitsOfDependencies,
       forCompiledModule);
 }