protected Callback createInterceptor (final Object bean, final Object ... arguments) { return new JavaBeanAspect(bean, this, arguments); } }
/*************************************************************************** * * **************************************************************************/ public JavaBeanAspect (final Object bean, final AbstractEnhancer<?> enhancer, final Object ... arguments) { this.bean = bean; fixContainedBeans(bean, enhancer, arguments); this.edtCompliant = Arrays.asList(arguments).contains(JavaBeanEnhancer.EDT_COMPLIANT); }
return doEquals(methodParameters[0]); return doGenericMethod(method, methodParameters); return doSetter(object, methodParameters, method);
/*************************************************************************** * * **************************************************************************/ private Object doSetterInEDT (final Object object, final Object[] methodParameters, final Method method) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException { final String propertyName = getPropertyName(method); final Property property = BeanProperty.create(Introspector.decapitalize(propertyName)); final Object oldValue = property.getValue(object); Object returnValue = method.invoke(bean, methodParameters); // FIXME: or proxy.invokeSuper()? if (returnValue == bean) { returnValue = object; } log.trace(">>>> {} - {} changed : {} -> {}", new Object[] { object, propertyName, oldValue, methodParameters[0] } ); propertyChangeSupport.firePropertyChange(propertyName, oldValue, methodParameters[0]); return returnValue; }
return doSetterInEDT(object, methodParameters, method);
/*************************************************************************** * * **************************************************************************/ @CheckForNull private Object interceptGet (@Nonnull final Object object, @Nonnull final Method method, @Nonnull final Object[] methodParameters, @Nonnull final MethodProxy proxy) throws Throwable { Object result; if (METADATAITEM_METHODS.contains(method)) { result = method.invoke(this, methodParameters); } else { result = super.intercept(object, method, methodParameters, proxy); } return result; }
return doEquals(methodParameters[0]); return doGenericMethod(method, methodParameters); return doSetter(object, methodParameters, method);
/*************************************************************************** * * **************************************************************************/ private Object doSetterInEDT (final Object object, final Object[] methodParameters, final Method method) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException { final String propertyName = getPropertyName(method); final Property property = BeanProperty.create(Introspector.decapitalize(propertyName)); final Object oldValue = property.getValue(object); Object returnValue = method.invoke(bean, methodParameters); // FIXME: or proxy.invokeSuper()? if (returnValue == bean) { returnValue = object; } logger.finest(String.format(">>>> %s - %s changed : %s -> %s", object, propertyName, oldValue, methodParameters[0])); propertyChangeSupport.firePropertyChange(propertyName, oldValue, methodParameters[0]); return returnValue; }
return doSetterInEDT(object, methodParameters, method);
result = super.intercept(object, method, methodParameters, proxy);
protected Callback createInterceptor (final Object bean, final Object ... arguments) { return new JavaBeanAspect(bean, this, arguments); } }
/*************************************************************************** * * **************************************************************************/ public JavaBeanAspect (final Object bean, final AbstractEnhancer<?> enhancer, final Object ... arguments) { this.bean = bean; fixContainedBeans(bean, enhancer, arguments); this.edtCompliant = Arrays.asList(arguments).contains(JavaBeanEnhancer.EDT_COMPLIANT); }
Object result = super.intercept(object, method, methodParameters, proxy); final String changedPropertyName = getPropertyName(method); final boolean isAvailabilityProperty = changedPropertyName.endsWith(AVAILABLE_SUFFIX);