You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@forrest.apache.org by Cyriaque Dupoirieux <Cy...@pcotech.fr> on 2006/08/11 09:42:35 UTC

Re: svn commit: r430701 - in /forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher: ContractBeanDOMImpl.java transformation/DispatcherTransformer.java

Excellent,

These kind of improvement are very important.
We need to have an overview of what is done by each component to be able 
to improve the code quality and the performance.
(Actually, we need a design dossier ;-)   )

Salutations,
Cyriaque,

le 11/08/2006 09:10 thorsten@apache.org a écrit :
> Author: thorsten
> Date: Fri Aug 11 00:10:20 2006
> New Revision: 430701
>
> URL: http://svn.apache.org/viewvc?rev=430701&view=rev
> Log:
> Moving the request/generation of the properties out of the contract implementation bean since it will not change for one structurer file. The properties will be now generated once per structurer instead of x times for x contracts. This reduces the processing load quite a bit.
>
> Modified:
>     forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java
>     forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
>
> Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java
> URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java?rev=430701&r1=430700&r2=430701&view=diff
> ==============================================================================
> --- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java (original)
> +++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java Fri Aug 11 00:10:20 2006
> @@ -115,6 +115,8 @@
>  
>      private URIResolver m_uriResolver;
>  
> +    private Object defaultVariables;
> +
>      /**
>       * The ContractBean contains all fields to work with contracts. It is a
>       * helper bean.
> @@ -126,14 +128,16 @@
>       * 
>       * @param manager
>       * @param parameterHelper
> +     * @param defaultProperties 
>       * @throws ParserConfigurationException
>       */
> -    public ContractBeanDOMImpl(ServiceManager manager, HashMap parameterHelper,URIResolver uriResolver)
> +    public ContractBeanDOMImpl(ServiceManager manager, HashMap parameterHelper,Document defaultProperties, URIResolver uriResolver)
>              throws ParserConfigurationException {
>          m_uriResolver=uriResolver;
>          this.manager = manager;
>          dispatcherHelper = new DispatcherHelper(manager);
>          this.parameterHelper = parameterHelper;
> +        this.defaultVariables=defaultProperties;
>      }
>  
>      /*
> @@ -252,12 +256,8 @@
>                       */
>                      // default forrest properties
>                      Transformer transformer = cachedXSLT.newTransformer();
> -                    String request= (String) parameterHelper.get(DispatcherTransformer.DISPATCHER_REQUEST_ATTRIBUTE);
> -                    String propertyURI= "cocoon://"+request+".props";
> -                    Node defaultVariables = org.apache.forrest.dispatcher.util.SourceUtil
> -                            .readDOM(propertyURI, this.manager);
>                      transformer.setParameter("defaultVariables",
> -                            defaultVariables);
> +                            this.defaultVariables);
>                      transformer.setOutputProperty(
>                              OutputKeys.OMIT_XML_DECLARATION, "yes");
>                      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
>
> Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
> URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java?rev=430701&r1=430700&r2=430701&view=diff
> ==============================================================================
> --- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java (original)
> +++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java Fri Aug 11 00:10:20 2006
> @@ -23,6 +23,7 @@
>  import java.util.Iterator;
>  import java.util.Map;
>  
> +import javax.xml.parsers.ParserConfigurationException;
>  import javax.xml.transform.Transformer;
>  import javax.xml.transform.TransformerException;
>  import javax.xml.transform.URIResolver;
> @@ -193,6 +194,8 @@
>  
>      private String requestId;
>  
> +    private Document defaultProperties;
> +
>      public static final String HOOKS_TRANSFORMER_PARAMETER = "hooksTransformer";
>  
>      public static final String PATH_PARAMETER = "path";
> @@ -292,6 +295,16 @@
>              getLogger().error(error);
>              throw new ProcessingException(error);
>          }
> +        String propertyURI= "cocoon://"+requestId+".props";
> +        try {
> +            this.defaultProperties = org.apache.forrest.dispatcher.util.SourceUtil
> +            .readDOM(propertyURI, this.manager);
> +        } catch (Exception e1) {
> +            String error = "dispatcherError:\n"
> +                + "Could not get the properties for "+propertyURI;
> +        getLogger().error(error);
> +        throw new ProcessingException(error);
> +        }
>          parameterHelper.put(DISPATCHER_REQUEST_ATTRIBUTE, requestId);
>          this.requestedFormat = parameters.getParameter(
>                  STRUCTURER_FORMAT_ATTRIBUTE, null);
> @@ -620,9 +633,10 @@
>          try {
>              if (contract == null)
>                  contract = new ContractBeanDOMImpl(this.manager,
> -                        parameterHelper,(URIResolver)this);
> -            else
> -                contract.initialize();
> +                        parameterHelper,defaultProperties,(URIResolver)this);
> +            // This is not needed since the manager did not change.
> +            //else
> +              //  contract.initialize();
>          } catch (Exception e) {
>              String error = DispatcherException.ERROR_500 + "\n"
>                      + "component: ContractBean" + "\n"
>
>
>
>   

Re: svn commit: r430701 - in /forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher: ContractBeanDOMImpl.java transformation/DispatcherTransformer.java

Posted by Thorsten Scherler <th...@wyona.com>.
El vie, 11-08-2006 a las 09:42 +0200, Cyriaque Dupoirieux escribió:
> Excellent,
> 

jeje, I knew you would like it. ;)

> These kind of improvement are very important.

Very much agree.

