|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.avalon.framework.logger.AbstractLogEnabled org.apache.cocoon.xml.AbstractXMLProducer org.apache.cocoon.xml.AbstractXMLPipe org.apache.cocoon.transformation.AbstractTransformer org.apache.cocoon.transformation.XMLDBTransformer
public class XMLDBTransformer
This transformer allows to perform resource creation, deletion, and
XUpdate command execution in XML:DB. All operations are performed either
in base
collection, or context collection, which
is specified as collection
attribute on the query
element. Context collection must be specified relative to the base collection.
Definition:
<map:transformer name="xmldb" src="org.apache.cocoon.transformation.XMLDBTransformer"> <!-- Optional driver parameter. Uncomment if you want transformer to register a database. <driver>org.apache.xindice.client.xmldb.DatabaseImpl</driver> --> <base>xmldb:xindice:///db/collection</base> <user>myDatabaseLogin</user> <password>myDatabasePassword</password> </map:transformer>
The component configuration defined in <map:transformer> can be overriden with sitemap parameters on the <map:transform>:
<map:transform type="xmldb"> <map:parameter name="base" value="xmldb:xindice:///db/collection"/> <map:parameter name="user" value="myDatabaseLogin"/> <map:parameter name="password" value="myDatabasePassword"/> </map:transform>
Input XML document example:
<page xmlns:db="http://apache.org/cocoon/xmldb/1.0"> ... <p>Create XML resource in base collection with specified object ID</p> <db:query type="create" oid="xmldb-object-id"> <page> XML Object body </page> </db:query> <p>Delete XML resource from the base collection with specified object ID</p> <db:query type="delete" oid="xmldb-object-id"/> <p>Update XML resource with specified object ID</p> <db:query type="update" oid="xmldb-object-id"> <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:remove select="/person/phone[@type = 'home']"/> <xu:update select="/person/phone[@type = 'work']"> 480-300-3003 </xu:update> </xu:modifications> </db:query> <p>Create collection nested into the base collection</p> <db:query type="create" oid="inner/"/> <p>Create XML resource in context collection with specified object ID</p> <db:query type="create" collection="inner" oid="xmldb-object-id"> <page> XML Object body </page> </db:query> ... </page>
Output XML document example:
<page xmlns:db="http://apache.org/cocoon/xmldb/1.0"> ... <db:query type="create" oid="xmldb-object-id" result="success"/> <db:query type="delete" oid="xmldb-object-id" result="success"/> <db:query type="update" oid="xmldb-object-id" result="failure"> Resource xmldb-object-id is not found </db:query> ... </page>
Known bugs and limitations:
Field Summary |
---|
Fields inherited from class org.apache.cocoon.xml.AbstractXMLProducer |
---|
contentHandler, EMPTY_CONTENT_HANDLER, lexicalHandler, xmlConsumer |
Fields inherited from interface org.apache.cocoon.transformation.Transformer |
---|
ROLE |
Constructor Summary | |
---|---|
XMLDBTransformer()
|
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 |
configure(Configuration configuration)
|
void |
endCDATA()
Report the end of a CDATA section. |
void |
endDocument()
Receive notification of the end of a document. |
void |
endDTD()
Report the end of DTD declarations. |
void |
endElement(String uri,
String loc,
String raw)
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. |
Serializable |
getKey()
Generate the unique key. |
protected SAXTransformerFactory |
getTransformerFactory()
Helper for TransformerFactory. |
SourceValidity |
getValidity()
Generate the validity object. |
void |
ignorableWhitespace(char[] c,
int start,
int len)
Receive notification of ignorable whitespace in element content. |
void |
initialize()
Initializes XML:DB database instance if driver class was configured. |
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 |
setup(SourceResolver resolver,
Map objectModel,
String src,
Parameters par)
Setup the transformer. |
void |
skippedEntity(String name)
Receive notification of a skipped entity. |
void |
startCDATA()
Report the start of a CDATA section. |
void |
startDocument()
Receive notification of the beginning of a document. |
void |
startDTD(String name,
String publicId,
String systemId)
Report the start of DTD declarations, if any. |
void |
startElement(String uri,
String loc,
String raw,
Attributes a)
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 |
---|
setDocumentLocator |
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.xml.sax.ContentHandler |
---|
setDocumentLocator |
Methods inherited from interface org.apache.cocoon.xml.XMLProducer |
---|
setConsumer |
Constructor Detail |
---|
public XMLDBTransformer()
Method Detail |
---|
public void configure(Configuration configuration) throws ConfigurationException
configure
in interface Configurable
ConfigurationException
public void initialize() throws Exception
initialize
in interface Initializable
Exception
public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) throws ProcessingException, SAXException, IOException
setup
in interface SitemapModelComponent
ProcessingException
SAXException
IOException
protected SAXTransformerFactory getTransformerFactory()
public Serializable getKey()
getKey
in interface CacheableProcessingComponent
null
if the component
is currently not cacheable.public SourceValidity getValidity()
getValidity
in interface CacheableProcessingComponent
null
if the
component is currently not cacheable.public void startDocument() throws SAXException
startDocument
in interface ContentHandler
startDocument
in class AbstractXMLPipe
SAXException
public void endDocument() throws SAXException
endDocument
in interface ContentHandler
endDocument
in class AbstractXMLPipe
SAXException
public void startPrefixMapping(String prefix, String uri) throws SAXException
startPrefixMapping
in interface ContentHandler
startPrefixMapping
in class AbstractXMLPipe
prefix
- The Namespace prefix being declared.uri
- The Namespace URI the prefix is mapped to.
SAXException
public void endPrefixMapping(String prefix) throws SAXException
endPrefixMapping
in interface ContentHandler
endPrefixMapping
in class AbstractXMLPipe
prefix
- The prefix that was being mapping.
SAXException
public void startElement(String uri, String loc, String raw, Attributes a) throws SAXException
startElement
in interface ContentHandler
startElement
in class AbstractXMLPipe
uri
- The Namespace URI, or the empty string if the element has no
Namespace URI or if Namespace
processing is not being performed.loc
- The local name (without prefix), or the empty string if
Namespace processing is not being performed.raw
- The raw XML 1.0 name (with prefix), or the empty string if
raw names are not available.a
- The attributes attached to the element. If there are no
attributes, it shall be an empty Attributes object.
SAXException
public void endElement(String uri, String loc, String raw) throws SAXException
endElement
in interface ContentHandler
endElement
in class AbstractXMLPipe
uri
- The Namespace URI, or the empty string if the element has no
Namespace URI or if Namespace
processing is not being performed.loc
- The local name (without prefix), or the empty string if
Namespace processing is not being performed.raw
- The raw XML 1.0 name (with prefix), or the empty string if
raw names are not available.
SAXException
public void characters(char[] c, int start, int len) throws SAXException
characters
in interface ContentHandler
characters
in class AbstractXMLPipe
c
- The characters from the XML document.start
- The start position in the array.len
- The number of characters to read from the array.
SAXException
public void ignorableWhitespace(char[] c, int start, int len) throws SAXException
ignorableWhitespace
in interface ContentHandler
ignorableWhitespace
in class AbstractXMLPipe
c
- The characters from the XML document.start
- The start position in the array.len
- The number of characters to read from the array.
SAXException
public void processingInstruction(String target, String data) throws SAXException
processingInstruction
in interface ContentHandler
processingInstruction
in class AbstractXMLPipe
target
- The processing instruction target.data
- The processing instruction data, or null if none was
supplied.
SAXException
public void skippedEntity(String name) throws SAXException
skippedEntity
in interface ContentHandler
skippedEntity
in class AbstractXMLPipe
name
- The name of the skipped entity. If it is a parameter
entity, the name will begin with '%'.
SAXException
public void startDTD(String name, String publicId, String systemId) throws SAXException
startDTD
in interface LexicalHandler
startDTD
in class AbstractXMLPipe
name
- The document type name.publicId
- The declared public identifier for the external DTD
subset, or null if none was declared.systemId
- The declared system identifier for the external DTD
subset, or null if none was declared.
SAXException
public void endDTD() throws SAXException
endDTD
in interface LexicalHandler
endDTD
in class AbstractXMLPipe
SAXException
public void startEntity(String name) throws SAXException
startEntity
in interface LexicalHandler
startEntity
in class AbstractXMLPipe
name
- The name of the entity. If it is a parameter entity, the
name will begin with '%'.
SAXException
public void endEntity(String name) throws SAXException
endEntity
in interface LexicalHandler
endEntity
in class AbstractXMLPipe
name
- The name of the entity that is ending.
SAXException
public void startCDATA() throws SAXException
startCDATA
in interface LexicalHandler
startCDATA
in class AbstractXMLPipe
SAXException
public void endCDATA() throws SAXException
endCDATA
in interface LexicalHandler
endCDATA
in class AbstractXMLPipe
SAXException
public void comment(char[] ch, int start, int len) throws SAXException
comment
in interface LexicalHandler
comment
in class AbstractXMLPipe
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.
SAXException
public void recycle()
AbstractXMLProducer
recycle
in interface Recyclable
recycle
in class AbstractXMLProducer
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |