use of net.jangaroo.jooc.backend.CompilationUnitSinkFactory in project jangaroo-tools by CoreMedia.
the class Jooc method createSinkFactory.
private CompilationUnitSinkFactory createSinkFactory(JoocConfiguration config, final boolean generateActionScriptApi) {
CompilationUnitSinkFactory codeSinkFactory;
if (!generateActionScriptApi && config.isMergeOutput()) {
codeSinkFactory = new MergedOutputCompilationUnitSinkFactory(config, config.getOutputFile());
} else {
File outputDirectory = generateActionScriptApi ? config.getApiOutputDirectory() : config.getOutputDirectory();
final String suffix = generateActionScriptApi ? AS_SUFFIX : OUTPUT_FILE_SUFFIX;
codeSinkFactory = new SingleFileCompilationUnitSinkFactory(config, outputDirectory, generateActionScriptApi, suffix);
}
return codeSinkFactory;
}
use of net.jangaroo.jooc.backend.CompilationUnitSinkFactory in project jangaroo-tools by CoreMedia.
the class Jooc method run1.
private CompilationResult run1() {
InputSource sourcePathInputSource;
InputSource classPathInputSource;
try {
sourcePathInputSource = PathInputSource.fromFiles(getConfig().getSourcePath(), new String[] { "" }, true);
classPathInputSource = PathInputSource.fromFiles(getConfig().getClassPath(), new String[] { "", JOO_API_IN_JAR_DIRECTORY_PREFIX }, false);
} catch (IOException e) {
throw new CompilerError("IO Exception occurred", e);
}
setUp(sourcePathInputSource, classPathInputSource);
HashMap<File, File> outputFileMap = new HashMap<File, File>();
try {
for (File sourceFile : getConfig().getSourceFiles()) {
processSource(sourceFile);
}
CompilationUnitSinkFactory codeSinkFactory = createSinkFactory(getConfig(), false);
CompilationUnitSinkFactory apiSinkFactory = null;
if (getConfig().isGenerateApi()) {
apiSinkFactory = createSinkFactory(getConfig(), true);
}
for (CompilationUnit unit : compileQueue) {
unit.analyze(null);
if (getConfig().getPublicApiViolationsMode() != PublicApiViolationsMode.ALLOW) {
reportPublicApiViolations(unit);
}
File sourceFile = ((FileInputSource) unit.getSource()).getFile();
File outputFile = null;
// only generate JavaScript if [Native] annotation and 'native' modifier on primary declaration are not present:
if (unit.getAnnotation(NATIVE_ANNOTATION_NAME) == null && !unit.getPrimaryDeclaration().isNative()) {
outputFile = writeOutput(sourceFile, unit, codeSinkFactory, getConfig().isVerbose());
}
// always map source file, even if output file is null!
outputFileMap.put(sourceFile, outputFile);
if (getConfig().isGenerateApi()) {
writeOutput(sourceFile, unit, apiSinkFactory, getConfig().isVerbose());
}
}
int result = log.hasErrors() ? CompilationResult.RESULT_CODE_COMPILATION_FAILED : CompilationResult.RESULT_CODE_OK;
return new CompilationResultImpl(result, outputFileMap);
} catch (IOException e) {
throw new CompilerError("IO Exception occurred", e);
} finally {
tearDown();
}
}
Aggregations