Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
flex2.compiler.util.ThreadLocalToolkit Maven / Gradle / Ivy
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package flex2.compiler.util;
//import flash.localization.LocalizationManager;
import flash.localization.LocalizationManager;
import flex2.compiler.ILocalizableMessage;
import flex2.compiler.Logger;
import flex2.compiler.Source;
import flex2.compiler.common.PathResolver;
import flex2.compiler.io.VirtualFile;
import flex2.compiler.mxml.lang.StandardDefs;
import flex2.tools.oem.ProgressMeter;
import java.util.HashMap;
import java.util.Map;
/**
* A utility class that contains all the thread local variables used
* by the compiler. These are mostly conveniences so that the
* variables don't have to be passed around to all the corners of the
* compiler via method parameters. These represent potential memory
* leaks, though. All the variables should be cleared at the end of a
* compilation. Otherwise, if the thread used for compilation
* changes, lots of memory will be leaked with the old thread.
*
* @author Clement Wong
*/
public final class ThreadLocalToolkit
{
private static ThreadLocal logger = new ThreadLocal();
private static ThreadLocal resolver = new ThreadLocal();
private static ThreadLocal> resolved = new ThreadLocal>();
private static ThreadLocal stopWatch = new ThreadLocal();
private static ThreadLocal localization = new ThreadLocal();
private static ThreadLocal mimeMappings = new ThreadLocal();
private static ThreadLocal progressMeter = new ThreadLocal();
private static ThreadLocal compilerControl = new ThreadLocal();
private static ThreadLocal standardDefs = new ThreadLocal();
private static ThreadLocal compatibilityVersion = new ThreadLocal();
//----------------------
// LocalizationManager
//----------------------
public static LocalizationManager getLocalizationManager()
{
return localization.get();
}
public static void setLocalizationManager(LocalizationManager mgr)
{
localization.set( mgr );
}
//---------------
// PathResolver
//---------------
public static void setPathResolver(PathResolver r)
{
resolver.set(r);
}
public static void resetResolvedPaths()
{
resolved.set(null);
}
public static PathResolver getPathResolver()
{
return resolver.get();
}
public static void addResolvedPath(String path, VirtualFile virtualFile)
{
Map resolvedMap = resolved.get();
if (resolvedMap == null)
{
resolvedMap = new HashMap();
resolved.set(resolvedMap);
}
resolvedMap.put(path, virtualFile);
}
public static VirtualFile getResolvedPath(String path)
{
Map resolvedMap = resolved.get();
assert resolvedMap != null;
return (VirtualFile) resolvedMap.get(path);
}
//---------------
// Benchmarking
//---------------
public static void setBenchmark(Benchmark b)
{
stopWatch.set(b);
}
public static Benchmark getBenchmark()
{
return stopWatch.get();
}
public static void resetBenchmark()
{
Benchmark b = stopWatch.get();
if (b != null)
{
//b.start();
}
}
//---------------
// MimeMappings
//---------------
public static void setMimeMappings(MimeMappings mappings)
{
mimeMappings.set(mappings);
}
static MimeMappings getMimeMappings()
{
return mimeMappings.get();
}
//----------------
// ProgressMeter
//----------------
public static void setProgressMeter(ProgressMeter meter)
{
progressMeter.set(meter);
}
public static ProgressMeter getProgressMeter()
{
return progressMeter.get();
}
//-------------------
// Compiler Control
//-------------------
public static void setCompilerControl(CompilerControl cc)
{
compilerControl.set(cc);
}
public static CompilerControl getCompilerControl()
{
return compilerControl.get();
}
//----------------
// Standard Defs
//----------------
public static void setStandardDefs(StandardDefs defs)
{
standardDefs.set(defs);
}
public static StandardDefs getStandardDefs()
{
StandardDefs defs = standardDefs.get();
if (defs == null)
{
defs = StandardDefs.getStandardDefs("halo");
setStandardDefs(defs);
}
return defs;
}
//---------
// Logger
//---------
public static void setLogger(Logger logger)
{
ThreadLocalToolkit.logger.set(logger);
if (logger != null)
{
//logger.setLocalizationManager( getLocalizationManager() );
}
}
public static Logger getLogger()
{
return logger.get();
}
//---------
// CompatibilityVersion
//---------
public static void setCompatibilityVersion(Integer compatibilityVersion)
{
ThreadLocalToolkit.compatibilityVersion.set(compatibilityVersion);
}
public static Integer getCompatibilityVersion()
{
assert compatibilityVersion.get() != null : "Entry point missing setCompatibilityVersion()";
return compatibilityVersion.get();
}
//--------------------------------------------------------------------------
//
// Logging Methods
//
//--------------------------------------------------------------------------
public static int errorCount()
{
Logger l = logger.get();
if (l != null)
{
return l.errorCount();
}
else
{
return 0;
}
}
public static int warningCount()
{
Logger l = logger.get();
if (l != null)
{
return l.warningCount();
}
else
{
return 0;
}
}
public static void logInfo(String info)
{
Logger l = logger.get();
if (l != null)
{
l.logInfo(info);
}
else
{
System.out.println(info);
}
}
public static void logDebug(String debug)
{
Logger l = logger.get();
if (l != null)
{
l.logDebug(debug);
}
else
{
System.err.println(debug);
}
}
public static void logWarning(String warning)
{
Logger l = logger.get();
if (l != null)
{
l.logWarning(warning);
}
else
{
System.err.println(warning);
}
}
public static void logError(String error)
{
Logger l = logger.get();
if (l != null)
{
l.logError(error);
}
else
{
System.err.println(error);
}
}
public static void logInfo(String path, String info)
{
Logger l = logger.get();
if (l != null)
{
l.logInfo(path, info);
}
else
{
System.out.println(path + ":" + info);
}
}
public static void logDebug(String path, String debug)
{
Logger l = logger.get();
if (l != null)
{
l.logDebug(path, debug);
}
else
{
System.err.println(path + ":" + debug);
}
}
public static void logWarning(String path, String warning)
{
Logger l = logger.get();
if (l != null)
{
l.logWarning(path, warning);
}
else
{
System.err.println(path + ":" + warning);
}
}
public static void logWarning(String path, String warning, int errorCode)
{
Logger l = logger.get();
if (l != null)
{
l.logWarning(path, warning, errorCode);
}
else
{
System.err.println(path + ":" + warning);
}
}
public static void logError(String path, String error)
{
Logger l = logger.get();
if (l != null)
{
l.logError(path, error);
}
else
{
System.err.println(path + ":" + error);
}
}
public static void logError(String path, String error, int errorCode)
{
Logger l = logger.get();
if (l != null)
{
l.logError(path, error, errorCode);
}
else
{
System.err.println(path + ":" + error);
}
}
public static void logInfo(String path, int line, String info)
{
Logger l = logger.get();
if (l != null)
{
l.logInfo(path, line, info);
}
else
{
System.out.println(path + ": line " + line + " - " + info);
}
}
public static void logDebug(String path, int line, String debug)
{
Logger l = logger.get();
if (l != null)
{
l.logDebug(path, line, debug);
}
else
{
System.err.println(path + ": line " + line + " - " + debug);
}
}
public static void logWarning(String path, int line, String warning)
{
Logger l = logger.get();
if (l != null)
{
l.logWarning(path, line, warning);
}
else
{
System.err.println(path + ": line " + line + " - " + warning);
}
}
public static void logError(String path, int line, String error)
{
Logger l = logger.get();
if (l != null)
{
l.logError(path, line, error);
}
else
{
System.err.println(path + ": line " + line + " - " + error);
}
}
public static void logInfo(String path, int line, int col, String info)
{
Logger l = logger.get();
if (l != null)
{
l.logInfo(path, line, col, info);
}
else
{
System.out.println(path + ": line " + line + ", col " + col + " - " + info);
}
}
public static void logDebug(String path, int line, int col, String debug)
{
Logger l = logger.get();
if (l != null)
{
l.logDebug(path, line, col, debug);
}
else
{
System.err.println(path + ": line " + line + ", col " + col + " - " + debug);
}
}
public static void logWarning(String path, int line, int col, String warning)
{
Logger l = logger.get();
if (l != null)
{
l.logWarning(path, line, col, warning);
}
else
{
System.err.println(path + ": line " + line + ", col " + col + " - " + warning);
}
}
public static void logError(String path, int line, int col, String error)
{
Logger l = logger.get();
if (l != null)
{
l.logError(path, line, col, error);
}
else
{
System.err.println(path + ": line " + line + ", col " + col + " - " + error);
}
}
public static void logWarning(String path, int line, int col, String warning, String source)
{
Logger l = logger.get();
if (l != null)
{
l.logWarning(path, line, col, warning, source);
}
else
{
System.err.println(path + ": line " + line + ", col " + col + " - " + warning);
System.err.println(source);
}
}
public static void logWarning(String path, int line, int col, String warning, String source, int errorCode)
{
Logger l = logger.get();
if (l != null)
{
l.logWarning(path, line, col, warning, source, errorCode);
}
else
{
System.err.println(path + ": line " + line + ", col " + col + " - " + warning);
System.err.println(source);
}
}
public static void logError(String path, int line, int col, String error, String source)
{
Logger l = logger.get();
if (l != null)
{
l.logError(path, line, col, error, source);
}
else
{
System.err.println(path + ": line " + line + ", col " + col + " - " + error);
System.err.println(source);
}
}
public static void logError(String path, int line, int col, String error, String source, int errorCode)
{
Logger l = logger.get();
if (l != null)
{
l.logError(path, line, col, error, source, errorCode);
}
else
{
System.err.println(path + ": line " + line + ", col " + col + " - " + error);
System.err.println(source);
}
}
/**
* avoid passthrough ctors in CompilerMessages
*/
public static void log(CompilerMessage m, String path, int line, int column)
{
m.path = path;
m.line = line;
m.column = column;
log(m);
}
public static void log(CompilerMessage m, String path, int line, int column, String source)
{
m.path = path;
m.line = line;
m.column = column;
log((ILocalizableMessage) m, source);
}
/**
*
*/
public static void log(CompilerMessage m, String path, int line)
{
log(m, path, line, -1);
}
public static void log(CompilerMessage m, String path)
{
log(m, path, -1, -1);
}
public static void log(CompilerMessage m, Source s, int line)
{
m.path = s.getNameForReporting();
m.line = line;
log(m);
}
public static void log(CompilerMessage m, Source s, int line, int column)
{
m.path = s.getNameForReporting();
m.line = line;
m.column = column;
log(m);
}
public static void log(CompilerMessage m, Source s)
{
m.path = s.getNameForReporting();
log(m);
}
public static void log( ILocalizableMessage m )
{
Logger logger = getLogger();
if (logger != null)
{
logger.log( m );
}
}
public static void log( ILocalizableMessage m, String source)
{
Logger logger = getLogger();
if (logger != null)
{
logger.log( m, source );
}
}
}