org.apache.cocoon.woody.transformation
Class WidgetReplacingPipe

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.cocoon.xml.AbstractXMLProducer
          extended by org.apache.cocoon.xml.AbstractXMLPipe
              extended by org.apache.cocoon.woody.transformation.WidgetReplacingPipe
All Implemented Interfaces:
Poolable, Recyclable, LogEnabled, XMLPipe, XMLProducer, XMLConsumer, ContentHandler, LexicalHandler

public class WidgetReplacingPipe
extends AbstractXMLPipe

The basic operation of this Pipe is that it replaces wt:widget (in the Constants.WT_NS namespace) tags (having an id attribute) by the XML representation of the corresponding widget instance.

These XML fragments (normally all in the "Woody Instance" namespace), can then be translated to a HTML presentation by an XSL. This XSL will then only have to style individual widget, and will not need to do the whole page layout.

For more information about the supported tags and their function, see the user documentation for the woody template transformer.

Version:
CVS $Id: WidgetReplacingPipe.html 1304258 2012-03-23 10:09:27Z ilgrosso $

Nested Class Summary
 class WidgetReplacingPipe.InsertStylingContentHandler
          This ContentHandler helps in inserting SAX events before the closing tag of the root element.
 
Field Summary
protected  Widget contextWidget
           
protected  int elementNestingCounter
          Counts the element nesting.
protected  boolean gotStylingElement
          Have we encountered a element in a widget ?
protected  boolean inWidgetElement
          Indicates whether we're currently in a widget element.
protected  String namespacePrefix
          Namespace prefix used for the namespace Constants.WT_NS.
protected  WoodyPipelineConfig pipeContext
           
protected  boolean repeaterWidget
          Boolean indicating wether the current widget requires special repeater-treatement.
protected  SaxBuffer saxBuffer
          Buffer used to temporarily record SAX events.
protected  WidgetReplacingPipe.InsertStylingContentHandler stylingHandler
           
protected  Widget widget
          If inWidgetElement = true, then this contains the widget currenlty being handled.
protected  int widgetElementNesting
          Contains the value of the elementNestingCounter on the moment the transformer encountered a wi:widget element.
 
Fields inherited from class org.apache.cocoon.xml.AbstractXMLProducer
contentHandler, EMPTY_CONTENT_HANDLER, lexicalHandler, xmlConsumer
 
Constructor Summary
WidgetReplacingPipe()
           
 
Method Summary
 void characters(char[] c, int start, int len)
          Receive notification of character data.
 void comment(char[] ch, int start, int len)
          Report an XML comment anywhere in the document.
 void endCDATA()
          Report the end of a CDATA section.
 void endElement(String namespaceURI, String localName, String qName)
          Receive notification of the end of an element.
 void endEntity(String name)
          Report the end of an entity.
 void endPrefixMapping(String prefix)
          End the scope of a prefix-URI mapping.
protected  Widget getWidget(Attributes attributes)
           
 void ignorableWhitespace(char[] c, int start, int len)
          Receive notification of ignorable whitespace in element content.
 void init(Widget newContextWidget, WoodyPipelineConfig newPipeContext)
           
 void processingInstruction(String target, String data)
          Receive notification of a processing instruction.
 void recycle()
          Recycle the producer by removing references, and resetting handlers to null (empty) implementations.
 void skippedEntity(String name)
          Receive notification of a skipped entity.
 void startCDATA()
          Report the start of a CDATA section.
 void startElement(String namespaceURI, String localName, String qName, Attributes attributes)
          Receive notification of the beginning of an element.
 void startEntity(String name)
          Report the beginning of an entity.
 void startPrefixMapping(String prefix, String uri)
          Begin the scope of a prefix-URI Namespace mapping.
 
Methods inherited from class org.apache.cocoon.xml.AbstractXMLPipe
endDocument, endDTD, setDocumentLocator, startDocument, startDTD
 
Methods inherited from class org.apache.cocoon.xml.AbstractXMLProducer
setConsumer, setContentHandler, setLexicalHandler
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.cocoon.xml.XMLProducer
setConsumer
 

Field Detail

contextWidget

protected Widget contextWidget

inWidgetElement

protected boolean inWidgetElement
Indicates whether we're currently in a widget element.


saxBuffer

protected SaxBuffer saxBuffer
Buffer used to temporarily record SAX events.


elementNestingCounter

protected int elementNestingCounter
Counts the element nesting.


widgetElementNesting

protected int widgetElementNesting
Contains the value of the elementNestingCounter on the moment the transformer encountered a wi:widget element. Used to detect the corresponding endElement call for the wi:widget element.


widget

protected Widget widget
If inWidgetElement = true, then this contains the widget currenlty being handled.


repeaterWidget

protected boolean repeaterWidget
Boolean indicating wether the current widget requires special repeater-treatement.


stylingHandler

protected WidgetReplacingPipe.InsertStylingContentHandler stylingHandler

pipeContext

protected WoodyPipelineConfig pipeContext

gotStylingElement

protected boolean gotStylingElement
Have we encountered a element in a widget ?


namespacePrefix

protected String namespacePrefix
Namespace prefix used for the namespace Constants.WT_NS.

Constructor Detail

WidgetReplacingPipe

public WidgetReplacingPipe()
Method Detail

init

public void init(Widget newContextWidget,
                 WoodyPipelineConfig newPipeContext)

startElement

public void startElement(String namespaceURI,
                         String localName,
                         String qName,
                         Attributes attributes)
                  throws SAXException
