Package thredds.catalog2.xml.parser.stax

Source Code of thredds.catalog2.xml.parser.stax.XMLEvent_WriteAsEncodedUnicodeMethodTest

package thredds.catalog2.xml.parser.stax;

import org.junit.Test;
import org.junit.Before;

import static org.junit.Assert.*;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.XMLEvent;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;

import thredds.catalog2.xml.parser.CatalogXmlUtils;

import java.io.*;

/**
* Test whether the XMLEvent.writeAsEncodedUnicode(Writer) method is working.
*
* <p>It is not implemented in Sun's JDK 6u14; though XMLEvent.toString()
* seems to be implemented in an appropriate manner. However, other JDK
* implementations (GNU's classpath e.g.) do implement writeAsEncodedUnicode(Writer)
* but not toString(). So, if this test fails, it probably means that Sun's JDK
* has been fixed. Of course, need to work on old JDK's for awhile.
*
* <p>Once things are working, revisit
* StaxThreddsXmlParserUtils.readCharacterContent(StartElement,XMLEventReader) and
* StaxThreddsXmlParserUtils.readElementAndAnyContent(XMLEventReader).
*
*
* @author edavis
* @since 4.0
*/
public class XMLEvent_WriteAsEncodedUnicodeMethodTest
{
  private XMLInputFactory factory;

  public XMLEvent_WriteAsEncodedUnicodeMethodTest() { }

  @Before
  public void init()
  {
    this.factory = XMLInputFactory.newInstance();
    this.factory.setProperty( "javax.xml.stream.isCoalescing", Boolean.TRUE );
    this.factory.setProperty( "javax.xml.stream.supportDTD", Boolean.FALSE );
//    this.factory.setXMLReporter(  );
//    this.factory.setXMLResolver(  );

  }

  @Test
  public void tryWriteAsEncodedUnicode()
          throws XMLStreamException
  {
    String xml = CatalogXmlUtils.wrapThreddsXmlInCatalog( "<serviceName>OPeNDAP</serviceName>", null, null, null );
    String baseUriString = "http://test.metadata.parser/tmd.xml";

    Reader reader = new StringReader( xml );
    Source source = new StreamSource( reader, baseUriString );
    XMLEventReader eventReader = factory.createXMLEventReader( source );

    StringWriter writer = new StringWriter();

    while ( eventReader.hasNext() )
    {
      XMLEvent event = eventReader.nextEvent();
      event.writeAsEncodedUnicode( writer );
    }

    writer.flush();
    String resultingXml = writer.toString();
    assertTrue( "XMLEvent.writeAsEncodedUnicode() is working.\n" + resultingXml,
                resultingXml.equals( "" ));
  }
}
TOP

Related Classes of thredds.catalog2.xml.parser.stax.XMLEvent_WriteAsEncodedUnicodeMethodTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.