John Austin wrote:

> After thinking about the proposal, I'm not sure it solves anything.

Perhaps not. If the purpose of building a house is to supply shelter, then
building a foundation would seem also not to solve anything. However, it is
kind of a necessary first step toward the ultimate goal. All the proposal
attempts to do is to separate the interface from the implementation. Right
now the interface is pretty tightly tied to the implementation. Changes that
you might make to the implementation would require (I think) changes to the
LayoutStrategys and to the Renderers. Also, as Glen has pointed out, there
is business logic that can be pulled out of these code modules back into FO
Tree where they more properly belong, and where duplication and confusion
can be minimized.

> There are two aspects to the redesign of Property handling in FOP.
>
>       * Interface means the external points of contact for Property data
>       * Interface determines impact of changes on other components of
>         the system.
>       * Implementation means the internal construction of classes
>       * Implementation determines performance characteristics of the
>         program.
>
> The discussion favours the proposal.

I don't understand what you are saying here.

> Interface
> The current proposal asks that FOP will employ Java-Bean-like accessors
> for the properties of Formatting Objects visible to the FOTree. As an
> example:
>
>  getMaxWidth?() for the property "max-width"
>
> There are between 250 and 380 of these methods required and they could
> be generated automatically from an XML-based list of properties. This
> list could be derived (if not generated) from the XSL-FO Specification
> itself. Some kind of simple adapter class can be used to equate the
> proposed interface to the existing one:
>
>  class PropertyAdapter? extends Property{ // Ugh! just f'rinstance
>
>   // repeat the following about 380 times:
>   final public Property getMaxWidth?() { // use final to inline and annoy
>     return get("max-width");
>   }
>  }

Sorry -- I was not clear here. I meant to suggest that these methods be
added to FObj (and its subclasses to the extent necessary).

> There is no statement defining the current interface. This will be
> determined from existing code.
>
>
> Implementation
> The proposal makes no suggestion for implementation and my earlier
> submission is not relevant except as an indication that this issue is
> linked to performance.

Again, I am not sure what you are saying here. The proposal deliberately
does *not* address implementation. I am quite glad to have you address the
performance aspects of implementation, but I think it is a separate issue
from the interface. We can (and should, IMO) fix the interface before or at
least during any changes to the implementation. All I am trying to do is to
hide the implementation from the rest of the system.

Your earlier submission *is* relevant to implementation side of the
question, just not to the question that I raised, which is totally
interface, and which I consider to be foundational to the changes that you
are contemplating. The changes you are considering would need to conform to
the interface being discussed. Now, if something in my proposal is harmful
to the implementation(s) that you are considering, that is definitely
relevant.

Since FO Tree (and Properties) kind of works right now, we have been paying
much more attention to other parts of the FOP code. Your questions and
interest are forcing us to address it sooner than we would have. Obviously,
one of our highest priorities should be to make other developers as
productive as possible. Also, to a certain extent, we have been waiting on
Peter West's work, hoping that his efforts can be useful in all of this. I
am still hoping to hear from Peter on this, but in the meantime, I am trying
to do some housekeeping that IMO will be important to clear the decks for
you.

Sorry to be so dense -- I may just not be used to your style of writing.
Please let me know if I am missing something.

Victor Mote

Reply via email to