[ 
https://issues.apache.org/jira/browse/SHINDIG-503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12627863#action_12627863
 ] 

John Hjelmstad commented on SHINDIG-503:
----------------------------------------

I had in mind for this change to go hand-in-hand with cleanup of the 
ContentRewriter interface.

After some analysis, it looks like the ContentRewriter interface for now should 
maintain two interfaces, one for HTTP requests and one for Gadget rewriting.

Kevin's changes to GadgetContext make for a great context object to pass into 
the Gadget rewriting interface.

The main open question seems to be whether the Gadget object or some modifiable 
subcomponent of it is passed into the interface. I see both sides of the 
argument, but at present still lightly favor Gadget itself. Concretely, I'd 
change the gadget rewriting interface to:

RewriterResults ContentRewriter.rewrite(GadgetContext context, Gadget gadget)

Meanwhile, these changes would accompany:
1. Add a new method, GadgetHtmlNode Gadget.getParseTree().
2. Augment GadgetHtmlNode with an "edit listener" that signals its "host" 
Gadget object when an edit operation has been done (just a boolean)
3. Gadget.setContent() and GadgetHtmlNode.<editOperation>() disallowed when the 
other has been called to maintain object consistency.

The overhead with #2-3 is real, but pretty small since it's just checking a 
shared boolean.

I prefer this approach at present for the following reasons:
1. Allows both String and ParseTree based rewriting (though of course, all PT 
rewrites should happen together to avoid de/reserialization!)
2. Even if not ideal long-term, serves as a stepping-stone to something like 
ContentRewriter.rewrite(GadgetContent, GadgetSpec, GadgetHtmlNode) since it 
punts on the question of turning _all_ content, including JS libraries, into 
GadgetHtmlNodes. Rewriting happens before other operations, so doing the latter 
would add complexity I'd like to avoid for the time being.

> Augment Gadget object to maintain both String and Parse Tree rendering state
> ----------------------------------------------------------------------------
>
>                 Key: SHINDIG-503
>                 URL: https://issues.apache.org/jira/browse/SHINDIG-503
>             Project: Shindig
>          Issue Type: Sub-task
>          Components: Gadget Rendering Server (Java)
>            Reporter: John Hjelmstad
>            Assignee: John Hjelmstad
>
> Point #4 of 
> http://mail-archives.apache.org/mod_mbox/incubator-shindig-dev/200808.mbox/[EMAIL
>  PROTECTED]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to