package test;
import java.io.*;
import javax.xml.stream.*;
import org.codehaus.stax2.typed.*;
Simple helper test class for checking how stream reader handles xml
documents.
/**
* Simple helper test class for checking how stream reader handles xml
* documents.
*/
public class TestBase64Reader
implements XMLStreamConstants
{
final static String CARNAL = "TWFuIGlzIGRpc3Rpbmd1"
+"aXNoZWQsIG5vdCBvbmx5"
+"IGJ5IGhpcyByZWFzb24s"
+"IGJ1dCBieSB0aGlz\n"
+"IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg\n"
+"dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu\n"
+"dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo\n"
+"ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4="
;
public void test() throws XMLStreamException
{
System.setProperty("javax.xml.stream.XMLInputFactory", com.fasterxml.aalto.stax.InputFactoryImpl.class.getName());
XMLInputFactory f = XMLInputFactory.newInstance();
String xml = "<root>"+
CARNAL + "\r\n" + CARNAL
/*
"3Q==8SG5lQS8PNE=jKv9qvA=M00W0ddAMg==JvqSRVfamzoPRkLDdk0=zg==ipxTn18=DRvg/NSejA==kPROt9r3hg==KXsnaRLrRw==iw==rljC18si8Q==hE"
+"Q=BMsmlADRGg==PrTreugryi6aKQ==RB8m1MV0N9U=Aqg=+cspTHXQ5g==yg==EA==iGjKFpPsyw==EWj4Sx/LijsX6IGOVg==xdmpbA==ugCY7kkX2A==3875iQ==rdMBOg==k9Q=WHsAjg==0YBlxBH3f4g=8iBCZNc=F/vmYh0n7SVDzSw=ias=Qjk=GQ==58jWyTB2JBixA9HoaHA=BdsHPA==laoeNg==ZckUeu0BPQ==nWSrYCS6spA=CGtFgnApf1s=sBw5rRw2BCI=rw==mw==hFHZdytEE6Y=wRsogw==22HyIOg=gWZqJddv7WM=dPAd5Q==nbFW1JY=asFzKK1UWxzUMfb3oA==aw25qUQ=zw==H5P+ZuMHlA==HFJjQ7p+xtM=tWowSOGpavY51wY=nDE=di+7GhQ=CJpL0g==nFaelQ==1HM=9a1lS0h2vV9SWQ==07hVBPGlgA==NtOnxg==cNNRjZtSFg==HaOD2A==ykDJ2w==WxWY+X+An5M=Mg==cA==Ops=pkY=Wg==MnmcTXaeNis=9nTusctd2A==u8ipom18WiRuVYYp9w==ODB9b17WtQ==uZ8=fA==bj4Q5sw=VQ==iZjKSG1yUvXRTbRdAQ==Nj58XHuwSn3m3T4pVQ==pjTxHg==+g==sQ==saQ2dbbLLDjmrSTyTQ==iHYciDfKybfM+A==kLI53oIYF8Q=g8fz/7ymP5MnKjM=Og==ViMoVA==jWF2mtuHzV4=Q53k6Q==qQ==fLk=50e11w==8dPRumtqE4c=GCcj9/4qM0w=zD4+pTfVkQ==jQtHA19oTUWrjTE=4spKcpvgZQk=ILA=Cb1rAJ7Bfw==LnoE+s1kmA==DBnsLKg=ig==RXwXLQ==N/u/sJUfn1k48RzOPg==YcFYytmHle8z5ss=ZsLymyX/wKzgEf9eLA==GVs=iLJ8ew==NPTh0W6vLKo=LvETVhke9ps=5y3zw1E=ZJ3iFQ77xHE=S7c=Yw==12i7Ta3cFBtTGcgVG1B5/w==wN6LG9/3Mm+fKvF6zsk=j9Lvxn4pKYbaVlC/jlA=7QY=Gt++uQ==ZFQ=oRartA==UQ==GA==cteMWetqTA==gC4=Lgb8fA==GA==PA==71UnCeN43kM="
*/
+"</root>";
final int CHUNK_LEN = 19;
byte[] buffer = new byte[CHUNK_LEN];
TypedXMLStreamReader sr = (TypedXMLStreamReader) f.createXMLStreamReader(new StringReader(xml));
// TEST: to see if Stax2 reader adapter works, let's try this:
//sr = new TestAdapter(sr);
// First, advance to root START_ELEMENT
sr.next();
// and then may try to move to CHARACTERS?
/*
if (sr.next() != XMLStreamConstants.CHARACTERS) {
throw new IllegalStateException("State not CHARACTERS, but "+sr.getEventType());
}
*/
int offset = 0;
while (true) {
int count = sr.readElementAsBinary(buffer, 0, buffer.length,
//Base64Variants.MODIFIED_FOR_URL
Base64Variants.MIME
);
System.out.print("Result("+offset+"+"+count+"): ");
if (count < 0) {
break;
}
System.out.print('"');
for (int i = 0; i < count; ++i) {
System.out.print((char) buffer[i]);
//System.out.print(" 0x"+Integer.toHexString(buffer[i] & 0xFF));
}
System.out.print('"');
offset += count;
System.out.println();
}
System.out.println("DONE!");
sr.close();
}
public static void main(String[] args)
throws Exception
{
new TestBase64Reader().test();
}
// Need a sub-class, as base class constructor is not public
final static class TestAdapter
extends org.codehaus.stax2.ri.Stax2ReaderAdapter
{
public TestAdapter(XMLStreamReader sr) { super(sr); }
}
}