AuthenticationDemoPanel.java
资源名称:swingx.zip [点击查看]
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:23k
源码类别:
xml/soap/webservice
开发平台:
Java
- /*
- * $Id: AuthenticationDemoPanel.java,v 1.6 2005/06/24 18:47:00 kleopatra Exp $
- *
- * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
- * Santa Clara, California 95054, U.S.A. All rights reserved.
- */
- package org.jdesktop.demo.swingx;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.StringReader;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.Arrays;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Stack;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import org.jdesktop.binding.swingx.DirectListBinding;
- import org.jdesktop.binding.swingx.LabelBinding;
- import org.jdesktop.dataset.DataRelation;
- import org.jdesktop.dataset.DataRelationTable;
- import org.jdesktop.dataset.DataRow;
- import org.jdesktop.dataset.DataSet;
- import org.jdesktop.dataset.DataTable;
- import org.jdesktop.dataset.adapter.DataModelAdapter;
- import org.jdesktop.dataset.adapter.SelectionModelAdapter;
- import org.jdesktop.dataset.adapter.TabularDataModelAdapter;
- import org.jdesktop.demo.DemoPanel;
- import org.jdesktop.demo.login.romain.LoginDialog;
- import org.jdesktop.swingx.JXErrorDialog;
- import org.jdesktop.swingx.JXLoginDialog;
- import org.jdesktop.swingx.auth.DefaultUserNameStore;
- import org.jdesktop.swingx.auth.LoginService;
- import org.jdesktop.swingx.auth.PasswordStore;
- import org.xml.sax.InputSource;
- import org.xml.sax.helpers.DefaultHandler;
- /**
- * Demonstrates the JXGlassBox component.
- *
- * @author rbair
- */
- public class AuthenticationDemoPanel extends DemoPanel {
- private DataSet ds;
- private DataTable messages;
- private DataTable threads;
- /** Creates new form JXGlassBoxDemoPanel */
- public AuthenticationDemoPanel() {
- setName("Authentication/Login Demo");
- initComponents();
- ds = new DataSet();
- messages = ds.createTable("Messages");
- messages.createColumns("messageId", "title", "link", "description", "creationDate", "modificationDate", "messageCount", "author", "replyCount");
- SelectionModelAdapter selModel = new SelectionModelAdapter(messages.getSelector("current"));
- new DirectListBinding(messageList, new TabularDataModelAdapter(messages), "description", selModel);
- threads = ds.createTable("Threads");
- threads.createColumns("messageId", "guest", "subject", "timestamp", "message");
- DataRelation rel = ds.createRelation("message_thread");
- rel.setChildColumn(threads.getColumn("messageId"));
- rel.setParentColumn(messages.getColumn("messageId"));
- DataRelationTable relTable = ds.createRelationTable("messageThreads");
- relTable.setParentSelector(messages.getSelector("current"));
- relTable.setParentTable(messages);
- relTable.setRelation(rel);
- DataModelAdapter dm = new DataModelAdapter(relTable.getSelector("current"));
- new LabelBinding(guestLabel, dm, "guest");
- new LabelBinding(subjectLabel, dm, "subject");
- new LabelBinding(timestampLabel, dm, "timestamp");
- // new TextBinding()
- // new DirectTableBinding(messageTable, new TabularDataModelAdapter(threads));
- }
- public String getHtmlDescription() {
- return "<html>Click on one of the buttons to lauch a login dialog</html>";
- }
- public String getName() {
- return "Authentication Dialogs";
- }
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
- private void initComponents() {
- java.awt.GridBagConstraints gridBagConstraints;
- simpleAuthDialogBtn = new javax.swing.JButton();
- romainAuthDialogBtn = new javax.swing.JButton();
- jSplitPane1 = new javax.swing.JSplitPane();
- jScrollPane1 = new javax.swing.JScrollPane();
- messageList = new org.jdesktop.swingx.JXList();
- jPanel1 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- guestLabel = new javax.swing.JLabel();
- jLabel3 = new javax.swing.JLabel();
- subjectLabel = new javax.swing.JLabel();
- jLabel5 = new javax.swing.JLabel();
- timestampLabel = new javax.swing.JLabel();
- messageLabel = new javax.swing.JLabel();
- jScrollPane2 = new javax.swing.JScrollPane();
- jEditorPane1 = new javax.swing.JEditorPane();
- setLayout(new java.awt.GridBagLayout());
- simpleAuthDialogBtn.setText("Simple Login Dialog");
- simpleAuthDialogBtn.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- simpleAuthDialogBtnActionPerformed(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(12, 12, 11, 11);
- add(simpleAuthDialogBtn, gridBagConstraints);
- romainAuthDialogBtn.setText("Romain Login Dialog");
- romainAuthDialogBtn.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- romainAuthDialogBtnActionPerformed(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(12, 12, 11, 11);
- add(romainAuthDialogBtn, gridBagConstraints);
- jScrollPane1.setViewportView(messageList);
- jSplitPane1.setLeftComponent(jScrollPane1);
- jPanel1.setLayout(new java.awt.GridBagLayout());
- jLabel1.setText("Guest:");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
- gridBagConstraints.insets = new java.awt.Insets(11, 12, 0, 0);
- jPanel1.add(jLabel1, gridBagConstraints);
- guestLabel.setText(" ");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(11, 5, 0, 11);
- jPanel1.add(guestLabel, gridBagConstraints);
- jLabel3.setText("Subject:");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
- gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 0);
- jPanel1.add(jLabel3, gridBagConstraints);
- subjectLabel.setText(" ");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 11);
- jPanel1.add(subjectLabel, gridBagConstraints);
- jLabel5.setText("Timestamp:");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
- gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 0);
- jPanel1.add(jLabel5, gridBagConstraints);
- timestampLabel.setText(" ");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 11);
- jPanel1.add(timestampLabel, gridBagConstraints);
- messageLabel.setText("Message");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 3;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 0);
- jPanel1.add(messageLabel, gridBagConstraints);
- jScrollPane2.setViewportView(jEditorPane1);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 4;
- gridBagConstraints.gridwidth = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.weighty = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(3, 12, 11, 11);
- jPanel1.add(jScrollPane2, gridBagConstraints);
- jSplitPane1.setRightComponent(jPanel1);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.weighty = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(0, 12, 11, 12);
- add(jSplitPane1, gridBagConstraints);
- }
- // </editor-fold>//GEN-END:initComponents
- private void romainAuthDialogBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_romainAuthDialogBtnActionPerformed
- //show the Romain Guy login dialog special :)
- LoginDialog dlg = new LoginDialog(new NullLoginService());
- dlg.setVisible(true);
- }//GEN-LAST:event_romainAuthDialogBtnActionPerformed
- private void simpleAuthDialogBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_simpleAuthDialogBtnActionPerformed
- try {
- JXLoginDialog dlg = new JXLoginDialog(new NullLoginService(), new NullPasswordStore(), new DefaultUserNameStore());
- dlg.setVisible(true);
- // JXLoginPanel.showLoginDialog(null, "name", "", new NullLoginService(), new NullPasswordStore(), banner, label, JXLoginPanel.SAVE_NONE);
- } catch (Exception e) {
- JXErrorDialog.showDialog(null, "Application Error", e);
- }
- }//GEN-LAST:event_simpleAuthDialogBtnActionPerformed
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JLabel guestLabel;
- private javax.swing.JEditorPane jEditorPane1;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JLabel jLabel5;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JScrollPane jScrollPane2;
- private javax.swing.JSplitPane jSplitPane1;
- private javax.swing.JLabel messageLabel;
- private org.jdesktop.swingx.JXList messageList;
- private javax.swing.JButton romainAuthDialogBtn;
- private javax.swing.JButton simpleAuthDialogBtn;
- private javax.swing.JLabel subjectLabel;
- private javax.swing.JLabel timestampLabel;
- // End of variables declaration//GEN-END:variables
- private static final class NullPasswordStore extends PasswordStore {
- public boolean set(String username, String server, char[] password) {
- return false;
- }
- public char[] get(String username, String server) {
- return new char[0];
- }
- }
- private final class NullLoginService extends LoginService {
- NullLoginService() {
- super("java.net");
- }
- public boolean authenticate(String name, char[] password, String server) {
- try {
- System.setProperty("http.proxyHost", "webcache.central");
- System.setProperty("http.proxyPort", "8080");
- URL url = new URL("http://www.javadesktop.org/forums/login!default.jspa?referrer=index.jspa");
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- String sessionId = conn.getHeaderField("Set-cookie");
- sessionId = sessionId.substring(0, sessionId.indexOf(";"));
- System.out.println(sessionId);
- conn.disconnect();
- url = new URL("http://www.javadesktop.org/forums/login.jspa");
- conn = (HttpURLConnection)url.openConnection();
- conn.setInstanceFollowRedirects(false);
- conn.setRequestProperty("Cookie", sessionId);
- conn.setRequestMethod("POST");
- String output = "username=" + name + "&password=" + new String(password) + "&autoLogin=true&doLogin=Login";
- conn.setFixedLengthStreamingMode(output.length());
- conn.setDoOutput(true);
- OutputStream os = conn.getOutputStream();
- os.write(output.getBytes());
- os.flush();
- String jiveAuthToken = conn.getHeaderField("Set-cookie");
- jiveAuthToken = jiveAuthToken.substring(0, jiveAuthToken.indexOf(";"));
- System.out.println(jiveAuthToken);
- conn.disconnect();
- url = new URL("http://javadesktop.org/forums/rss/rssthreads.jsp?forumID=53");
- conn = (HttpURLConnection)url.openConnection();
- conn.setInstanceFollowRedirects(false);
- conn.setRequestProperty("Cookie", sessionId + "; " + jiveAuthToken);
- InputStream is = conn.getInputStream();
- byte[] data = new byte[1024];
- int length = -1;
- StringBuilder buffer = new StringBuilder();
- while ((length = is.read(data)) != -1) {
- buffer.append(new String(data, 0, length));
- }
- is.close();
- conn.disconnect();
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser parser = factory.newSAXParser();
- parser.parse(new InputSource(new StringReader(buffer.toString())), new DefaultHandler() {
- private Stack<String> tags = new Stack<String>();
- private String data;
- private DataRow row;
- public void characters(char[] ch, int start, int length) throws org.xml.sax.SAXException {
- data = new String(ch, start, length);
- }
- public void startElement(String uri, String localName, String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException {
- tags.push(qName);
- }
- public void endElement(String uri, String localName, String qName) throws org.xml.sax.SAXException {
- String name = tags.pop();
- String parentName = tags.size() > 0 ? tags.peek() : null;
- //if the parent was "channel"
- if (parentName != null && parentName.equals("channel")) {
- if (name.equals("title")) {
- System.out.println("Title: " + data);
- } else if (name.equals("link")) {
- System.out.println("URL: " + data);
- } else if (name.equals("description")) {
- System.out.println("Description: " + data);
- } else if (name.equals("language")) {
- System.out.println("Language: " + data);
- }
- } else if (parentName != null && parentName.equals("item")) {
- //if the parent was "item"
- if (name.equals("title")) {
- row = messages.appendRow();
- row.setValue("messageId", messages.getRowCount());
- row.setValue("title", data);
- } else if (name.equals("link")) {
- row.setValue("link", data);
- } else if (name.equals("description")) {
- row.setValue("description", data);
- } else if (name.equals("jf:creationDate")) {
- row.setValue("creationDate", data);
- } else if (name.equals("jf:modificationDate")) {
- row.setValue("modificationDate", data);
- } else if (name.equals("jf:messageCount")) {
- row.setValue("messageCount", data);
- } else if (name.equals("jf:author")) {
- row.setValue("author", data);
- } else if (name.equals("jf:replyCount")) {
- row.setValue("replyCount", data);
- row.setStatus(DataRow.DataRowStatus.UNCHANGED);
- //now, load the thread data for this message
- try {
- URL url = new URL((String)row.getValue("link"));
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- InputStream is = conn.getInputStream();
- byte[] data = new byte[1024];
- int length = -1;
- StringBuilder buffer = new StringBuilder();
- while ((length = is.read(data)) != -1) {
- buffer.append(new String(data, 0, length));
- }
- //iterate over all the lines
- List<String> lines = Arrays.asList(buffer.toString().split("\n"));
- Iterator<String> itr = lines.iterator();
- DataRow threadRow = null;
- while (itr.hasNext()) {
- String line = itr.next();
- if (line.contains("<span class="jive-guest">")) {
- String guest = parseGuest(itr);
- if (!guest.startsWith("<nobr>")) {
- threadRow = threads.appendRow();
- threadRow.setValue("guest", guest);
- threadRow.setValue("messageId", row.getValue("messageId"));
- }
- } else if (line.contains("<span class="jive-subject">")) {
- String subject = parseSubject(itr);
- if (threadRow != null) {
- threadRow.setValue("subject", subject);
- String timestamp = parseTimestamp(itr);
- threadRow.setValue("timestamp", timestamp);
- }
- } else if (line.contains("<td colspan="2" style="border-top: 1px #ccc solid;">")) {
- String message = parseMessage(itr);
- if (threadRow != null) {
- threadRow.setValue("message", message);
- threadRow.setStatus(DataRow.DataRowStatus.UNCHANGED);
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- });
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- private String parseGuest(Iterator<String> itr) {
- StringBuilder buffer = new StringBuilder();
- while (itr.hasNext()) {
- String line = itr.next();
- if (line.contains("</span>")) {
- return buffer.toString().trim();
- } else {
- buffer.append(removeBreakTags(line));
- }
- }
- return "";
- }
- private String parseSubject(Iterator<String> itr) {
- StringBuilder buffer = new StringBuilder();
- while (itr.hasNext()) {
- String line = itr.next();
- if (line.contains("</span>")) {
- return buffer.toString().trim();
- } else if (line.contains("<a")) {
- //skip it
- } else {
- //if the line contains any <br> tags, remove them
- buffer.append(removeBreakTags(line));
- }
- }
- return "";
- }
- private String parseTimestamp(Iterator<String> itr) {
- StringBuilder buffer = new StringBuilder();
- while (itr.hasNext()) {
- String line = itr.next();
- if (line.contains("</td>")) {
- return buffer.toString().trim();
- } else if (line.contains("Posted:")) {
- //skip it
- } else {
- buffer.append(removeBreakTags(line));
- }
- }
- return "";
- }
- private String parseMessage(Iterator<String> itr) {
- StringBuilder buffer = new StringBuilder();
- while (itr.hasNext()) {
- String line = itr.next();
- if (line.contains("</td>")) {
- return buffer.toString().trim();
- } else {
- buffer.append(line);
- }
- }
- return "";
- }
- private String removeBreakTags(String line) {
- return line.replaceAll("\<br\>", "");
- }
- }
- }