/*
* Milyn - Copyright (C) 2006 - 2010
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License (version 2.1) as published
* by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE.
*
* See the GNU Lesser General Public License for more details:
* http://www.gnu.org/licenses/lgpl.txt
*/
package org.milyn.delivery;
import static org.junit.Assert.*;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import javax.xml.transform.stream.StreamSource;
import org.junit.Before;
import org.junit.Test;
import org.milyn.Smooks;
import org.milyn.io.StreamUtils;
import org.milyn.cdr.SmooksResourceConfiguration;
import org.milyn.container.ExecutionContext;
import org.milyn.xml.SmooksXMLReader;
import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
/**
* Test for JIRA: http://jira.codehaus.org/browse/MILYN-291,
* "Add test(s) for StreamReader functionality"
* <p/>
*
* @author <a href="mailto:daniel.bevenius@gmail.com">Daniel Bevenius</a>
*/
public class StreamReaderTest
{
private final byte[] bytes = "bytes".getBytes();
private Smooks smooks;
@Before
public void setup()
{
smooks = new Smooks();
smooks.addConfiguration(new SmooksResourceConfiguration( "org.xml.sax.driver", MockReader.class.getName()));
}
@Test public void verifyByteStream()
{
smooks.filterSource(new StreamSource(new ByteArrayInputStream(bytes)));
assertTrue(Arrays.equals(bytes, MockReader.readBytes));
}
public static class MockReader implements SmooksXMLReader
{
private ContentHandler handler;
private static byte[] readBytes;
public void parse(final InputSource inputSource) throws IOException, SAXException
{
final InputStream bin = inputSource.getByteStream();
MockReader.readBytes = StreamUtils.readStream(bin);
handler.startDocument();
handler.endDocument();
}
public void setContentHandler(ContentHandler arg0)
{
this.handler = arg0;
}
public void setExecutionContext(ExecutionContext executionContext)
{
}
public ContentHandler getContentHandler()
{
return null;
}
public DTDHandler getDTDHandler()
{
return null;
}
public EntityResolver getEntityResolver()
{
return null;
}
public ErrorHandler getErrorHandler()
{
return null;
}
public boolean getFeature(String arg0) throws SAXNotRecognizedException, SAXNotSupportedException
{
return false;
}
public Object getProperty(String arg0) throws SAXNotRecognizedException, SAXNotSupportedException
{
return null;
}
public void parse(String string) throws IOException, SAXException
{
}
public void setDTDHandler(DTDHandler arg0)
{
}
public void setEntityResolver(EntityResolver arg0)
{
}
public void setErrorHandler(ErrorHandler arg0)
{
}
public void setFeature(String arg0, boolean arg1) throws SAXNotRecognizedException, SAXNotSupportedException
{
}
public void setProperty(String arg0, Object arg1) throws SAXNotRecognizedException, SAXNotSupportedException
{
}
}
}