summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java181
-rw-r--r--java/src/IceGridGUI/LiveDeployment/LogPrefsDialog.java (renamed from java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java)6
-rw-r--r--java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java50
-rw-r--r--java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java2
-rw-r--r--java/src/IceInternal/LoggerAdminI.java5
-rw-r--r--java/src/IceInternal/LoggerAdminLoggerI.java2
6 files changed, 235 insertions, 11 deletions
diff --git a/java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java b/java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java
new file mode 100644
index 00000000000..e75a5e64730
--- /dev/null
+++ b/java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java
@@ -0,0 +1,181 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package IceGridGUI.LiveDeployment;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.WindowConstants;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
+import com.jgoodies.forms.factories.Borders;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import com.jgoodies.forms.util.LayoutStyle;
+
+class LogFilterDialog extends JDialog
+{
+ LogFilterDialog(final ShowIceLogDialog dialog)
+ {
+ super(dialog, "Ice log filter - IceGrid Admin", true);
+ setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+
+ java.util.Set<Ice.LogMessageType> messageTypeFilterSet = null;
+ if(dialog.getMessageTypeFilter() != null)
+ {
+ messageTypeFilterSet = new java.util.HashSet<>(java.util.Arrays.asList(dialog.getMessageTypeFilter()));
+ }
+
+ final JCheckBox error = new JCheckBox("Error",
+ messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.ErrorMessage));
+ final JCheckBox warning = new JCheckBox("Warning",
+ messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.WarningMessage));
+ final JCheckBox print = new JCheckBox("Print",
+ messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.PrintMessage));
+ final JCheckBox trace = new JCheckBox("Trace",
+ messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.TraceMessage));
+
+ final JTextArea traceCategories = new JTextArea(3, 40);
+ traceCategories.setLineWrap(true);
+
+ String[] traceCategoryFilter = dialog.getTraceCategoryFilter();
+ if(traceCategoryFilter != null)
+ {
+ // TODO: join with escapes!
+ traceCategories.setText(IceUtilInternal.StringUtil.joinString(java.util.Arrays.asList(traceCategoryFilter), ", "));
+ }
+ else
+ {
+ traceCategories.setText(null);
+ }
+
+ traceCategories.setToolTipText("Trace categories separated by commas; leave blank to get all categories");
+
+ JButton okButton = new JButton("OK");
+ ActionListener okListener = new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ String[] traceCategoryFilter = null;
+
+ String txt = traceCategories.getText();
+ if(txt != null && !txt.isEmpty())
+ {
+ traceCategoryFilter = IceUtilInternal.StringUtil.splitString(txt, ", \t\r\n");
+ if(traceCategoryFilter == null)
+ {
+ // unmatched quote
+ JOptionPane.showMessageDialog(LogFilterDialog.this, "Unmatched quote in Trace categories field",
+ "Invalid entry", JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+
+ if(traceCategoryFilter.length == 0) // only separators
+ {
+ traceCategoryFilter = null;
+ }
+ }
+
+ java.util.Set<Ice.LogMessageType> messageTypeFilterSet = new java.util.HashSet<>();
+ if(error.isSelected())
+ {
+ messageTypeFilterSet.add(Ice.LogMessageType.ErrorMessage);
+ }
+ if(warning.isSelected())
+ {
+ messageTypeFilterSet.add(Ice.LogMessageType.WarningMessage);
+ }
+ if(print.isSelected())
+ {
+ messageTypeFilterSet.add(Ice.LogMessageType.PrintMessage);
+ }
+ if(trace.isSelected())
+ {
+ messageTypeFilterSet.add(Ice.LogMessageType.TraceMessage);
+ }
+ if(messageTypeFilterSet.size() == 0 || messageTypeFilterSet.size() == 4)
+ {
+ // All or nothing checked equivalent of getting everything!
+ messageTypeFilterSet = null;
+ }
+ Ice.LogMessageType[] messageTypeFilter = null;
+ if(messageTypeFilterSet != null)
+ {
+ messageTypeFilter = messageTypeFilterSet.toArray(new Ice.LogMessageType[0]);
+ }
+
+ dispose();
+ dialog.setFilters(messageTypeFilter, traceCategoryFilter);
+ }
+ };
+ okButton.addActionListener(okListener);
+ getRootPane().setDefaultButton(okButton);
+
+ JButton cancelButton = new JButton("Cancel");
+ ActionListener cancelListener = new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ dispose();
+ }
+ };
+ cancelButton.addActionListener(cancelListener);
+
+ FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", "");
+ DefaultFormBuilder builder = new DefaultFormBuilder(layout);
+ builder.border(Borders.DIALOG);
+ builder.rowGroupingEnabled(true);
+ builder.lineGapSize(LayoutStyle.getCurrent().getLinePad());
+
+ builder.appendSeparator("Retrieve only the following types of log messages (server-side filtering)");
+ builder.nextLine();
+ builder.append(error);
+ builder.nextLine();
+ builder.append(warning);
+ builder.nextLine();
+ builder.append(print);
+ builder.nextLine();
+ builder.append(trace);
+ builder.nextLine();
+ builder.append("Trace categories");
+ builder.nextLine();
+ builder.append("");
+ builder.nextRow(-2);
+ CellConstraints cc = new CellConstraints();
+ JScrollPane scrollPane = new JScrollPane(traceCategories);
+ builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 1, 3));
+ builder.nextRow(2);
+ builder.nextLine();
+
+ JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build();
+ buttonBar.setBorder(Borders.DIALOG);
+
+ java.awt.Container contentPane = getContentPane();
+ contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
+ contentPane.add(builder.getPanel());
+ contentPane.add(buttonBar);
+
+ pack();
+ setResizable(false);
+ setLocationRelativeTo(dialog);
+ setVisible(true);
+ }
+}
diff --git a/java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java b/java/src/IceGridGUI/LiveDeployment/LogPrefsDialog.java
index c9d197ddf5b..d6068df89de 100644
--- a/java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java
+++ b/java/src/IceGridGUI/LiveDeployment/LogPrefsDialog.java
@@ -26,9 +26,9 @@ import com.jgoodies.forms.factories.Borders;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.util.LayoutStyle;
-class ShowPrefsDialog extends JDialog
+class LogPrefsDialog extends JDialog
{
- ShowPrefsDialog(final ShowLogFileDialog dialog)
+ LogPrefsDialog(final ShowLogFileDialog dialog)
{
super(dialog, "Preferences - IceGrid Admin", true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
@@ -121,7 +121,7 @@ class ShowPrefsDialog extends JDialog
setVisible(true);
}
- ShowPrefsDialog(final ShowIceLogDialog dialog)
+ LogPrefsDialog(final ShowIceLogDialog dialog)
{
super(dialog, "Preferences - IceGrid Admin", true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
diff --git a/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java b/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java
index d496d1f629a..6e11695bf60 100644
--- a/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java
+++ b/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java
@@ -217,7 +217,16 @@ class ShowIceLogDialog extends JDialog
@Override
public void actionPerformed(ActionEvent e)
{
- new ShowPrefsDialog(ShowIceLogDialog.this);
+ new LogPrefsDialog(ShowIceLogDialog.this);
+ }
+ });
+ editMenu.addSeparator();
+ editMenu.add(new AbstractAction("Filter...")
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ new LogFilterDialog(ShowIceLogDialog.this);
}
});
}
@@ -617,6 +626,8 @@ class ShowIceLogDialog extends JDialog
_parent.getRoot().addShowIceLogDialog(_title, this);
+ setVisible(true);
+
play();
}
@@ -633,7 +644,14 @@ class ShowIceLogDialog extends JDialog
if(_remoteLogger == null)
{
_tableModel.setRowCount(0);
- setVisible(true);
+ if(_messageTypeFilter != null || _traceCategoryFilter != null)
+ {
+ setTitle(_title + " (Filtered) - IceGrid Admin");
+ }
+ else
+ {
+ setTitle(_title + " (No filter) - IceGrid Admin");
+ }
_playItem.setSelected(true);
_playButton.setSelected(true);
@@ -686,7 +704,7 @@ class ShowIceLogDialog extends JDialog
try
{
- _loggerAdmin.begin_attachRemoteLogger(_remoteLoggerPrx, null, null, _initialMessages, cb);
+ _loggerAdmin.begin_attachRemoteLogger(_remoteLoggerPrx, _messageTypeFilter, _traceCategoryFilter, _initialMessages, cb);
}
catch(LocalException ex)
{
@@ -780,6 +798,29 @@ class ShowIceLogDialog extends JDialog
_parent.getRoot().setLogPrefs(_maxMessages, _initialMessages);
}
+
+ LogMessageType[] getMessageTypeFilter()
+ {
+ return _messageTypeFilter;
+ }
+
+ String[] getTraceCategoryFilter()
+ {
+ return _traceCategoryFilter;
+ }
+
+ void setFilters(LogMessageType[] messageTypeFilter, String[] traceCategoryFilter)
+ {
+ _messageTypeFilter = messageTypeFilter;
+ _traceCategoryFilter = traceCategoryFilter;
+
+ if(_remoteLogger != null)
+ {
+ stop();
+ play();
+ }
+ // otherwise, leave it in stopped mode
+ }
void stop()
{
@@ -820,6 +861,9 @@ class ShowIceLogDialog extends JDialog
private int _maxMessages;
private int _initialMessages;
+
+ private LogMessageType[] _messageTypeFilter;
+ private String[] _traceCategoryFilter;
private Action _play;
private Action _pause;
diff --git a/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java b/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java
index 4ac60aa8814..fb256b326bd 100644
--- a/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java
+++ b/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java
@@ -518,7 +518,7 @@ class ShowLogFileDialog extends JDialog
@Override
public void actionPerformed(ActionEvent e)
{
- new ShowPrefsDialog(ShowLogFileDialog.this);
+ new LogPrefsDialog(ShowLogFileDialog.this);
}
});
}
diff --git a/java/src/IceInternal/LoggerAdminI.java b/java/src/IceInternal/LoggerAdminI.java
index 1d4b1b5e68c..723584bdcd4 100644
--- a/java/src/IceInternal/LoggerAdminI.java
+++ b/java/src/IceInternal/LoggerAdminI.java
@@ -11,7 +11,6 @@ package IceInternal;
final class LoggerAdminI extends Ice._LoggerAdminDisp
{
-
@Override
public void attachRemoteLogger(Ice.RemoteLoggerPrx prx, Ice.LogMessageType[] messageTypes, String[] categories,
int messageMax, Ice.Current current)
@@ -432,7 +431,7 @@ final class LoggerAdminI extends Ice._LoggerAdminDisp
private int _oldestTrace = -1;
private int _oldestLog = -1;
- private class Filters
+ private static class Filters
{
Filters(Ice.LogMessageType[] m, String[] c)
{
@@ -444,7 +443,7 @@ final class LoggerAdminI extends Ice._LoggerAdminDisp
final java.util.Set<String> traceCategories;
}
- private class RemoteLoggerData
+ private static class RemoteLoggerData
{
RemoteLoggerData(Ice.RemoteLoggerPrx prx, Filters f)
{
diff --git a/java/src/IceInternal/LoggerAdminLoggerI.java b/java/src/IceInternal/LoggerAdminLoggerI.java
index 0f8e08fa959..868ef0d46ec 100644
--- a/java/src/IceInternal/LoggerAdminLoggerI.java
+++ b/java/src/IceInternal/LoggerAdminLoggerI.java
@@ -231,7 +231,7 @@ final class LoggerAdminLoggerI implements LoggerAdminLogger, Runnable
return java.util.Calendar.getInstance().getTimeInMillis() * 1000;
}
- private class Job
+ private static class Job
{
Job(java.util.List<Ice.RemoteLoggerPrx> r, Ice.LogMessage l)
{