public class OnBotJavaManager
extends java.lang.Object
implements java.io.Closeable
OnBotJavaManager
is the main orchestrator of the OnBotJava build process.
The process is driven by reading and writing of files. In the FIRST directory, we now have a 'java' child. This class owns and manages that space. There are several subdirectories of 'java':
FileModifyObserver
) as triggers to take
actions to process the output of the build.
The Annotated OpMode loading system is a client of this structure. It monitors for successful builds, and upon detection of same, (re)scans the output of the build and alters its sense of available OpModes accordingly.
Modifier and Type | Class and Description |
---|---|
static class |
OnBotJavaManager.BuildStatus |
Modifier and Type | Field and Description |
---|---|
static java.io.File |
assetRoot |
static java.io.File |
buildCompleteFile |
static java.io.File |
buildDir
the root of all outputs generated by the build system.
|
static java.io.File |
buildLockDir |
static java.io.File |
buildLogFile |
static java.io.File |
buildRequestFile |
protected ThreadPool.Singleton<java.lang.Void> |
buildSingleton |
static java.io.File |
buildStartedFile |
protected static OnBotJavaManager.BuildStatus |
buildStatus |
static java.io.File |
classesOutputDir |
static java.io.File |
controlDir |
protected FileModifyObserver |
controlObserver |
static java.io.File |
currentOnBotJavaDirFile |
protected OnBotJavaDiagnosticsListener |
diagnosticListener |
static java.lang.String[] |
ftcClassPathLibs |
static java.io.File |
jarDir |
static java.io.File |
jarsOutputDir |
static java.io.File |
javaRoot |
static java.io.File |
libDir
the directory into which libraries used by the source live
|
static java.lang.String |
onBotJavaJarName |
static java.lang.String[] |
platformClassPathLibs |
static java.io.File |
sourceOutputDir |
static java.io.File |
srcDir
the directory into which user .java should be placed (in
appropriate reverse-domain subdirs for .java, as usual)
|
protected static java.lang.Object |
startStopLock |
static java.io.File |
statusDir |
static java.lang.String |
TAG |
Constructor and Description |
---|
OnBotJavaManager() |
Modifier and Type | Method and Description |
---|---|
protected void |
build()
The creation or updating of the build request file in the control directory will cause us to
initiate the whole cascade of processing
|
protected void |
clean() |
void |
close() |
protected boolean |
compileJavaFiles() |
protected void |
consolidateClassFilesToJar(java.io.File onBotJavaDirDirectory) |
protected void |
copyInputJarFiles(java.io.File onBotJavaDirDirectory) |
protected void |
dexifyJarFile(java.io.File jarFile) |
protected void |
dexifyJarFiles(java.io.File onBotJavaDirDirectory) |
protected void |
ensureBuildDirs() |
protected static void |
ensureDirectories() |
protected static void |
ensureDirs(java.io.File file) |
protected static void |
extractAssets() |
protected static void |
extractJavaLibraryAsset(java.lang.String name) |
protected static void |
fullClean() |
static OnBotJavaManager.BuildStatus |
getBuildStatus() |
protected static java.io.File |
getCurrentOutputJarDir() |
static java.util.List<java.io.File> |
getOutputJarFiles() |
static java.util.List<java.io.File> |
getOutputJarFiles(java.io.File onBotJavaDirDirectory) |
static void |
initialize() |
protected void |
posttrace(java.lang.String message) |
protected void |
pretrace(java.lang.String message) |
protected void |
testBusy(java.lang.String message,
java.lang.String phase) |
protected void |
trace(java.lang.String message,
java.lang.Runnable runnable) |
protected <T> T |
trace(java.lang.String message,
Supplier<T> supplier) |
protected <VALUE,EXCEPTION_T extends java.io.IOException> |
trace(java.lang.String message,
ThrowingCallable<VALUE,EXCEPTION_T> callable) |
protected void |
writeBuildStatusFile(java.io.File file,
java.lang.String message) |
public static final java.io.File javaRoot
public static final java.io.File libDir
public static final java.io.File srcDir
public static final java.io.File jarDir
public static final java.io.File controlDir
public static final java.io.File buildRequestFile
public static final java.io.File buildLockDir
public static final java.io.File statusDir
public static final java.io.File buildLogFile
public static final java.io.File buildStartedFile
public static final java.io.File buildCompleteFile
public static final java.io.File currentOnBotJavaDirFile
public static final java.io.File buildDir
public static final java.io.File sourceOutputDir
public static final java.io.File classesOutputDir
public static final java.io.File jarsOutputDir
public static final java.lang.String onBotJavaJarName
public static final java.io.File assetRoot
public static final java.lang.String[] platformClassPathLibs
public static final java.lang.String[] ftcClassPathLibs
public static final java.lang.String TAG
protected static final java.lang.Object startStopLock
protected final ThreadPool.Singleton<java.lang.Void> buildSingleton
protected FileModifyObserver controlObserver
protected OnBotJavaDiagnosticsListener diagnosticListener
protected static volatile OnBotJavaManager.BuildStatus buildStatus
public static void initialize()
protected static void ensureDirectories()
protected void ensureBuildDirs()
protected static void ensureDirs(java.io.File file)
protected static void extractAssets()
protected static void extractJavaLibraryAsset(java.lang.String name)
public void close()
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
protected void build()
protected void writeBuildStatusFile(java.io.File file, java.lang.String message)
protected void clean()
protected static void fullClean()
protected boolean compileJavaFiles()
protected void consolidateClassFilesToJar(java.io.File onBotJavaDirDirectory) throws java.io.IOException
java.io.IOException
protected void copyInputJarFiles(java.io.File onBotJavaDirDirectory) throws java.io.IOException
java.io.IOException
protected void dexifyJarFiles(java.io.File onBotJavaDirDirectory) throws java.io.IOException
java.io.IOException
public static java.util.List<java.io.File> getOutputJarFiles()
public static java.util.List<java.io.File> getOutputJarFiles(java.io.File onBotJavaDirDirectory)
protected static java.io.File getCurrentOutputJarDir()
public static OnBotJavaManager.BuildStatus getBuildStatus()
protected void dexifyJarFile(java.io.File jarFile) throws java.lang.RuntimeException
java.lang.RuntimeException
protected <VALUE,EXCEPTION_T extends java.io.IOException> VALUE trace(java.lang.String message, ThrowingCallable<VALUE,EXCEPTION_T> callable) throws java.io.IOException
java.io.IOException
protected void trace(java.lang.String message, java.lang.Runnable runnable)
protected <T> T trace(java.lang.String message, Supplier<T> supplier)
protected void pretrace(java.lang.String message)
protected void posttrace(java.lang.String message)
protected void testBusy(java.lang.String message, java.lang.String phase)