> We need to have an overview of what is done by each component to be able 
> to improve the code quality and the performance.
> (Actually, we need a design dossier ;-)   )

Agree, I have not looked at the code for a while and spotted this one
because I debugged the ModuleGenerator.

Can you start something?

salu2

> 
> Salutations,
> Cyriaque,
> 
> le 11/08/2006 09:10 thorsten@apache.org a écrit :
> > Author: thorsten
> > Date: Fri Aug 11 00:10:20 2006
> > New Revision: 430701
> >
> > URL: http://svn.apache.org/viewvc?rev=430701&view=rev
> > Log:
> > Moving the request/generation of the properties out of the contract implementation bean since it will not change for one structurer file. The properties will be now generated once per structurer instead of x times for x contracts. This reduces the processing load quite a bit.
> >
> > Modified:
> >     forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java
> >     forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
> >
> > Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java
> > URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java?rev=430701&r1=430700&r2=430701&view=diff
> > ==============================================================================
> > --- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java (original)
> > +++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/ContractBeanDOMImpl.java Fri Aug 11 00:10:20 2006
> > @@ -115,6 +115,8 @@
> >  
> >      private URIResolver m_uriResolver;
> >  
> > +    private Object defaultVariables;
> > +
> >      /**
> >       * The ContractBean contains all fields to work with contracts. It is a
> >       * helper bean.
> > @@ -126,14 +128,16 @@
> >       * 
> >       * @param manager
> >       * @param parameterHelper
> > +     * @param defaultProperties 
> >       * @throws ParserConfigurationException
> >       */
> > -    public ContractBeanDOMImpl(ServiceManager manager, HashMap parameterHelper,URIResolver uriResolver)
> > +    public ContractBeanDOMImpl(ServiceManager manager, HashMap parameterHelper,Document defaultProperties, URIResolver uriResolver)
> >              throws ParserConfigurationException {
> >          m_uriResolver=uriResolver;
> >          this.manager = manager;
> >          dispatcherHelper = new DispatcherHelper(manager);
> >          this.parameterHelper = parameterHelper;
> > +        this.defaultVariables=defaultProperties;
> >      }
> >  
> >      /*
> > @@ -252,12 +256,8 @@
> >                       */
> >                      // default forrest properties
> >                      Transformer transformer = cachedXSLT.newTransformer();
> > -                    String request= (String) parameterHelper.get(DispatcherTransformer.DISPATCHER_REQUEST_ATTRIBUTE);
> > -                    String propertyURI= "cocoon://"+request+".props";
> > -                    Node defaultVariables = org.apache.forrest.dispatcher.util.SourceUtil
> > -                            .readDOM(propertyURI, this.manager);
> >                      transformer.setParameter("defaultVariables",
> > -                            defaultVariables);
> > +                            this.defaultVariables);
> >                      transformer.setOutputProperty(
> >                              OutputKeys.OMIT_XML_DECLARATION, "yes");
> >                      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
> >
> > Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
> > URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java?rev=430701&r1=430700&r2=430701&view=diff
> > ==============================================================================
> > --- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java (original)
> > +++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java Fri Aug 11 00:10:20 2006
> > @@ -23,6 +23,7 @@
> >  import java.util.Iterator;
> >  import java.util.Map;
> >  
> > +import javax.xml.parsers.ParserConfigurationException;
> >  import javax.xml.transform.Transformer;
> >  import javax.xml.transform.TransformerException;
> >  import javax.xml.transform.URIResolver;
> > @@ -193,6 +194,8 @@
> >  
> >      private String requestId;
> >  
> > +    private Document defaultProperties;
> > +
> >      public static final String HOOKS_TRANSFORMER_PARAMETER = "hooksTransformer";
> >  
> >      public static final String PATH_PARAMETER = "path";
> > @@ -292,6 +295,16 @@
> >              getLogger().error(error);
> >              throw new ProcessingException(error);
> >          }
> > +        String propertyURI= "cocoon://"+requestId+".props";
> > +        try {
> > +            this.defaultProperties = org.apache.forrest.dispatcher.util.SourceUtil
> > +            .readDOM(propertyURI, this.manager);
> > +        } catch (Exception e1) {
> > +            String error = "dispatcherError:\n"
> > +                + "Could not get the properties for "+propertyURI;
> > +        getLogger().error(error);
> > +        throw new ProcessingException(error);
> > +        }
> >          parameterHelper.put(DISPATCHER_REQUEST_ATTRIBUTE, requestId);
> >          this.requestedFormat = parameters.getParameter(
> >                  STRUCTURER_FORMAT_ATTRIBUTE, null);
> > @@ -620,9 +633,10 @@
> >          try {
> >              if (contract == null)
> >                  contract = new ContractBeanDOMImpl(this.manager,
> > -                        parameterHelper,(URIResolver)this);
> > -            else
> > -                contract.initialize();
> > +                        parameterHelper,defaultProperties,(URIResolver)this);
> > +            // This is not needed since the manager did not change.
> > +            //else
> > +              //  contract.initialize();
> >          } catch (Exception e) {
> >              String error = DispatcherException.ERROR_500 + "\n"
> >                      + "component: ContractBean" + "\n"
> >
> >
> >
> >   
-- 
Thorsten Scherler
COO Spain
Wyona Inc.  -  Open Source Content Management  -  Apache Lenya
http://www.wyona.com                   http://lenya.apache.org
thorsten.scherler@wyona.com                thorsten@apache.org