You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2005/09/06 08:01:27 UTC
svn commit: r278921 - in
/directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy:
gui/MainFrame.java impl/LdapMessageWithPDU.java impl/LdapProxy.java
impl/ProxyConnection.java
Author: elecharny
Date: Mon Sep 5 23:01:18 2005
New Revision: 278921
URL: http://svn.apache.org/viewcvs?rev=278921&view=rev
Log:
- formating the code
- added the Apache header
- added some javadoco
- used DEFAULT_TIMEOUT instead of 30000
- splitted the PDU in pieces
- renamed some members
Modified:
directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/gui/MainFrame.java
directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapMessageWithPDU.java
directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapProxy.java
directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/ProxyConnection.java
Modified: directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/gui/MainFrame.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/gui/MainFrame.java?rev=278921&r1=278920&r2=278921&view=diff
==============================================================================
--- directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/gui/MainFrame.java (original)
+++ directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/gui/MainFrame.java Mon Sep 5 23:01:18 2005
@@ -30,7 +30,6 @@
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
-
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
@@ -65,514 +64,567 @@
import javax.swing.tree.TreeSelectionModel;
/**
- * DOCUMENT ME!
+ * A Ldap Proxy GUI
*
- * @author $author$
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class MainFrame extends JFrame implements TreeSelectionListener, TreeExpansionListener {
- // ~ Static fields/initializers
- // -----------------------------------------------------------------
-
- /** frame itSelf */
- private MainFrame itSelf;
-
- /** Frame and Application name */
- public static final String FRAME_NAME = "LDAP Proxy GUI";
-
- /** NOT USED */
- // public static final long serialVersionUID = 0;
- /** Frame default Size */
- public static final Rectangle FRAME_SIZE = new Rectangle(100, 100, 1000, 500);
-
- // ~ Instance fields
- // ----------------------------------------------------------------------------
-
- // ALL Panel
- /** DOCUMENT ME! */
- private JSplitPane principalPanel;
-
- /** DOCUMENT ME! */
- private JScrollPane jspIn;
-
- /** DOCUMENT ME! */
- private JScrollPane jspOut;
-
- /** DOCUMENT ME! */
- private JTree messageTree;
-
- /** DOCUMENT ME! */
- private JTextPane textOut;
-
- // List of Menu
- /** DOCUMENT ME! */
- private JMenuBar menuBar = new JMenuBar();
-
- /** DOCUMENT ME! */
- private JMenu file = new JMenu("File");
-
- /** DOCUMENT ME! */
- private JMenu edit = new JMenu("edit");
-
- /** DOCUMENT ME! */
- private JMenuItem newMenu = new JMenuItem("New...");
-
- /** DOCUMENT ME! */
- private JMenuItem load = new JMenuItem("load");
-
- /** DOCUMENT ME! */
- private JMenuItem save = new JMenuItem("Save");
-
- /** DOCUMENT ME! */
- private JMenuItem quit = new JMenuItem("Quit");
-
- /** DOCUMENT ME! */
- private JCheckBoxMenuItem pduView = new JCheckBoxMenuItem("View PDU");
-
- /** DOCUMENT ME! */
- private LdapProxy ldapProxy;
-
- /** DOCUMENT ME! */
- private DefaultStyledDocument docOut;
-
- private String[] args;
-
- private DefaultMutableTreeNode top;
-
- private DefaultMutableTreeNode ldapMessageTree;
-
- private DefaultTreeModel treeModel;
-
- // STYLE
- private SimpleAttributeSet boldItalicRedText;
-
- private SimpleAttributeSet boldText;
-
- private SimpleAttributeSet boldItalicBlueText;
-
- private SimpleAttributeSet pduStyle;
-
- final static String SEPARATOR = "\n====================================\n";
-
-
- // ~ Constructors
- // -------------------------------------------------------------------------------
-
- /**
- * Creates a new MainFrame object.
- *
- * @throws HeadlessException
- * DOCUMENT ME!
- * @throws UnknownHostException
- * DOCUMENT ME!
- * @throws IOException
- * DOCUMENT ME!
- */
- public MainFrame() throws HeadlessException, UnknownHostException, IOException {
- super();
- initFrame();
-
- }
-
- // ~ Methods
- // ------------------------------------------------------------------------------------
-
- public void initFrame(){
- setItSelf(this);
- setTitle(FRAME_NAME);
- setBounds(FRAME_SIZE);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setJMenuBar(initMenuBar());
- top = new DefaultMutableTreeNode("Start");
- treeModel = new DefaultTreeModel(top);
- messageTree = new JTree(treeModel);
- ldapMessageTree = new DefaultMutableTreeNode("Start Ldap message");
-
- messageTree.addTreeExpansionListener(this);
- messageTree.addTreeSelectionListener(this);
-
- messageTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
- initRenderTree();
- messageTree.setBackground(Color.lightGray);
- messageTree.putClientProperty("JTree.lineStyle", "None");
-
- initStyleForEditing();
-
- messageTree.setEditable(false);
- // messageTree.setRootVisible(false);
-
- textOut = new JTextPane(docOut);
- textOut.setEditable(false);
-
- jspIn = new JScrollPane();
- jspIn.getViewport().add(messageTree);
-
- jspOut = new JScrollPane();
- jspOut.getViewport().add(textOut);
-
- principalPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jspIn, jspOut);
- principalPanel.setOneTouchExpandable(true);
- principalPanel.setDividerLocation(500);
-
- getContentPane().add(principalPanel);
- }
-
- public void initStyleForEditing(){
-// DEFAULT STYLE
- Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
- docOut = new DefaultStyledDocument();
- // other style could be define later // COMMENT TO BE DELETED AFTER DEV
-
- boldItalicRedText = new SimpleAttributeSet();
- StyleConstants.setForeground(boldItalicRedText, Color.red);
- StyleConstants.setBold(boldItalicRedText, true);
- StyleConstants.setItalic(boldItalicRedText, true);
- StyleConstants.setFontSize(boldItalicRedText, 12);
-
- boldItalicBlueText = new SimpleAttributeSet();
- StyleConstants.setForeground(boldItalicBlueText, Color.blue);
- StyleConstants.setBold(boldItalicBlueText, true);
- StyleConstants.setItalic(boldItalicBlueText, true);
- StyleConstants.setFontSize(boldItalicBlueText, 12);
-
- boldText = new SimpleAttributeSet();
- StyleConstants.setFontSize(boldText, 14);
- StyleConstants.setBold(boldText, true);
-
- pduStyle = new SimpleAttributeSet();
- StyleConstants.setFontSize(pduStyle, 12);
- StyleConstants.setBold(pduStyle, true);
- StyleConstants.setForeground(pduStyle, Color.DARK_GRAY);
-
-
- }
-
-
- /**
- * DOCUMENT ME!
- */
- public void launchLdapProxy(String[] args) {
- ldapProxy = new LdapProxy();
- ldapProxy.setMainFrame(this);
- // ldapProxy.setTextIn( messageTree );
- // ldapProxy.setTextOut( textOut );
-
- ldapProxy.likeMain(args);
-
- }
-
- /** Returns an ImageIcon, or null if the path was invalid. */
- protected static ImageIcon createImageIcon(String path) {
- // java.net.URL imgURL = MainFrame.class.getResource(path);
- try {
- return new ImageIcon(path);
- } catch (Exception e) {
- return null;
- }
- /*
- * if (imgURL != null) { return new ImageIcon(imgURL); } else {
- * System.err.println("Couldn't find file: " + path); return null; }
- */
- }
-
- /**
- * DOCUMENT ME!
- */
- public void initRenderTree() {
- ImageIcon leafIcon = createImageIcon("./images/gnome-icone-001.gif");
- ImageIcon icon = createImageIcon("./images/gnome-icone-002.gif");
- if ((leafIcon != null) && (icon != null)) {
- DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
- renderer.setLeafIcon(leafIcon);
- messageTree.setCellRenderer(renderer);
- renderer.setFont(new Font("treeFont", Font.BOLD, 12));
- renderer.setBackgroundNonSelectionColor(Color.lightGray);
- renderer.setBackgroundSelectionColor(Color.white);
- renderer.setOpenIcon(icon);
- renderer.setClosedIcon(icon);
- }
-
- }
-
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- private JMenuBar initMenuBar() {
- file.add(newMenu);
- file.add(load);
- file.add(save);
- file.addSeparator();
- file.add(quit);
- newMenu.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent action) {
- //top.removeAllChildren();
- // TO DO BETTER !!!!!
- top = new DefaultMutableTreeNode("Start");
- treeModel.setRoot(top);
- }
- });
- save.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent action) {
- try {
- FileWriter fw = new FileWriter(new File("./dest/testsauv.xml"));
- for (int i = 0; i < ldapMessageTree.getChildCount(); i++) {
- DefaultMutableTreeNode tmpNode = (DefaultMutableTreeNode) ldapMessageTree
- .getChildAt(i);
- String st = toXML(tmpNode.getUserObject(), fw) + "\n";
- try {
- docOut.insertString(docOut.getLength(), st, boldText);
- } catch (BadLocationException ble) {
- }
- for (int j = 0; j < tmpNode.getChildCount(); j++) {
- st = toXML(((DefaultMutableTreeNode) tmpNode.getChildAt(j))
- .getUserObject(), fw)
- + "\n";
- try {
- docOut.insertString(docOut.getLength(), st, boldItalicBlueText);
- } catch (BadLocationException ble) {
- }
- }
- }
-
- } catch (IOException e) {
- }
- }
- });
- quit.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent action) {
- System.out.println("EXIT");
- try {
- if (ldapProxy != null)
- ldapProxy.stop();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- System.exit(0);
- }
- });
-
- quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));
- save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
-
- edit.add(pduView);
-
- menuBar.add(file);
- menuBar.add(edit);
- return menuBar;
- }
-
- /**
- * DOCUMENT ME!
- */
- public void run() {
- this.setVisible(true);
- this.launchLdapProxy(args);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param args
- */
- public static void main(String[] args) throws Exception {
- MainFrame mf = new MainFrame();
- mf.args = args;
- mf.run();
- }
-
- public JTree getMessageTree() {
- return messageTree;
- }
-
- public DefaultMutableTreeNode getTop() {
- return top;
- }
-
- public DefaultMutableTreeNode getLdapMessageTree() {
- return ldapMessageTree;
- }
-
- public void setLdapMessageTree(DefaultMutableTreeNode ldapMessageTree) {
- this.ldapMessageTree = ldapMessageTree;
- }
-
- public SimpleAttributeSet getStyleByMessageType(int type) {
- SimpleAttributeSet styledType;
-
- switch (type) {
- case 0:
- styledType = boldItalicBlueText;
- break;
- case 1:
- styledType = boldItalicBlueText;
- break;
- case 2:
- styledType = boldItalicBlueText;
- break;
- case 3:
- styledType = boldItalicRedText;
- break;
- case 4:
- styledType = boldItalicBlueText;
- break;
- case 5:
- styledType = boldItalicBlueText;
- break;
- case 6:
- styledType = boldItalicBlueText;
- break;
- case 7:
- styledType = boldItalicBlueText;
- break;
- case 8:
- styledType = boldItalicBlueText;
- break;
- case 9:
- styledType = boldItalicBlueText;
- break;
- case 10:
- styledType = boldItalicBlueText;
- break;
- case 11:
- styledType = boldItalicBlueText;
- break;
- case 12:
- styledType = boldItalicBlueText;
- break;
- case 13:
- styledType = boldItalicBlueText;
- break;
- case 14:
- styledType = boldItalicBlueText;
- break;
- case 15:
- styledType = boldItalicBlueText;
- break;
- case 16:
- styledType = boldItalicBlueText;
- break;
- case 17:
- styledType = boldItalicRedText;
- break;
- case 18:
- styledType = boldItalicBlueText;
- break;
- case 19:
- styledType = boldItalicBlueText;
- break;
- case -1:
- styledType = boldItalicBlueText;
- break;
-
- default:
- styledType = boldItalicBlueText;
- break;
- }
- return styledType;
- }
-
- public String toXML(Object ob, FileWriter fw) {
- try {
- XStream xs = new XStream();
- xs.toXML(ob, fw);
- String st = xs.toXML(ob);
- System.out.println(st);
- return st;
- } catch (Exception e) {
- return "NOTHING";
- }
- }
-
- public MainFrame getItSelf() {
- return itSelf;
- }
-
- public void setItSelf(MainFrame itSelf) {
- this.itSelf = itSelf;
- }
-
- public void treeCollapsed(TreeExpansionEvent tee) {
- messageTree.setSelectionPath(tee.getPath());
- // messageTree.setSelectionRow(0);
-
- }
-
- public void treeExpanded(TreeExpansionEvent tee) {
- // messageTree.setSelectionRow(0);
- messageTree.setSelectionPath(tee.getPath());
- }
-
- public void valueChanged(TreeSelectionEvent tse) {
- textOut.setText("");
- // there is only 2 depth level in thoses Tree.
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) messageTree
- .getLastSelectedPathComponent();
- if (node.equals(top)) {
- System.out.println("First Element Selected!!");
- return;
- }
- if (node == null) {
- System.out.println("Can't Find Node !!! NULL");
- return;
-
- }
- int index = top.getIndex(node);
- int count = 0;
- int childrenCount = top.getChildCount();
- while ((index == -1) && (count < childrenCount)) {
- index = top.getChildAt(count).getIndex(node);
- count++;
- }
- count--;
- if (index == -1) {
- System.out.println("Can't Find Node !!! index -1");
- return;
- }
- Object nodeInfo = node.getUserObject();
- System.out.println("============================================");
- System.out.println("NODE selected " + index + " :::: " + nodeInfo.toString());
- TreeNode ldapNode;
- if (!node.isLeaf()) {
- // First Level
- ldapNode = ldapMessageTree.getChildAt(index);
- } else {
- // second Level we take before the good sub tree to get the
- // good leaf by its own index
- ldapNode = ldapMessageTree.getChildAt(count).getChildAt(index);
- }
-
- System.out.println("LDAP message associate ::: "
- + ((LdapMessageWithPDU) ((DefaultMutableTreeNode) ldapNode).getUserObject())
- .getLdapMessage().toString());
- System.out.println("============================================");
-
- // textOut.setLogicalStyle(textOut.getStyle("regular"));
- // textOut.setText(textOut.getText() + ldapNode.toString());
- try {
- LdapMessage ldapmess = ((LdapMessageWithPDU) ((DefaultMutableTreeNode) ldapNode)
- .getUserObject()).getLdapMessage();
- int type = ldapmess.getMessageType();
- SimpleAttributeSet currentStyle = getStyleByMessageType(type);
- docOut.insertString(docOut.getLength(), node.toString() + "\n", boldText);
- if (node.isLeaf()) {
- docOut.insertString(docOut.getLength(), ldapmess.toString(), currentStyle);
- if(pduView.getState()){
- docOut.insertString(docOut.getLength(),SEPARATOR + " PDU :: \n " +((LdapMessageWithPDU) ((DefaultMutableTreeNode) ldapNode)
- .getUserObject()).getDumpBytes() + SEPARATOR, pduStyle);
- }
- }
-
-
- } catch (Exception e) {// BadLocationException ble) {
- System.err.println("Can not write data in Editor!!");
- }
-
- }
-
- public DefaultTreeModel getTreeModel() {
- return treeModel;
- }
+public class MainFrame extends JFrame implements TreeSelectionListener, TreeExpansionListener
+{
+ // ~ Static fields/initializers
+ // -----------------------------------------------------------------
+ // Shut down the Serialization warning ...
+ public static final long serialVersionUID = 1L;
+
+ /** frame itSelf */
+ private MainFrame itSelf;
+
+ /** Frame and Application name */
+ public static final String FRAME_NAME = "LDAP Proxy GUI";
+
+ /** Default Frame default Size */
+ public static final Rectangle FRAME_SIZE = new Rectangle( 100, 100, 1000, 500 );
+
+ // ~ Instance fields
+ // ----------------------------------------------------------------------------
+
+ // ALL Panel
+ /** The splitted panel */
+ private JSplitPane principalPanel;
+
+ /** DOCUMENT ME! */
+ private JScrollPane jspIn;
+
+ /** DOCUMENT ME! */
+ private JScrollPane jspOut;
+
+ /** DOCUMENT ME! */
+ private JTree messageTree;
+
+ /** DOCUMENT ME! */
+ private JTextPane textOut;
+
+ // List of Menu
+ /** The menu bar */
+ private JMenuBar menuBar = new JMenuBar();
+
+ /** The file menu */
+ private JMenu fileMenu = new JMenu( "File" );
+
+ /** The edit menu */
+ private JMenu editMenu = new JMenu( "edit" );
+
+ /** The "New" menu item */
+ private JMenuItem newMenuItem = new JMenuItem( "New..." );
+
+ /** The "Load" menu item */
+ private JMenuItem loadMenuItem = new JMenuItem( "load" );
+
+ /** The "Save" menu item */
+ private JMenuItem saveMenuItem = new JMenuItem( "Save" );
+
+ /** The "Quit" menu item */
+ private JMenuItem quitMenuItem = new JMenuItem( "Quit" );
+
+ /** DOCUMENT ME! */
+ private JCheckBoxMenuItem pduView = new JCheckBoxMenuItem( "View PDU" );
+
+ /** DOCUMENT ME! */
+ private LdapProxy ldapProxy;
+
+ /** DOCUMENT ME! */
+ private DefaultStyledDocument docOut;
+
+ private String[] args;
+
+ private DefaultMutableTreeNode top;
+
+ private DefaultMutableTreeNode ldapMessageTree;
+
+ private DefaultTreeModel treeModel;
+
+ // STYLE
+ private SimpleAttributeSet boldItalicRedText;
+
+ private SimpleAttributeSet boldText;
+
+ private SimpleAttributeSet boldItalicBlueText;
+
+ private SimpleAttributeSet pduStyle;
+
+ final static String SEPARATOR = "\n====================================\n";
+
+ // ~ Constructors
+ // -------------------------------------------------------------------------------
+
+ /**
+ * Creates a new MainFrame object.
+ *
+ * @throws HeadlessException
+ * DOCUMENT ME!
+ * @throws UnknownHostException
+ * DOCUMENT ME!
+ * @throws IOException
+ * DOCUMENT ME!
+ */
+ public MainFrame() throws HeadlessException, UnknownHostException, IOException
+ {
+ super();
+ initFrame();
+
+ }
+
+ // ~ Methods
+ // ------------------------------------------------------------------------------------
+
+ public void initFrame()
+ {
+ setItSelf( this );
+ setTitle( FRAME_NAME );
+ setBounds( FRAME_SIZE );
+ setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
+ setJMenuBar( initMenuBar() );
+ top = new DefaultMutableTreeNode( "Start" );
+ treeModel = new DefaultTreeModel( top );
+ messageTree = new JTree( treeModel );
+ ldapMessageTree = new DefaultMutableTreeNode( "Start Ldap message" );
+
+ messageTree.addTreeExpansionListener( this );
+ messageTree.addTreeSelectionListener( this );
+
+ messageTree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION );
+ initRenderTree();
+ messageTree.setBackground( Color.lightGray );
+ messageTree.putClientProperty( "JTree.lineStyle", "None" );
+
+ initStyleForEditing();
+
+ messageTree.setEditable( false );
+ // messageTree.setRootVisible(false);
+
+ textOut = new JTextPane( docOut );
+ textOut.setEditable( false );
+
+ jspIn = new JScrollPane();
+ jspIn.getViewport().add( messageTree );
+
+ jspOut = new JScrollPane();
+ jspOut.getViewport().add( textOut );
+
+ principalPanel = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, jspIn, jspOut );
+ principalPanel.setOneTouchExpandable( true );
+ principalPanel.setDividerLocation( 500 );
+
+ getContentPane().add( principalPanel );
+ }
+
+ public void initStyleForEditing()
+ {
+ // DEFAULT STYLE
+ Style def = StyleContext.getDefaultStyleContext().getStyle( StyleContext.DEFAULT_STYLE );
+ docOut = new DefaultStyledDocument();
+ // other style could be define later // COMMENT TO BE DELETED AFTER DEV
+
+ boldItalicRedText = new SimpleAttributeSet();
+ StyleConstants.setForeground( boldItalicRedText, Color.red );
+ StyleConstants.setBold( boldItalicRedText, true );
+ StyleConstants.setItalic( boldItalicRedText, true );
+ StyleConstants.setFontSize( boldItalicRedText, 12 );
+
+ boldItalicBlueText = new SimpleAttributeSet();
+ StyleConstants.setForeground( boldItalicBlueText, Color.blue );
+ StyleConstants.setBold( boldItalicBlueText, true );
+ StyleConstants.setItalic( boldItalicBlueText, true );
+ StyleConstants.setFontSize( boldItalicBlueText, 12 );
+
+ boldText = new SimpleAttributeSet();
+ StyleConstants.setFontSize( boldText, 14 );
+ StyleConstants.setBold( boldText, true );
+
+ pduStyle = new SimpleAttributeSet();
+ StyleConstants.setFontSize( pduStyle, 12 );
+ StyleConstants.setBold( pduStyle, true );
+ StyleConstants.setForeground( pduStyle, Color.DARK_GRAY );
+
+ }
+
+ /**
+ * DOCUMENT ME!
+ */
+ public void launchLdapProxy( String[] args )
+ {
+ ldapProxy = new LdapProxy();
+ ldapProxy.setMainFrame( this );
+ // ldapProxy.setTextIn( messageTree );
+ // ldapProxy.setTextOut( textOut );
+
+ ldapProxy.likeMain( args );
+
+ }
+
+ /** Returns an ImageIcon, or null if the path was invalid. */
+ protected static ImageIcon createImageIcon( String path )
+ {
+ // java.net.URL imgURL = MainFrame.class.getResource(path);
+ try
+ {
+ return new ImageIcon( path );
+ }
+ catch ( Exception e )
+ {
+ return null;
+ }
+ }
+
+ /**
+ * DOCUMENT ME!
+ */
+ public void initRenderTree()
+ {
+ ImageIcon leafIcon = createImageIcon( "./images/gnome-icone-001.gif" );
+ ImageIcon icon = createImageIcon( "./images/gnome-icone-002.gif" );
+ if ( ( leafIcon != null ) && ( icon != null ) )
+ {
+ DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
+ renderer.setLeafIcon( leafIcon );
+ messageTree.setCellRenderer( renderer );
+ renderer.setFont( new Font( "treeFont", Font.BOLD, 12 ) );
+ renderer.setBackgroundNonSelectionColor( Color.lightGray );
+ renderer.setBackgroundSelectionColor( Color.white );
+ renderer.setOpenIcon( icon );
+ renderer.setClosedIcon( icon );
+ }
+
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ private JMenuBar initMenuBar()
+ {
+ fileMenu.add( newMenuItem );
+ fileMenu.add( loadMenuItem );
+ fileMenu.add( saveMenuItem );
+ fileMenu.addSeparator();
+ fileMenu.add( quitMenuItem );
+ newMenuItem.addActionListener( new ActionListener()
+ {
+ public void actionPerformed( ActionEvent action )
+ {
+ // top.removeAllChildren();
+ // TO DO BETTER !!!!!
+ top = new DefaultMutableTreeNode( "Start" );
+ treeModel.setRoot( top );
+ }
+ } );
+ saveMenuItem.addActionListener( new ActionListener()
+ {
+ public void actionPerformed( ActionEvent action )
+ {
+ try
+ {
+ FileWriter fw = new FileWriter( new File( "./dest/testsauv.xml" ) );
+ for ( int i = 0; i < ldapMessageTree.getChildCount(); i++ )
+ {
+ DefaultMutableTreeNode tmpNode = (DefaultMutableTreeNode) ldapMessageTree.getChildAt( i );
+ String st = toXML( tmpNode.getUserObject(), fw ) + "\n";
+ try
+ {
+ docOut.insertString( docOut.getLength(), st, boldText );
+ }
+ catch ( BadLocationException ble )
+ {
+ }
+ for ( int j = 0; j < tmpNode.getChildCount(); j++ )
+ {
+ st = toXML( ( (DefaultMutableTreeNode) tmpNode.getChildAt( j ) ).getUserObject(), fw )
+ + "\n";
+ try
+ {
+ docOut.insertString( docOut.getLength(), st, boldItalicBlueText );
+ }
+ catch ( BadLocationException ble )
+ {
+ }
+ }
+ }
+
+ }
+ catch ( IOException e )
+ {
+ }
+ }
+ } );
+ quitMenuItem.addActionListener( new ActionListener()
+ {
+ public void actionPerformed( ActionEvent action )
+ {
+ System.out.println( "EXIT" );
+ try
+ {
+ if ( ldapProxy != null )
+ ldapProxy.stop();
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ System.exit( 0 );
+ }
+ } );
+
+ quitMenuItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Q, ActionEvent.CTRL_MASK ) );
+ saveMenuItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_S, ActionEvent.CTRL_MASK ) );
+
+ editMenu.add( pduView );
+
+ menuBar.add( fileMenu );
+ menuBar.add( editMenu );
+ return menuBar;
+ }
+
+ /**
+ * DOCUMENT ME!
+ */
+ public void run()
+ {
+ this.setVisible( true );
+ this.launchLdapProxy( args );
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param args
+ */
+ public static void main( String[] args ) throws Exception
+ {
+ MainFrame mf = new MainFrame();
+ mf.args = args;
+ mf.run();
+ }
+
+ public JTree getMessageTree()
+ {
+ return messageTree;
+ }
+
+ public DefaultMutableTreeNode getTop()
+ {
+ return top;
+ }
+
+ public DefaultMutableTreeNode getLdapMessageTree()
+ {
+ return ldapMessageTree;
+ }
+
+ public void setLdapMessageTree( DefaultMutableTreeNode ldapMessageTree )
+ {
+ this.ldapMessageTree = ldapMessageTree;
+ }
+
+ public SimpleAttributeSet getStyleByMessageType( int type )
+ {
+ SimpleAttributeSet styledType;
+
+ switch ( type )
+ {
+ case 0 :
+ styledType = boldItalicBlueText;
+ break;
+ case 1 :
+ styledType = boldItalicBlueText;
+ break;
+ case 2 :
+ styledType = boldItalicBlueText;
+ break;
+ case 3 :
+ styledType = boldItalicRedText;
+ break;
+ case 4 :
+ styledType = boldItalicBlueText;
+ break;
+ case 5 :
+ styledType = boldItalicBlueText;
+ break;
+ case 6 :
+ styledType = boldItalicBlueText;
+ break;
+ case 7 :
+ styledType = boldItalicBlueText;
+ break;
+ case 8 :
+ styledType = boldItalicBlueText;
+ break;
+ case 9 :
+ styledType = boldItalicBlueText;
+ break;
+ case 10 :
+ styledType = boldItalicBlueText;
+ break;
+ case 11 :
+ styledType = boldItalicBlueText;
+ break;
+ case 12 :
+ styledType = boldItalicBlueText;
+ break;
+ case 13 :
+ styledType = boldItalicBlueText;
+ break;
+ case 14 :
+ styledType = boldItalicBlueText;
+ break;
+ case 15 :
+ styledType = boldItalicBlueText;
+ break;
+ case 16 :
+ styledType = boldItalicBlueText;
+ break;
+ case 17 :
+ styledType = boldItalicRedText;
+ break;
+ case 18 :
+ styledType = boldItalicBlueText;
+ break;
+ case 19 :
+ styledType = boldItalicBlueText;
+ break;
+ case -1 :
+ styledType = boldItalicBlueText;
+ break;
+
+ default :
+ styledType = boldItalicBlueText;
+ break;
+ }
+ return styledType;
+ }
+
+ public String toXML( Object ob, FileWriter fw )
+ {
+ try
+ {
+ XStream xs = new XStream();
+ xs.toXML( ob, fw );
+ String st = xs.toXML( ob );
+ System.out.println( st );
+ return st;
+ }
+ catch ( Exception e )
+ {
+ return "NOTHING";
+ }
+ }
+
+ public MainFrame getItSelf()
+ {
+ return itSelf;
+ }
+
+ public void setItSelf( MainFrame itSelf )
+ {
+ this.itSelf = itSelf;
+ }
+
+ public void treeCollapsed( TreeExpansionEvent tee )
+ {
+ messageTree.setSelectionPath( tee.getPath() );
+ // messageTree.setSelectionRow(0);
+
+ }
+
+ public void treeExpanded( TreeExpansionEvent tee )
+ {
+ // messageTree.setSelectionRow(0);
+ messageTree.setSelectionPath( tee.getPath() );
+ }
+
+ public void valueChanged( TreeSelectionEvent tse )
+ {
+ textOut.setText( "" );
+ // there is only 2 depth level in thoses Tree.
+ DefaultMutableTreeNode node = (DefaultMutableTreeNode) messageTree.getLastSelectedPathComponent();
+ if ( node.equals( top ) )
+ {
+ System.out.println( "First Element Selected!!" );
+ return;
+ }
+ if ( node == null )
+ {
+ System.out.println( "Can't Find Node !!! NULL" );
+ return;
+
+ }
+ int index = top.getIndex( node );
+ int count = 0;
+ int childrenCount = top.getChildCount();
+ while ( ( index == -1 ) && ( count < childrenCount ) )
+ {
+ index = top.getChildAt( count ).getIndex( node );
+ count++;
+ }
+ count--;
+ if ( index == -1 )
+ {
+ System.out.println( "Can't Find Node !!! index -1" );
+ return;
+ }
+ Object nodeInfo = node.getUserObject();
+ System.out.println( "============================================" );
+ System.out.println( "NODE selected " + index + " :::: " + nodeInfo.toString() );
+ TreeNode ldapNode;
+ if ( !node.isLeaf() )
+ {
+ // First Level
+ ldapNode = ldapMessageTree.getChildAt( index );
+ }
+ else
+ {
+ // second Level we take before the good sub tree to get the
+ // good leaf by its own index
+ ldapNode = ldapMessageTree.getChildAt( count ).getChildAt( index );
+ }
+
+ System.out.println( "LDAP message associate ::: "
+ + ( (LdapMessageWithPDU) ( (DefaultMutableTreeNode) ldapNode ).getUserObject() ).getLdapMessage()
+ .toString() );
+ System.out.println( "============================================" );
+
+ // textOut.setLogicalStyle(textOut.getStyle("regular"));
+ // textOut.setText(textOut.getText() + ldapNode.toString());
+ try
+ {
+ LdapMessage ldapmess = ( (LdapMessageWithPDU) ( (DefaultMutableTreeNode) ldapNode ).getUserObject() )
+ .getLdapMessage();
+ int type = ldapmess.getMessageType();
+ SimpleAttributeSet currentStyle = getStyleByMessageType( type );
+ docOut.insertString( docOut.getLength(), node.toString() + "\n", boldText );
+ if ( node.isLeaf() )
+ {
+ docOut.insertString( docOut.getLength(), ldapmess.toString(), currentStyle );
+ if ( pduView.getState() )
+ {
+ docOut.insertString( docOut.getLength(), SEPARATOR
+ + " PDU :: \n "
+ + ( (LdapMessageWithPDU) ( (DefaultMutableTreeNode) ldapNode ).getUserObject() )
+ .getDumpBytes() + SEPARATOR, pduStyle );
+ }
+ }
+
+ }
+ catch ( Exception e )
+ {// BadLocationException ble) {
+ System.err.println( "Can not write data in Editor!!" );
+ }
+
+ }
+
+ public DefaultTreeModel getTreeModel()
+ {
+ return treeModel;
+ }
}
Modified: directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapMessageWithPDU.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapMessageWithPDU.java?rev=278921&r1=278920&r2=278921&view=diff
==============================================================================
--- directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapMessageWithPDU.java (original)
+++ directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapMessageWithPDU.java Mon Sep 5 23:01:18 2005
@@ -1,37 +1,67 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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 org.apache.ldap.proxy.impl;
import org.apache.asn1new.ldap.pojo.LdapMessage;
-public class LdapMessageWithPDU {
-
- private String dumpBytes;
-
- private LdapMessage ldapMessage;
-
- private int messageId;
-
- public String getDumpBytes() {
- return dumpBytes;
- }
-
- public void setDumpBytes(String dumpBytes) {
- this.dumpBytes = dumpBytes;
- }
-
- public LdapMessage getLdapMessage() {
- return ldapMessage;
- }
-
- public void setLdapMessage(LdapMessage ldapMessage) {
- this.ldapMessage = ldapMessage;
- }
-
- public int getMessageId() {
- return messageId;
- }
-
- public void setMessageId(int messageId) {
- this.messageId = messageId;
- }
-
+/**
+ * A LdapMessage container
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class LdapMessageWithPDU
+{
+ /** The PDU */
+ private String dumpBytes;
+
+ /** The ldapMessage */
+ private LdapMessage ldapMessage;
+
+ /** The ldap MessaheId */
+ private int messageId;
+
+ public String getDumpBytes()
+ {
+ return dumpBytes;
+ }
+
+ public void setDumpBytes( String dumpBytes )
+ {
+ this.dumpBytes = dumpBytes;
+ }
+
+ public LdapMessage getLdapMessage()
+ {
+ return ldapMessage;
+ }
+
+ public void setLdapMessage( LdapMessage ldapMessage )
+ {
+ this.ldapMessage = ldapMessage;
+ }
+
+ public int getMessageId()
+ {
+ return messageId;
+ }
+
+ public void setMessageId( int messageId )
+ {
+ this.messageId = messageId;
+ }
}
Modified: directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapProxy.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapProxy.java?rev=278921&r1=278920&r2=278921&view=diff
==============================================================================
--- directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapProxy.java (original)
+++ directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/LdapProxy.java Mon Sep 5 23:01:18 2005
@@ -1,108 +1,192 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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 org.apache.ldap.proxy.impl;
import java.net.ServerSocket;
import java.net.Socket;
import org.apache.ldap.proxy.gui.MainFrame;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-public class LdapProxy {
-
- public static final String usageArgs = " <localport> <host> <port> <timeout_ms>";
-
- static int clientCount;
-
- private ProxyConnection proxyConnection;
-
- MainFrame mainFrame;
-
- public static synchronized void quit(long t) {
- System.out.println("...quit after waiting " + t + " ms");
- clientCount--;
- }
-
- public void run(int localport, String host, int port, long timeout) {
- try {
- ServerSocket sSocket = new ServerSocket(localport);
-
- while (true) {
- Socket cSocket = null;
- try {
- System.out.println("listening...");
- cSocket = sSocket.accept();
-
- if (cSocket != null) {
- clientCount++;
- System.out.println("accepted as #" + clientCount + ":" + cSocket);
- proxyConnection = new ProxyConnection(cSocket, host, port, timeout);
- proxyConnection.setMainFrame(mainFrame);
- proxyConnection.run();
- }
- } catch (Exception e) {
- e.printStackTrace(System.err);
- }
- try {
- cSocket.close();
- } catch (Exception e) {
- // fall thru
- }
- }
- } catch (Throwable t) {
- t.printStackTrace(System.err);
- }
- }
-
- public void stop() {
- proxyConnection.interrupt();
- }
-
- public static void main(String[] argv) {
- LdapProxy self = new LdapProxy();
-
- if (argv.length >= 3) {
- int localport = Integer.parseInt(argv[0]);
- String url = argv[1];
- int port = Integer.parseInt(argv[2]);
- int timeout = 300000;
- if (argv.length >= 4) {
- try {
- timeout = Integer.parseInt(argv[3]);
- } catch (Exception e) {
- System.err.println("Time Out incorrect in lanched command line!! TIMEOUT = "
- + argv[3]);
- }
- }
- if (timeout == 0)
- timeout = 300000;
- self.run(localport, url, port, timeout);
- } else {
- System.err.println("usage: java " + self.getClass().getName() + usageArgs);
- }
- }
-
- /*
- * public void setTextIn(JTextPane textIn) { LdapProxy.textIn = textIn; }
- * public void setTextOut(JTextPane textOut) { LdapProxy.textOut = textOut; }
- */
- public void likeMain(String[] argv) {
- if (argv.length >= 3) {
- int localport = Integer.parseInt(argv[0]);
- String url = argv[1];
- int port = Integer.parseInt(argv[2]);
- int timeout = 30000;
-
- try {
- timeout = Integer.parseInt(argv[3]);
- } catch (Exception e) {
- }
-
- run(localport, url, port, timeout);
- } else {
- System.err.println("usage: java " + this.getClass().getName() + usageArgs);
- }
- }
-
- public void setMainFrame(MainFrame mainframe) {
- this.mainFrame = mainframe;
- }
-
+/**
+ *
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class LdapProxy
+{
+ /** The logger */
+ private static final Logger log = LoggerFactory.getLogger( LdapProxy.class );
+
+ /** The usage string */
+ public static final String USAGE_ARGS = " <localport> <host> <port> <timeout>";
+
+ /** Default timeout in milli seconds */
+ public static final int DEFAULT_TIMEOUT = 30000;
+
+ static int clientCount;
+
+ private ProxyConnection proxyConnection;
+
+ MainFrame mainFrame;
+
+ /**
+ * Quit the current connection.
+ *
+ * @param t
+ * The timeout
+ */
+ public static synchronized void quit( long t )
+ {
+ log.info( "...quit after waiting " + ( t / 1000 ) + " s" );
+ clientCount--;
+ }
+
+ /**
+ * The main loop.
+ *
+ * @param localport
+ * @param host
+ * @param port
+ * @param timeout
+ */
+ public void run( int localport, String host, int port, long timeout )
+ {
+ try
+ {
+ ServerSocket sSocket = new ServerSocket( localport );
+
+ while ( true )
+ {
+ Socket cSocket = null;
+
+ try
+ {
+ log.debug( "listening..." );
+ cSocket = sSocket.accept();
+
+ if ( cSocket != null )
+ {
+ clientCount++;
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "accepted as #" + clientCount + ":" + cSocket );
+ }
+
+ proxyConnection = new ProxyConnection( cSocket, host, port, timeout );
+ proxyConnection.setMainFrame( mainFrame );
+ proxyConnection.run();
+ }
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace( System.err );
+ }
+ try
+ {
+ cSocket.close();
+ }
+ catch ( Exception e )
+ {
+ // fall thru
+ }
+ }
+ }
+ catch ( Throwable t )
+ {
+ t.printStackTrace( System.err );
+ }
+ }
+
+ public void stop()
+ {
+ proxyConnection.interrupt();
+ }
+
+ public void likeMain( String[] argv )
+ {
+ if ( argv.length >= 3 )
+ {
+ int localport = Integer.parseInt( argv[0] );
+ String url = argv[1];
+ int port = Integer.parseInt( argv[2] );
+ int timeout = DEFAULT_TIMEOUT;
+
+ try
+ {
+ timeout = Integer.parseInt( argv[3] );
+ }
+ catch ( Exception e )
+ {
+ }
+
+ run( localport, url, port, timeout );
+ }
+ else
+ {
+ System.err.println( "usage: java " + this.getClass().getName() + USAGE_ARGS );
+ }
+ }
+
+ public void setMainFrame( MainFrame mainframe )
+ {
+ this.mainFrame = mainframe;
+ }
+
+ /**
+ * Main method
+ * @param argv The parameters
+ */
+ public static void main( String[] argv )
+ {
+ LdapProxy self = new LdapProxy();
+
+ if ( argv.length >= 3 )
+ {
+ int localport = Integer.parseInt( argv[0] );
+ String url = argv[1];
+ int port = Integer.parseInt( argv[2] );
+ int timeout = DEFAULT_TIMEOUT;
+
+ if ( argv.length >= 4 )
+ {
+ try
+ {
+ timeout = Integer.parseInt( argv[3] );
+ }
+ catch ( Exception e )
+ {
+ System.err.println( "Time Out incorrect in lanched command line!! TIMEOUT = " + argv[3] );
+ }
+ }
+
+ if ( timeout == 0 )
+ {
+ timeout = DEFAULT_TIMEOUT;
+ }
+
+ self.run( localport, url, port, timeout );
+ }
+ else
+ {
+ System.err.println( "usage: java " + self.getClass().getName() + USAGE_ARGS );
+ }
+ }
}// class
Modified: directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/ProxyConnection.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/ProxyConnection.java?rev=278921&r1=278920&r2=278921&view=diff
==============================================================================
--- directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/ProxyConnection.java (original)
+++ directory/sandbox/trunk/proxy/src/java/main/org/apache/ldap/proxy/impl/ProxyConnection.java Mon Sep 5 23:01:18 2005
@@ -1,3 +1,20 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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 org.apache.ldap.proxy.impl;
import java.io.BufferedOutputStream;
@@ -9,7 +26,6 @@
import java.util.Date;
import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.TreePath;
import org.apache.asn1.codec.DecoderException;
import org.apache.asn1new.ber.Asn1Decoder;
@@ -20,334 +36,383 @@
import org.apache.asn1new.util.StringUtils;
import org.apache.ldap.proxy.gui.MainFrame;
-class ProxyConnection extends Thread {
-
- Socket fromClient;
-
- String host;
-
- int port;
-
- long timeout;
-
- MainFrame mainFrame;
-
- int lastMessageId = -1;
-
- DefaultMutableTreeNode lastNode;
-
- DefaultMutableTreeNode lastMessNode;
-
- int currentCount = 0;
-
- ProxyConnection(Socket s, String host, int port, long timeout) {
- fromClient = s;
- this.host = host;
- this.port = port;
- this.timeout = timeout;
-
- }
-
- private String decode(ByteBuffer buffer) throws DecoderException {
-
- DefaultMutableTreeNode mess;
-
- // DefaultMutableTreeNode messTrue;
- DefaultMutableTreeNode messTrue;
-
- Asn1Decoder ldapDecoder = new LdapDecoder();
-
- // Allocate a LdapMessageContainer Container
- IAsn1Container ldapMessageContainer = new LdapMessageContainer();
-
- // Decode the PDU
- ldapDecoder.decode(buffer, ldapMessageContainer);
- // Check that everything is OK
- LdapMessage ldapmessage = ((LdapMessageContainer) ldapMessageContainer).getLdapMessage();
- LdapMessageWithPDU message = new LdapMessageWithPDU();
-
- message.setDumpBytes(org.apache.asn1new.util.StringUtils.dumpBytes(buffer.array()));
- message.setLdapMessage(ldapmessage);
- message.setMessageId(ldapmessage.getMessageId());
-
- // Ici on test pour ne pas créer 2 entré avec le meme messageID;
- if (message.getMessageId() != lastMessageId) {
- mess = new DefaultMutableTreeNode(transformToStringType(ldapmessage.getMessageType())
- + " [Id = " + ((LdapMessage) ldapmessage).getMessageId() + " ]");
-
- messTrue = new DefaultMutableTreeNode(message);
- lastNode = mess;
- lastMessNode = messTrue;
- lastMessageId = message.getMessageId();
- // mainFrame.getTop().add(mess);
- mainFrame.getTreeModel().insertNodeInto(mess, mainFrame.getTop(),
- mainFrame.getTop().getChildCount());
- mainFrame.getLdapMessageTree().add(messTrue);
- currentCount = 1;
-
- } else {
- mess = lastNode;
- messTrue = lastMessNode;
- currentCount++;
- }
-
- // String type = message.getProtocolOp().getClass().getSimpleName();
- String type = transformToStringType(ldapmessage.getMessageType());
-
- // DefaultMutableTreeNode request = new DefaultMutableTreeNode(type +"
- // ==>" + message.toString());
- DefaultMutableTreeNode request = new DefaultMutableTreeNode(type + " N° " + currentCount);
- // mess.add(request);
- mainFrame.getTreeModel().insertNodeInto(request, mess, mess.getChildCount());
-
- messTrue.add(new DefaultMutableTreeNode(message));
-
- // mainFrame.repaint();
- // mainFrame.getTreeModel().reload(mainFrame.getTop());
- return message.getLdapMessage().toString();
- }
-
- public String transformToStringType(int type) {
- String stringType;
-
- switch (type) {
- case 0:
- stringType = "ABANDON REQUEST";
- break;
- case 1:
- stringType = "ADD REQUEST";
- break;
- case 2:
- stringType = "ADD RESPONSE";
- break;
- case 3:
- stringType = "BIND REQUEST";
- break;
- case 4:
- stringType = "BIND RESPONSE";
- break;
- case 5:
- stringType = "COMPARE REQUEST";
- break;
- case 6:
- stringType = "COMPARE RESPONSE";
- break;
- case 7:
- stringType = "DEL REQUEST";
- break;
- case 8:
- stringType = "DEL RESPONSE";
- break;
- case 9:
- stringType = "EXTENDED REQUEST";
- break;
- case 10:
- stringType = "EXTENDED RESPONSE";
- break;
- case 11:
- stringType = "MODIFYDN REQUEST";
- break;
- case 12:
- stringType = "MODIFYDN RESPONSE";
- break;
- case 13:
- stringType = "MODIFY REQUEST";
- break;
- case 14:
- stringType = "MODIFY RESPONSE";
- break;
- case 15:
- stringType = "SEARCH REQUEST";
- break;
- case 16:
- stringType = "SEARCH RESULT DONE";
- break;
- case 17:
- stringType = "SEARCH RESULT ENTRY";
- break;
- case 18:
- stringType = "SEARCH RESULT REFERENCE";
- break;
- case 19:
- stringType = "UNBIND REQUEST";
- break;
- case -1:
- stringType = "UNKNOWN";
- break;
-
- default:
- stringType = "UNKNOWN";
- break;
- }
- return stringType;
- }
-
- public void run() {
- InputStream clientIn = null;
- OutputStream clientOut = null;
- InputStream serverIn = null;
- OutputStream serverOut = null;
- Socket toServer = null;
- int r0 = -1;
- int r1 = -1;
- int ch = -1;
- int i = -1;
- long time0 = System.currentTimeMillis();
- long time1 = time0 + timeout;
-
- try {
- toServer = new Socket(host, port);
- System.out.println("open connection to:" + toServer + "(timeout=" + timeout + " ms)");
- clientIn = fromClient.getInputStream();
- clientOut = new BufferedOutputStream(fromClient.getOutputStream());
- serverIn = toServer.getInputStream();
- serverOut = new BufferedOutputStream(toServer.getOutputStream());
-
- while (r0 != 0 || r1 != 0 || (time1 - time0) <= timeout) {
- r0 = clientIn.available();
-
- if (r0 != 0) {
- System.out.println("");
- // LdapProxy.setTextIn("<<<" + r0 + " bytes from client
- // \n","red");
- System.out.println("");
- System.out.println("<<<" + r0 + " bytes from client");
- System.out.println("<<<" + r1 + " bytes from server");
- }
-
- ByteBuffer bb = null;
-
- while ((r0 = clientIn.available()) > 0) {
- byte[] in = new byte[r0];
- int k = 0;
-
- for (i = 0; i < r0; i++) {
- ch = clientIn.read();
-
- if (ch != -1) {
- in[k++] = (byte) ch;
- serverOut.write(ch);
- } else {
- System.out.println("client stream closed");
- // LdapProxy.setTextIn("client stream closed
- // \n","redbold");
- }
- }
-
- bb = ByteBuffer.allocate(r0);
- bb.put(in);
- bb.flip();
- String result = decode(bb);
- /*
- * LdapProxy.setTextIn("--->>>\n", "regular");
- * LdapProxy.setTextIn(result, "regular");
- * LdapProxy.setTextIn("----------------------------------\n",
- * "regular");
- */
-
- time0 = System.currentTimeMillis();
- serverOut.flush();
- }
-
- bb = null;
-
- while ((r1 = serverIn.available()) > 0) {
- System.out.println("");
- System.out.println(">>>" + r1 + " bytes from server");
- // LdapProxy.setTextOut(">>>" + r1 + " bytes from server
- // \n","red");
- System.out.println("");
- System.out.println(">>>" + r1 + " bytes from server");
-
- byte[] out = new byte[r1];
- int k = 0;
-
- for (i = 0; i < r1; i++) {
- ch = serverIn.read();
-
- if (ch != -1) {
- out[k++] = (byte) ch;
- } else {
- System.out.println("server stream closed");
- // LdapProxy.setTextOut("server stream closed
- // \n","redbold");
- break;
- }
-
- clientOut.write(ch);
- }
-
- bb = ByteBuffer.allocate(r1);
- bb.put(out);
- bb.flip();
-
- while (true) {
- try {
- String result = decode(bb);
- System.out.println(result);
- /*
- * LdapProxy.setTextOut("<<<---\n", "blue");
- * LdapProxy.setTextOut(result, "blue");
- * LdapProxy.setTextOut("----------------------------------\n",
- * "regular");
- */
- if (bb.hasRemaining() == false) {
- break;
- }
- } catch (DecoderException de) {
- StringBuffer result = new StringBuffer();
- result.append(de.getMessage()).append('\n');
-
- byte[] tmp = new byte[out.length - bb.position()];
- System
- .arraycopy(out, bb.position(), tmp, 0, out.length
- - bb.position());
- result.append(StringUtils.dumpBytes(tmp));
-
- System.out.println(result);
- /*
- * LdapProxy.setTextOut("<<<---\n", "regular");
- * LdapProxy.setTextOut(new String(tmp), "regular");
- * LdapProxy.setTextOut("----------------------------------\n",
- * "regular");
- */
- break;
- }
- }
-
- time0 = new Date().getTime();
- clientOut.flush();
- }
- if (r0 == 0 && r1 == 0) {
- time1 = new Date().getTime();
- Thread.sleep(100);
- // Proxy.display("waiting:"+(time1-time0)+" ms");
- }
- }
- } catch (Throwable t) {
- System.out.println("i=" + i + " ch=" + ch);
- t.printStackTrace(System.err);
- } finally {
- try {
- clientIn.close();
- clientOut.close();
- serverIn.close();
- serverOut.close();
- fromClient.close();
- toServer.close();
- LdapProxy.quit(time1 - time0);
- } catch (Exception e) {
- e.printStackTrace(System.err);
- }
- }
- }
-
- /*
- * public void setTextIn(JTextPane textIn) { this.textIn = textIn; } public
- * void setTextOut(JTextPane textOut) { this.textOut = textOut; }
- */
-
- public void setMainFrame(MainFrame mainframe) {
- this.mainFrame = mainframe;
- }
+/**
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+class ProxyConnection extends Thread
+{
+
+ Socket fromClient;
+
+ String host;
+
+ int port;
+
+ long timeout;
+
+ MainFrame mainFrame;
+
+ int lastMessageId = -1;
+
+ DefaultMutableTreeNode lastNode;
+
+ DefaultMutableTreeNode lastMessNode;
+
+ int currentCount = 0;
+
+ ProxyConnection(Socket s, String host, int port, long timeout)
+ {
+ fromClient = s;
+ this.host = host;
+ this.port = port;
+ this.timeout = timeout;
+
+ }
+
+ private String decode( ByteBuffer buffer ) throws DecoderException
+ {
+ int position = buffer.position();
+
+ DefaultMutableTreeNode mess;
+
+ // DefaultMutableTreeNode messTrue;
+ DefaultMutableTreeNode messTrue;
+
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ // Allocate a LdapMessageContainer Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ // Decode the PDU
+ ldapDecoder.decode( buffer, ldapMessageContainer );
+ // Check that everything is OK
+ LdapMessage ldapmessage = ( (LdapMessageContainer) ldapMessageContainer ).getLdapMessage();
+ LdapMessageWithPDU message = new LdapMessageWithPDU();
+
+
+ message.setLdapMessage( ldapmessage );
+ message.setMessageId( ldapmessage.getMessageId() );
+
+ // Ici on test pour ne pas cr�er 2 entr� avec le meme messageID;
+ if ( message.getMessageId() != lastMessageId )
+ {
+ mess = new DefaultMutableTreeNode( transformToStringType( ldapmessage.getMessageType() ) + " [Id = "
+ + ( (LdapMessage) ldapmessage ).getMessageId() + " ]" );
+
+ messTrue = new DefaultMutableTreeNode( message );
+ lastNode = mess;
+ lastMessNode = messTrue;
+ lastMessageId = message.getMessageId();
+ // mainFrame.getTop().add(mess);
+ mainFrame.getTreeModel().insertNodeInto( mess, mainFrame.getTop(), mainFrame.getTop().getChildCount() );
+ mainFrame.getLdapMessageTree().add( messTrue );
+ currentCount = 1;
+
+ }
+ else
+ {
+ mess = lastNode;
+ messTrue = lastMessNode;
+ currentCount++;
+ }
+
+ // String type = message.getProtocolOp().getClass().getSimpleName();
+ String type = transformToStringType( ldapmessage.getMessageType() );
+
+ // DefaultMutableTreeNode request = new DefaultMutableTreeNode(type +"
+ // ==>" + message.toString());
+ DefaultMutableTreeNode request = new DefaultMutableTreeNode( type + " N� " + currentCount );
+ // mess.add(request);
+ mainFrame.getTreeModel().insertNodeInto( request, mess, mess.getChildCount() );
+
+ messTrue.add( new DefaultMutableTreeNode( message ) );
+
+ int pduLength = buffer.position() - position;
+ byte[] bytes = buffer.array();
+ byte[] newBytes = new byte[pduLength];
+ System.arraycopy(bytes, position, newBytes, 0, pduLength );
+
+ message.setDumpBytes( org.apache.asn1new.util.StringUtils.dumpBytes( newBytes ) );
+
+ // mainFrame.repaint();
+ // mainFrame.getTreeModel().reload(mainFrame.getTop());
+ return message.getLdapMessage().toString();
+ }
+
+ public String transformToStringType( int type )
+ {
+ String stringType;
+
+ switch ( type )
+ {
+ case 0 :
+ stringType = "ABANDON REQUEST";
+ break;
+ case 1 :
+ stringType = "ADD REQUEST";
+ break;
+ case 2 :
+ stringType = "ADD RESPONSE";
+ break;
+ case 3 :
+ stringType = "BIND REQUEST";
+ break;
+ case 4 :
+ stringType = "BIND RESPONSE";
+ break;
+ case 5 :
+ stringType = "COMPARE REQUEST";
+ break;
+ case 6 :
+ stringType = "COMPARE RESPONSE";
+ break;
+ case 7 :
+ stringType = "DEL REQUEST";
+ break;
+ case 8 :
+ stringType = "DEL RESPONSE";
+ break;
+ case 9 :
+ stringType = "EXTENDED REQUEST";
+ break;
+ case 10 :
+ stringType = "EXTENDED RESPONSE";
+ break;
+ case 11 :
+ stringType = "MODIFYDN REQUEST";
+ break;
+ case 12 :
+ stringType = "MODIFYDN RESPONSE";
+ break;
+ case 13 :
+ stringType = "MODIFY REQUEST";
+ break;
+ case 14 :
+ stringType = "MODIFY RESPONSE";
+ break;
+ case 15 :
+ stringType = "SEARCH REQUEST";
+ break;
+ case 16 :
+ stringType = "SEARCH RESULT DONE";
+ break;
+ case 17 :
+ stringType = "SEARCH RESULT ENTRY";
+ break;
+ case 18 :
+ stringType = "SEARCH RESULT REFERENCE";
+ break;
+ case 19 :
+ stringType = "UNBIND REQUEST";
+ break;
+ case -1 :
+ stringType = "UNKNOWN";
+ break;
+
+ default :
+ stringType = "UNKNOWN";
+ break;
+ }
+ return stringType;
+ }
+
+ public void run()
+ {
+ InputStream clientIn = null;
+ OutputStream clientOut = null;
+ InputStream serverIn = null;
+ OutputStream serverOut = null;
+ Socket toServer = null;
+ int r0 = -1;
+ int r1 = -1;
+ int ch = -1;
+ int i = -1;
+ long time0 = System.currentTimeMillis();
+ long time1 = time0 + timeout;
+
+ try
+ {
+ toServer = new Socket( host, port );
+ System.out.println( "open connection to:" + toServer + "(timeout=" + timeout + " ms)" );
+ clientIn = fromClient.getInputStream();
+ clientOut = new BufferedOutputStream( fromClient.getOutputStream() );
+ serverIn = toServer.getInputStream();
+ serverOut = new BufferedOutputStream( toServer.getOutputStream() );
+
+ while ( r0 != 0 || r1 != 0 || ( time1 - time0 ) <= timeout )
+ {
+ r0 = clientIn.available();
+
+ if ( r0 != 0 )
+ {
+ System.out.println( "" );
+ // LdapProxy.setTextIn("<<<" + r0 + " bytes from client
+ // \n","red");
+ System.out.println( "" );
+ System.out.println( "<<<" + r0 + " bytes from client" );
+ System.out.println( "<<<" + r1 + " bytes from server" );
+ }
+
+ ByteBuffer bb = null;
+
+ while ( ( r0 = clientIn.available() ) > 0 )
+ {
+ byte[] in = new byte[r0];
+ int k = 0;
+
+ for ( i = 0; i < r0; i++ )
+ {
+ ch = clientIn.read();
+
+ if ( ch != -1 )
+ {
+ in[k++] = (byte) ch;
+ serverOut.write( ch );
+ }
+ else
+ {
+ System.out.println( "client stream closed" );
+ // LdapProxy.setTextIn("client stream closed
+ // \n","redbold");
+ }
+ }
+
+ bb = ByteBuffer.allocate( r0 );
+ bb.put( in );
+ bb.flip();
+
+ while ( bb.hasRemaining() )
+ {
+ decode( bb );
+ }
+
+ /*
+ * LdapProxy.setTextIn("--->>>\n", "regular");
+ * LdapProxy.setTextIn(result, "regular");
+ * LdapProxy.setTextIn("----------------------------------\n",
+ * "regular");
+ */
+
+ time0 = System.currentTimeMillis();
+ serverOut.flush();
+ }
+
+ bb = null;
+
+ while ( ( r1 = serverIn.available() ) > 0 )
+ {
+ System.out.println( "" );
+ System.out.println( ">>>" + r1 + " bytes from server" );
+ // LdapProxy.setTextOut(">>>" + r1 + " bytes from server
+ // \n","red");
+ System.out.println( "" );
+ System.out.println( ">>>" + r1 + " bytes from server" );
+
+ byte[] out = new byte[r1];
+ int k = 0;
+
+ for ( i = 0; i < r1; i++ )
+ {
+ ch = serverIn.read();
+
+ if ( ch != -1 )
+ {
+ out[k++] = (byte) ch;
+ }
+ else
+ {
+ System.out.println( "server stream closed" );
+ // LdapProxy.setTextOut("server stream closed
+ // \n","redbold");
+ break;
+ }
+
+ clientOut.write( ch );
+ }
+
+ bb = ByteBuffer.allocate( r1 );
+ bb.put( out );
+ bb.flip();
+
+ while ( true )
+ {
+ try
+ {
+ String result = decode( bb );
+ System.out.println( result );
+ /*
+ * LdapProxy.setTextOut("<<<---\n", "blue");
+ * LdapProxy.setTextOut(result, "blue");
+ * LdapProxy.setTextOut("----------------------------------\n",
+ * "regular");
+ */
+ if ( bb.hasRemaining() == false )
+ {
+ break;
+ }
+ }
+ catch ( DecoderException de )
+ {
+ StringBuffer result = new StringBuffer();
+ result.append( de.getMessage() ).append( '\n' );
+
+ byte[] tmp = new byte[out.length - bb.position()];
+ System.arraycopy( out, bb.position(), tmp, 0, out.length - bb.position() );
+ result.append( StringUtils.dumpBytes( tmp ) );
+
+ System.out.println( result );
+ /*
+ * LdapProxy.setTextOut("<<<---\n", "regular");
+ * LdapProxy.setTextOut(new String(tmp), "regular");
+ * LdapProxy.setTextOut("----------------------------------\n",
+ * "regular");
+ */
+ break;
+ }
+ }
+
+ time0 = new Date().getTime();
+ clientOut.flush();
+ }
+ if ( r0 == 0 && r1 == 0 )
+ {
+ time1 = new Date().getTime();
+ Thread.sleep( 100 );
+ // Proxy.display("waiting:"+(time1-time0)+" ms");
+ }
+ }
+ }
+ catch ( Throwable t )
+ {
+ System.out.println( "i=" + i + " ch=" + ch );
+ t.printStackTrace( System.err );
+ }
+ finally
+ {
+ try
+ {
+ clientIn.close();
+ clientOut.close();
+ serverIn.close();
+ serverOut.close();
+ fromClient.close();
+ toServer.close();
+ LdapProxy.quit( time1 - time0 );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace( System.err );
+ }
+ }
+ }
+
+ /*
+ * public void setTextIn(JTextPane textIn) { this.textIn = textIn; } public
+ * void setTextOut(JTextPane textOut) { this.textOut = textOut; }
+ */
+
+ public void setMainFrame( MainFrame mainframe )
+ {
+ this.mainFrame = mainframe;
+ }
}