aboutsummaryrefslogtreecommitdiffstats
path: root/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java
diff options
context:
space:
mode:
authorJiri Vanek <[email protected]>2013-12-20 11:20:39 +0100
committerJiri Vanek <[email protected]>2013-12-20 11:20:39 +0100
commit99428f6f586269f4b5856f93adb71385f6c64c97 (patch)
treef13560c1d4d7200583dc858b1ad8c387023f5013 /netx/net/sourceforge/jnlp/util/logging/JavaConsole.java
parentc3b3c491051c08e035593a25850e537168bb1db9 (diff)
singletons logic, logs and test cleanup/fixes
Diffstat (limited to 'netx/net/sourceforge/jnlp/util/logging/JavaConsole.java')
-rw-r--r--netx/net/sourceforge/jnlp/util/logging/JavaConsole.java56
1 files changed, 28 insertions, 28 deletions
diff --git a/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java b/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java
index 2ee601e..3b7d438 100644
--- a/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java
+++ b/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java
@@ -62,15 +62,12 @@ import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import net.sourceforge.jnlp.config.DeploymentConfiguration;
import net.sourceforge.jnlp.runtime.JNLPRuntime;
import net.sourceforge.jnlp.util.ImageResources;
import net.sourceforge.jnlp.util.logging.headers.Header;
-import net.sourceforge.jnlp.util.logging.headers.JavaMessage;
-import net.sourceforge.jnlp.util.logging.headers.MessageWithHeader;
import net.sourceforge.jnlp.util.logging.headers.PluginMessage;
/**
@@ -86,11 +83,14 @@ public class JavaConsole {
private static JavaConsole console;
private static Dimension lastSize;
+ private static class JavaConsoleHolder {
+
+ //https://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java
+ //https://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom
+ private static final JavaConsole INSTANCE = new JavaConsole();
+ }
public static JavaConsole getConsole() {
- if (console == null) {
- console = new JavaConsole();
- }
- return console;
+ return JavaConsoleHolder.INSTANCE;
}
public static boolean isEnabled() {
@@ -119,15 +119,22 @@ public class JavaConsole {
private JDialog consoleWindow;
private JTextArea stdErrText;
private JTextArea stdOutText;
- private JPanel contentPanel = new JPanel();
+ private JPanel contentPanel;
private ClassLoaderInfoProvider classLoaderInfoProvider;
+ private boolean initialized = false;
+
+ private String stdErrTextSrc = "";
+ private String stdOutTextSrc = "";
public JavaConsole() {
- initialize();
+
}
private void initializeWindow() {
+ if (!initialized){
+ initialize();
+ }
initializeWindow(lastSize, contentPanel);
}
@@ -160,13 +167,6 @@ public class JavaConsole {
*/
private void initialize() {
- try {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } catch (Exception e) {
- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
- }
-
-
contentPanel = new JPanel();
contentPanel.setLayout(new GridBagLayout());
@@ -296,6 +296,7 @@ public class JavaConsole {
splitPane.setDividerLocation(0.5);
splitPane.setResizeWeight(0.5);
+ initialized = true;
}
public void showConsole() {
@@ -416,22 +417,21 @@ public class JavaConsole {
}
- void addMessage(Header header, String message) {
- if (!LogConfig.getLogConfig().isEnableHeaders()){
+ synchronized void addMessage(Header header, String message) {
+ String headerString = "";
+ if (LogConfig.getLogConfig().isEnableHeaders()){
+ headerString = header.toString();
+ }
if (header.level.isError()){
- stdErrText.setText(stdErrText.getText() + message + "\n");
+ stdErrTextSrc += headerString + message +"\n";
}
if (header.level.isOutput()){
- stdOutText.setText(stdOutText.getText() + message + "\n");
+ stdOutTextSrc += headerString + message + "\n";
}
- } else {
- if (header.level.isError()){
- stdErrText.setText(stdErrText.getText( )+ header.toString() + message +"\n");
+ if (initialized){
+ stdErrText.setText(stdErrTextSrc);
+ stdOutText.setText(stdOutTextSrc);
}
- if (header.level.isOutput()){
- stdOutText.setText(stdOutText.getText() + header.toString() + message + "\n");
- }
- }
}
/**
@@ -440,7 +440,7 @@ public class JavaConsole {
*/
private void processPluginMessage(String s) {
PluginMessage pm = new PluginMessage(s);
- addMessage(pm.getHeader(), pm.getMessage());
+ OutputController.getLogger().log(pm);
}