You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/01/19 10:51:20 UTC
svn commit: r370453 - in
/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol:
./ gui/ support/ support/extended/
Author: akarasulu
Date: Thu Jan 19 01:51:15 2006
New Revision: 370453
URL: http://svn.apache.org/viewcvs?rev=370453&view=rev
Log:
added simple session UI for testing and diagnosing issues with the serve
Added:
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsDialog.java (with props)
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsModel.java (with props)
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsFrame.java (with props)
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsModel.java (with props)
Modified:
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/SearchHandler.java
directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/extended/LaunchDiagnosticUiHandler.java
Modified: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java?rev=370453&r1=370452&r2=370453&view=diff
==============================================================================
--- directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java (original)
+++ directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java Thu Jan 19 01:51:15 2006
@@ -68,6 +68,11 @@
*/
public static SessionRegistry getSingleton()
{
+ if ( s_singleton == null )
+ {
+ s_singleton = new SessionRegistry( new Hashtable() );
+ }
+
return s_singleton;
}
@@ -135,6 +140,7 @@
if ( reqmap == null )
{
reqmap = new HashMap();
+ requests.put( session, reqmap );
}
reqmap.put( new Integer( req.getMessageId() ), req );
}
@@ -214,6 +220,18 @@
Map reqmap = ( Map ) requests.get( session );
if ( reqmap == null ) return null;
return ( Request ) reqmap.get( id );
+ }
+
+
+ public IoSession[] getSessions()
+ {
+ IoSession[] sessions;
+ synchronized ( contexts )
+ {
+ sessions = new IoSession[contexts.size()];
+ sessions = ( IoSession[] ) contexts.keySet().toArray( sessions );
+ }
+ return sessions;
}
Added: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsDialog.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsDialog.java?rev=370453&view=auto
==============================================================================
--- directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsDialog.java (added)
+++ directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsDialog.java Thu Jan 19 01:51:15 2006
@@ -0,0 +1,307 @@
+package org.apache.ldap.server.protocol.gui;
+
+
+import java.awt.BorderLayout;
+import java.net.InetSocketAddress;
+import java.util.Map;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JDialog;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JButton;
+
+import org.apache.ldap.common.message.AbandonableRequest;
+import org.apache.ldap.server.protocol.SessionRegistry;
+import org.apache.mina.common.IoSession;
+import javax.swing.JTextArea;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+
+public class OutstandingRequestsDialog extends JDialog
+{
+ private static final long serialVersionUID = -3777123348215825711L;
+ private static final AbandonableRequest[] EMPTY_REQUEST_ARRAY = new AbandonableRequest[0];
+ private JPanel jContentPane = null;
+ private JPanel jPanel = null;
+ private JScrollPane jScrollPane = null;
+ private JTable jTable = null;
+ private JPanel jPanel1 = null;
+ private JButton jButton = null;
+
+ final IoSession session;
+ private JPanel jPanel2 = null;
+ private JTextArea jTextArea = null;
+ private JButton jButton1 = null;
+ private JButton jButton2 = null;
+
+
+ /**
+ * This is the default constructor
+ */
+ public OutstandingRequestsDialog( JFrame owner, IoSession session )
+ {
+ super( owner, true );
+ this.session = session;
+ StringBuffer buf = new StringBuffer();
+ buf.append( "Outstanding Requests: " );
+ buf.append( ( ( InetSocketAddress ) session.getRemoteAddress() ).getHostName() );
+ buf.append( ":" );
+ buf.append( ( ( InetSocketAddress ) session.getRemoteAddress() ).getPort() );
+ setTitle( buf.toString() );
+ initialize();
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setSize(549, 341);
+ this.setContentPane( getJContentPane() );
+ }
+
+
+ /**
+ * This method initializes jContentPane
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJContentPane()
+ {
+ if ( jContentPane == null )
+ {
+ jContentPane = new JPanel();
+ jContentPane.setLayout( new BorderLayout() );
+ jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER);
+ }
+ return jContentPane;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel()
+ {
+ if ( jPanel == null )
+ {
+ jPanel = new JPanel();
+ jPanel.setLayout(new BorderLayout());
+ jPanel.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
+ jPanel.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
+ jPanel.add(getJPanel2(), java.awt.BorderLayout.NORTH);
+ }
+ return jPanel;
+ }
+
+
+ /**
+ * This method initializes jScrollPane
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getJScrollPane()
+ {
+ if ( jScrollPane == null )
+ {
+ jScrollPane = new JScrollPane();
+ jScrollPane.setViewportView(getJTable());
+ }
+ return jScrollPane;
+ }
+
+
+ /**
+ * This method initializes jTable
+ *
+ * @return javax.swing.JTable
+ */
+ private JTable getJTable()
+ {
+ if ( jTable == null )
+ {
+ jTable = new JTable();
+ }
+
+ setRequestsModel();
+ jTable.getSelectionModel().addListSelectionListener( new ListSelectionListener() {
+ public void valueChanged(ListSelectionEvent e)
+ {
+ int row = jTable.getSelectedRow();
+ if ( row > -1 )
+ {
+ jButton2.setEnabled( true );
+ AbandonableRequest req = ( ( OutstandingRequestsModel ) jTable.getModel() ).getAbandonableRequest( row );
+ jTextArea.setText( req.toString() );
+ jTextArea.setEnabled( true );
+ }
+ else
+ {
+ jButton2.setEnabled( false );
+ jTextArea.setText( "" );
+ jTextArea.setEnabled( false );
+ }
+ }});
+ return jTable;
+ }
+
+
+ private void setRequestsModel()
+ {
+ AbandonableRequest[] requests;
+ Map reqsMap = SessionRegistry.getSingleton().getOutstandingRequests( session );
+ if ( reqsMap != null )
+ {
+ requests = new AbandonableRequest[reqsMap.size()];
+ requests = ( AbandonableRequest[] ) reqsMap.values().toArray( requests );
+ }
+ else
+ {
+ requests = EMPTY_REQUEST_ARRAY;
+ }
+
+ jTable.setModel( new OutstandingRequestsModel( requests ) );
+ }
+
+
+ /**
+ * This method initializes jPanel1
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel1()
+ {
+ if ( jPanel1 == null )
+ {
+ jPanel1 = new JPanel();
+ jPanel1.add(getJButton(), null);
+ jPanel1.add(getJButton1(), null);
+ }
+ return jPanel1;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getJButton()
+ {
+ if ( jButton == null )
+ {
+ jButton = new JButton();
+ jButton.setText("Done");
+ jButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ OutstandingRequestsDialog.this.setVisible( false );
+ OutstandingRequestsDialog.this.dispose();
+ }
+ } );
+ }
+ return jButton;
+ }
+
+
+ /**
+ * This method initializes jPanel2
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJPanel2()
+ {
+ if ( jPanel2 == null )
+ {
+ jPanel2 = new JPanel();
+ jPanel2.setLayout(new BorderLayout());
+ jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Request",
+ javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+ javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+ jPanel2.add(getJButton2(), java.awt.BorderLayout.WEST);
+ jPanel2.add(getJTextArea(), java.awt.BorderLayout.CENTER);
+ }
+ return jPanel2;
+ }
+
+
+ /**
+ * This method initializes jTextArea
+ *
+ * @return javax.swing.JTextArea
+ */
+ private JTextArea getJTextArea()
+ {
+ if ( jTextArea == null )
+ {
+ jTextArea = new JTextArea();
+ }
+
+ jTextArea.setEnabled( false );
+ jTextArea.setEditable( false );
+ return jTextArea;
+ }
+
+
+ /**
+ * This method initializes jButton1
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getJButton1()
+ {
+ if ( jButton1 == null )
+ {
+ jButton1 = new JButton();
+ jButton1.setText("Refresh");
+ jButton1.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ setRequestsModel();
+ jTextArea.setText( "" );
+ jTextArea.setEnabled( false );
+ jButton2.setEnabled( false );
+ }
+ } );
+ }
+ return jButton1;
+ }
+
+
+ /**
+ * This method initializes jButton2
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getJButton2()
+ {
+ if ( jButton2 == null )
+ {
+ jButton2 = new JButton();
+ jButton2.setText("Abandon");
+ jButton2.setEnabled( false );
+ jButton2.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ int row = jTable.getSelectedRow();
+ AbandonableRequest req = ( ( OutstandingRequestsModel ) jTable.getModel() ).getAbandonableRequest( row );
+ req.abandon();
+ SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
+ setRequestsModel();
+ }
+ } );
+ }
+ return jButton2;
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Propchange: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsDialog.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsModel.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsModel.java?rev=370453&view=auto
==============================================================================
--- directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsModel.java (added)
+++ directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsModel.java Thu Jan 19 01:51:15 2006
@@ -0,0 +1,79 @@
+package org.apache.ldap.server.protocol.gui;
+
+
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableModel;
+
+import org.apache.ldap.common.message.AbandonableRequest;
+
+
+public class OutstandingRequestsModel implements TableModel
+{
+ final String[] columns = new String[] { "messageId", "type" };
+ final Class[] columnClasses = new Class[] { Integer.class, String.class };
+ final AbandonableRequest[] requests;
+
+
+ OutstandingRequestsModel( AbandonableRequest[] requests )
+ {
+ this.requests = requests;
+ }
+
+ AbandonableRequest getAbandonableRequest( int row )
+ {
+ return requests[row];
+ }
+
+ public int getRowCount()
+ {
+ return requests.length;
+ }
+
+ public int getColumnCount()
+ {
+ return columns.length;
+ }
+
+ public String getColumnName( int columnIndex )
+ {
+ return columns[columnIndex];
+ }
+
+ public Class getColumnClass( int columnIndex )
+ {
+ return columnClasses[columnIndex];
+ }
+
+ public boolean isCellEditable( int rowIndex, int columnIndex )
+ {
+ return false;
+ }
+
+ public Object getValueAt( int rowIndex, int columnIndex )
+ {
+ AbandonableRequest req = requests[rowIndex];
+
+ switch( columnIndex )
+ {
+ case( 0 ):
+ return new Integer( req.getMessageId() );
+ case( 1 ):
+ return req.getType().toString();
+ default:
+ throw new IndexOutOfBoundsException( "column index max is " + ( columns.length - 1 ) );
+ }
+ }
+
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addTableModelListener(TableModelListener l)
+ {
+ }
+
+ public void removeTableModelListener(TableModelListener l)
+ {
+ }
+}
Propchange: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/OutstandingRequestsModel.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsFrame.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsFrame.java?rev=370453&view=auto
==============================================================================
--- directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsFrame.java (added)
+++ directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsFrame.java Thu Jan 19 01:51:15 2006
@@ -0,0 +1,688 @@
+package org.apache.ldap.server.protocol.gui;
+
+
+import java.awt.BorderLayout;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JPanel;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JButton;
+import javax.swing.BoxLayout;
+import javax.swing.JTextField;
+import javax.swing.JMenuBar;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import org.apache.ldap.common.message.ResultCodeEnum;
+import org.apache.ldap.common.message.extended.NoticeOfDisconnect;
+import org.apache.ldap.server.protocol.SessionRegistry;
+import org.apache.mina.common.IoSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+
+public class SessionsFrame extends JFrame
+{
+ private static final Logger log = LoggerFactory.getLogger( SessionsFrame.class );
+ private static final long serialVersionUID = -863445561454536133L;
+ private JPanel jContentPane = null;
+ private JPanel mainPanel = null;
+ private JScrollPane sessionsPane = null;
+ private JTable sessionsTable = null;
+ private JPanel filterPanel = null;
+ private JButton filterButton = null;
+ private JTextField filterText = null;
+ private JMenuBar menuBar = null;
+ private JMenu menuFile = null;
+ private JMenuItem exitItem = null;
+ private JMenu menuSession = null;
+ private JMenuItem closeItem = null;
+ private JMenu menuSendNoD = null;
+ private JMenuItem unavailableItem = null;
+ private JMenuItem protocolErrorItem = null;
+ private JMenuItem strongAuthRequiredItem = null;
+ private JPanel southPanel = null;
+ private JMenuItem showRequests = null;
+// private JPopupMenu popupMenu = null;
+// private JMenuItem jMenuItem = null;
+// private JMenu jMenu = null;
+// private JMenuItem jMenuItem1 = null;
+// private JMenuItem jMenuItem2 = null;
+// private JMenuItem jMenuItem3 = null;
+// private JMenuItem jMenuItem4 = null;
+ private JButton refreshButton = null;
+
+
+ private IoSession selected;
+
+
+ /**
+ * This is the default constructor
+ */
+ public SessionsFrame()
+ {
+ super();
+ initialize();
+ }
+
+
+ /**
+ * This method initializes this
+ *
+ * @return void
+ */
+ private void initialize()
+ {
+ this.setSize(789, 436);
+ this.setJMenuBar( getMainMenuBar() );
+ this.setContentPane( getJContentPane() );
+ this.setTitle("Sessions");
+ this.addWindowListener( new java.awt.event.WindowAdapter()
+ {
+ public void windowClosing(java.awt.event.WindowEvent e)
+ {
+ SessionsFrame.this.setVisible( false );
+ SessionsFrame.this.dispose();
+ }
+ } );
+ }
+
+
+ /**
+ * This method initializes jContentPane
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getJContentPane()
+ {
+ if ( jContentPane == null )
+ {
+ jContentPane = new JPanel();
+ jContentPane.setLayout( new BorderLayout() );
+ jContentPane.add(getMainPanel(), java.awt.BorderLayout.CENTER);
+ }
+ return jContentPane;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getMainPanel()
+ {
+ if ( mainPanel == null )
+ {
+ mainPanel = new JPanel();
+ mainPanel.setLayout(new BorderLayout());
+ mainPanel.add(getFilterPanel(), java.awt.BorderLayout.NORTH);
+ mainPanel.add(getSessionsPane(), java.awt.BorderLayout.CENTER);
+ mainPanel.add(getSouthPanel(), java.awt.BorderLayout.SOUTH);
+ }
+ return mainPanel;
+ }
+
+
+ /**
+ * This method initializes jScrollPane
+ *
+ * @return javax.swing.JScrollPane
+ */
+ private JScrollPane getSessionsPane()
+ {
+ if ( sessionsPane == null )
+ {
+ sessionsPane = new JScrollPane();
+ sessionsPane.setName("jScrollPane");
+ sessionsPane.setViewportView(getSessionsTable());
+ }
+ return sessionsPane;
+ }
+
+
+ /**
+ * This method initializes jTable
+ *
+ * @return javax.swing.JTable
+ */
+ private JTable getSessionsTable()
+ {
+ if ( sessionsTable == null )
+ {
+ sessionsTable = new JTable();
+ sessionsTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
+// sessionsTable.addMouseListener( new java.awt.event.MouseAdapter()
+// {
+// public void mouseReleased(java.awt.event.MouseEvent e)
+// {
+// if ( e.getButton() == MouseEvent.BUTTON3 )
+// {
+// if ( popupMenu == null )
+// {
+// popupMenu = SessionsFrame.this.getSessionsPopupMenu();
+// }
+// popupMenu.setVisible( false );
+// }
+// }
+//
+// public void mousePressed(java.awt.event.MouseEvent e)
+// {
+// if ( e.getButton() == MouseEvent.BUTTON3 )
+// {
+// if ( popupMenu == null )
+// {
+// popupMenu = SessionsFrame.this.getSessionsPopupMenu();
+// }
+// Point location = e.getComponent().getLocationOnScreen();
+// popupMenu.setLocation( location.x + e.getPoint().x, location.y + e.getPoint().y );
+// popupMenu.setVisible( true );
+// }
+// }
+// } );
+ sessionsTable.setModel( new SessionsModel( SessionRegistry.getSingleton().getSessions() ) );
+ sessionsTable.getSelectionModel().addListSelectionListener( new ListSelectionListener() {
+ public void valueChanged(ListSelectionEvent e)
+ {
+ int row = sessionsTable.getSelectedRow();
+ if ( row == -1 )
+ {
+ selected = null;
+ }
+ else
+ {
+ selected = ( ( SessionsModel ) sessionsTable.getModel() ).getIoSession( row );
+ closeItem.setEnabled( true );
+ menuSendNoD.setEnabled( true );
+ showRequests.setEnabled( true );
+ }
+ }
+ });
+ }
+ return sessionsTable;
+ }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getFilterPanel()
+ {
+ if ( filterPanel == null )
+ {
+ filterPanel = new JPanel();
+ filterPanel.setLayout(new BoxLayout(getFilterPanel(), BoxLayout.X_AXIS));
+ filterPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
+ filterPanel.add(getFilterButton(), null);
+ filterPanel.add(getFilterText(), null);
+ }
+ return filterPanel;
+ }
+
+
+ /**
+ * This method initializes jButton
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getFilterButton()
+ {
+ if ( filterButton == null )
+ {
+ filterButton = new JButton();
+ filterButton.setText("Filter");
+ }
+ return filterButton;
+ }
+
+
+ /**
+ * This method initializes jTextField
+ *
+ * @return javax.swing.JTextField
+ */
+ private JTextField getFilterText()
+ {
+ if ( filterText == null )
+ {
+ filterText = new JTextField();
+ }
+ return filterText;
+ }
+
+
+ /**
+ * This method initializes jJMenuBar
+ *
+ * @return javax.swing.JMenuBar
+ */
+ private JMenuBar getMainMenuBar()
+ {
+ if ( menuBar == null )
+ {
+ menuBar = new JMenuBar();
+ menuBar.add(getMenuFile());
+ menuBar.add(getMenuSession());
+ }
+ return menuBar;
+ }
+
+
+ /**
+ * This method initializes jMenu
+ *
+ * @return javax.swing.JMenu
+ */
+ private JMenu getMenuFile()
+ {
+ if ( menuFile == null )
+ {
+ menuFile = new JMenu();
+ menuFile.setText("File");
+ menuFile.add(getExitItem());
+ }
+ return menuFile;
+ }
+
+
+ /**
+ * This method initializes jMenuItem
+ *
+ * @return javax.swing.JMenuItem
+ */
+ private JMenuItem getExitItem()
+ {
+ if ( exitItem == null )
+ {
+ exitItem = new JMenuItem();
+ exitItem.setText("exit");
+ exitItem.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ SessionsFrame.this.setVisible( false );
+ SessionsFrame.this.dispose();
+ }
+ } );
+ }
+ return exitItem;
+ }
+
+
+ /**
+ * This method initializes jMenu
+ *
+ * @return javax.swing.JMenu
+ */
+ private JMenu getMenuSession()
+ {
+ if ( menuSession == null )
+ {
+ menuSession = new JMenu();
+ menuSession.setText("Session");
+ menuSession.add(getCloseItem());
+ closeItem.setEnabled( false );
+ menuSession.add(getMenuSendNoD());
+ menuSendNoD.setEnabled( false );
+ menuSession.add(getShowRequests());
+ showRequests.setEnabled( false );
+ }
+ return menuSession;
+ }
+
+
+ /**
+ * This method initializes jMenuItem
+ *
+ * @return javax.swing.JMenuItem
+ */
+ private JMenuItem getCloseItem()
+ {
+ if ( closeItem == null )
+ {
+ closeItem = new JMenuItem();
+ closeItem.setText("close");
+ closeItem.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ SessionRegistry.getSingleton().terminateSession( selected );
+ try
+ {
+ Thread.sleep( 250 );
+ }
+ catch ( InterruptedException e1 )
+ {
+ log.error( "", e1 );
+ }
+ refresh();
+ }
+ } );
+ }
+ return closeItem;
+ }
+
+
+ /**
+ * This method initializes jMenu
+ *
+ * @return javax.swing.JMenu
+ */
+ private JMenu getMenuSendNoD()
+ {
+ if ( menuSendNoD == null )
+ {
+ menuSendNoD = new JMenu();
+ menuSendNoD.setText("Send NoD");
+ menuSendNoD.add(getUnavailableItem());
+ menuSendNoD.add(getProtocolErrorItem());
+ menuSendNoD.add(getStrongAuthRequiredItem());
+ }
+ return menuSendNoD;
+ }
+
+
+ /**
+ * This method initializes jMenuItem
+ *
+ * @return javax.swing.JMenuItem
+ */
+ private JMenuItem getUnavailableItem()
+ {
+ if ( unavailableItem == null )
+ {
+ unavailableItem = new JMenuItem();
+ unavailableItem.setText("unavailable");
+ unavailableItem.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ selected.write( new NoticeOfDisconnect( ResultCodeEnum.UNAVAILABLE ) );
+ try
+ {
+ Thread.sleep( 250 );
+ }
+ catch ( InterruptedException e1 )
+ {
+ log.error( "", e1 );
+ }
+ refresh();
+ }
+ } );
+ }
+ return unavailableItem;
+ }
+
+
+ /**
+ * This method initializes jMenuItem
+ *
+ * @return javax.swing.JMenuItem
+ */
+ private JMenuItem getProtocolErrorItem()
+ {
+ if ( protocolErrorItem == null )
+ {
+ protocolErrorItem = new JMenuItem();
+ protocolErrorItem.setText("protocolError");
+ protocolErrorItem.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ selected.write( new NoticeOfDisconnect( ResultCodeEnum.PROTOCOLERROR ) );
+ try
+ {
+ Thread.sleep( 250 );
+ }
+ catch ( InterruptedException e1 )
+ {
+ log.error( "", e1 );
+ }
+ refresh();
+ }
+ } );
+ }
+ return protocolErrorItem;
+ }
+
+
+ /**
+ * This method initializes jMenuItem
+ *
+ * @return javax.swing.JMenuItem
+ */
+ private JMenuItem getStrongAuthRequiredItem()
+ {
+ if ( strongAuthRequiredItem == null )
+ {
+ strongAuthRequiredItem = new JMenuItem();
+ strongAuthRequiredItem.setText("strongAuthRequired");
+ strongAuthRequiredItem.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ selected.write( new NoticeOfDisconnect( ResultCodeEnum.STRONGAUTHREQUIRED ) );
+ try
+ {
+ Thread.sleep( 250 );
+ }
+ catch ( InterruptedException e1 )
+ {
+ log.error( "", e1 );
+ }
+ refresh();
+ }
+ } );
+ }
+ return strongAuthRequiredItem;
+ }
+
+
+// /**
+// * This method initializes jPopupMenu
+// *
+// * @return javax.swing.JPopupMenu
+// */
+// private JPopupMenu getSessionsPopupMenu()
+// {
+// if ( popupMenu == null )
+// {
+// popupMenu = new JPopupMenu();
+// popupMenu.add(getJMenuItem());
+// popupMenu.add(getJMenu());
+// popupMenu.add(getJMenuItem4());
+// }
+// return popupMenu;
+// }
+
+
+ /**
+ * This method initializes jPanel
+ *
+ * @return javax.swing.JPanel
+ */
+ private JPanel getSouthPanel()
+ {
+ if ( southPanel == null )
+ {
+ southPanel = new JPanel();
+ southPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
+ southPanel.add(getRefreshButton(), null);
+ }
+ return southPanel;
+ }
+
+
+ /**
+ * This method initializes jMenuItem
+ *
+ * @return javax.swing.JMenuItem
+ */
+ private JMenuItem getShowRequests()
+ {
+ if ( showRequests == null )
+ {
+ showRequests = new JMenuItem();
+ showRequests.setText("show requests");
+ showRequests.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ OutstandingRequestsDialog dialog = new OutstandingRequestsDialog( SessionsFrame.this, selected );
+ dialog.addWindowListener( new WindowAdapter() {
+ public void windowClosed(WindowEvent e)
+ {
+ e.getWindow().dispose();
+ }
+ });
+ dialog.setVisible( true );
+ }
+ } );
+ }
+ return showRequests;
+ }
+
+
+// /**
+// * This method initializes jMenuItem
+// *
+// * @return javax.swing.JMenuItem
+// */
+// private JMenuItem getJMenuItem()
+// {
+// if ( jMenuItem == null )
+// {
+// jMenuItem = new JMenuItem();
+// jMenuItem.setText("close");
+// }
+// return jMenuItem;
+// }
+//
+//
+// /**
+// * This method initializes jMenu
+// *
+// * @return javax.swing.JMenu
+// */
+// private JMenu getJMenu()
+// {
+// if ( jMenu == null )
+// {
+// jMenu = new JMenu();
+// jMenu.setText("Send NoD");
+// jMenu.add(getJMenuItem1());
+// jMenu.add(getJMenuItem2());
+// jMenu.add(getJMenuItem3());
+// }
+// return jMenu;
+// }
+//
+//
+// /**
+// * This method initializes jMenuItem1
+// *
+// * @return javax.swing.JMenuItem
+// */
+// private JMenuItem getJMenuItem1()
+// {
+// if ( jMenuItem1 == null )
+// {
+// jMenuItem1 = new JMenuItem();
+// jMenuItem1.setText("unavailable");
+// }
+// return jMenuItem1;
+// }
+//
+//
+// /**
+// * This method initializes jMenuItem2
+// *
+// * @return javax.swing.JMenuItem
+// */
+// private JMenuItem getJMenuItem2()
+// {
+// if ( jMenuItem2 == null )
+// {
+// jMenuItem2 = new JMenuItem();
+// jMenuItem2.setText("protocolError");
+// }
+// return jMenuItem2;
+// }
+//
+//
+// /**
+// * This method initializes jMenuItem3
+// *
+// * @return javax.swing.JMenuItem
+// */
+// private JMenuItem getJMenuItem3()
+// {
+// if ( jMenuItem3 == null )
+// {
+// jMenuItem3 = new JMenuItem();
+// jMenuItem3.setText("strongAuthRequired");
+// }
+// return jMenuItem3;
+// }
+//
+//
+// /**
+// * This method initializes jMenuItem4
+// *
+// * @return javax.swing.JMenuItem
+// */
+// private JMenuItem getJMenuItem4()
+// {
+// if ( jMenuItem4 == null )
+// {
+// jMenuItem4 = new JMenuItem();
+// jMenuItem4.setText("show requests");
+// }
+// return jMenuItem4;
+// }
+
+
+ private static final String REFRESH_COMMAND = "Refresh";
+ /**
+ * This method initializes jButton2
+ *
+ * @return javax.swing.JButton
+ */
+ private JButton getRefreshButton()
+ {
+ if ( refreshButton == null )
+ {
+ refreshButton = new JButton();
+ refreshButton.setText( REFRESH_COMMAND );
+ refreshButton.addActionListener( new java.awt.event.ActionListener()
+ {
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ if ( e.getActionCommand() == REFRESH_COMMAND )
+ {
+ refresh();
+ }
+ }
+ } );
+ }
+ return refreshButton;
+ }
+
+
+ private void refresh()
+ {
+ log.info( "Refreshing Sessions UI" );
+ sessionsTable.setModel( new SessionsModel( SessionRegistry.getSingleton().getSessions() ) );
+ closeItem.setEnabled( false );
+ menuSendNoD.setEnabled( false );
+ showRequests.setEnabled( false );
+ }
+} // @jve:decl-index=0:visual-constraint="10,10"
Propchange: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsFrame.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsModel.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsModel.java?rev=370453&view=auto
==============================================================================
--- directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsModel.java (added)
+++ directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsModel.java Thu Jan 19 01:51:15 2006
@@ -0,0 +1,85 @@
+package org.apache.ldap.server.protocol.gui;
+
+
+import java.net.InetSocketAddress;
+
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableModel;
+
+import org.apache.mina.common.IoSession;
+
+
+public class SessionsModel implements TableModel
+{
+ final String[] columns = new String[] { "client address", "client port", "server address", "server port" };
+ final Class[] columnClasses = new Class[] { String.class, Integer.class, String.class, Integer.class };
+ final IoSession[] sessions;
+
+
+ SessionsModel( IoSession[] sessions )
+ {
+ this.sessions = sessions;
+ }
+
+ IoSession getIoSession( int row )
+ {
+ return sessions[row];
+ }
+
+ public int getRowCount()
+ {
+ return sessions.length;
+ }
+
+ public int getColumnCount()
+ {
+ return columns.length;
+ }
+
+ public String getColumnName( int columnIndex )
+ {
+ return columns[columnIndex];
+ }
+
+ public Class getColumnClass( int columnIndex )
+ {
+ return columnClasses[columnIndex];
+ }
+
+ public boolean isCellEditable( int rowIndex, int columnIndex )
+ {
+ return false;
+ }
+
+ public Object getValueAt( int rowIndex, int columnIndex )
+ {
+ IoSession session = sessions[rowIndex];
+
+ switch( columnIndex )
+ {
+ case( 0 ):
+ return ( ( InetSocketAddress ) session.getRemoteAddress() ).getHostName();
+ case( 1 ):
+ return new Integer( ( ( InetSocketAddress ) session.getRemoteAddress() ).getPort() );
+ case( 2 ):
+ return ( ( InetSocketAddress ) session.getLocalAddress() ).getHostName();
+ case( 3 ):
+ return new Integer( ( ( InetSocketAddress ) session.getLocalAddress() ).getPort() );
+ default:
+ throw new IndexOutOfBoundsException( "column index max is " + ( columns.length - 1 ) );
+ }
+ }
+
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addTableModelListener(TableModelListener l)
+ {
+ }
+
+ public void removeTableModelListener(TableModelListener l)
+ {
+ }
+}
Propchange: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/gui/SessionsModel.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/SearchHandler.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/SearchHandler.java?rev=370453&r1=370452&r2=370453&view=diff
==============================================================================
--- directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/SearchHandler.java (original)
+++ directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/SearchHandler.java Thu Jan 19 01:51:15 2006
@@ -248,6 +248,7 @@
StringBuffer buf = new StringBuffer();
req.getFilter().printToBuffer( buf );
ctx.addNamingListener( req.getBase(), buf.toString(), controls, handler );
+ SessionRegistry.getSingleton().addOutstandingRequest( session, req );
return;
}
@@ -302,6 +303,7 @@
}
while( e.skipReferral() );
session.write( req.getResultResponse() );
+ SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
return;
}
catch( NamingException e )
@@ -357,10 +359,10 @@
{
session.write( it.next() );
}
+ SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
}
finally
{
- SessionRegistry.getSingleton().removeOutstandingRequest( session, req.getMessageId() );
if ( list != null )
{
try { list.close(); } catch( NamingException e ){ log.error("failed on list.close()", e ); }
Modified: directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/extended/LaunchDiagnosticUiHandler.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/extended/LaunchDiagnosticUiHandler.java?rev=370453&r1=370452&r2=370453&view=diff
==============================================================================
--- directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/extended/LaunchDiagnosticUiHandler.java (original)
+++ directory/trunks/apacheds/protocols/ldap/src/main/java/org/apache/ldap/server/protocol/support/extended/LaunchDiagnosticUiHandler.java Thu Jan 19 01:51:15 2006
@@ -35,6 +35,7 @@
import org.apache.ldap.server.partition.impl.btree.gui.PartitionFrame;
import org.apache.ldap.server.protocol.ExtendedOperationHandler;
import org.apache.ldap.server.protocol.SessionRegistry;
+import org.apache.ldap.server.protocol.gui.SessionsFrame;
import org.apache.mina.common.IoSession;
@@ -78,6 +79,8 @@
}
}
+ SessionsFrame sessions = new SessionsFrame();
+ sessions.setVisible( true );
return;
}