// Decompiled by DJ v2.9.9.61 Copyright 2000 Atanas Neshkov Date: 10/07/2007 15:50:01 // Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: Decorator.java package org.displaytag.decorator; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import javax.servlet.jsp.PageContext; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang.BooleanUtils; abstract class Decorator { Decorator() { } public void init(PageContext context, Object decorated) { pageContext = context; decoratedObject = decorated; } public PageContext getPageContext() { return pageContext; } public Object getDecoratedObject() { return decoratedObject; } public void finish() { pageContext = null; decoratedObject = null; } public boolean hasGetterFor(String propertyName) { String simpleProperty = propertyName; int indexOfDot = simpleProperty.indexOf('.'); if(indexOfDot > 0) simpleProperty = simpleProperty.substring(0, indexOfDot); Boolean cachedResult = (Boolean)propertyMap.get(getClass().getName() + '#' + simpleProperty); if(cachedResult != null) { return cachedResult.booleanValue(); } else { boolean hasGetter = searchGetterFor(propertyName); propertyMap.put(getClass().getName() + '#' + simpleProperty, BooleanUtils.toBooleanObject(hasGetter)); return hasGetter; } } public boolean searchGetterFor(String propertyName) { Class type = null; try { type = PropertyUtils.getPropertyType(this, propertyName); } catch(IllegalAccessException e) { } catch(InvocationTargetException e) { } catch(NoSuchMethodException e) { } return type != null; } private static final char CLASS_PROPERTY_SEPARATOR = 35; private static Map propertyMap = new HashMap(); private PageContext pageContext; private Object decoratedObject; }