Description copied from class: AbstractXMLPipe
Receive notification of the beginning of an element.

Specified by:
startElement in interface ContentHandler
Overrides:
startElement in class AbstractXMLPipe
Parameters:
namespaceURI - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
localName - The local name (without prefix), or the empty string if Namespace processing is not being performed.
qName - The raw XML 1.0 name (with prefix), or the empty string if raw names are not available.
attributes - The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object.
Throws:
SAXException

getWidget

protected Widget getWidget(Attributes attributes)
                    throws SAXException
Throws:
SAXException

endElement

public void endElement(String namespaceURI,
                       String localName,
                       String qName)
                throws SAXException
Description copied from class: AbstractXMLPipe
Receive notification of the end of an element.

Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class AbstractXMLPipe
Parameters:
namespaceURI - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
localName - The local name (without prefix), or the empty string if Namespace processing is not being performed.
qName - The raw XML 1.0 name (with prefix), or the empty string if raw names are not available.
Throws:
SAXException

startPrefixMapping

public void startPrefixMapping(String prefix,
                               String uri)
                        throws SAXException
Description copied from class: AbstractXMLPipe
Begin the scope of a prefix-URI Namespace mapping.

Specified by:
startPrefixMapping in interface ContentHandler
Overrides:
startPrefixMapping in class AbstractXMLPipe
Parameters:
prefix - The Namespace prefix being declared.
uri - The Namespace URI the prefix is mapped to.
Throws:
SAXException

endPrefixMapping

public void endPrefixMapping(String prefix)
                      throws SAXException
Description copied from class: AbstractXMLPipe
End the scope of a prefix-URI mapping.

Specified by:
endPrefixMapping in interface ContentHandler
Overrides:
endPrefixMapping in class AbstractXMLPipe
Parameters:
prefix - The prefix that was being mapping.
Throws:
SAXException

characters

public void characters(char[] c,
                       int start,
                       int len)
                throws SAXException
Description copied from class: AbstractXMLPipe
Receive notification of character data.

Specified by:
characters in interface ContentHandler
Overrides:
characters in class AbstractXMLPipe
Parameters:
c - The characters from the XML document.
start - The start position in the array.
len - The number of characters to read from the array.
Throws:
SAXException

ignorableWhitespace

public void ignorableWhitespace(char[] c,
                                int start,
                                int len)
                         throws SAXException
Description copied from class: AbstractXMLPipe
Receive notification of ignorable whitespace in element content.

Specified by:
ignorableWhitespace in interface ContentHandler
Overrides:
ignorableWhitespace in class AbstractXMLPipe
Parameters:
c - The characters from the XML document.
start - The start position in the array.
len - The number of characters to read from the array.
Throws:
SAXException

processingInstruction

public void processingInstruction(String target,
                                  String data)
                           throws SAXException
Description copied from class: AbstractXMLPipe
Receive notification of a processing instruction.

Specified by:
processingInstruction in interface ContentHandler
Overrides:
processingInstruction in class AbstractXMLPipe
Parameters:
target - The processing instruction target.
data - The processing instruction data, or null if none was supplied.
Throws:
SAXException

skippedEntity

public void skippedEntity(String name)
                   throws SAXException
Description copied from class: AbstractXMLPipe
Receive notification of a skipped entity.

Specified by:
skippedEntity in interface ContentHandler
Overrides:
skippedEntity in class AbstractXMLPipe
Parameters:
name - The name of the skipped entity. If it is a parameter entity, the name will begin with '%'.
Throws:
SAXException

startEntity

public void startEntity(String name)
                 throws SAXException
Description copied from class: AbstractXMLPipe
Report the beginning of an entity.

Specified by:
startEntity in interface LexicalHandler
Overrides:
startEntity in class AbstractXMLPipe
Parameters:
name - The name of the entity. If it is a parameter entity, the name will begin with '%'.
Throws:
SAXException

endEntity

public void endEntity(String name)
               throws SAXException
Description copied from class: AbstractXMLPipe
Report the end of an entity.

Specified by:
endEntity in interface LexicalHandler
Overrides:
endEntity in class AbstractXMLPipe
Parameters:
name - The name of the entity that is ending.
Throws:
SAXException

startCDATA

public void startCDATA()
                throws SAXException
Description copied from class: AbstractXMLPipe
Report the start of a CDATA section.

Specified by:
startCDATA in interface LexicalHandler
Overrides:
startCDATA in class AbstractXMLPipe
Throws:
SAXException

endCDATA

public void endCDATA()
              throws SAXException
Description copied from class: AbstractXMLPipe
Report the end of a CDATA section.

Specified by:
endCDATA in interface LexicalHandler
Overrides:
endCDATA in class AbstractXMLPipe
Throws:
SAXException

comment

public void comment(char[] ch,
                    int start,
                    int len)
             throws SAXException
Description copied from class: AbstractXMLPipe
Report an XML comment anywhere in the document.

Specified by:
comment in interface LexicalHandler
Overrides:
comment in class AbstractXMLPipe
Parameters:
ch - An array holding the characters in the comment.
start - The starting position in the array.
len - The number of characters to use from the array.
Throws:
SAXException

recycle

public void recycle()
Description copied from class: AbstractXMLProducer
Recycle the producer by removing references, and resetting handlers to null (empty) implementations.

Specified by:
recycle in interface Recyclable
Overrides:
recycle in class AbstractXMLProducer


Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.