On Thu, 2005-11-17 at 16:29 -0500, Laurie Harper wrote:
> Christian Meder wrote:
> > On Thu, 2005-11-17 at 03:40 +0000, [EMAIL PROTECTED] wrote:
> >>
> >> /**
> >>+ * <p>The CGLIB <code>Enhancer</code> which we will use to dynamically
> >>+ * add getters/setters if 'enhanced' is true in the form config.
> >>+ */
> >>+ protected transient Enhancer enhancer = null;
> >
> > Shouldn't we mark enhancer private as getBeanEnhancer will always do the
> > right thing ?
>
> protected seems to be the norm in Struts code for members of classes
> likely to be subclassed. This is just consistent with other members in
> the class.
Just after posting I saw that it's consistent with other members in the
class ;-)
But that still leaves the point that the re-introspection after
deserialization isn't properly encapsulated and bug-prone if you can
access the enhancer directly without the check. Consistently the same
issue for the other transient members like beanClass ;-)
>
> >>+
> >>+ /**
> >> * <p>The form bean configuration information for this class.</p>
> >> */
> >> protected FormBeanConfig config = null;
> >>@@ -193,9 +192,14 @@
> >> public DynaBean newInstance()
> >> throws IllegalAccessException, InstantiationException {
> >>
> >>- FormPropertyConfig[] props = config.findFormPropertyConfigs();
> >>- DynaActionForm dynaBean = (DynaActionForm) doCreate(props);
> >>+ DynaActionForm dynaBean = null;
> >>+ if (config.isEnhanced()) {
> >>+ dynaBean = (DynaActionForm) getBeanEnhancer().create();
> >>+ } else {
> >>+ dynaBean = (DynaActionForm) getBeanClass().newInstance();
> >>+ }
> >> dynaBean.setDynaActionFormClass(this);
> >>+ FormPropertyConfig[] props = config.findFormPropertyConfigs();
> >> for (int i = 0; i < props.length; i++) {
> >> dynaBean.set(props[i].getName(), props[i].initial());
> >> }
> >>@@ -273,6 +277,24 @@
> >>
> >>
> >> /**
> >>+ * <p>Return the <code>Enhancer</code> we are using to construct new
> >>+ * instances, re-introspecting our [EMAIL PROTECTED] FormBeanConfig}
> >>if necessary
> >>+ * (that is, after being deserialized, since <code>enhancer</code> is
> >>+ * marked transient).</p>
> >>+ *
> >>+ * @return The enhancer used to construct new instances.
> >>+ */
> >>+ protected Enhancer getBeanEnhancer() {
> >>+
> >>+ if (enhancer == null) {
> >>+ introspect(config);
> >>+ }
> >>+ return (enhancer);
> >
> > Idiom question. Why the brackets around enhancer ?
>
> Local coding convention... They're redundant but, again, this is
> consistent with other code.
Thanks. But is there any explanation for this coding convention ?
Greetings,
Christian
--
Christian Meder, email: [EMAIL PROTECTED]
The Way-Seeking Mind of a tenzo is actualized
by rolling up your sleeves.
(Eihei Dogen Zenji)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]