public abstract class StaxMateTestBase extends junit.framework.TestCase { protected static final String BASE64_ENCODED = "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz" + "IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg" + "dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu" + "dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo" + "ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4="; protected static final String BASE64_DECODED_STRING = "Man is distinguished, not only by his reason, but by this singular passion" + " from other animals, which is a lust of the mind, that by a perseverance of delight" + " in the continued and indefatigable generation of knowledge, exceeds the short vehemence" + " of any carnal pleasure."; protected static final byte[] BASE64_DECODED_BYTES; static { byte[] data = null; try { data = BASE64_DECODED_STRING.getBytes("UTF-8"); } catch (Exception e) { } BASE64_DECODED_BYTES = data; } protected static XMLInputFactory _staxInputFactory = XMLInputFactory.newInstance(); protected SMInputFactory _inputFactory; /* /********************************************************************** /* Factory methods /********************************************************************** */ protected SMInputFactory getInputFactory() { if (_inputFactory == null) { _inputFactory = new SMInputFactory(getStaxInputFactory()); } return _inputFactory; } protected XMLInputFactory getStaxInputFactory() { return _staxInputFactory; } protected XMLStreamReader getCoalescingReader(String content) throws XMLStreamException { XMLInputFactory f = XMLInputFactory.newInstance(); f.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE); return f.createXMLStreamReader(new StringReader(content)); } protected XMLStreamWriter getSimpleWriter(Writer w) throws XMLStreamException { XMLOutputFactory f = XMLOutputFactory.newInstance(); return f.createXMLStreamWriter(w); } /* /********************************************************************** /* Assertion support /********************************************************************** */ protected void assertTokenType(int expType, int actType) throws XMLStreamException { assertEquals(expType, actType); } protected void assertTokenType(int expType, XMLStreamReader sr) throws XMLStreamException { assertTokenType(expType, sr.getEventType()); } protected void assertTokenType(int expType, SMInputCursor crsr) throws XMLStreamException { assertTokenType(expType, crsr.getCurrEventCode()); } protected void assertToken(SMEvent expEvent, SMEvent actEvent) throws XMLStreamException { assertTokenType(expEvent.getEventCode(), actEvent.getEventCode()); } protected void assertElem(XMLStreamReader sr, String expURI, String expLN) throws XMLStreamException { assertEquals(expLN, sr.getLocalName()); String actURI = sr.getNamespaceURI(); if (expURI == null || expURI.length() == 0) { if (actURI != null && actURI.length() > 0) { fail("Expected no namespace, got URI '" + actURI + "'"); } } else { assertEquals(expURI, sr.getNamespaceURI()); } } protected void assertException(Throwable e, String match) { String msg = e.getMessage(); String lmsg = msg.toLowerCase(); String lmatch = match.toLowerCase(); if (lmsg.indexOf(lmatch) < 0) { fail( "Expected an exception with sub-string \"" + match + "\": got one with message \"" + msg + "\""); } } /* /********************************************************************** /* Other accessors /********************************************************************** */ /** Note: calling this method will move stream to the next non-textual event. */ protected String collectAllText(XMLStreamReader sr) throws XMLStreamException { StringBuilder sb = new StringBuilder(100); while (true) { int type = sr.getEventType(); if (type == CHARACTERS || type == SPACE || type == CDATA) { sb.append(sr.getText()); sr.next(); } else { break; } } return sb.toString(); } }
protected XMLStreamReader getCoalescingReader(String content) throws XMLStreamException { XMLInputFactory f = XMLInputFactory.newInstance(); f.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE); return f.createXMLStreamReader(new StringReader(content)); }