Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 90261 invoked from network); 11 Jan 2010 22:47:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 11 Jan 2010 22:47:38 -0000 Received: (qmail 56205 invoked by uid 500); 11 Jan 2010 22:47:38 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 56127 invoked by uid 500); 11 Jan 2010 22:47:38 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 56118 invoked by uid 99); 11 Jan 2010 22:47:38 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 11 Jan 2010 22:47:38 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 11 Jan 2010 22:47:26 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 425E02388A2C; Mon, 11 Jan 2010 22:47:04 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r898101 [4/4] - in /cocoon/site/site/3.0: ./ reference/ reference/html-single/ reference/html/ reference/pdf/ student-project-ideas/ Date: Mon, 11 Jan 2010 22:47:03 -0000 To: cvs@cocoon.apache.org From: simonetripodi@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100111224704.425E02388A2C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: cocoon/site/site/3.0/reference/html/pipelines.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/pipelines.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/reference/html/pipelines.html (original) +++ cocoon/site/site/3.0/reference/html/pipelines.html Mon Jan 11 22:47:02 2010 @@ -10,8 +10,8 @@ The last component is of type org.apache.cocoon.pipeline.component.Finisher.

  • In order to link components with each other, the first has to be a - org.apache.cocoon.pipeline.component.Producer, the latter - org.apache.cocoon.pipeline.component.Consumer. + org.apache.cocoon.pipeline.component.Finisher, the latter + org.apache.cocoon.pipeline.component.Producer.

  • When the pipeline links the components, it merely checks whether the above mentioned interfaces are present. So the pipeline does not know about the specific capabilities or the compatibility of the components. It is the @@ -108,7 +108,7 @@ Our implementation of StAX pipelines uses just StAX interfaces for retrieving events - the writing interface is proprietary in order to avoid multihreading or continuations. So it is really a hybrid process - the StAX component is called to generate the next events, but it is also allowed to read as much data from the previous pipeline component as it wants. But as the produced events are kept in-memory until a later component pulls for them, the components should not emit large amounts of events during one invocation.

    2.5.1. Available components

    • StAXGenerator is a Starter and normally parses a XML from an InputStream.

    • StAXSerializer is a Finisher and writes the StAX Events to an OutputStream.

    • AbstractStAXTransformer is the abstract base class for new transformers. It simplifies the task by providing a template method for generating the new events.

    • StAXCleaningTransformer is an transformer, which cleans the document from whitespaces and comments.

    • IncludeTransformer includes the contents of another document.

    For further information refer to the javadoc

    2.5.2. Writing custom components

    2.5.2.1. StAX generator

    The StAXGenerator is a Starter component and produces XMLEvents. -

    import java.io.InputStream;
    +	

    import java.io.InputStream;
     import java.net.URL;
     
     import javax.xml.stream.FactoryConfigurationError;
    @@ -148,20 +148,20 @@
        public XMLEvent peek() throws XMLStreamException {
           return this.reader.peek();                                                         (6)
        }
    -  
    -} 
    1

    - In order to implement an own StAXGenerator the easiest approach is to inherit from AbstractStAXProducer. + +}

    1

    + In order to implement an own StAXGenerator the easiest approach is to inherit from AbstractStAXProducer.

    2

    - The constructor creates a new XMLEventReader for reading from the inputstream. + The constructor creates a new XMLEventReader for reading from the inputstream.

    3

    - The pipeline is started using the execute method. As StAX is a pull based approach the last component has to start pulling. + The pipeline is started using the execute method. As StAX is a pull based approach the last component has to start pulling.

    4

    This method should return true if the generator has a next Event.

    5

    Returns the next event from the generator.

    6

    Returns the next event from the generator, without moving actually to the next event.

    -

    2.5.2.2. StAX transformer

    Implementing a StAX Transformer should be the most common use case. The AbstractStAXTransformer provides a foundation for new transformers. But in order to write new transformers even simpler, let's describe another feature first:

    2.5.2.2.1. Navigator

    Navigators allow an easier navigation in the XML document. They also simplify transformers, as usually transformers need only process some parts of the input document and the navigator helps to identify the interesting parts. There are several implementations already included: -

    • FindStartElementNavigator finds the start tag with certain properties(name,attribute)

    • FindEndElementNavigator finds the end tag with certain properties(name,attribute)

    • FindCorrespondingStartEndElementPairNavigator finds both the start and the corresponding end tag.

    • InSubtreeNavigator finds whole subtrees, by specifying the properties of the "root" element.

    - For further information refer to the navigator javadoc -

    2.5.2.2.1.1. Using navigators

    - Using a navigator is a rather simple task. The transformer peeks or gets the next event and calls Navigator.fulfillsCriteria - if true is returned the transformer should be process that event somehow. -

    2.5.2.2.1.2. Implementing a navigator

    Creating a new navigator is a rather simple task and just means implementing two methods:

    import javax.xml.stream.events.XMLEvent;
    +	

    2.5.2.2. StAX transformer

    Implementing a StAX Transformer should be the most common use case. The AbstractStAXTransformer provides a foundation for new transformers. But in order to write new transformers even simpler, let's describe another feature first:

    2.5.2.2.1. Navigator

    Navigators allow an easier navigation in the XML document. They also simplify transformers, as usually transformers need only process some parts of the input document and the navigator helps to identify the interesting parts. There are several implementations already included: +

    • FindStartElementNavigator finds the start tag with certain properties(name,attribute)

    • FindEndElementNavigator finds the end tag with certain properties(name,attribute)

    • FindCorrespondingStartEndElementPairNavigator finds both the start and the corresponding end tag.

    • InSubtreeNavigator finds whole subtrees, by specifying the properties of the "root" element.

    + For further information refer to the navigator javadoc +

    2.5.2.2.1.1. Using navigators

    + Using a navigator is a rather simple task. The transformer peeks or gets the next event and calls Navigator.fulfillsCriteria - if true is returned the transformer should be process that event somehow. +

    2.5.2.2.1.2. Implementing a navigator

    Creating a new navigator is a rather simple task and just means implementing two methods:

    import javax.xml.stream.events.XMLEvent;
     
     public class MyNavigator implements Navigator {
        public boolean fulfillsCriteria(XMLEvent event) {                                     (1)
    @@ -172,11 +172,11 @@
           return false;
        }
     }
    -  
    1

    - This method returns true if the event matches the criteria of the navigator. +

    1

    + This method returns true if the event matches the criteria of the navigator.

    2

    - Returns the result of the last invocation of fulfillsCriteria. -

    2.5.2.2.2. Implementing a transformer

    The next example should show you an transformer featuring navigators and implicit state handling through function calls.

    public class DaisyLinkRewriteTransformer extends AbstractStAXTransformer {
    +	      Returns the result of the last invocation of fulfillsCriteria.
    +	    

    2.5.2.2.2. Implementing a transformer

    The next example should show you an transformer featuring navigators and implicit state handling through function calls.

    public class DaisyLinkRewriteTransformer extends AbstractStAXTransformer {
       @Override
        protected void produceEvents() throws XMLStreamException {
           while (this.getParent().hasNext()) {
    @@ -270,4 +270,4 @@
     </dependency>
     

    Using woodstox is simpler, as the reference implementation depends on JAXP 1.4, which is not part of Java 1.5. -

    2.6. Utilities

    TBW: XMLUtils, TransformUtils

    +

    2.6. Utilities

    TBW: XMLUtils, TransformUtils

    \ No newline at end of file Modified: cocoon/site/site/3.0/reference/html/sitemap.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/sitemap.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/reference/html/sitemap.html (original) +++ cocoon/site/site/3.0/reference/html/sitemap.html Mon Jan 11 22:47:02 2010 @@ -1,3 +1,3 @@ - Chapter 3. Sitemaps

    C hapter 3. Sitemaps

    3.1. What is a sitemap?

    TBW

    3.2. Sitemap evaluation?

    TBW

    3.3. Expression languages

    TBW

    3.4. Spring integration

    TBW

    3.5. Embedding a sitemap

    TBW

    + Chapter 3. Sitemaps

    C hapter 3. Sitemaps

    3.1. What is a sitemap?

    TBW

    3.2. Sitemap evaluation?

    TBW

    3.3. Expression languages

    TBW

    3.4. Spring integration

    TBW

    3.5. Embedding a sitemap

    TBW

    \ No newline at end of file Modified: cocoon/site/site/3.0/reference/html/webapps.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/webapps.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/reference/html/webapps.html (original) +++ cocoon/site/site/3.0/reference/html/webapps.html Mon Jan 11 22:47:02 2010 @@ -359,4 +359,4 @@ Operation setCacheValue(String) will set new value of this cache entry.

    4.11.2.3.3.2.4. Obtain size of entry

    Operation getSize() will return human readable size of current entry. -

    4.12. Tutorial

    TBW

    +

    4.12. Tutorial

    TBW

    \ No newline at end of file Modified: cocoon/site/site/3.0/reference/html/wicket-integration.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/wicket-integration.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/reference/html/wicket-integration.html (original) +++ cocoon/site/site/3.0/reference/html/wicket-integration.html Mon Jan 11 22:47:02 2010 @@ -170,4 +170,4 @@

    2

    The name of the reader is wicket. It's also required to define the base path so that Wicket can calclulate realtive URLs correctly. -

    +

    \ No newline at end of file Modified: cocoon/site/site/3.0/reference/index.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/index.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/reference/index.html (original) +++ cocoon/site/site/3.0/reference/index.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("../css/maven-base.css"); @import url("../css/maven-theme.css"); @import url("../css/site.css"); + @import url("../css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -168,4 +170,4 @@ - + \ No newline at end of file Modified: cocoon/site/site/3.0/reference/pdf/cocoon3-reference.pdf URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/pdf/cocoon3-reference.pdf?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== Binary files - no diff available. Modified: cocoon/site/site/3.0/roadmap.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/roadmap.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/roadmap.html (original) +++ cocoon/site/site/3.0/roadmap.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("./css/maven-base.css"); @import url("./css/maven-theme.css"); @import url("./css/site.css"); + @import url("./css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -168,4 +170,4 @@ - + \ No newline at end of file Modified: cocoon/site/site/3.0/source-repository.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/source-repository.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/source-repository.html (original) +++ cocoon/site/site/3.0/source-repository.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("./css/maven-base.css"); @import url("./css/maven-theme.css"); @import url("./css/site.css"); + @import url("./css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -168,4 +170,4 @@ - + \ No newline at end of file Modified: cocoon/site/site/3.0/student-project-ideas.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/student-project-ideas.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/student-project-ideas.html (original) +++ cocoon/site/site/3.0/student-project-ideas.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("./css/maven-base.css"); @import url("./css/maven-theme.css"); @import url("./css/site.css"); + @import url("./css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -168,4 +170,4 @@ - + \ No newline at end of file Modified: cocoon/site/site/3.0/student-project-ideas/cocoon3-monitoring.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/student-project-ideas/cocoon3-monitoring.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/student-project-ideas/cocoon3-monitoring.html (original) +++ cocoon/site/site/3.0/student-project-ideas/cocoon3-monitoring.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("../css/maven-base.css"); @import url("../css/maven-theme.css"); @import url("../css/site.css"); + @import url("../css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -168,4 +170,4 @@ - + \ No newline at end of file Modified: cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling-ui.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling-ui.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling-ui.html (original) +++ cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling-ui.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("../css/maven-base.css"); @import url("../css/maven-theme.css"); @import url("../css/site.css"); + @import url("../css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -168,4 +170,4 @@ - + \ No newline at end of file Modified: cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling.html (original) +++ cocoon/site/site/3.0/student-project-ideas/cocoon3-profiling.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("../css/maven-base.css"); @import url("../css/maven-theme.css"); @import url("../css/site.css"); + @import url("../css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -185,8 +187,7 @@ <body> <h1>Video 1<h1> <body> - </html> -

    Additionally an XHTML representation of the profiling data should be provided so that the data becomes more readable.

    Implementation ideas

    It is important that the profiling module doesn't affect any existing code. That can be achieved by using aspect-oriented programming.

    Cocoon 3 web applications make use of following modules:

    • cocoon-pipeline
    • cocoon-sitemap
    • cocoon-servlet
    • cocoon-controller
    • cocoon-rest

    and builds upon the

    • cocoon-servlet-service framework

    Except the stand-alone cocoon-pipeline module all other modules make use of Spring. Since Spring comes with great AOP support, it's our idea to collect all the necessary information about servlets, invoked sitemaps and their nodes and pipeline components by using Spring AOP. The collected data can be stored by using ThreadLocals and kept in memory.

    When profiling is turned on, th e header parameter X-Cocoon-Profiling-URL is added to the response header and contains the relative link to the profiling data webservice, e.g. ../../cocoon-profiling/request/1. Again, this can be achieved by AOP interception mechanisms applied on servlets.

    The RESTful webservices can be implemented by using the cocoon-rest module.

    Profiling can be turned on and off by using JMX or by configuration parameters.

    Deliverables

    • cocoon-profiling module integrated into the Cocoon 3 build process
    • usage documentation
    • Javadocs

    Technologies

    Cocoon 3, Spring AOP, Java, RESTful webservices

    Related ideas

    There is an additional project idea (Cocoon 3 Profiling UI) of creating a Firebug plugin that shows the data of the request in a user-friendly way.

    + </html>

    Additionally an XHTML representation of the profiling data should be provided so that the data becomes more readable.

    Implementation ideas

    It is important that the profiling module doesn't affect any existing code. That can be achieved by using aspect-oriented programming.

    Cocoon 3 web applications make use of following modules:

    • cocoon-pipeline
    • cocoon-sitemap
    • cocoon-servlet
    • cocoon-controller
    • cocoon-rest

    and builds upon the

    • cocoon-servlet-service framework

    Except the stand-alone cocoon-pipeline module all other modules make use of Spring. Since Spring comes with great AOP support, it's our idea to collect all the necessary information about servlets, invoked sitemaps and their nodes and pipeline components by using Spring AOP. The collected data can be stored by using ThreadLocals and kept in memory.

    When profiling i s turned on, the header parameter X-Cocoon-Profiling-URL is added to the response header and contains the relative link to the profiling data webservice, e.g. ../../cocoon-profiling/request/1. Again, this can be achieved by AOP interception mechanisms applied on servlets.

    The RESTful webservices can be implemented by using the cocoon-rest module.

    Profiling can be turned on and off by using JMX or by configuration parameters.

    Deliverables

    • cocoon-profiling module integrated into the Cocoon 3 build process
    • usage documentation
    • Javadocs

    Technologies

    Cocoon 3, Spring AOP, Java, RESTful webservices

    Related ideas

    There is an additional project idea (Cocoon 3 Profiling UI) of creating a Firebug plugin that shows the data of the request in a user-friendly way.

    @@ -206,4 +207,4 @@ - + \ No newline at end of file Modified: cocoon/site/site/3.0/team-list.html URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/team-list.html?rev=898101&r1=898100&r2=898101&view=diff ============================================================================== --- cocoon/site/site/3.0/team-list.html (original) +++ cocoon/site/site/3.0/team-list.html Mon Jan 11 22:47:02 2010 @@ -33,12 +33,14 @@ @import url("./css/maven-base.css"); @import url("./css/maven-theme.css"); @import url("./css/site.css"); + @import url("./css/prettify.css"); + - +

    Apache » Cocoon »

    @@ -148,7 +150,7 @@
    -

    The Team

    A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.

    The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.

    Members

    The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.

    IdNameEmailOrganizationOrganization URLRolesTime ZoneActual Time (GMT)
    stevendolgSteven Dolgstevendolg@apache.orgIndoqa Software Design und Beratung GmbHhttp://www.indoqa.comPMC member, Committer+1+1
    reinhardReinhard Poetzreinhard@apache.orgIndoqa Software Design und Beratung GmbHhttp://www.indoqa.comASF member, PMC member, Committer+1+1
    thorstenThorsten Scherlerthorsten@apache.org--ASF member, PMC member, Committer+1+1
    cziegelerCarsten Ziegelercziegeler@apache.orgDay Softwarehttp://www.day.comASF member, Committer+1+1

    Contributors

    The following additional people have contributed to this project through the way of suggestions, patches or documentation.

    NameEmail
    Simone Tripodisimone[dot]tripodi[at]gmail[dot]com
    Paul Ercolinosolprovider[at]apache[dot]com
    Marc Driftmeyermdrift[at]yahoo[dot]com
    Andreas Pieberanpi[at]gmx[dot]at
    Jakob Spoerkjakob[dot]spoerk[at]gmx[d ot]at
    Michael Seydlmichael[dot]seydl[at]gmail[dot]com
    Kilian Johannes Mattkilian[dot]matt[at]gmail[dot]com
    Michael Handlermichi[dot]handler[at]gmx.at
    Christoph Leitercleiter[at]gmail.com
    Stephan Teuschlstephan[dot]teuschl[at]gmail.com
    Andreas Pinterpinter[dot]andreas[at]gmail.com
    Sebastian Rosensteinersebi_rosensteiner[at]gmx.at
    Dariusz ?ukszadariusz[dot]luksza[at]gmail[dot]com
    Bertil Chapuiscontact[at]bertil[dot]ch
    - + \ No newline at end of file