All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.directwebremoting.convert.ExceptionConverter Maven / Gradle / Ivy

Go to download

DWR is easy Ajax for Java. It makes it simple to call Java code directly from Javascript. It gets rid of almost all the boilerplate code between the web browser and your Java code. This version 4.0.2 works with Jakarta Servlet 4.0.2.

The newest version!
package org.directwebremoting.convert;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.util.Map;

import org.directwebremoting.ConversionException;
import org.directwebremoting.extend.PlainProperty;
import org.directwebremoting.extend.Property;
import org.directwebremoting.extend.PropertyDescriptorProperty;

/**
 * A special case of BeanConverter that doesn't convert StackTraces
 * @author Joe Walker [joe at getahead dot ltd dot uk]
 */
public class ExceptionConverter extends BeanConverter
{
    /* (non-Javadoc)
     * @see org.directwebremoting.convert.BasicBeanConverter#getPropertyDescriptors(java.lang.Class, boolean, boolean)
     */
    @Override
    public Map getPropertyMapFromClass(Class type, boolean readRequired, boolean writeRequired) throws ConversionException
    {
        Map descriptors = super.getPropertyMapFromClass(type, readRequired, writeRequired);
        descriptors.put("javaClassName", new PlainProperty("javaClassName", type.getName()));

        // Make sure Throwable's standard properties are added
        // (fix for Bean Introspector peculiarities)
        try
        {
            fixMissingThrowableProperty(descriptors, "message", "getMessage");
            fixMissingThrowableProperty(descriptors, "cause", "getCause");
        }
        catch (IntrospectionException ex)
        {
            throw new ConversionException(type, ex);
        }

        return descriptors;
    }

    /**
     * Make sure Throwable's standard properties are added
     * (fix for Bean Introspector peculiarities)
     * @param descriptors The Map of the known descriptors
     * @param name The name of the property to add
     * @param readMethodName A method name to use when getting said property
     * @throws IntrospectionException If we fail to build a PropertyDescriptor
     */
    protected void fixMissingThrowableProperty(Map descriptors, String name, String readMethodName) throws IntrospectionException
    {
        if (!descriptors.containsKey(name) && isAllowedByIncludeExcludeRules(name))
        {
            PropertyDescriptor descriptor = new PropertyDescriptor(name, Throwable.class, readMethodName, null);
            descriptors.put(name, new PropertyDescriptorProperty(descriptor));
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy