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

org.fulib.scenarios.library.DirLibrary Maven / Gradle / Ivy

package org.fulib.scenarios.library;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class DirLibrary extends Library
{
   // =============== Constructors ===============

   public DirLibrary(File source)
   {
      super(source);
   }

   // =============== Methods ===============

   private File getValidFileOrNull(String className)
   {
      final String classFileName = className.replace('/', File.separatorChar) + ".class";
      final File file = new File(this.getSource(), classFileName);
      if (!file.exists())
      {
         return null;
      }

      final String canonicalFile;
      try
      {
         canonicalFile = file.getCanonicalPath();
      }
      catch (IOException e)
      {
         return null;
      }

      // case sensitive check
      if (!canonicalFile.endsWith(classFileName))
      {
         return null;
      }
      return file;
   }

   @Override
   public boolean hasClass(String name)
   {
      return this.getValidFileOrNull(name) != null;
   }

   @Override
   public InputStream loadClass(String name) throws IOException
   {
      final File file = this.getValidFileOrNull(name);
      return file != null ? new FileInputStream(file) : null;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy