[jboss-svn-commits] JBoss Common SVN: r2154 - in jbossxb/trunk/src: main/java/org/jboss/xb/binding main/java/org/jboss/xb/binding/parser main/java/org/jboss/xb/binding/parser/sax test/java/org/jboss/test/xml/book
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Nov 5 18:16:41 EST 2006
Author: scott.stark at jboss.org
Date: 2006-11-05 18:16:33 -0500 (Sun, 05 Nov 2006)
New Revision: 2154
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/binding/DelegatingObjectModelFactory.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/ObjectModelBuilder.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/JBossXBParser.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/book/BookObjectFactory.java
Log:
DtdAwareContentHandler that extends ContentHandler to support key SAX2 LexicalHandler events such as startDTD
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/DelegatingObjectModelFactory.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/DelegatingObjectModelFactory.java 2006-11-05 22:16:50 UTC (rev 2153)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/DelegatingObjectModelFactory.java 2006-11-05 23:16:33 UTC (rev 2154)
@@ -61,6 +61,21 @@
}
}
+ public void startDTD(String name, String publicId, String systemId)
+ {
+ try
+ {
+ Class[] sig = {String.class, String.class, String.class};
+ Method startDTD = typedFactory.getClass().getMethod("startDTD", sig);
+ Object[] args = {name, publicId, systemId};
+ startDTD.invoke(typedFactory, args);
+ }
+ catch(Exception e)
+ {
+ // Ignore
+ }
+ }
+
public Object newRoot(Object root,
UnmarshallingContext navigator,
String namespaceURI,
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/ObjectModelBuilder.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/ObjectModelBuilder.java 2006-11-05 22:16:50 UTC (rev 2153)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/ObjectModelBuilder.java 2006-11-05 23:16:33 UTC (rev 2154)
@@ -47,7 +47,7 @@
* @version <tt>$Revision$</tt>
*/
public class ObjectModelBuilder
- implements UnmarshallingContext, JBossXBParser.ContentHandler
+ implements UnmarshallingContext, JBossXBParser.DtdAwareContentHandler
{
/**
* logger
@@ -289,6 +289,35 @@
return root;
}
+ public void startDTD(String name, String publicId, String systemId)
+ {
+ try
+ {
+ Class[] sig = {String.class, String.class, String.class};
+ Method startDTD = defaultFactory.getClass().getMethod("startDTD", sig);
+ Object[] args = {name, publicId, systemId};
+ startDTD.invoke(defaultFactory, args);
+ }
+ catch(Exception e)
+ {
+ log.debug("No startDTD found on factory: "+defaultFactory);
+ }
+ }
+ public void endDTD()
+ {
+ try
+ {
+ Class[] sig = {};
+ Method endDTD = defaultFactory.getClass().getMethod("endDTD", sig);
+ Object[] args = {};
+ endDTD.invoke(defaultFactory, args);
+ }
+ catch(Exception e)
+ {
+ log.debug("No endDTD found on factory: "+defaultFactory);
+ }
+ }
+
public void startElement(String namespaceURI,
String localName,
String qName,
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/JBossXBParser.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/JBossXBParser.java 2006-11-05 22:16:50 UTC (rev 2153)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/JBossXBParser.java 2006-11-05 23:16:33 UTC (rev 2154)
@@ -23,6 +23,7 @@
import org.xml.sax.Attributes;
import org.xml.sax.EntityResolver;
+import org.xml.sax.SAXException;
import org.jboss.xb.binding.JBossXBException;
import org.apache.xerces.xs.XSTypeDefinition;
@@ -51,6 +52,14 @@
Object getRoot();
}
+ /**
+ * Extended to support key SAX2 LexicalHandler events
+ */
+ interface DtdAwareContentHandler extends ContentHandler
+ {
+ public void startDTD(String name, String publicId, String systemId);
+ public void endDTD();
+ }
void setEntityResolver(EntityResolver entityResolver) throws JBossXBException;
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java 2006-11-05 22:16:50 UTC (rev 2153)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java 2006-11-05 23:16:33 UTC (rev 2154)
@@ -109,6 +109,15 @@
reader.setContentHandler(delegateHandler);
reader.setErrorHandler(MetaDataErrorHandler.INSTANCE);
reader.setEntityResolver(new JBossEntityResolver());
+ // LexicalHandler
+ try
+ {
+ reader.setProperty("http://xml.org/sax/properties/lexical-handler", delegateHandler);
+ }
+ catch(Exception e)
+ {
+ log.debug("LexicalHandler", e);
+ }
/*
setFeature(Unmarshaller.VALIDATION, true);
@@ -215,10 +224,59 @@
// Inner
private final class DelegatingContentHandler
- implements org.xml.sax.ContentHandler
+ implements org.xml.sax.ContentHandler,
+ org.xml.sax.ext.LexicalHandler
{
Locator locator;
-
+ // Begin LexicalHandler
+
+ public void comment(char[] ch, int start, int length) throws SAXException
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void startDTD(String name, String publicId, String systemId) throws SAXException
+ {
+ if( contentHandler instanceof DtdAwareContentHandler )
+ {
+ DtdAwareContentHandler dach = (DtdAwareContentHandler) contentHandler;
+ dach.startDTD(name, publicId, systemId);
+ }
+ }
+ public void endDTD() throws SAXException
+ {
+ if( contentHandler instanceof DtdAwareContentHandler )
+ {
+ DtdAwareContentHandler dach = (DtdAwareContentHandler) contentHandler;
+ dach.endDTD();
+ }
+ }
+
+ public void startEntity(String name) throws SAXException
+ {
+ // TODO Auto-generated method stub
+
+ }
+ public void endEntity(String name) throws SAXException
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void startCDATA() throws SAXException
+ {
+ // TODO Auto-generated method stub
+
+ }
+ public void endCDATA() throws SAXException
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ // End LexicalHandler
+
public void endDocument()
{
}
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/book/BookObjectFactory.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/book/BookObjectFactory.java 2006-11-05 22:16:50 UTC (rev 2153)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/book/BookObjectFactory.java 2006-11-05 23:16:33 UTC (rev 2154)
@@ -37,6 +37,10 @@
{
// ObjectModelFactory implementation
+ public void startDTD(String name, String publicId, String systemId)
+ {
+ System.err.print("startDTD, name="+name+", publicId="+publicId+", systemId="+systemId);
+ }
/**
* Return the root.
*/
More information about the jboss-svn-commits
mailing list