You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by bu...@apache.org on 2002/06/17 14:14:12 UTC

DO NOT REPLY [Bug 9916] New: - javax.xml.transform.Transformer accepts object parameters and cocoon prevents to use it

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9916>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9916

javax.xml.transform.Transformer accepts object parameters and cocoon prevents to use it

           Summary: javax.xml.transform.Transformer accepts object
                    parameters and cocoon prevents to use it
           Product: Cocoon 2
           Version: Current CVS
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: core
        AssignedTo: cocoon-dev@xml.apache.org
        ReportedBy: maurice.schoenmakers@they-do-it.com


The current TraxTransformer allows only strings to be passed as parameters to 
the transfomer, where as the javax.xml.transform.Transformer interface allows 
also objects. For a good reason (from the API doc): "value - The value object. 
This can be any valid Java object. It is up to the processor to provide the 
proper object coersion or to simply pass the object on for use in an 
extension."

XALAN extensions for example can handle these object parameters.
(for example an extension could be used to collect data during the XSL 
processing, that is again used for the sitemap to select the next action..)

This limitation is caused by the Avalon Parameters class and the way the 
MapStack is resolved.

Here some (maybe stupid) ideas for enhancements to overcome this limitations. 
For example
1) extend the TraxTransformer with a parameter "object-model-parameters-key" 
that causes the transformer to use additionally the parameters in a map that 
is extracted from the object model using the provided key:
Map parameters = objectModel.get( <value of the parameter object-model-
parameters-key> )

or 2) change the avalon Parameters class

or 3) (3a) change the 
org.apache.cocoon.components.treeprocessor.MapStackResolver class to return a 
Map instead of Parameters and only call toString if the expression contains 
more than one parameter or additional text besides parameters. ( "{x}" sets 
the reference, "a{x}{y}" would call toString() for x and y. )
and (3b) add a method to the interfaces of action, transformes etc. to use a 
map as parameters argument. (an abstract implementation could still transform 
the map to Parameters and call the old method ?)

---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org