-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
1.1.4
-
sparc
-
solaris_2.5.1
Name: dgC58589 Date: 11/21/97
I use 'java BeanDumper frogbean.Frog' with the class
frogbean.Spots missing and I get
$javac BeanDumper.java
$javac frogbean.Frog.java
$ rm frogbean/Spots.class
$java BeanDumper frogbean.Frog
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java)
at java.beans.Introspector.getDeclaredMethods(Introspector.java:735)
at java.beans.Introspector.getTargetEventInfo(Introspector.java:444)
at java.beans.Introspector.getBeanInfo(Introspector.java:200)
at java.beans.Introspector.getBeanInfo(Introspector.java:102)
at BeanDumper.dump(BeanDumper.java:10)
at BeanDumper.main(BeanDumper.java:95)
It should complain that the class Spots could not be loaded !!!
------- BeanDumper.java -------------------
// A method to introspect a Bean
import java.beans.*;
import java.lang.reflect.*;
public class BeanDumper {
public static void dump(Class bean){
BeanInfo bi = null;
try {
bi = Introspector.getBeanInfo(
bean, java.lang.Object.class);
} catch(IntrospectionException ex) {
System.out.println("Couldn't introspect " +
bean.getName());
System.exit(1);
}
PropertyDescriptor properties[] =
bi.getPropertyDescriptors();
for(int i = 0; i < properties.length; i++) {
Class p = properties[i].getPropertyType();
System.out.println(
"Property type:\n " + p.getName());
System.out.println(
"Property name:\n " +
properties[i].getName());
Method readMethod =
properties[i].getReadMethod();
if(readMethod != null)
System.out.println(
"Read method:\n " +
readMethod.toString());
Method writeMethod =
properties[i].getWriteMethod();
if(writeMethod != null)
System.out.println(
"Write method:\n " +
writeMethod.toString());
System.out.println("====================");
}
System.out.println("Public methods:");
MethodDescriptor methods[] =
bi.getMethodDescriptors();
for(int i = 0; i < methods.length; i++)
System.out.println(
methods[i].getMethod().toString());
System.out.println("======================");
System.out.println("Event support:");
EventSetDescriptor events[] =
bi.getEventSetDescriptors();
for(int i = 0; i < events.length; i++) {
System.out.println("Listener type:\n " +
events[i].getListenerType().getName());
Method lm[] =
events[i].getListenerMethods();
for(int j = 0; j < lm.length; j++)
System.out.println(
"Listener method:\n " +
lm[j].getName());
MethodDescriptor lmd[] =
events[i].getListenerMethodDescriptors();
for(int j = 0; j < lmd.length; j++)
System.out.println(
"Method descriptor:\n " +
lmd[j].getMethod().toString());
Method addListener =
events[i].getAddListenerMethod();
System.out.println(
"Add Listener Method:\n " +
addListener.toString());
Method removeListener =
events[i].getRemoveListenerMethod();
System.out.println(
"Remove Listener Method:\n " +
removeListener.toString());
System.out.println("====================");
}
}
// Dump the class of your choice:
public static void main(String args[]) {
if(args.length < 1) {
System.err.println("usage: \n" +
"BeanDumper fully.qualified.class");
System.exit(0);
}
Class c = null;
try {
c = Class.forName(args[0]);
if (c == null)
System.out.println("Class is null");
} catch(ClassNotFoundException ex) {
System.err.println(
"Couldn't find " + args[0]);
System.exit(0);
}
dump(c);
}
} ///:~
--------- frogbean/Frog.java -----------
package frogbean;
import java.awt.*;
import java.awt.event.*;
class Spots {}
public class Frog {
private int jumps;
private Color color;
private Spots spots;
private boolean jmpr;
public int getJumps() { return jumps; }
public void setJumps(int newJumps) {
jumps = newJumps;
}
public Color getColor() { return color; }
public void setColor(Color newColor) {
color = newColor;
}
public Spots getSpots() { return spots; }
public void setSpots(Spots newSpots) {
spots = newSpots;
}
public boolean isJumper() { return jmpr; }
public void setJumper(boolean j) { jmpr = j; }
public void addActionListener(
ActionListener l) {
//...
}
public void removeActionListener(
ActionListener l) {
// ...
}
public void addKeyListener(KeyListener l) {
// ...
}
public void removeKeyListener(KeyListener l) {
// ...
}
// An "ordinary" public method:
public void croak() {
System.out.println("Ribbet!");
}
} ///:~
(Review ID: 20426)
======================================================================
- duplicates
-
JDK-4137722 getDeclaredMethods() returns NULL (no exception)
-
- Closed
-