pbwest 2002/11/11 09:24:18
Modified: src/org/apache/fop/xml Tag: FOP_0-20-0_Alt-Design
SyncedFoXmlEventsBuffer.java
Log:
Added expectBlock(), expectNormalPcdataOrInline(),
expectOutOfLinePcdataOrInline(), expectNormalPcdataOrInlineOrBlock(),
expectOutOfLinePcdataOrInlineOrBlock().
Revision Changes Path
No revision
No revision
1.1.2.3 +59 -5
xml-fop/src/org/apache/fop/xml/Attic/SyncedFoXmlEventsBuffer.java
Index: SyncedFoXmlEventsBuffer.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/org/apache/fop/xml/Attic/SyncedFoXmlEventsBuffer.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- SyncedFoXmlEventsBuffer.java 7 Nov 2002 15:30:50 -0000 1.1.2.2
+++ SyncedFoXmlEventsBuffer.java 11 Nov 2002 17:24:18 -0000 1.1.2.3
@@ -3,6 +3,7 @@
import org.apache.fop.datastructs.SyncedCircularBuffer;
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FObjectNames;
+import org.apache.fop.fo.FObjectSets;
import java.util.NoSuchElementException;
import java.util.LinkedList;
@@ -771,6 +772,7 @@
{
FoXMLEvent ev;
do {
+ try {
ev = expectStartElement(set, discardWhiteSpace);
if (ev != null) return ev;
// The non-matching event has been pushed back.
@@ -778,6 +780,9 @@
// getEvent() returns null, the expectStartElement() calls
// will throw a NoSuchElementException
ev = getEvent();
+ } catch(UnexpectedStartElementException e) {
+ ev = getEvent();
+ }
} while (ev != null);
// Exit from this while loop is only by discovery of null event
throw new NoSuchElementException
@@ -803,7 +808,7 @@
*/
public FoXMLEvent expectStartElement
(BitSet set, boolean discardWhiteSpace)
- throws FOPException
+ throws FOPException, UnexpectedStartElementException
{
FoXMLEvent ev;
ev = expectTypedEvent(XMLEvent.STARTELEMENT, discardWhiteSpace);
@@ -813,9 +818,58 @@
if (ev.foType == i)
return ev; // Found it!
}
- // Not found - push the STARTELEMENT event back
+ // Not found - push the STARTELEMENT event back and throw an
+ // UnexpectedStartElementException
pushBack(ev);
- return null;
+ throw new UnexpectedStartElementException
+ ("Unexpected START element: " + ev.getQName());
+ }
+
+ public FoXMLEvent expectBlock()
+ throws FOPException, UnexpectedStartElementException
+ {
+ return expectStartElement
+ (FObjectSets.blockEntity, XMLEvent.DISCARD_W_SPACE);
+ }
+
+ public FoXMLEvent expectNormalPcdataOrInline()
+ throws FOPException, UnexpectedStartElementException
+ {
+ FoXMLEvent ev = expectStartElement
+ (FObjectSets.normalPcdataInlineSet, XMLEvent.RETAIN_W_SPACE);
+ if (ev == null)
+ ev = expectCharacters();
+ return ev;
+ }
+
+ public FoXMLEvent expectOutOfLinePcdataOrInline()
+ throws FOPException, UnexpectedStartElementException
+ {
+ FoXMLEvent ev = expectStartElement
+ (FObjectSets.inlineEntity, XMLEvent.RETAIN_W_SPACE);
+ if (ev == null)
+ ev = expectCharacters();
+ return ev;
+ }
+
+ public FoXMLEvent expectNormalPcdataOrInlineOrBlock()
+ throws FOPException, UnexpectedStartElementException
+ {
+ FoXMLEvent ev = expectStartElement
+ (FObjectSets.normalPcdataBlockInlineSet, XMLEvent.RETAIN_W_SPACE);
+ if (ev == null)
+ ev = expectCharacters();
+ return ev;
+ }
+
+ public FoXMLEvent expectOutOfLinePcdataOrInlineOrBlock()
+ throws FOPException, UnexpectedStartElementException
+ {
+ FoXMLEvent ev = expectStartElement
+ (FObjectSets.pcdataBlockInlineSet, XMLEvent.RETAIN_W_SPACE);
+ if (ev == null)
+ ev = expectCharacters();
+ return ev;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]