undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
203
test/jdk/java/beans/Introspector/BeanUtils.java
Normal file
203
test/jdk/java/beans/Introspector/BeanUtils.java
Normal file
|
|
@ -0,0 +1,203 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.beans.BeanDescriptor;
|
||||
import java.beans.EventSetDescriptor;
|
||||
import java.beans.IndexedPropertyDescriptor;
|
||||
import java.beans.IntrospectionException;
|
||||
import java.beans.Introspector;
|
||||
import java.beans.MethodDescriptor;
|
||||
import java.beans.PropertyDescriptor;
|
||||
|
||||
/**
|
||||
* This class contains utilities useful for JavaBeans regression testing.
|
||||
*/
|
||||
public final class BeanUtils {
|
||||
/**
|
||||
* Disables instantiation.
|
||||
*/
|
||||
private BeanUtils() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a bean descriptor for specified class.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @return a bean descriptor
|
||||
*/
|
||||
public static BeanDescriptor getBeanDescriptor(Class type) {
|
||||
try {
|
||||
return Introspector.getBeanInfo(type).getBeanDescriptor();
|
||||
} catch (IntrospectionException exception) {
|
||||
throw new Error("unexpected exception", exception);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of property descriptors for specified class.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @return an array of property descriptors
|
||||
*/
|
||||
public static PropertyDescriptor[] getPropertyDescriptors(Class type) {
|
||||
try {
|
||||
return Introspector.getBeanInfo(type).getPropertyDescriptors();
|
||||
} catch (IntrospectionException exception) {
|
||||
throw new Error("unexpected exception", exception);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of event set descriptors for specified class.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @return an array of event set descriptors
|
||||
*/
|
||||
public static EventSetDescriptor[] getEventSetDescriptors(Class type) {
|
||||
try {
|
||||
return Introspector.getBeanInfo(type).getEventSetDescriptors();
|
||||
} catch (IntrospectionException exception) {
|
||||
throw new Error("unexpected exception", exception);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds an event set descriptor for the class
|
||||
* that matches the event set name.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @param name the name of the event set to search
|
||||
* @return the {@code EventSetDescriptor} or {@code null}
|
||||
*/
|
||||
public static EventSetDescriptor findEventSetDescriptor(Class type, String name) {
|
||||
EventSetDescriptor[] esds = getEventSetDescriptors(type);
|
||||
for (EventSetDescriptor esd : esds) {
|
||||
if (esd.getName().equals(name)) {
|
||||
return esd;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds a property descriptor for the class
|
||||
* that matches the property name.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @param name the name of the property to search
|
||||
* @return the {@code PropertyDescriptor}, {@code IndexedPropertyDescriptor} or {@code null}
|
||||
*/
|
||||
public static PropertyDescriptor findPropertyDescriptor(Class type, String name) {
|
||||
PropertyDescriptor[] pds = getPropertyDescriptors(type);
|
||||
for (PropertyDescriptor pd : pds) {
|
||||
if (pd.getName().equals(name)) {
|
||||
return pd;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a event set descriptor for the class
|
||||
* that matches the property name.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @param name the name of the event set to search
|
||||
* @return the {@code EventSetDescriptor}
|
||||
*/
|
||||
public static EventSetDescriptor getEventSetDescriptor(Class type, String name) {
|
||||
EventSetDescriptor esd = findEventSetDescriptor(type, name);
|
||||
if (esd != null) {
|
||||
return esd;
|
||||
}
|
||||
throw new Error("could not find event set '" + name + "' in " + type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a property descriptor for the class
|
||||
* that matches the property name.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @param name the name of the property to search
|
||||
* @return the {@code PropertyDescriptor}
|
||||
*/
|
||||
public static PropertyDescriptor getPropertyDescriptor(Class type, String name) {
|
||||
PropertyDescriptor pd = findPropertyDescriptor(type, name);
|
||||
if (pd != null) {
|
||||
return pd;
|
||||
}
|
||||
throw new Error("could not find property '" + name + "' in " + type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an indexed property descriptor for the class
|
||||
* that matches the property name.
|
||||
*
|
||||
* @param type the class to introspect
|
||||
* @param name the name of the property to search
|
||||
* @return the {@code IndexedPropertyDescriptor}
|
||||
*/
|
||||
public static IndexedPropertyDescriptor getIndexedPropertyDescriptor(Class type, String name) {
|
||||
PropertyDescriptor pd = findPropertyDescriptor(type, name);
|
||||
if (pd instanceof IndexedPropertyDescriptor) {
|
||||
return (IndexedPropertyDescriptor) pd;
|
||||
}
|
||||
reportPropertyDescriptor(pd);
|
||||
throw new Error("could not find indexed property '" + name + "' in " + type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reports all the interesting information in an Indexed/PropertyDescrptor.
|
||||
*/
|
||||
public static void reportPropertyDescriptor(PropertyDescriptor pd) {
|
||||
System.out.println("property name: " + pd.getName());
|
||||
System.out.println(" type: " + pd.getPropertyType());
|
||||
System.out.println(" read: " + pd.getReadMethod());
|
||||
System.out.println(" write: " + pd.getWriteMethod());
|
||||
if (pd instanceof IndexedPropertyDescriptor) {
|
||||
IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd;
|
||||
System.out.println(" indexed type: " + ipd.getIndexedPropertyType());
|
||||
System.out.println(" indexed read: " + ipd.getIndexedReadMethod());
|
||||
System.out.println(" indexed write: " + ipd.getIndexedWriteMethod());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reports all the interesting information in an EventSetDescriptor
|
||||
*/
|
||||
public static void reportEventSetDescriptor(EventSetDescriptor esd) {
|
||||
System.out.println("event set name: " + esd.getName());
|
||||
System.out.println(" listener type: " + esd.getListenerType());
|
||||
System.out.println(" method get: " + esd.getGetListenerMethod());
|
||||
System.out.println(" method add: " + esd.getAddListenerMethod());
|
||||
System.out.println(" method remove: " + esd.getRemoveListenerMethod());
|
||||
}
|
||||
|
||||
/**
|
||||
* Reports all the interesting information in a MethodDescriptor
|
||||
*/
|
||||
public static void reportMethodDescriptor(MethodDescriptor md) {
|
||||
System.out.println("method name: " + md.getName());
|
||||
System.out.println(" method: " + md.getMethod());
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue