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.Arguments
arguments
private java.util.SortedSet<java.lang.String>
availableClasses
private ClassesProvider
classesProvider
private java.util.ArrayList<InMemoryJavaClassFileObject>
classOutputs
private javax.tools.JavaFileManager
delegate
private static java.lang.String
HOST_SYSTEM_MODULES
private javax.tools.JavaFileObject
hostJavaLangObjectFileObject
private LoggingSwitch
loggingSwitch
-
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) void
clearAndGetOutput(java.util.Collection<javax.tools.JavaFileObject> classOutput)
void
close()
boolean
contains(javax.tools.JavaFileManager.Location location, javax.tools.FileObject fo)
void
flush()
java.lang.ClassLoader
getClassLoader(javax.tools.JavaFileManager.Location location)
javax.tools.FileObject
getFileForInput(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName)
javax.tools.FileObject
getFileForOutput(javax.tools.JavaFileManager.Location location, java.lang.String packageName, java.lang.String relativeName, javax.tools.FileObject sibling)
javax.tools.JavaFileObject
getJavaFileForInput(javax.tools.JavaFileManager.Location location, java.lang.String className, javax.tools.JavaFileObject.Kind kind)
javax.tools.JavaFileObject
getJavaFileForOutput(javax.tools.JavaFileManager.Location location, java.lang.String className, javax.tools.JavaFileObject.Kind kind, javax.tools.FileObject sibling)
javax.tools.JavaFileManager.Location
getLocationForModule(javax.tools.JavaFileManager.Location location, java.lang.String moduleName)
javax.tools.JavaFileManager.Location
getLocationForModule(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)
boolean
handleOption(java.lang.String current, java.util.Iterator<java.lang.String> remaining)
boolean
hasLocation(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.String
inferBinaryName(javax.tools.JavaFileManager.Location location, javax.tools.JavaFileObject file)
java.lang.String
inferModuleName(javax.tools.JavaFileManager.Location location)
boolean
isSameFile(javax.tools.FileObject a, javax.tools.FileObject b)
int
isSupportedOption(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) void
setArguments(ClasspathlessCompiler.Arguments arguments)
(package private) void
setAvailableClasses(java.util.SortedSet<java.lang.String> availableClasses)
(package private) void
setClassesProvider(ClassesProvider classesProvider)
(package private) void
setLoggingSwitch(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:
getLocationForModule
in 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:
getLocationForModule
in 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:
getServiceLoader
in interfacejavax.tools.JavaFileManager
- Throws:
java.io.IOException
-
inferModuleName
public java.lang.String inferModuleName(javax.tools.JavaFileManager.Location location) throws java.io.IOException
- Specified by:
inferModuleName
in 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:
listLocationsForModules
in 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:
contains
in interfacejavax.tools.JavaFileManager
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in interfacejavax.tools.JavaFileManager
- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException
- Specified by:
flush
in interfacejava.io.Flushable
- Specified by:
flush
in interfacejavax.tools.JavaFileManager
- Throws:
java.io.IOException
-
isSupportedOption
public int isSupportedOption(java.lang.String option)
- Specified by:
isSupportedOption
in interfacejavax.tools.OptionChecker
-
isSameFile
public boolean isSameFile(javax.tools.FileObject a, javax.tools.FileObject b)
- Specified by:
isSameFile
in interfacejavax.tools.JavaFileManager
-
getClassLoader
public java.lang.ClassLoader getClassLoader(javax.tools.JavaFileManager.Location location)
- Specified by:
getClassLoader
in 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:
getFileForInput
in 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:
getFileForOutput
in 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:
getJavaFileForInput
in 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:
getJavaFileForOutput
in interfacejavax.tools.JavaFileManager
- Throws:
java.io.IOException
-
hasLocation
public boolean hasLocation(javax.tools.JavaFileManager.Location location)
- Specified by:
hasLocation
in interfacejavax.tools.JavaFileManager
-
inferBinaryName
public java.lang.String inferBinaryName(javax.tools.JavaFileManager.Location location, javax.tools.JavaFileObject file)
- Specified by:
inferBinaryName
in interfacejavax.tools.JavaFileManager
-
loadClasses
private java.util.Collection<javax.tools.JavaFileObject> loadClasses(java.lang.String packageName, boolean recurse) throws java.io.IOException
A 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:
list
in interfacejavax.tools.JavaFileManager
- Throws:
java.io.IOException
-
handleOption
public boolean handleOption(java.lang.String current, java.util.Iterator<java.lang.String> remaining)
- Specified by:
handleOption
in interfacejavax.tools.JavaFileManager
-
-