Bean Dumper
From Java Example Source Code
Contents |
[edit] Overview - Bean Dumper
This is a Java example program.
[edit] Java Source Code
- Package: com.bruceeckel
- File: BeanDumper.java
package com.bruceeckel; // : c14:BeanDumper.java // Introspecting a Bean. // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 // www.BruceEckel.com. See copyright notice in CopyRight.txt. import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.BeanInfo; import java.beans.EventSetDescriptor; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.MethodDescriptor; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class BeanDumper extends JFrame { private JTextField query = new JTextField(20); private JTextArea results = new JTextArea(); public void print(String s) { results.append(s + "\n"); } public void dump(Class bean) { results.setText(""); BeanInfo bi = null; try { bi = Introspector.getBeanInfo(bean, Object.class); } catch (IntrospectionException e) { print("Couldn't introspect " + bean.getName()); return; } PropertyDescriptor[] properties = bi.getPropertyDescriptors(); for (int i = 0; i < properties.length; i++) { Class p = properties[i].getPropertyType(); if (p == null) continue; print("Property type:\n " + p.getName() + "Property name:\n " + properties[i].getName()); Method readMethod = properties[i].getReadMethod(); if (readMethod != null) print("Read method:\n " + readMethod); Method writeMethod = properties[i].getWriteMethod(); if (writeMethod != null) print("Write method:\n " + writeMethod); print("===================="); } print("Public methods:"); MethodDescriptor[] methods = bi.getMethodDescriptors(); for (int i = 0; i < methods.length; i++) print(methods[i].getMethod().toString()); print("======================"); print("Event support:"); EventSetDescriptor[] events = bi.getEventSetDescriptors(); for (int i = 0; i < events.length; i++) { print("Listener type:\n " + events[i].getListenerType().getName()); Method[] lm = events[i].getListenerMethods(); for (int j = 0; j < lm.length; j++) print("Listener method:\n " + lm[j].getName()); MethodDescriptor[] lmd = events[i].getListenerMethodDescriptors(); for (int j = 0; j < lmd.length; j++) print("Method descriptor:\n " + lmd[j].getMethod()); Method addListener = events[i].getAddListenerMethod(); print("Add Listener Method:\n " + addListener); Method removeListener = events[i].getRemoveListenerMethod(); print("Remove Listener Method:\n " + removeListener); print("===================="); } } class Dumper implements ActionListener { public void actionPerformed(ActionEvent e) { String name = query.getText(); Class c = null; try { c = Class.forName(name); } catch (ClassNotFoundException ex) { results.setText("Couldn't find " + name); return; } dump(c); } } public BeanDumper() { Container cp = getContentPane(); JPanel p = new JPanel(); p.setLayout(new FlowLayout()); p.add(new JLabel("Qualified bean name:")); p.add(query); cp.add(BorderLayout.NORTH, p); cp.add(new JScrollPane(results)); Dumper dmpr = new Dumper(); query.addActionListener(dmpr); query.setText("frogbean.Frog"); // Force evaluation dmpr.actionPerformed(new ActionEvent(dmpr, 0, "")); } public static void main(String[] args) { run(new BeanDumper(), 600, 500); } public static void run(JFrame frame, int width, int height) { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(width, height); frame.setVisible(true); } }
[edit] What Result You Can Get
Run the program, you will get:
[edit] Required External Libraries and/or Files for this Java Example
Need nothing.
[edit] How to Run this Java Example Program
We recommend running this Java example program with Eclipse.
For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.
It's fairly easy.
[edit] Question & Answer
Any question?
Click edit and post your question or answer here.

