⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soapmonitorapplet.java

📁 Spring2.0宝典
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            } else {                // Already started            }            if (socket != null) {                // Make sure the right buttons are enabled                start_button.setEnabled(false);                stop_button.setEnabled(true);                setStatus(STATUS_ACTIVE);            }        }        /**         * Stop talking to the server         */        public void stop() {            if (socket != null) {                // Close all the streams and socket                if (out != null) {                    try {                        out.close();                    } catch (IOException ioe) {                    }                    out = null;                }                if (in != null) {                    try {                        in.close();                    } catch (IOException ioe) {                    }                    in = null;                }                if (socket != null) {                    try {                        socket.close();                    } catch (IOException ioe) {                    }                    socket = null;                }            } else {                // Already stopped            }            // Make sure the right buttons are enabled            start_button.setEnabled(true);            stop_button.setEnabled(false);            setStatus(STATUS_STOPPED);        }        /**         * Background thread used to receive data from         * the server.         */        public void run() {            Long            id;            Integer         message_type;            String          target;            String          soap;            SOAPMonitorData data;            int             selected;            int             row;            boolean         update_needed;            while (socket != null) {                try {                    // Get the data from the server                    message_type = (Integer) in.readObject();                    // Process the data depending on its type                    switch (message_type.intValue()) {                        case SOAPMonitorConstants.SOAP_MONITOR_REQUEST:                            // Get the id, target and soap info                            id = (Long) in.readObject();                            target = (String) in.readObject();                            soap = (String) in.readObject();                            // Add new request data to the table                            data = new SOAPMonitorData(id,target,soap);                            model.addData(data);                            // If "most recent" selected then update                            // the details area if needed                            selected = table.getSelectedRow();                            if ((selected == 0) && model.filterMatch(data)) {                                valueChanged(null);                            }                            break;                        case SOAPMonitorConstants.SOAP_MONITOR_RESPONSE:                            // Get the id and soap info                            id = (Long) in.readObject();                            soap = (String) in.readObject();                            data = model.findData(id);                            if (data != null) {                                update_needed = false;                                // Get the selected row                                selected = table.getSelectedRow();                                // If "most recent", then always                                // update details area                                if (selected == 0) {                                    update_needed = true;                                }                                // If the data being updated is                                // selected then update details                                row = model.findRow(data);                                if ((row != -1) && (row == selected)) {                                    update_needed = true;                                }                                // Set the response and update table                                data.setSOAPResponse(soap);                                model.updateData(data);                                // Refresh details area (if needed)                                if (update_needed) {                                    valueChanged(null);                                }                            }                            break;                    }                } catch (Exception e) {                    // Exceptions are expected here when the                    // server communication has been terminated.                    if (stop_button.isEnabled()) {                        stop();                        setErrorStatus(STATUS_CLOSED);                    }                }            }        }        /**         * Listener to handle table selection changes         */        public void valueChanged(ListSelectionEvent e) {            int row = table.getSelectedRow();            // Check if they selected a specific row            if (row > 0) {                remove_button.setEnabled(true);            } else {                remove_button.setEnabled(false);            }            // Check for "most recent" selection            if (row == 0) {                row = model.getRowCount() - 1;                if (row == 0) {                    row = -1;                }            }            if (row == -1) {                // Clear the details panel                details_time_value.setText("");                details_target_value.setText("");                details_status_value.setText("");                request_text.setText("");                response_text.setText("");            } else {                // Show the details for the row                SOAPMonitorData soap = model.getData(row);                details_time_value.setText(soap.getTime());                details_target_value.setText(soap.getTargetService());                details_status_value.setText(soap.getStatus());                if (soap.getSOAPRequest() == null) {                    request_text.setText("");                } else {                    request_text.setText(soap.getSOAPRequest());                    request_text.setCaretPosition(0);                }                if (soap.getSOAPResponse() == null) {                    response_text.setText("");                } else {                    response_text.setText(soap.getSOAPResponse());                    response_text.setCaretPosition(0);                }            }        }        /**         * Listener to handle button actions         */        public void actionPerformed(ActionEvent e) {            // Check if the user pressed the remove button            if (e.getSource() == remove_button) {                int row = table.getSelectedRow();                model.removeRow(row);                table.clearSelection();                table.repaint();                valueChanged(null);            }            // Check if the user pressed the remove all button            if (e.getSource() == remove_all_button) {                model.clearAll();                table.setRowSelectionInterval(0,0);                table.repaint();                valueChanged(null);            }            // Check if the user pressed the filter button            if (e.getSource() == filter_button) {                filter.showDialog();                if (filter.okPressed()) {                    // Update the display with new filter                    model.setFilter(filter);                    table.repaint();                }            }            // Check if the user pressed the start button            if (e.getSource() == start_button) {                start();            }            // Check if the user pressed the stop button            if (e.getSource() == stop_button) {                stop();            }            // Check if the user wants to switch layout            if (e.getSource() == layout_button) {                details_panel.remove(details_soap);                details_soap.removeAll();                if (details_soap.getOrientation() == JSplitPane.HORIZONTAL_SPLIT) {                    details_soap = new JSplitPane(JSplitPane.VERTICAL_SPLIT);                } else {                    details_soap = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);                }                details_soap.setTopComponent(request_panel);                details_soap.setRightComponent(response_panel);                details_soap.setResizeWeight(.5);                details_panel.add(details_soap, BorderLayout.CENTER);                details_panel.validate();                details_panel.repaint();            }            // Check if the user is changing the reflow option            if (e.getSource() == reflow_xml) {                request_text.setReflowXML(reflow_xml.isSelected());                response_text.setReflowXML(reflow_xml.isSelected());            }        }    }    /**     * This class represend the data for a SOAP request/response pair     */    class SOAPMonitorData {        /**         * Private data         */        private Long    id;        private String  time;        private String  target;        private String  soap_request;        private String  soap_response;        /**         * Constructor         */        public SOAPMonitorData(Long id, String target, String soap_request) {            this.id = id;            // A null id is used to signal that the "most recent" entry            // is being created.            if (id == null) {                this.time = "Most Recent";                this.target = "---";                this.soap_request = null;                this.soap_response = null;            } else {                this.time = DateFormat.getTimeInstance().format(new Date());                this.target = target;                this.soap_request = soap_request;                this.soap_response = null;            }        }        /**         * Get the id for the SOAP message         */        public Long getId() {            return id;        }        /**         * Get the time the SOAP request was received by the applet         */        public String getTime() {            return time;        }        /**         * Get the SOAP request target service name         */        public String getTargetService() {            return target;        }        /**         * Get the status of the request         */        public String getStatus() {            String status = "---";            if (id != null) {                status = "Complete";                if (soap_response == null) {                    status = "Active";                }            }            return status;        }        /**         * Get the request SOAP contents         */        public String getSOAPRequest() {            return soap_request;        }        /**         * Set the resposne SOAP contents         */        public void setSOAPResponse(String response) {            soap_response = response;        }        /**         * Get the response SOAP contents         */        public String getSOAPResponse() {            return soap_response;        }    }    /**     * This table model is used to manage the table displayed     * at the top of the page to show all the SOAP messages     * we have received and to control which message details are     * to be displayed on the bottom of the page.     */    class SOAPMonitorTableModel extends AbstractTableModel {        /**         * Column titles         */        private final String[] column_names = { "Time",                                                "Target Service",                                                "Status" };        /**                                                 * Private data         */        private Vector  data;        private Vector  filter_include;        private Vector  filter_exclude;        private boolean filter_active;        private boolean filter_complete;        private Vector  filter_data;        /**         * Constructor         */        public SOAPMonitorTableModel() {            data = new Vector();            // Add "most recent" entry to top of table            SOAPMonitorData soap = new SOAPMonitorData(null,null,null);            data.addElement(soap);            filter_include = null;            filter_exclude = null;            filter_active = false;            filter_complete = false;            filter_data = null;            // By default, exclude NotificationService and            // EventViewerService messages            filter_exclude = new Vector();            filter_exclude.addElement("NotificationService");            filter_exclude.addElement("EventViewerService");            filter_data = new Vector();            filter_data.addElement(soap);        }        /**         * Get column count (part of table model interface)         */        public int getColumnCount() {            return column_names.length;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -