Class InMemoryFileManager
- java.lang.Object
-
- io.github.mkoncek.classpathless.impl.InMemoryFileManager
-
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.AutoCloseable,javax.tools.JavaFileManager,javax.tools.OptionChecker
public class InMemoryFileManager extends java.lang.Object implements javax.tools.JavaFileManager
-
-
Field Summary
Fields Modifier and Type Field Description private ClasspathlessCompiler.Argumentsargumentsprivate java.util.SortedSet<java.lang.String>availableClassesprivate ClassesProviderclassesProviderprivate java.util.ArrayList<InMemoryJavaClassFileObject>classOutputsprivate javax.tools.JavaFileManagerdelegateprivate static java.lang.StringHOST_SYSTEM_MODULESprivate javax.tools.JavaFileObjecthostJavaLangObjectFileObjectprivate LoggingSwitchloggingSwitch
-
Constructor Summary
Constructors Constructor Description InMemoryFileManager(javax.tools.JavaFileManager delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) voidclearAndGetOutput(java.util.Collection<javax.tools.JavaFileObject> classOutput)voidclose()booleancontains(javax.tools.JavaFileManager.Location location, javax.tools.FileObject fo)voidflush()java.lang.ClassLoadergetClassLoader(javax.tools.JavaFileManager.Location location)javax.tools.FileObjectgetFileForInput(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName)javax.tools.FileObjectgetFileForOutput(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName, javax.tools.FileObject sibling)javax.tools.JavaFileObjectgetJavaFileForInput(javax.tools.JavaFileManager.Location location, java.lang.String className, javax.tools.JavaFileObject.Kind kind)javax.tools.JavaFileObjectgetJavaFileForOutput(javax.tools.JavaFileManager.Location location, java.lang.String className, javax.tools.JavaFileObject.Kind kind, javax.tools.FileObject sibling)javax.tools.JavaFileManager.LocationgetLocationForModule(javax.tools.JavaFileManager.Location location, java.lang.String moduleName)javax.tools.JavaFileManager.LocationgetLocationForModule(javax.tools.JavaFileManager.Location location, javax.tools.JavaFileObject fo)<S> java.util.ServiceLoader<S>getServiceLoader(javax.tools.JavaFileManager.Location location, java.lang.Class<S> service)booleanhandleOption(java.lang.String current, java.util.Iterator<java.lang.String> remaining)booleanhasLocation(javax.tools.JavaFileManager.Location location)private java.util.Collection<java.lang.String>hostClassesNames(java.lang.Iterable<javax.tools.JavaFileObject> jfobjects)A utility which extracts the fully qualified names of given file objects assuming they are the host system classes returned by the StandardJavaFileManager.java.lang.StringinferBinaryName(javax.tools.JavaFileManager.Location location, javax.tools.JavaFileObject file)java.lang.StringinferModuleName(javax.tools.JavaFileManager.Location location)booleanisSameFile(javax.tools.FileObject a, javax.tools.FileObject b)intisSupportedOption(java.lang.String option)java.lang.Iterable<javax.tools.JavaFileObject>list(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.util.Set<javax.tools.JavaFileObject.Kind> kinds, boolean recurse)private java.lang.Iterable<javax.tools.JavaFileObject>listImpl(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.util.Set<javax.tools.JavaFileObject.Kind> kinds, boolean recurse)java.lang.Iterable<java.util.Set<javax.tools.JavaFileManager.Location>>listLocationsForModules(javax.tools.JavaFileManager.Location location)private java.util.Collection<javax.tools.JavaFileObject>loadClasses(java.lang.String packageName, boolean recurse)A utility method which loads all available classes as a collection of file objects for a given package name.(package private) voidsetArguments(ClasspathlessCompiler.Arguments arguments)(package private) voidsetAvailableClasses(java.util.SortedSet<java.lang.String> availableClasses)(package private) voidsetClassesProvider(ClassesProvider classesProvider)(package private) voidsetLoggingSwitch(LoggingSwitch loggingSwitch)
-
-
-
Field Detail
-
delegate
private javax.tools.JavaFileManager delegate
-
arguments
private ClasspathlessCompiler.Arguments arguments
-
classesProvider
private ClassesProvider classesProvider
-
availableClasses
private java.util.SortedSet<java.lang.String> availableClasses
-
loggingSwitch
private LoggingSwitch loggingSwitch
-
classOutputs
private java.util.ArrayList<InMemoryJavaClassFileObject> classOutputs
-
hostJavaLangObjectFileObject
private javax.tools.JavaFileObject hostJavaLangObjectFileObject
-
HOST_SYSTEM_MODULES
private static final java.lang.String HOST_SYSTEM_MODULES
- See Also:
- Constant Field Values
-
-
Method Detail
-
setLoggingSwitch
void setLoggingSwitch(LoggingSwitch loggingSwitch)
-
setClassesProvider
void setClassesProvider(ClassesProvider classesProvider)
-
setAvailableClasses
void setAvailableClasses(java.util.SortedSet<java.lang.String> availableClasses)
-
setArguments
void setArguments(ClasspathlessCompiler.Arguments arguments)
-
clearAndGetOutput
void clearAndGetOutput(java.util.Collection<javax.tools.JavaFileObject> classOutput)
-
getLocationForModule
public javax.tools.JavaFileManager.Location getLocationForModule(javax.tools.JavaFileManager.Location location, java.lang.String moduleName) throws java.io.IOException- Specified by:
getLocationForModulein interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
getLocationForModule
public javax.tools.JavaFileManager.Location getLocationForModule(javax.tools.JavaFileManager.Location location, javax.tools.JavaFileObject fo) throws java.io.IOException- Specified by:
getLocationForModulein interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
getServiceLoader
public <S> java.util.ServiceLoader<S> getServiceLoader(javax.tools.JavaFileManager.Location location, java.lang.Class<S> service) throws java.io.IOException- Specified by:
getServiceLoaderin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
inferModuleName
public java.lang.String inferModuleName(javax.tools.JavaFileManager.Location location) throws java.io.IOException- Specified by:
inferModuleNamein interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
listLocationsForModules
public java.lang.Iterable<java.util.Set<javax.tools.JavaFileManager.Location>> listLocationsForModules(javax.tools.JavaFileManager.Location location) throws java.io.IOException- Specified by:
listLocationsForModulesin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
contains
public boolean contains(javax.tools.JavaFileManager.Location location, javax.tools.FileObject fo) throws java.io.IOException- Specified by:
containsin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException- Specified by:
flushin interfacejava.io.Flushable- Specified by:
flushin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
isSupportedOption
public int isSupportedOption(java.lang.String option)
- Specified by:
isSupportedOptionin interfacejavax.tools.OptionChecker
-
isSameFile
public boolean isSameFile(javax.tools.FileObject a, javax.tools.FileObject b)- Specified by:
isSameFilein interfacejavax.tools.JavaFileManager
-
getClassLoader
public java.lang.ClassLoader getClassLoader(javax.tools.JavaFileManager.Location location)
- Specified by:
getClassLoaderin interfacejavax.tools.JavaFileManager
-
getFileForInput
public javax.tools.FileObject getFileForInput(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName) throws java.io.IOException- Specified by:
getFileForInputin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
getFileForOutput
public javax.tools.FileObject getFileForOutput(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName, javax.tools.FileObject sibling) throws java.io.IOException- Specified by:
getFileForOutputin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
getJavaFileForInput
public javax.tools.JavaFileObject getJavaFileForInput(javax.tools.JavaFileManager.Location location, java.lang.String className, javax.tools.JavaFileObject.Kind kind) throws java.io.IOException- Specified by:
getJavaFileForInputin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
getJavaFileForOutput
public javax.tools.JavaFileObject getJavaFileForOutput(javax.tools.JavaFileManager.Location location, java.lang.String className, javax.tools.JavaFileObject.Kind kind, javax.tools.FileObject sibling) throws java.io.IOException- Specified by:
getJavaFileForOutputin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
hasLocation
public boolean hasLocation(javax.tools.JavaFileManager.Location location)
- Specified by:
hasLocationin interfacejavax.tools.JavaFileManager
-
inferBinaryName
public java.lang.String inferBinaryName(javax.tools.JavaFileManager.Location location, javax.tools.JavaFileObject file)- Specified by:
inferBinaryNamein interfacejavax.tools.JavaFileManager
-
loadClasses
private java.util.Collection<javax.tools.JavaFileObject> loadClasses(java.lang.String packageName, boolean recurse) throws java.io.IOExceptionA utility method which loads all available classes as a collection of file objects for a given package name.- Throws:
java.io.IOException
-
hostClassesNames
private java.util.Collection<java.lang.String> hostClassesNames(java.lang.Iterable<javax.tools.JavaFileObject> jfobjects)
A utility which extracts the fully qualified names of given file objects assuming they are the host system classes returned by the StandardJavaFileManager.
-
listImpl
private java.lang.Iterable<javax.tools.JavaFileObject> listImpl(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.util.Set<javax.tools.JavaFileObject.Kind> kinds, boolean recurse) throws java.io.IOException- Throws:
java.io.IOException
-
list
public java.lang.Iterable<javax.tools.JavaFileObject> list(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.util.Set<javax.tools.JavaFileObject.Kind> kinds, boolean recurse) throws java.io.IOException- Specified by:
listin interfacejavax.tools.JavaFileManager- Throws:
java.io.IOException
-
handleOption
public boolean handleOption(java.lang.String current, java.util.Iterator<java.lang.String> remaining)- Specified by:
handleOptionin interfacejavax.tools.JavaFileManager
-
-