All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.snapscript.core.link.ImportLoader Maven / Gradle / Ivy

package org.snapscript.core.link;

import org.snapscript.common.Cache;
import org.snapscript.common.CopyOnWriteCache;
import org.snapscript.core.Any;
import org.snapscript.core.ContextClassLoader;

import java.lang.Package;

public class ImportLoader {
   
   private final Cache packages;
   private final Cache types;
   private final ClassLoader loader;
   
   public ImportLoader() {
      this.packages = new CopyOnWriteCache();
      this.types = new CopyOnWriteCache();
      this.loader = new ContextClassLoader(Any.class);
   }
   
   public Package loadPackage(String name) {
      try {
         if(!packages.contains(name)) {
            Package match = Package.getPackage(name); // this does not really work!!
            
            packages.cache(name, match);
         }
      }catch(Exception e) {
         packages.cache(name, null);
         return null;
      }
      return packages.fetch(name);
   }
   
   public Class loadClass(String name) {
      try {
         if(!types.contains(name)) {
            Class match = loader.loadClass(name);

            types.cache(name, match);
         }
      } catch(Exception e) {
         types.cache(name, null);
         return null;
      }
      return types.fetch(name);
      
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy